From 079092dfeaa851dce30aa19bc8520b143c417502 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Fri, 9 Sep 2016 09:40:35 +0200 Subject: [PATCH] Update web-platform-tests to revision dc5cbf088edcdb266541d4e5a76149a2c6e716a0 --- .../2d.text.draw.fill.maxWidth.NaN.html.ini | 5 + .../image-smoothing/imagesmoothing.html.ini | 11 + tests/wpt/metadata/MANIFEST.json | 4500 ++++++++--------- .../derive_bits_keys/ecdh_bits.worker.js.ini} | 2 +- .../derive_bits_keys/ecdh_keys.worker.js.ini | 3 + .../derive_bits_keys/hkdf.worker.js.ini | 3 + .../derive_bits_keys/pbkdf2.worker.js.ini | 3 + .../derive_bits_keys/test_ecdh_bits.html.ini | 3 + .../derive_bits_keys/test_ecdh_keys.html.ini | 3 + .../derive_bits_keys/test_hkdf.html.ini | 3 + .../derive_bits_keys/test_pbkdf2.html.ini | 3 + .../WebCryptoAPI/digest/digest.worker.js.ini | 2 +- .../WebCryptoAPI/digest/test_digest.html.ini | 2 +- .../import_export/ec_importKey.worker.js.ini | 6 + .../import_export/rsa_importKey.worker.js.ini | 6 + .../symmetric_importKey.worker.js.ini | 6 + .../import_export/test_ec_importKey.html.ini | 6 + .../import_export/test_rsa_importKey.html.ini | 6 + .../test_symmetric_importKey.html.ini | 6 + .../sign_verify/ecdsa.worker.js.ini | 3 + .../sign_verify/hmac.worker.js.ini | 3 + .../sign_verify/rsa_pkcs.worker.js.ini | 3 + .../sign_verify/rsa_pss.worker.js.ini | 3 + .../sign_verify/test_ecdsa.html.ini | 3 + .../sign_verify/test_hmac.html.ini | 3 + .../sign_verify/test_rsa_pkcs.html.ini | 3 + .../sign_verify/test_rsa_pss.html.ini | 3 + .../test_wrapKey_unwrapKey.html.ini | 3 + .../wrapKey_unwrapKey.worker.js.ini | 3 + .../abort-during-upload.htm.ini | 5 + .../XMLHttpRequest/abort-event-order.htm.ini | 5 + .../event-error-order.sub.html.ini | 5 + .../XMLHttpRequest/event-error.html.ini | 5 + .../event-timeout-order.htm.ini | 5 + .../headers-normalize-response.htm.ini | 20 + .../send-entity-body-empty.htm.ini | 5 + .../send-entity-body-get-head.htm.ini | 5 + .../send-entity-body-none.htm.ini | 8 + .../send-sync-response-event-order.htm.ini | 5 + .../setrequestheader-content-type.htm.ini | 32 + .../AddEventListenerOptions-once.html.ini | 11 + .../dom/events/Event-propagation.html.ini | 8 + .../events/EventTarget-dispatchEvent.html.ini | 41 + tests/wpt/metadata/dom/interfaces.html.ini | 219 + .../dom/lists/DOMTokenList-iteration.html.ini | 5 + ...ument-getElementsByTagName-xhtml.xhtml.ini | 3 + .../Document-getElementsByTagName.html.ini | 6 + .../Element-getElementsByTagName.html.ini | 6 + .../dom/nodes/Node-properties.html.ini | 8 + ...arser-parseFromString-xml-doctype.html.ini | 5 + .../metadata/domparsing/innerhtml-02.html.ini | 5 + ...i => insert_adjacent_html-xhtml.xhtml.ini} | 2 +- .../api/headers/headers-combine.html.ini | 8 - .../fetch/api/request/request-cache.html.ini | 2 +- .../request/request-consume-empty.html.ini | 2 +- .../api/request/request-consume.html.ini | 3 + .../api/request/request-headers.html.ini | 7 + .../api/request/request-init-002.html.ini | 2 +- .../response/response-cancel-stream.html.ini | 2 +- .../response/response-consume-empty.html.ini | 2 +- .../response/response-consume-stream.html.ini | 2 +- .../api/response/response-consume.html.ini | 2 +- .../api/response/response-init-002.html.ini | 2 +- .../response-stream-disturbed-1.html.ini | 2 +- .../response-stream-disturbed-2.html.ini | 2 +- .../response-stream-disturbed-3.html.ini | 2 +- .../response-stream-disturbed-4.html.ini | 2 +- .../response-stream-disturbed-5.html.ini | 2 +- .../navigate-child-function-parent.html.ini | 3 + .../navigate-child-function-src.html.ini | 6 + .../source/navigate-child-function.html.ini | 6 + .../navigate-child-src-about-blank.html.ini | 3 + ...ross-origin-objects-on-new-window.html.ini | 3 + .../cross-origin-objects.html.ini | 3 + .../global-attributes/dataset.html.ini | 5 + .../wpt/metadata/html/dom/interfaces.html.ini | 1761 ++++++- .../html/dom/reflection-forms.html.ini | 6 + .../html/dom/reflection-tabular.html.ini | 12 + .../pseudo-classes/valid-invalid.html.ini | 42 + .../caption-methods.html.ini | 3 + .../event-loops/microtask_after_raf.html.ini | 6 + .../microtask_after_script.html.ini | 6 + tests/wpt/metadata/mozilla-sync | 2 +- ...nsupported-csp-referrer-directive.html.ini | 6 + ...generic.keep-origin-redirect.http.html.ini | 6 - .../img-tag/generic.no-redirect.http.html.ini | 6 - ...generic.swap-origin-redirect.http.html.ini | 6 - .../generic.no-redirect.http.html.ini | 6 - ...generic.swap-origin-redirect.http.html.ini | 6 - ...generic.keep-origin-redirect.http.html.ini | 6 - .../img-tag/generic.no-redirect.http.html.ini | 6 - ...generic.swap-origin-redirect.http.html.ini | 6 - ...-origin.keep-origin-redirect.http.html.ini | 6 - .../cross-origin.no-redirect.http.html.ini | 6 - ...-origin.swap-origin-redirect.http.html.ini | 6 - ...-origin.keep-origin-redirect.http.html.ini | 6 - .../cross-origin.no-redirect.http.html.ini | 6 - ...-origin.swap-origin-redirect.http.html.ini | 6 - ...-origin.keep-origin-redirect.http.html.ini | 6 - .../cross-origin.no-redirect.http.html.ini | 6 - ...-origin.swap-origin-redirect.http.html.ini | 6 - ...-origin.keep-origin-redirect.http.html.ini | 6 - .../cross-origin.no-redirect.http.html.ini | 6 - ...-origin.swap-origin-redirect.http.html.ini | 6 - ...-origin.keep-origin-redirect.http.html.ini | 6 - .../cross-origin.no-redirect.http.html.ini | 6 - ...-origin.swap-origin-redirect.http.html.ini | 6 - ...-origin.keep-origin-redirect.http.html.ini | 6 - .../cross-origin.no-redirect.http.html.ini | 6 - ...-origin.swap-origin-redirect.http.html.ini | 6 - ...nsecure.swap-origin-redirect.http.html.ini | 6 - ...nsecure.keep-origin-redirect.http.html.ini | 5 - ...-origin-insecure.no-redirect.http.html.ini | 5 - ...nsecure.swap-origin-redirect.http.html.ini | 6 - ...nsecure.swap-origin-redirect.http.html.ini | 6 - ...nsecure.swap-origin-redirect.http.html.ini | 6 - ...nsecure.swap-origin-redirect.http.html.ini | 6 - ...nsecure.keep-origin-redirect.http.html.ini | 6 + .../cross-insecure.no-redirect.http.html.ini | 6 + ...nsecure.swap-origin-redirect.http.html.ini | 6 + ...nsecure.keep-origin-redirect.http.html.ini | 6 + .../cross-insecure.no-redirect.http.html.ini | 6 + ...nsecure.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...secure.keep-origin-redirect.http.html.ini} | 4 +- .../same-insecure.no-redirect.http.html.ini} | 4 +- ...nsecure.swap-origin-redirect.http.html.ini | 6 + ...secure.keep-origin-redirect.http.html.ini} | 4 +- .../same-insecure.no-redirect.http.html.ini} | 4 +- ...nsecure.swap-origin-redirect.http.html.ini | 5 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...nsecure.keep-origin-redirect.http.html.ini | 6 + .../cross-insecure.no-redirect.http.html.ini | 6 + ...nsecure.swap-origin-redirect.http.html.ini | 6 + ...nsecure.keep-origin-redirect.http.html.ini | 6 + .../cross-insecure.no-redirect.http.html.ini | 6 + ...nsecure.swap-origin-redirect.http.html.ini | 6 + ...nsecure.keep-origin-redirect.http.html.ini | 5 + .../cross-insecure.no-redirect.http.html.ini | 5 + ...nsecure.swap-origin-redirect.http.html.ini | 5 + ...secure.keep-origin-redirect.http.html.ini} | 4 +- .../cross-insecure.no-redirect.http.html.ini} | 4 +- ...secure.swap-origin-redirect.http.html.ini} | 4 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...otocol.keep-origin-redirect.http.html.ini} | 4 +- ...pgrade-protocol.no-redirect.http.html.ini} | 4 +- ...otocol.swap-origin-redirect.http.html.ini} | 4 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...otocol.keep-origin-redirect.http.html.ini} | 4 +- ...pgrade-protocol.no-redirect.http.html.ini} | 4 +- ...otocol.swap-origin-redirect.http.html.ini} | 4 +- ...nsecure.keep-origin-redirect.http.html.ini | 6 + .../same-insecure.no-redirect.http.html.ini | 6 + ...nsecure.swap-origin-redirect.http.html.ini | 6 + ...nsecure.keep-origin-redirect.http.html.ini | 5 + .../same-insecure.no-redirect.http.html.ini | 5 + ...nsecure.swap-origin-redirect.http.html.ini | 5 + ...nsecure.keep-origin-redirect.http.html.ini | 5 + .../same-insecure.no-redirect.http.html.ini | 5 + ...nsecure.swap-origin-redirect.http.html.ini | 5 + ...secure.keep-origin-redirect.http.html.ini} | 4 +- .../same-insecure.no-redirect.http.html.ini} | 4 +- ...secure.swap-origin-redirect.http.html.ini} | 4 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...otocol.keep-origin-redirect.http.html.ini} | 7 +- ...pgrade-protocol.no-redirect.http.html.ini} | 7 +- ...otocol.swap-origin-redirect.http.html.ini} | 7 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...otocol.keep-origin-redirect.http.html.ini} | 4 +- ...pgrade-protocol.no-redirect.http.html.ini} | 4 +- ...otocol.swap-origin-redirect.http.html.ini} | 4 +- ...nsecure.keep-origin-redirect.http.html.ini | 6 + .../cross-insecure.no-redirect.http.html.ini | 6 + ...nsecure.swap-origin-redirect.http.html.ini | 6 + ...nsecure.keep-origin-redirect.http.html.ini | 6 + .../cross-insecure.no-redirect.http.html.ini | 6 + ...nsecure.swap-origin-redirect.http.html.ini | 6 + ...nsecure.keep-origin-redirect.http.html.ini | 5 + .../cross-insecure.no-redirect.http.html.ini | 5 + ...nsecure.swap-origin-redirect.http.html.ini | 5 + ...secure.keep-origin-redirect.http.html.ini} | 4 +- .../cross-insecure.no-redirect.http.html.ini} | 4 +- ...secure.swap-origin-redirect.http.html.ini} | 4 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...pgrade-protocol.no-redirect.http.html.ini} | 4 +- ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...nsecure.keep-origin-redirect.http.html.ini | 6 + .../same-insecure.no-redirect.http.html.ini | 6 + ...nsecure.swap-origin-redirect.http.html.ini | 6 + ...nsecure.keep-origin-redirect.http.html.ini | 5 + .../same-insecure.no-redirect.http.html.ini | 5 + ...nsecure.swap-origin-redirect.http.html.ini | 5 + ...nsecure.swap-origin-redirect.http.html.ini | 5 + ...secure.swap-origin-redirect.http.html.ini} | 4 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...otocol.keep-origin-redirect.http.html.ini} | 4 +- ...pgrade-protocol.no-redirect.http.html.ini} | 4 +- ...otocol.swap-origin-redirect.http.html.ini} | 4 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...nsecure-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...nsecure-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...nsecure-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 5 + ...nsecure-protocol.no-redirect.http.html.ini | 5 + ...rotocol.swap-origin-redirect.http.html.ini | 5 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...nsecure-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...nsecure-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 5 + ...nsecure-protocol.no-redirect.http.html.ini | 5 + ...rotocol.swap-origin-redirect.http.html.ini | 5 + ...otocol.keep-origin-redirect.http.html.ini} | 7 +- ...secure-protocol.no-redirect.http.html.ini} | 7 +- ...otocol.swap-origin-redirect.http.html.ini} | 7 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...otocol.keep-origin-redirect.http.html.ini} | 4 +- ...pgrade-protocol.no-redirect.http.html.ini} | 4 +- ...otocol.swap-origin-redirect.http.html.ini} | 4 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...nsecure-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 5 + ...nsecure-protocol.no-redirect.http.html.ini | 5 + ...rotocol.swap-origin-redirect.http.html.ini | 5 + ...rotocol.keep-origin-redirect.http.html.ini | 5 + ...nsecure-protocol.no-redirect.http.html.ini | 5 + ...rotocol.swap-origin-redirect.http.html.ini | 5 + ...otocol.keep-origin-redirect.http.html.ini} | 4 +- ...secure-protocol.no-redirect.http.html.ini} | 4 +- ...otocol.swap-origin-redirect.http.html.ini} | 7 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...otocol.keep-origin-redirect.http.html.ini} | 4 +- ...pgrade-protocol.no-redirect.http.html.ini} | 4 +- ...otocol.swap-origin-redirect.http.html.ini} | 4 +- ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...nsecure-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...nsecure-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 5 + ...nsecure-protocol.no-redirect.http.html.ini | 5 + ...rotocol.swap-origin-redirect.http.html.ini | 5 + ...rotocol.keep-origin-redirect.http.html.ini | 5 + ...secure-protocol.no-redirect.http.html.ini} | 4 +- ...rotocol.swap-origin-redirect.http.html.ini | 5 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...pgrade-protocol.no-redirect.http.html.ini} | 4 +- ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...nsecure-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 5 + ...nsecure-protocol.no-redirect.http.html.ini | 5 + ...rotocol.swap-origin-redirect.http.html.ini | 5 + ...rotocol.keep-origin-redirect.http.html.ini | 5 + ...nsecure-protocol.no-redirect.http.html.ini | 5 + ...rotocol.swap-origin-redirect.http.html.ini | 5 + ...rotocol.keep-origin-redirect.http.html.ini | 5 + ...secure-protocol.no-redirect.http.html.ini} | 4 +- ...rotocol.swap-origin-redirect.http.html.ini | 5 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...upgrade-protocol.no-redirect.http.html.ini | 6 + ...rotocol.swap-origin-redirect.http.html.ini | 6 + ...rotocol.keep-origin-redirect.http.html.ini | 6 + ...pgrade-protocol.no-redirect.http.html.ini} | 4 +- ...rotocol.swap-origin-redirect.http.html.ini | 6 + .../touch-events/touch-retargeting.html.ini | 3 + .../metadata/url/a-element-xhtml.xhtml.ini | 3 + tests/wpt/metadata/url/a-element.html.ini | 3 + ...edicatedWorkerGlobalScope-members.html.ini | 5 - ...tedWorkerGlobalScope-members.worker.js.ini | 8 + .../expected-self-properties.worker.js.ini | 8 + .../metadata/workers/interfaces.worker.js.ini | 4 + .../2d.text.draw.fill.maxWidth.NaN.html | 32 + .../2d.gradient.interpolate.colouralpha.html | 6 +- .../image-smoothing/imagesmoothing.html | 146 +- .../shadows/canvas_shadows_002-ref.htm | 1 - ...ate.saverestore.imageSmoothingEnabled.html | 47 + .../2dcontext/tools/gentest.py | 16 +- .../2dcontext/tools/specextract.py | 2 +- .../2dcontext/tools/templates.yaml | 2 +- .../2dcontext/tools/tests.yaml | 70 +- .../2dcontext/tools/tests2d.yaml | 6 +- .../2dcontext/tools/tests2dtext.yaml | 13 + .../DOM-parsing/todo/internalSubset.html | 16 + .../FileAPI/historical.html | 7 - .../IndexedDB/idb_binary_key_conversion.htm | 79 + .../IndexedDB/idbfactory_cmp3.htm | 27 + .../IndexedDB/idbfactory_cmp4.htm | 40 + .../IndexedDB/interfaces.idl | 1 + .../derive_bits_keys/ecdh_bits.js | 269 + .../derive_bits_keys/ecdh_bits.worker.js | 4 + .../derive_bits_keys/ecdh_keys.js | 238 + .../derive_bits_keys/ecdh_keys.worker.js | 4 + .../WebCryptoAPI/derive_bits_keys/hkdf.js | 294 ++ .../derive_bits_keys/hkdf.worker.js | 5 + .../derive_bits_keys/hkdf_vectors.js | 276 + .../WebCryptoAPI/derive_bits_keys/pbkdf2.js | 310 ++ .../derive_bits_keys/pbkdf2.worker.js | 5 + .../derive_bits_keys/pbkdf2_vectors.js | 269 + .../derive_bits_keys/test_ecdh_bits.html | 17 + .../derive_bits_keys/test_ecdh_keys.html | 17 + .../derive_bits_keys/test_hkdf.html | 19 + .../derive_bits_keys/test_pbkdf2.html | 19 + .../import_export/ec_importKey.js | 279 + .../import_export/ec_importKey.worker.js | 4 + .../import_export/rsa_importKey.js | 296 ++ .../import_export/rsa_importKey.worker.js | 4 + .../import_export/symmetric_importKey.js | 242 + .../symmetric_importKey.worker.js | 4 + .../import_export/test_ec_importKey.html | 12 + .../import_export/test_rsa_importKey.html | 12 + .../test_symmetric_importKey.html | 12 + .../WebCryptoAPI/sign_verify/ecdsa.js | 479 ++ .../WebCryptoAPI/sign_verify/ecdsa.worker.js | 5 + .../WebCryptoAPI/sign_verify/ecdsa_vectors.js | 105 + .../WebCryptoAPI/sign_verify/hmac.js | 347 ++ .../WebCryptoAPI/sign_verify/hmac.worker.js | 5 + .../WebCryptoAPI/sign_verify/hmac_vectors.js | 39 + .../WebCryptoAPI/sign_verify/rsa.js | 399 ++ .../sign_verify/rsa_pkcs.worker.js | 5 + .../sign_verify/rsa_pkcs_vectors.js | 92 + .../sign_verify/rsa_pss.worker.js | 5 + .../sign_verify/rsa_pss_vectors.js | 147 + .../WebCryptoAPI/sign_verify/test_ecdsa.html | 19 + .../WebCryptoAPI/sign_verify/test_hmac.html | 19 + .../sign_verify/test_rsa_pkcs.html | 19 + .../sign_verify/test_rsa_pss.html | 19 + .../test_wrapKey_unwrapKey.html | 17 + .../wrapKey_unwrapKey/wrapKey_unwrapKey.js | 266 + .../wrapKey_unwrapKey.worker.js | 4 + .../XMLHttpRequest/FormData-append.html | 15 +- .../XMLHttpRequest-withCredentials.any.js | 40 + .../XMLHttpRequest-withCredentials.html | 13 - .../XMLHttpRequest-withCredentials.js | 42 - .../XMLHttpRequest-withCredentials.worker.js | 4 - .../XMLHttpRequest/abort-during-upload.htm | 22 +- .../XMLHttpRequest/abort-event-order.htm | 27 +- .../XMLHttpRequest/event-error-order.sub.html | 35 + .../XMLHttpRequest/event-error.html | 2 +- .../XMLHttpRequest/event-error.sub.html | 25 + .../XMLHttpRequest/event-progress.htm | 2 +- .../XMLHttpRequest/event-timeout-order.htm | 37 + .../event-upload-progress-crossorigin.sub.htm | 3 +- .../headers-normalize-response.htm | 42 + .../XMLHttpRequest/open-url-multi-window.htm | 3 +- .../XMLHttpRequest/resources/last-modified.py | 2 +- .../XMLHttpRequest/resources/parse-headers.py | 10 + .../XMLHttpRequest/resources/trickle.py | 5 +- .../resources/xmlhttprequest-event-order.js | 33 + .../XMLHttpRequest/response-data-progress.htm | 20 +- .../XMLHttpRequest/responsexml-basic.htm | 2 +- .../responsexml-document-properties.htm | 2 +- .../security-consideration.sub.html | 8 +- .../XMLHttpRequest/send-entity-body-empty.htm | 12 +- .../send-entity-body-get-head-async.htm | 8 +- .../send-entity-body-get-head.htm | 8 +- .../XMLHttpRequest/send-entity-body-none.htm | 24 +- .../send-no-response-event-order.htm | 36 +- .../send-non-same-origin.sub.htm | 9 +- .../send-sync-response-event-order.htm | 22 +- .../setrequestheader-content-type.htm | 228 +- .../annotation-model/CONTRIBUTING.md | 9 + .../annotation-model/OWNERS | 1 + .../web-platform-tests/annotation-model/TODO | 5 - .../annotation-model/annotations/.gitignore | 0 .../3.1-annotationContextValidated.json | 20 + .../3.1-annotationIdValidated.json | 11 + .../3.1-annotationTypeValidated.json | 12 + .../annotations/3.1-bodyKeyFound.json | 12 + .../annotations/3.1-targetKeyFound.json | 12 + .../3.2-bodyObjectsRecognized.json | 22 + .../3.2-targetObjectsRecognized.json | 22 + .../3.2.5-bodyValueImplemented.json | 14 + .../annotations/3.2.5-bodyValueValidated.json | 13 + .../annotations/3.2.5-notBodyBodyValue.json | 13 + .../3.3.1-annotationCreatedImplemented.json | 14 + .../3.3.1-annotationCreatedValidated.json | 14 + .../3.3.1-annotationCreatorImplemented.json | 14 + .../3.3.1-annotationGeneratedImplemented.json | 14 + .../3.3.1-annotationGeneratedValidated.json | 14 + .../3.3.1-annotationGeneratorImplemented.json | 14 + .../3.3.1-annotationModifiedImplemented.json | 14 + .../3.3.1-annotationModifiedValidated.json | 14 + ....1-annotationSingleCreatorImplemented.json | 14 + ....1-singleAnnotationCreatorImplemented.json | 14 + ...nnotationCreatorAgentEmailImplemented.json | 24 + ...tionCreatorAgentEmail_sha1Implemented.json | 24 + ...tationCreatorAgentHomepageImplemented.json | 24 + ...2-annotationCreatorAgentIdImplemented.json | 24 + ...annotationCreatorAgentNameImplemented.json | 24 + ...tationCreatorAgentNicknameImplemented.json | 24 + ...tionCreatorAgentSingleNameImplemented.json | 24 + ...annotationCreatorAgentTypeImplemented.json | 24 + ...otationGeneratorAgentEmailImplemented.json | 24 + ...onGeneratorAgentEmail_sha1Implemented.json | 24 + ...tionGeneratorAgentHomepageImplemented.json | 24 + ...annotationGeneratorAgentIdImplemented.json | 24 + ...notationGeneratorAgentNameImplemented.json | 24 + ...tionGeneratorAgentNicknameImplemented.json | 24 + ...onGeneratorAgentSingleNameImplemented.json | 24 + ...notationGeneratorAgentTypeImplemented.json | 24 + .../3.3.3-annotationAudienceImplemented.json | 14 + ...3.3.5-annotationMotivationImplemented.json | 14 + ...annotationSingleMotivationImplemented.json | 14 + .../3.3.6-annotationRightsImplemented.json | 14 + .../3.3.6-annotationRightsValidated.json | 14 + .../3.3.7-annotationCanonicalImplemented.json | 14 + .../3.3.7-annotationCanonicalValidated.json | 14 + .../3.3.7-annotationViaImplemented.json | 14 + .../3.3.7-annotationViaValidated.json | 14 + .../4.4-annotationStylesheetImplemented.json | 14 + .../annotationAgentOptionals-manual.html | 61 + .../annotations/annotationAgentOptionals.test | 25 + .../annotationMusts-manual.html} | 27 +- .../annotations/annotationMusts.test | 23 + .../annotationOptionals-manual.html} | 27 +- .../annotations/annotationOptionals.test | 25 + .../annotation-model/collections/.gitignore | 0 .../definitions/annotations.json | 212 + .../definitions/bodyTarget.json | 1049 ++++ .../definitions/choiceSet.json | 216 +- .../definitions/externalWebResource.json | 13 - .../annotation-model/definitions/id.json | 38 + .../definitions/otherProperties.json | 1472 ++++++ .../definitions/specificResource.json | 663 ++- .../definitions/stringUri.json | 6 - .../definitions/textualBody.json | 13 - .../annotation-model/examples/example3.test | 8 + .../annotation-model/scripts/JSONtest.js | 211 +- .../annotation-model/scripts/showdown.min.js | 4 + .../annotation-model/tools/make_tests.py | 41 +- .../tools/samples/example1.json | 7 + .../tools/samples/example10.json | 19 + .../tools/samples/example11.json | 18 + .../tools/samples/example12.json | 19 + .../tools/samples/example13.json | 16 + .../tools/samples/example14.json | 16 + .../tools/samples/example15.json | 20 + .../tools/samples/example16.json | 12 + .../tools/samples/example17.json | 12 + .../tools/samples/example18.json | 19 + .../tools/samples/example19.json | 11 + .../tools/samples/example2.json | 17 + .../tools/samples/example20.json | 12 + .../tools/samples/example3.json | 13 + .../tools/samples/example4.json | 11 + .../tools/samples/example5.json | 12 + .../tools/samples/example6.json | 7 + .../tools/samples/example7.json | 11 + .../tools/samples/example8.json | 6 + .../tools/samples/example9.json | 16 + .../annotation-model/tools/template_js | 36 + .../tools/{template => template_manual} | 6 +- .../annotation-protocol/.editorconfig | 10 + .../annotation-protocol/CONTRIBUTING.md | 38 + .../annotation-protocol/README.md | 86 + .../annotation-protocol/server/.gitignore | 0 .../server/server-manual.html | 404 ++ .../app-uri/appURI_test.html | 4 +- .../web-platform-tests/common/canvas-tests.js | 9 + .../common/get-host-info.sub.js | 25 + .../html-svg/0001isvalid.html | 130 + .../html-svg/animate-dom-01-f-novalid.html | 176 + .../html-svg/animate-dom-02-f-novalid.html | 66 + .../html-svg/animate-elem-02-t-isvalid.html | 82 + .../html-svg/animate-elem-03-t-isvalid.html | 70 + .../html-svg/animate-elem-04-t-isvalid.html | 56 + .../html-svg/animate-elem-05-t-isvalid.html | 58 + .../html-svg/animate-elem-06-t-isvalid.html | 56 + .../html-svg/animate-elem-07-t-isvalid.html | 58 + .../html-svg/animate-elem-08-t-isvalid.html | 65 + .../html-svg/animate-elem-09-t-isvalid.html | 77 + .../html-svg/animate-elem-10-t-isvalid.html | 78 + .../html-svg/animate-elem-11-t-isvalid.html | 77 + .../html-svg/animate-elem-12-t-isvalid.html | 77 + .../html-svg/animate-elem-13-t-isvalid.html | 86 + .../html-svg/animate-elem-14-t-isvalid.html | 62 + .../html-svg/animate-elem-15-t-isvalid.html | 62 + .../html-svg/animate-elem-17-t-isvalid.html | 62 + .../html-svg/animate-elem-19-t-isvalid.html | 62 + .../html-svg/animate-elem-20-t-isvalid.html | 59 + .../html-svg/animate-elem-21-t-isvalid.html | 67 + .../html-svg/animate-elem-22-b-isvalid.html | 63 + .../html-svg/animate-elem-23-t-isvalid.html | 64 + .../html-svg/animate-elem-24-t-novalid.html | 105 + .../html-svg/animate-elem-25-t-isvalid.html | 61 + .../html-svg/animate-elem-26-t-isvalid.html | 62 + .../html-svg/animate-elem-27-t-isvalid.html | 60 + .../html-svg/animate-elem-28-t-isvalid.html | 54 + .../html-svg/animate-elem-29-b-isvalid.html | 60 + .../html-svg/animate-elem-30-t-isvalid.html | 146 + .../html-svg/animate-elem-31-t-isvalid.html | 118 + .../html-svg/animate-elem-32-t-isvalid.html | 139 + .../html-svg/animate-elem-33-t-isvalid.html | 131 + .../html-svg/animate-elem-34-t-isvalid.html | 92 + .../html-svg/animate-elem-35-t-isvalid.html | 120 + .../html-svg/animate-elem-36-t-isvalid.html | 134 + .../html-svg/animate-elem-37-t-isvalid.html | 88 + .../html-svg/animate-elem-38-t-isvalid.html | 80 + .../html-svg/animate-elem-39-t-isvalid.html | 114 + .../html-svg/animate-elem-40-t-novalid.html | 200 + .../html-svg/animate-elem-41-t-isvalid.html | 393 ++ .../html-svg/animate-elem-44-t-isvalid.html | 72 + .../html-svg/animate-elem-46-t-isvalid.html | 239 + .../html-svg/animate-elem-52-t-isvalid.html | 78 + .../html-svg/animate-elem-53-t-isvalid.html | 88 + .../html-svg/animate-elem-60-t-isvalid.html | 157 + .../html-svg/animate-elem-61-t-isvalid.html | 115 + .../html-svg/animate-elem-62-t-isvalid.html | 157 + .../html-svg/animate-elem-63-t-isvalid.html | 122 + .../html-svg/animate-elem-64-t-isvalid.html | 100 + .../html-svg/animate-elem-65-t-isvalid.html | 146 + .../html-svg/animate-elem-66-t-isvalid.html | 139 + .../html-svg/animate-elem-67-t-isvalid.html | 123 + .../html-svg/animate-elem-68-t-isvalid.html | 102 + .../html-svg/animate-elem-69-t-isvalid.html | 113 + .../html-svg/animate-elem-70-t-isvalid.html | 105 + .../html-svg/animate-elem-77-t-novalid.html | 287 ++ .../html-svg/animate-elem-78-t-isvalid.html | 423 ++ .../html-svg/animate-elem-80-t-isvalid.html | 252 + .../html-svg/animate-elem-81-t-isvalid.html | 107 + .../html-svg/animate-elem-82-t-isvalid.html | 213 + .../html-svg/animate-elem-83-t-isvalid.html | 161 + .../html-svg/animate-elem-84-t-isvalid.html | 70 + .../html-svg/animate-elem-85-t-isvalid.html | 83 + .../html-svg/animate-elem-86-t-isvalid.html | 71 + .../html-svg/animate-elem-87-t-isvalid.html | 63 + .../html-svg/animate-elem-88-t-isvalid.html | 52 + .../html-svg/animate-elem-89-t-isvalid.html | 94 + .../html-svg/animate-elem-90-b-isvalid.html | 71 + .../html-svg/animate-elem-91-t-isvalid.html | 186 + .../html-svg/animate-elem-92-t-isvalid.html | 103 + .../animate-interact-events-01-t-isvalid.html | 94 + ...animate-interact-pevents-01-t-isvalid.html | 265 + ...animate-interact-pevents-02-t-isvalid.html | 109 + ...animate-interact-pevents-03-t-isvalid.html | 189 + ...animate-interact-pevents-04-t-isvalid.html | 180 + .../animate-pservers-grad-01-b-novalid.html | 88 + .../animate-script-elem-01-b-novalid.html | 70 + .../animate-struct-dom-01-b-novalid.html | 74 + .../html-svg/color-prof-01-f-isvalid.html | 56 + .../html-svg/color-prop-01-b-isvalid.html | 69 + .../html-svg/color-prop-02-f-isvalid.html | 99 + .../html-svg/color-prop-03-t-isvalid.html | 88 + .../html-svg/color-prop-04-t-isvalid.html | 84 + .../html-svg/color-prop-05-t-isvalid.html | 47 + .../conform-viewers-02-f-novalid.html | 64 + .../conform-viewers-03-f-novalid.html | 102 + .../html-svg/coords-coord-01-t-isvalid.html | 69 + .../html-svg/coords-coord-02-t-isvalid.html | 69 + .../html-svg/coords-dom-01-f-novalid.html | 103 + .../html-svg/coords-dom-02-f-novalid.html | 84 + .../html-svg/coords-dom-03-f-novalid.html | 99 + .../html-svg/coords-dom-04-f-isvalid.html | 155 + .../html-svg/coords-trans-01-b-isvalid.html | 226 + .../html-svg/coords-trans-02-t-isvalid.html | 163 + .../html-svg/coords-trans-03-t-isvalid.html | 86 + .../html-svg/coords-trans-04-t-isvalid.html | 75 + .../html-svg/coords-trans-05-t-isvalid.html | 75 + .../html-svg/coords-trans-06-t-isvalid.html | 69 + .../html-svg/coords-trans-07-t-isvalid.html | 57 + .../html-svg/coords-trans-08-t-isvalid.html | 63 + .../html-svg/coords-trans-09-t-isvalid.html | 89 + .../html-svg/coords-trans-10-f-isvalid.html | 77 + .../html-svg/coords-trans-11-f-isvalid.html | 77 + .../html-svg/coords-trans-12-f-isvalid.html | 79 + .../html-svg/coords-trans-13-f-isvalid.html | 77 + .../html-svg/coords-trans-14-f-isvalid.html | 79 + .../coords-transformattr-01-f-novalid.html | 83 + .../coords-transformattr-02-f-isvalid.html | 83 + .../coords-transformattr-03-f-isvalid.html | 52 + .../coords-transformattr-04-f-isvalid.html | 50 + .../coords-transformattr-05-f-isvalid.html | 60 + .../html-svg/coords-units-01-b-isvalid.html | 150 + .../html-svg/coords-units-02-b-isvalid.html | 115 + .../html-svg/coords-units-03-b-isvalid.html | 125 + .../coords-viewattr-03-b-isvalid.html | 85 + .../extend-namespace-01-f-novalid.html | 162 + .../filters-background-01-f-isvalid.html | 114 + .../html-svg/filters-blend-01-b-isvalid.html | 88 + .../html-svg/filters-color-01-b-isvalid.html | 82 + .../html-svg/filters-color-02-b-novalid.html | 80 + .../filters-composite-02-b-isvalid.html | 181 + .../filters-composite-03-f-isvalid.html | 78 + .../filters-composite-04-f-isvalid.html | 68 + .../filters-composite-05-f-isvalid.html | 56 + .../filters-comptran-01-b-isvalid.html | 97 + .../html-svg/filters-conv-01-f-isvalid.html | 93 + .../html-svg/filters-conv-02-f-novalid.html | 67 + .../html-svg/filters-conv-03-f-isvalid.html | 84 + .../html-svg/filters-conv-04-f-novalid.html | 85 + .../html-svg/filters-conv-05-f-novalid.html | 74 + .../filters-diffuse-01-f-isvalid.html | 134 + .../filters-displace-01-f-isvalid.html | 105 + .../filters-displace-02-f-isvalid.html | 67 + .../filters-example-01-b-isvalid.html | 66 + .../html-svg/filters-felem-01-b-isvalid.html | 68 + .../html-svg/filters-felem-02-f-isvalid.html | 113 + .../html-svg/filters-gauss-01-b-isvalid.html | 69 + .../html-svg/filters-gauss-02-f-isvalid.html | 71 + .../html-svg/filters-gauss-03-f-isvalid.html | 57 + .../html-svg/filters-image-01-b-isvalid.html | 51 + .../html-svg/filters-image-02-b-isvalid.html | 64 + .../html-svg/filters-image-03-f-isvalid.html | 164 + .../html-svg/filters-image-04-f-isvalid.html | 104 + .../html-svg/filters-image-05-f-isvalid.html | 184 + .../html-svg/filters-light-01-f-isvalid.html | 170 + .../html-svg/filters-light-02-f-isvalid.html | 86 + .../html-svg/filters-light-03-f-isvalid.html | 106 + .../html-svg/filters-light-04-f-isvalid.html | 123 + .../html-svg/filters-light-05-f-novalid.html | 207 + .../html-svg/filters-morph-01-f-isvalid.html | 89 + .../html-svg/filters-offset-01-b-isvalid.html | 85 + .../html-svg/filters-offset-02-b-isvalid.html | 71 + .../filters-overview-01-b-isvalid.html | 151 + .../filters-overview-02-b-isvalid.html | 160 + .../filters-overview-03-b-isvalid.html | 151 + .../filters-specular-01-f-isvalid.html | 179 + .../html-svg/filters-tile-01-b-isvalid.html | 63 + .../html-svg/filters-turb-01-f-isvalid.html | 91 + .../html-svg/filters-turb-02-f-isvalid.html | 125 + .../html-svg/fonts-desc-01-t-isvalid.html | 91 + .../html-svg/fonts-desc-02-t-isvalid.html | 115 + .../html-svg/fonts-desc-03-t-isvalid.html | 102 + .../html-svg/fonts-desc-04-t-isvalid.html | 120 + .../html-svg/fonts-desc-05-t-isvalid.html | 107 + .../html-svg/fonts-elem-01-t-isvalid.html | 97 + .../html-svg/fonts-elem-02-t-isvalid.html | 105 + .../html-svg/fonts-elem-03-b-isvalid.html | 97 + .../html-svg/fonts-elem-04-b-isvalid.html | 97 + .../html-svg/fonts-elem-05-t-isvalid.html | 125 + .../html-svg/fonts-elem-06-t-isvalid.html | 98 + .../html-svg/fonts-elem-07-b-isvalid.html | 108 + .../html-svg/fonts-glyph-02-t-isvalid.html | 72 + .../html-svg/fonts-glyph-03-t-isvalid.html | 63 + .../html-svg/fonts-glyph-04-t-novalid.html | 58 + .../html-svg/fonts-kern-01-t-isvalid.html | 253 + .../fonts-overview-201-t-novalid.html | 107 + .../html-svg/imp-path-01-f-isvalid.html | 50 + .../interact-cursor-01-f-isvalid.html | 113 + .../html-svg/interact-dom-01-b-isvalid.html | 108 + .../interact-events-01-b-isvalid.html | 94 + .../interact-events-02-b-novalid.html | 61 + .../interact-events-202-f-isvalid.html | 72 + .../interact-events-203-t-isvalid.html | 87 + .../html-svg/interact-order-01-b-isvalid.html | 89 + .../html-svg/interact-order-02-b-isvalid.html | 87 + .../html-svg/interact-order-03-b-isvalid.html | 86 + .../interact-pevents-01-b-novalid.html | 173 + .../interact-pevents-03-b-novalid.html | 114 + .../interact-pevents-04-t-isvalid.html | 109 + .../interact-pevents-05-b-novalid.html | 102 + .../interact-pevents-07-t-novalid.html | 107 + .../interact-pevents-08-f-novalid.html | 155 + .../interact-pevents-09-f-novalid.html | 146 + .../interact-pevents-10-f-isvalid.html | 68 + .../interact-pointer-01-t-novalid.html | 64 + .../interact-pointer-02-t-novalid.html | 64 + .../interact-pointer-03-t-novalid.html | 62 + .../interact-pointer-04-f-isvalid.html | 71 + .../html-svg/interact-zoom-01-t-isvalid.html | 56 + .../html-svg/interact-zoom-02-t-isvalid.html | 56 + .../html-svg/interact-zoom-03-t-isvalid.html | 56 + .../html-svg/linking-a-01-b-isvalid.html | 54 + .../html-svg/linking-a-03-b-isvalid.html | 54 + .../html-svg/linking-a-04-t-isvalid.html | 65 + .../html-svg/linking-a-05-t-isvalid.html | 71 + .../html-svg/linking-a-07-t-isvalid.html | 75 + .../html-svg/linking-a-08-t-isvalid.html | 52 + .../html-svg/linking-a-09-b-novalid.html | 62 + .../html-svg/linking-a-10-f-novalid.html | 77 + .../html-svg/linking-frag-01-f-isvalid.html | 57 + .../html-svg/linking-uri-01-b-isvalid.html | 91 + .../html-svg/linking-uri-02-b-isvalid.html | 96 + .../html-svg/linking-uri-03-t-isvalid.html | 59 + .../html-svg/masking-filter-01-f-novalid.html | 64 + .../html-svg/masking-intro-01-f-novalid.html | 69 + .../html-svg/masking-mask-01-b-isvalid.html | 98 + .../html-svg/masking-mask-02-f-isvalid.html | 45 + .../masking-opacity-01-b-isvalid.html | 74 + .../html-svg/masking-path-01-b-isvalid.html | 69 + .../html-svg/masking-path-02-b-isvalid.html | 58 + .../html-svg/masking-path-03-b-isvalid.html | 91 + .../html-svg/masking-path-04-b-isvalid.html | 59 + .../html-svg/masking-path-05-f-isvalid.html | 57 + .../html-svg/masking-path-06-b-isvalid.html | 57 + .../html-svg/masking-path-07-b-isvalid.html | 117 + .../html-svg/masking-path-08-b-isvalid.html | 125 + .../html-svg/masking-path-09-b-novalid.html | 63 + .../html-svg/masking-path-10-b-isvalid.html | 123 + .../html-svg/masking-path-11-b-isvalid.html | 56 + .../html-svg/masking-path-12-f-isvalid.html | 73 + .../html-svg/masking-path-13-f-isvalid.html | 50 + .../html-svg/masking-path-14-f-isvalid.html | 62 + .../metadata-example-01-t-novalid.html | 147 + .../painting-control-01-f-isvalid.html | 94 + .../painting-control-02-f-isvalid.html | 52 + .../painting-control-03-f-isvalid.html | 52 + .../painting-control-04-f-isvalid.html | 50 + .../painting-control-05-f-isvalid.html | 107 + .../painting-control-06-f-isvalid.html | 52 + .../html-svg/painting-fill-01-t-isvalid.html | 56 + .../html-svg/painting-fill-02-t-isvalid.html | 60 + .../html-svg/painting-fill-03-t-isvalid.html | 54 + .../html-svg/painting-fill-04-t-isvalid.html | 54 + .../html-svg/painting-fill-05-b-isvalid.html | 60 + .../painting-marker-01-f-isvalid.html | 124 + .../painting-marker-02-f-isvalid.html | 212 + .../painting-marker-03-f-isvalid.html | 75 + .../painting-marker-04-f-novalid.html | 72 + .../painting-marker-05-f-isvalid.html | 221 + .../painting-marker-06-f-isvalid.html | 125 + .../painting-marker-07-f-isvalid.html | 58 + ...inting-marker-properties-01-f-isvalid.html | 80 + .../painting-render-01-b-isvalid.html | 128 + .../painting-render-02-b-isvalid.html | 72 + .../painting-stroke-01-t-isvalid.html | 52 + .../painting-stroke-02-t-isvalid.html | 52 + .../painting-stroke-03-t-isvalid.html | 52 + .../painting-stroke-04-t-isvalid.html | 52 + .../painting-stroke-05-t-isvalid.html | 73 + .../painting-stroke-06-t-isvalid.html | 60 + .../painting-stroke-07-t-isvalid.html | 54 + .../painting-stroke-08-t-isvalid.html | 68 + .../painting-stroke-09-t-isvalid.html | 48 + .../painting-stroke-10-t-isvalid.html | 63 + .../html-svg/paths-data-01-t-isvalid.html | 135 + .../html-svg/paths-data-02-t-isvalid.html | 108 + .../html-svg/paths-data-03-f-isvalid.html | 97 + .../html-svg/paths-data-04-t-isvalid.html | 69 + .../html-svg/paths-data-05-t-isvalid.html | 66 + .../html-svg/paths-data-06-t-isvalid.html | 71 + .../html-svg/paths-data-07-t-isvalid.html | 70 + .../html-svg/paths-data-08-t-isvalid.html | 68 + .../html-svg/paths-data-09-t-isvalid.html | 65 + .../html-svg/paths-data-10-t-isvalid.html | 98 + .../html-svg/paths-data-12-t-isvalid.html | 57 + .../html-svg/paths-data-13-t-isvalid.html | 49 + .../html-svg/paths-data-14-t-isvalid.html | 50 + .../html-svg/paths-data-15-t-isvalid.html | 53 + .../html-svg/paths-data-16-t-isvalid.html | 56 + .../html-svg/paths-data-17-f-isvalid.html | 51 + .../html-svg/paths-data-18-f-novalid.html | 86 + .../html-svg/paths-data-19-f-isvalid.html | 94 + .../html-svg/paths-data-20-f-novalid.html | 77 + .../html-svg/paths-dom-01-f-novalid.html | 123 + .../html-svg/paths-dom-02-f-novalid.html | 259 + .../html-svg/pservers-grad-01-b-isvalid.html | 56 + .../html-svg/pservers-grad-02-b-isvalid.html | 56 + .../html-svg/pservers-grad-03-b-isvalid.html | 58 + .../html-svg/pservers-grad-04-b-isvalid.html | 67 + .../html-svg/pservers-grad-05-b-isvalid.html | 65 + .../html-svg/pservers-grad-06-b-isvalid.html | 74 + .../html-svg/pservers-grad-07-b-isvalid.html | 63 + .../html-svg/pservers-grad-08-b-isvalid.html | 79 + .../html-svg/pservers-grad-09-b-isvalid.html | 76 + .../html-svg/pservers-grad-10-b-isvalid.html | 72 + .../html-svg/pservers-grad-11-b-isvalid.html | 80 + .../html-svg/pservers-grad-12-b-isvalid.html | 75 + .../html-svg/pservers-grad-13-b-isvalid.html | 166 + .../html-svg/pservers-grad-14-b-isvalid.html | 112 + .../html-svg/pservers-grad-15-b-isvalid.html | 57 + .../html-svg/pservers-grad-16-b-isvalid.html | 63 + .../html-svg/pservers-grad-17-b-isvalid.html | 70 + .../html-svg/pservers-grad-18-b-isvalid.html | 74 + .../html-svg/pservers-grad-20-b-isvalid.html | 71 + .../html-svg/pservers-grad-21-b-isvalid.html | 133 + .../html-svg/pservers-grad-22-b-isvalid.html | 88 + .../html-svg/pservers-grad-23-f-novalid.html | 57 + .../html-svg/pservers-grad-24-f-isvalid.html | 60 + .../pservers-grad-stops-01-f-isvalid.html | 61 + .../pservers-pattern-01-b-isvalid.html | 82 + .../pservers-pattern-02-f-isvalid.html | 52 + .../pservers-pattern-03-f-isvalid.html | 83 + .../pservers-pattern-04-f-isvalid.html | 57 + .../pservers-pattern-05-f-isvalid.html | 52 + .../pservers-pattern-06-f-isvalid.html | 52 + .../pservers-pattern-07-f-isvalid.html | 55 + .../pservers-pattern-08-f-isvalid.html | 55 + .../pservers-pattern-09-f-isvalid.html | 59 + .../html-svg/render-elems-01-t-isvalid.html | 56 + .../html-svg/render-elems-02-t-isvalid.html | 56 + .../html-svg/render-elems-06-t-isvalid.html | 64 + .../html-svg/render-elems-07-t-isvalid.html | 62 + .../html-svg/render-elems-08-t-isvalid.html | 64 + .../html-svg/render-groups-01-b-isvalid.html | 90 + .../html-svg/render-groups-03-t-isvalid.html | 84 + .../html-svg/script-handle-01-b-isvalid.html | 81 + .../html-svg/script-handle-02-b-isvalid.html | 106 + .../html-svg/script-handle-03-b-isvalid.html | 106 + .../html-svg/script-handle-04-b-isvalid.html | 106 + .../html-svg/script-specify-01-f-novalid.html | 59 + .../html-svg/script-specify-02-f-isvalid.html | 61 + .../html-svg/shapes-circle-01-t-isvalid.html | 50 + .../html-svg/shapes-circle-02-t-isvalid.html | 60 + .../html-svg/shapes-ellipse-01-t-isvalid.html | 63 + .../html-svg/shapes-ellipse-02-t-isvalid.html | 57 + .../html-svg/shapes-ellipse-03-f-isvalid.html | 58 + .../html-svg/shapes-grammar-01-f-isvalid.html | 63 + .../html-svg/shapes-intro-01-t-isvalid.html | 103 + .../html-svg/shapes-intro-02-f-isvalid.html | 76 + .../html-svg/shapes-line-01-t-isvalid.html | 72 + .../html-svg/shapes-line-02-f-isvalid.html | 48 + .../html-svg/shapes-polygon-01-t-isvalid.html | 68 + .../html-svg/shapes-polygon-02-t-isvalid.html | 73 + .../html-svg/shapes-polygon-03-t-isvalid.html | 52 + .../shapes-polyline-01-t-isvalid.html | 74 + .../shapes-polyline-02-t-isvalid.html | 73 + .../html-svg/shapes-rect-01-t-isvalid.html | 64 + .../html-svg/shapes-rect-02-t-isvalid.html | 63 + .../html-svg/shapes-rect-03-t-novalid.html | 127 + .../html-svg/shapes-rect-04-f-isvalid.html | 53 + .../html-svg/shapes-rect-05-f-isvalid.html | 59 + .../html-svg/shapes-rect-06-f-isvalid.html | 57 + .../html-svg/shapes-rect-07-f-isvalid.html | 52 + .../html-svg/struct-cond-01-t-isvalid.html | 49 + .../html-svg/struct-cond-02-t-isvalid.html | 561 ++ .../html-svg/struct-cond-03-t-isvalid.html | 63 + .../struct-cond-overview-02-f-isvalid.html | 55 + .../struct-cond-overview-03-f-isvalid.html | 49 + .../struct-cond-overview-04-f-isvalid.html | 47 + .../struct-cond-overview-05-f-isvalid.html | 60 + .../html-svg/struct-defs-01-t-isvalid.html | 51 + .../html-svg/struct-dom-01-b-isvalid.html | 166 + .../html-svg/struct-dom-02-b-isvalid.html | 97 + .../html-svg/struct-dom-03-b-isvalid.html | 97 + .../html-svg/struct-dom-04-b-isvalid.html | 116 + .../html-svg/struct-dom-05-b-isvalid.html | 114 + .../html-svg/struct-dom-06-b-isvalid.html | 90 + .../html-svg/struct-dom-07-f-novalid.html | 81 + .../html-svg/struct-dom-08-f-novalid.html | 69 + .../html-svg/struct-dom-11-f-novalid.html | 153 + .../html-svg/struct-dom-12-b-isvalid.html | 84 + .../html-svg/struct-dom-13-f-novalid.html | 159 + .../html-svg/struct-dom-14-f-novalid.html | 96 + .../html-svg/struct-dom-15-f-novalid.html | 131 + .../html-svg/struct-dom-16-f-isvalid.html | 117 + .../html-svg/struct-dom-17-f-novalid.html | 95 + .../html-svg/struct-dom-18-f-isvalid.html | 130 + .../html-svg/struct-dom-19-f-novalid.html | 80 + .../html-svg/struct-dom-20-f-novalid.html | 131 + .../html-svg/struct-frag-01-t-isvalid.html | 41 + .../html-svg/struct-frag-02-t-isvalid.html | 51 + .../html-svg/struct-frag-03-t-isvalid.html | 49 + .../html-svg/struct-frag-04-t-isvalid.html | 49 + .../html-svg/struct-frag-05-t-novalid.html | 56 + .../html-svg/struct-frag-06-t-isvalid.html | 58 + .../html-svg/struct-group-01-t-isvalid.html | 58 + .../html-svg/struct-group-02-b-isvalid.html | 53 + .../html-svg/struct-group-03-t-isvalid.html | 269 + .../html-svg/struct-image-01-t-isvalid.html | 46 + .../html-svg/struct-image-02-b-isvalid.html | 69 + .../html-svg/struct-image-03-t-isvalid.html | 52 + .../html-svg/struct-image-04-t-isvalid.html | 46 + .../html-svg/struct-image-05-b-isvalid.html | 45 + .../html-svg/struct-image-06-t-isvalid.html | 83 + .../html-svg/struct-image-07-t-isvalid.html | 66 + .../html-svg/struct-image-08-t-isvalid.html | 50 + .../html-svg/struct-image-09-t-isvalid.html | 49 + .../html-svg/struct-image-10-t-isvalid.html | 50 + .../html-svg/struct-image-11-b-isvalid.html | 56 + .../html-svg/struct-image-12-b-novalid.html | 60 + .../html-svg/struct-image-13-f-isvalid.html | 111 + .../html-svg/struct-image-14-f-isvalid.html | 111 + .../html-svg/struct-image-15-f-isvalid.html | 120 + .../html-svg/struct-image-16-f-isvalid.html | 49 + .../html-svg/struct-image-17-b-isvalid.html | 46 + .../html-svg/struct-image-18-f-isvalid.html | 52 + .../html-svg/struct-image-19-f-isvalid.html | 53 + .../html-svg/struct-svg-01-f-isvalid.html | 114 + .../html-svg/struct-svg-02-f-isvalid.html | 134 + .../html-svg/struct-svg-03-f-isvalid.html | 60 + .../html-svg/struct-symbol-01-b-isvalid.html | 60 + .../html-svg/struct-use-01-t-isvalid.html | 99 + .../html-svg/struct-use-03-t-isvalid.html | 61 + .../html-svg/struct-use-04-b-isvalid.html | 54 + .../html-svg/struct-use-05-b-isvalid.html | 70 + .../html-svg/struct-use-06-b-isvalid.html | 51 + .../html-svg/struct-use-07-b-isvalid.html | 56 + .../html-svg/struct-use-08-b-isvalid.html | 57 + .../html-svg/struct-use-09-b-isvalid.html | 67 + .../html-svg/struct-use-10-f-isvalid.html | 121 + .../html-svg/struct-use-11-f-novalid.html | 137 + .../html-svg/struct-use-12-f-novalid.html | 86 + .../html-svg/struct-use-13-f-novalid.html | 65 + .../html-svg/struct-use-14-f-isvalid.html | 63 + .../html-svg/struct-use-15-f-isvalid.html | 66 + .../html-svg/styling-class-01-f-isvalid.html | 62 + .../html-svg/styling-css-01-b-isvalid.html | 82 + .../html-svg/styling-css-02-b-isvalid.html | 78 + .../html-svg/styling-css-03-b-isvalid.html | 84 + .../html-svg/styling-css-04-f-isvalid.html | 141 + .../html-svg/styling-css-05-b-isvalid.html | 60 + .../html-svg/styling-css-06-b-isvalid.html | 165 + .../html-svg/styling-css-07-f-isvalid.html | 50 + .../html-svg/styling-css-08-f-isvalid.html | 104 + .../html-svg/styling-css-09-f-isvalid.html | 70 + .../html-svg/styling-css-10-f-isvalid.html | 59 + .../html-svg/styling-elem-01-b-isvalid.html | 56 + .../styling-inherit-01-b-isvalid.html | 61 + .../html-svg/styling-pres-01-t-isvalid.html | 48 + .../html-svg/styling-pres-02-f-novalid.html | 185 + .../html-svg/styling-pres-03-f-isvalid.html | 48 + .../html-svg/styling-pres-04-f-isvalid.html | 93 + .../html-svg/styling-pres-05-f-isvalid.html | 66 + .../html-svg/svgdom-over-01-f-novalid.html | 190 + .../html-svg/text-align-01-b-isvalid.html | 67 + .../html-svg/text-align-02-b-isvalid.html | 56 + .../html-svg/text-align-03-b-isvalid.html | 53 + .../html-svg/text-align-04-b-isvalid.html | 72 + .../html-svg/text-align-05-b-isvalid.html | 61 + .../html-svg/text-align-06-b-isvalid.html | 62 + .../html-svg/text-align-07-t-isvalid.html | 69 + .../html-svg/text-align-08-b-isvalid.html | 73 + .../html-svg/text-altglyph-01-b-isvalid.html | 100 + .../html-svg/text-altglyph-02-b-isvalid.html | 323 ++ .../html-svg/text-altglyph-03-b-isvalid.html | 348 ++ .../html-svg/text-bidi-01-t-isvalid.html | 49 + .../html-svg/text-deco-01-b-isvalid.html | 60 + .../html-svg/text-dom-01-f-isvalid.html | 161 + .../html-svg/text-dom-02-f-novalid.html | 110 + .../html-svg/text-dom-03-f-novalid.html | 113 + .../html-svg/text-dom-04-f-isvalid.html | 149 + .../html-svg/text-dom-05-f-novalid.html | 157 + .../html-svg/text-fonts-01-t-isvalid.html | 55 + .../html-svg/text-fonts-02-t-isvalid.html | 63 + .../html-svg/text-fonts-03-t-novalid.html | 73 + .../html-svg/text-fonts-04-t-isvalid.html | 59 + .../html-svg/text-fonts-05-f-novalid.html | 51 + .../html-svg/text-fonts-202-t-isvalid.html | 74 + .../html-svg/text-fonts-203-t-isvalid.html | 119 + .../html-svg/text-fonts-204-t-isvalid.html | 111 + .../html-svg/text-intro-01-t-isvalid.html | 64 + .../html-svg/text-intro-02-b-isvalid.html | 56 + .../html-svg/text-intro-03-b-isvalid.html | 52 + .../html-svg/text-intro-04-t-isvalid.html | 55 + .../html-svg/text-intro-05-t-isvalid.html | 54 + .../html-svg/text-intro-06-t-isvalid.html | 56 + .../html-svg/text-intro-07-t-isvalid.html | 52 + .../html-svg/text-intro-09-b-isvalid.html | 67 + .../html-svg/text-intro-10-f-isvalid.html | 56 + .../html-svg/text-intro-11-t-isvalid.html | 57 + .../html-svg/text-intro-12-t-isvalid.html | 56 + .../html-svg/text-path-01-b-isvalid.html | 76 + .../html-svg/text-path-02-b-isvalid.html | 81 + .../html-svg/text-spacing-01-b-isvalid.html | 52 + .../html-svg/text-text-01-b-isvalid.html | 147 + .../html-svg/text-text-03-b-isvalid.html | 78 + .../html-svg/text-text-04-t-isvalid.html | 183 + .../html-svg/text-text-05-t-isvalid.html | 157 + .../html-svg/text-text-06-t-isvalid.html | 108 + .../html-svg/text-text-07-t-isvalid.html | 47 + .../html-svg/text-text-08-b-isvalid.html | 48 + .../html-svg/text-text-09-t-isvalid.html | 47 + .../html-svg/text-text-10-t-isvalid.html | 68 + .../html-svg/text-text-11-t-isvalid.html | 72 + .../html-svg/text-text-12-t-isvalid.html | 167 + .../html-svg/text-tref-01-b-isvalid.html | 58 + .../html-svg/text-tselect-01-b-isvalid.html | 55 + .../html-svg/text-tselect-02-f-novalid.html | 94 + .../html-svg/text-tselect-03-f-novalid.html | 105 + .../html-svg/text-tspan-01-b-isvalid.html | 100 + .../html-svg/text-tspan-02-b-isvalid.html | 110 + .../html-svg/types-basic-01-f-isvalid.html | 64 + .../html-svg/types-basic-02-f-isvalid.html | 75 + .../html-svg/types-dom-01-b-isvalid.html | 75 + .../html-svg/types-dom-02-f-novalid.html | 134 + .../html-svg/types-dom-03-b-novalid.html | 69 + .../html-svg/types-dom-04-b-novalid.html | 226 + .../html-svg/types-dom-05-b-novalid.html | 109 + .../html-svg/types-dom-06-f-isvalid.html | 119 + .../html-svg/types-dom-07-f-novalid.html | 135 + .../html-svg/types-dom-08-f-novalid.html | 181 + ...ypes-dom-svgfittoviewbox-01-f-isvalid.html | 82 + .../types-dom-svglengthlist-01-f-isvalid.html | 105 + .../types-dom-svgnumberlist-01-f-isvalid.html | 105 + .../types-dom-svgstringlist-01-f-isvalid.html | 104 + ...pes-dom-svgtransformable-01-f-isvalid.html | 81 + .../elements/a/href/port-999999-novalid.html | 4 + .../area/href/port-999999-novalid.html | 4 + .../audio/src/port-999999-novalid.html | 4 + ...-isvalid.html => port-999999-novalid.html} | 2 +- .../blockquote/cite/port-999999-novalid.html | 4 + .../formaction/port-999999-novalid.html | 4 + .../del/cite/port-999999-novalid.html | 4 + .../embed/src/port-999999-novalid.html | 4 + .../form/action/port-999999-novalid.html | 4 + ...-isvalid.html => port-999999-novalid.html} | 2 +- .../iframe/src/port-999999-novalid.html | 4 + .../elements/img/src/port-999999-novalid.html | 4 + .../port-999999-novalid.html | 4 + .../type-image-src/port-999999-novalid.html | 4 + .../port-999999-novalid.html | 4 + .../type-url-value/port-999999-novalid.html | 4 + .../ins/cite/port-999999-novalid.html | 4 + .../link/href/port-999999-novalid.html | 4 + .../object/data/port-999999-novalid.html | 4 + .../elements/q/cite/port-999999-novalid.html | 4 + .../script/src/port-999999-novalid.html | 4 + .../source/src/port-999999-novalid.html | 4 + .../track/src/port-999999-novalid.html | 4 + .../video/poster/port-999999-novalid.html | 4 + .../video/src/port-999999-novalid.html | 4 + .../microdata/itemid/port-999999-novalid.html | 4 + .../itemtype/port-999999-novalid.html | 4 + .../conformance-checkers/messages.json | 27 + .../tools/build-svg-tests.py | 315 ++ .../tools/index-isvalid.html | 451 ++ .../conformance-checkers/tools/url.py | 1 + .../stylehash-default-src.sub.html | 4 +- .../connect-src-beacon-blocked.sub.html | 4 +- .../cors/resources/cors-makeheader.py | 7 +- .../define.html | 43 +- .../htmlconstructor/newtarget.html | 124 + .../resources/custom-elements-helpers.js | 22 + .../docs/test-format-guidelines.md | 29 +- .../events/AddEventListenerOptions-once.html | 81 + .../dom/events/Event-initEvent.html | 37 +- .../dom/events/Event-propagation.html | 5 +- .../dom/events/EventTarget-dispatchEvent.html | 8 +- .../web-platform-tests/dom/historical.html | 2 - .../web-platform-tests/dom/interfaces.html | 29 +- .../dom/lists/DOMTokenList-iteration.html | 48 + .../DOMImplementation-createDocument.html | 23 +- .../nodes/DOMImplementation-hasFeature.html | 18 +- .../Document-Element-getElementsByTagName.js | 14 +- .../dom/nodes/Document-createElementNS.html | 3 +- .../dom/nodes/Document-createElementNS.js | 2 - .../Document-getElementsByTagName-xhtml.xhtml | 14 +- .../dom/nodes/Node-childNodes.html | 49 + .../dom/nodes/Node-properties.html | 4 +- .../dom/nodes/attributes.html | 17 - .../dom/ranges/Range-mutations.html | 30 +- .../TreeWalker-acceptNode-filter.html | 2 +- .../dom/traversal/TreeWalker-basic.html | 2 +- .../dom/traversal/TreeWalker-currentNode.html | 2 +- ...reeWalker-previousNodeLastChildReject.html | 2 +- ...eeWalker-previousSiblingLastChildSkip.html | 2 +- .../TreeWalker-traversal-reject.html | 2 +- .../TreeWalker-traversal-skip-most.html | 2 +- .../traversal/TreeWalker-traversal-skip.html | 2 +- ...DOMParser-parseFromString-xml-doctype.html | 27 + .../domparsing/innerhtml-02.html | 126 + ...xhtml => insert_adjacent_html-xhtml.xhtml} | 0 .../domparsing/style_attribute_html.html | 52 + tests/wpt/web-platform-tests/editing/README | 23 +- .../web-platform-tests/editing/data/delete.js | 2 +- .../editing/data/formatblock.js | 2 +- .../editing/data/forwarddelete.js | 2 +- .../editing/data/inserthorizontalrule.js | 2 +- .../editing/data/inserthtml.js | 2 +- .../editing/data/insertimage.js | 2 +- .../editing/data/insertlinebreak.js | 2 +- .../editing/data/insertorderedlist.js | 2 +- .../editing/data/insertparagraph.js | 2 +- .../editing/data/inserttext.js | 2 +- .../editing/data/insertunorderedlist.js | 2 +- .../editing/data/justifycenter.js | 2 +- .../editing/data/justifyfull.js | 2 +- .../editing/data/justifyleft.js | 2 +- .../editing/data/justifyright.js | 2 +- .../web-platform-tests/editing/data/misc.js | 2 +- .../editing/data/outdent.js | 2 +- .../wpt/web-platform-tests/editing/event.html | 160 +- .../editing/include/implementation.js | 2 +- .../editing/include/tests.js | 2 +- .../editing/other/delete.html | 149 + .../EncryptedMediaExtensions.idl | 118 + ...ncrypted-media-async-creation-with-gc.html | 13 +- ...encrypted-media-async-setcert-with-gc.html | 9 +- ...media-lifetime-mediakeys-with-session.html | 14 +- .../encrypted-media-lifetime-mediakeys.html | 11 +- ...ia-lifetime-mediakeysession-reference.html | 14 +- ...e-mediakeysession-release-noreference.html | 14 +- ...edia-lifetime-mediakeysession-release.html | 13 +- ...ted-media-lifetime-multiple-mediakeys.html | 11 +- .../encrypted-media-lifetime-reload.html | 12 +- ...ypted-media-clear-key-invalid-license.html | 10 +- ...media-clearkey-update-non-ascii-input.html | 14 +- ...d-media-keystatuses-multiple-sessions.html | 10 +- ...ed-media-keystatuses-multiple-updates.html | 10 +- .../Google/encrypted-media-onencrypted.html | 7 +- ...-playback-encrypted-and-clear-sources.html | 16 +- ...pted-media-playback-multiple-sessions.html | 9 +- ...ted-media-requestmediakeysystemaccess.html | 4 +- ...ed-media-reset-src-after-setmediakeys.html | 14 +- .../encrypted-media-session-closed-event.html | 11 +- ...dia-setmediakeys-again-after-playback.html | 6 +- ...etmediakeys-again-after-resetting-src.html | 6 +- ...ypted-media-setmediakeys-at-same-time.html | 9 +- ...ltiple-times-with-different-mediakeys.html | 9 +- ...ultiple-times-with-the-same-mediakeys.html | 9 +- ...tmediakeys-to-multiple-video-elements.html | 6 +- .../Google/encrypted-media-setmediakeys.html | 6 +- .../Google/encrypted-media-syntax.html | 4 +- .../Google/encrypted-media-unique-origin.html | 20 +- ...crypted-media-update-disallowed-input.html | 14 +- .../Google/encrypted-media-utils.js | 91 +- .../encrypted-media-waiting-for-a-key.html | 9 +- .../encrypted-media-check-init-data-type.html | 10 +- .../encrypted-media-events.html | 13 +- ...dia-generate-request-disallowed-input.html | 13 +- .../encrypted-media-keystatuses.html | 78 +- ...edia-not-callable-after-createsession.html | 13 +- ...media-playback-setmediakeys-after-src.html | 12 +- ...edia-playback-setmediakeys-before-src.html | 12 +- .../encrypted-media-playback-two-videos.html | 14 +- .../test-encrypted-different-av-keys.webm | Bin .../Google/{ => webm}/test-encrypted.webm | Bin .../encrypted-media/Google/webm/test.webm | Bin 0 -> 219448 bytes .../clearkey-check-initdata-type.html | 33 + .../encrypted-media/clearkey-events.html | 44 + ...key-generate-request-disallowed-input.html | 33 + ...learkey-keystatuses-multiple-sessions.html | 52 + .../encrypted-media/clearkey-keystatuses.html | 51 + ...4-playback-destroy-persistent-license.html | 52 + ...p4-playback-persistent-license-events.html | 52 + ...arkey-mp4-playback-persistent-license.html | 52 + ...ayback-persistent-usage-record-events.html | 53 + ...-mp4-playback-persistent-usage-record.html | 53 + ...k-retrieve-destroy-persistent-license.html | 54 + ...-playback-retrieve-persistent-license.html | 53 + ...back-retrieve-persistent-usage-record.html | 54 + ...learkey-mp4-playback-temporary-events.html | 53 + ...layback-temporary-multikey-sequential.html | 54 + ...arkey-mp4-playback-temporary-multikey.html | 54 + ...back-temporary-setMediaKeys-after-src.html | 54 + ...k-temporary-setMediaKeys-after-update.html | 54 + ...ck-temporary-setMediaKeys-immediately.html | 54 + ...ck-temporary-setMediaKeys-onencrypted.html | 54 + ...key-mp4-playback-temporary-two-videos.html | 55 + ...-mp4-playback-temporary-waitingforkey.html | 53 + .../clearkey-mp4-playback-temporary.html | 53 + ...rkey-not-callable-after-createsession.html | 36 + .../content/audio_aac-lc_128k_2keys_2sess.mp4 | Bin 0 -> 166614 bytes .../content/audio_aac-lc_128k_dashinit.mp4 | Bin 0 -> 85332 bytes .../audio_aac-lc_128k_enc_dashinit.mp4 | Bin 0 -> 90594 bytes .../content/content-metadata.js | 199 + .../video_512x288_h264-360k_dashinit.mp4 | Bin 0 -> 1425859 bytes ...ideo_512x288_h264-360k_enc_2keys_2sess.mp4 | Bin 0 -> 476559 bytes .../video_512x288_h264-360k_enc_dashinit.mp4 | Bin 0 -> 241862 bytes .../drm-check-initdata-type.html | 33 + .../encrypted-media/drm-events.html | 72 + ...drm-generate-request-disallowed-input.html | 33 + .../drm-keystatuses-multiple-sessions.html | 56 + .../encrypted-media/drm-keystatuses.html | 53 + ...4-playback-destroy-persistent-license.html | 52 + ...p4-playback-persistent-license-events.html | 53 + .../drm-mp4-playback-persistent-license.html | 52 + ...ayback-persistent-usage-record-events.html | 54 + ...-mp4-playback-persistent-usage-record.html | 54 + ...k-retrieve-destroy-persistent-license.html | 54 + ...-playback-retrieve-persistent-license.html | 54 + ...back-retrieve-persistent-usage-record.html | 55 + .../drm-mp4-playback-temporary-events.html | 53 + ...layback-temporary-multikey-sequential.html | 55 + .../drm-mp4-playback-temporary-multikey.html | 54 + ...back-temporary-setMediaKeys-after-src.html | 54 + ...k-temporary-setMediaKeys-after-update.html | 54 + ...ck-temporary-setMediaKeys-immediately.html | 54 + ...ck-temporary-setMediaKeys-onencrypted.html | 54 + ...drm-mp4-playback-temporary-two-videos.html | 55 + ...-mp4-playback-temporary-waitingforkey.html | 52 + .../drm-mp4-playback-temporary.html | 53 + .../drm-not-callable-after-createsession.html | 36 + .../encrypted-media/idlharness.html | 51 + .../encrypted-media/polyfill/cast-polyfill.js | 80 + .../polyfill/chrome-polyfill.js | 36 + .../polyfill/clearkey-polyfill.js | 510 ++ .../encrypted-media/polyfill/edge-polyfill.js | 193 + .../polyfill/firefox-polyfill.js | 23 + .../polyfill/make-polyfill-tests.py | 28 + ...y-retrieve-destroy-persistent-license.html | 107 + .../clearkey-retrieve-persistent-license.html | 75 + ...m-retrieve-destroy-persistent-license.html | 108 + .../drm-retrieve-persistent-license.html | 73 + .../drm-retrieve-persistent-usage-record.html | 72 + .../retrieve-persistent-usage-record.html | 94 + .../scripts/check-initdata-type.js | 35 + .../encrypted-media/scripts/events.js | 59 + .../generate-request-disallowed-input.js | 92 + .../scripts/keystatuses-multiple-sessions.js | 107 + .../encrypted-media/scripts/keystatuses.js | 161 + .../not-callable-after-createsession.js | 50 + .../playback-destroy-persistent-license.js | 97 + .../playback-persistent-license-events.js | 131 + .../scripts/playback-persistent-license.js | 79 + ...playback-persistent-usage-record-events.js | 115 + .../playback-persistent-usage-record.js | 113 + .../playback-retrieve-persistent-license.js | 108 + ...ayback-retrieve-persistent-usage-record.js | 122 + .../scripts/playback-temporary-events.js | 156 + ...layback-temporary-multikey-multisession.js | 96 + .../scripts/playback-temporary-multikey.js | 111 + .../playback-temporary-setMediaKeys.js | 106 + .../scripts/playback-temporary-two-videos.js | 91 + .../playback-temporary-waitingforkey.js | 71 + .../scripts/playback-temporary.js | 83 + .../util/clearkey-messagehandler.js | 44 + .../util/drm-messagehandler.js | 245 + .../encrypted-media/util/fetch.js | 456 ++ .../encrypted-media/util/testmediasource.js | 43 + .../encrypted-media/util/utf8.js | 22 + .../encrypted-media/util/utils.js | 228 + .../eventsource/resources/cors.py | 2 +- .../api/basic/mode-same-origin-worker.html | 4 +- .../fetch/api/basic/mode-same-origin.html | 5 +- .../fetch/api/basic/mode-same-origin.js | 16 +- .../fetch/api/basic/referrer-worker.html | 17 + .../fetch/api/basic/referrer.html | 17 + .../fetch/api/basic/referrer.js | 35 + .../fetch/api/basic/request-head-worker.html | 14 + .../fetch/api/basic/request-head.html | 12 + .../fetch/api/basic/request-head.js | 10 + .../fetch/api/basic/request-headers.js | 44 +- .../fetch/api/basic/request-referrer.html | 13 + .../fetch/api/basic/request-referrer.js | 28 + .../fetch/api/basic/scheme-about.js | 21 +- .../fetch/api/basic/scheme-data.js | 14 +- .../fetch/api/basic/text-utf8.html | 69 + .../fetch/api/cors/cors-basic-worker.html | 4 +- .../fetch/api/cors/cors-basic.html | 5 +- .../fetch/api/cors/cors-basic.js | 31 +- .../fetch/api/cors/cors-cookies-worker.html | 4 +- .../fetch/api/cors/cors-cookies.html | 5 +- .../fetch/api/cors/cors-cookies.js | 23 +- .../api/cors/cors-no-preflight-worker.html | 4 +- .../fetch/api/cors/cors-no-preflight.html | 5 +- .../fetch/api/cors/cors-no-preflight.js | 48 +- .../fetch/api/cors/cors-origin-worker.html | 4 +- .../fetch/api/cors/cors-origin.html | 5 +- .../fetch/api/cors/cors-origin.js | 61 +- .../cors/cors-preflight-redirect-worker.html | 4 +- .../api/cors/cors-preflight-redirect.html | 5 +- .../fetch/api/cors/cors-preflight-redirect.js | 5 +- .../cors/cors-preflight-referrer-worker.html | 4 +- .../api/cors/cors-preflight-referrer.html | 5 +- .../fetch/api/cors/cors-preflight-referrer.js | 12 +- .../cors/cors-preflight-status-worker.html | 4 +- .../fetch/api/cors/cors-preflight-status.html | 5 +- .../fetch/api/cors/cors-preflight-status.js | 3 +- .../fetch/api/cors/cors-preflight-worker.html | 4 +- .../fetch/api/cors/cors-preflight.html | 5 +- .../fetch/api/cors/cors-preflight.js | 110 +- .../api/cors/cors-redirect-credentials.html | 5 +- .../api/cors/cors-redirect-credentials.js | 13 +- .../cors/cors-redirect-preflight-worker.html | 15 + .../api/cors/cors-redirect-preflight.html | 16 + .../fetch/api/cors/cors-redirect-preflight.js | 50 + .../fetch/api/cors/cors-redirect-worker.html | 4 +- .../fetch/api/cors/cors-redirect.html | 5 +- .../fetch/api/cors/cors-redirect.js | 15 +- .../fetch/api/headers/headers-basic.html | 26 + .../fetch/api/headers/headers-combine.html | 6 +- .../referrer-no-referrer.html.headers | 2 +- .../policies/referrer-no-referrer.js.headers | 2 +- ...errer-origin-when-cross-origin-worker.html | 16 + .../referrer-origin-when-cross-origin.html | 15 + ...rrer-origin-when-cross-origin.html.headers | 1 + .../referrer-origin-when-cross-origin.js | 16 + ...ferrer-origin-when-cross-origin.js.headers | 1 + .../api/policies/referrer-origin.html.headers | 2 +- .../api/policies/referrer-origin.js.headers | 2 +- .../policies/referrer-unsafe-url.html.headers | 2 +- .../policies/referrer-unsafe-url.js.headers | 2 +- .../fetch/api/redirect/redirect-mode.html | 4 +- .../fetch/api/redirect/redirect-mode.js | 5 +- .../api/redirect/redirect-origin-worker.html | 17 + .../fetch/api/redirect/redirect-origin.html | 18 + .../fetch/api/redirect/redirect-origin.js | 40 + .../fetch/api/redirect/redirect-schemes.html | 22 +- .../redirect/redirect-to-dataurl-worker.html | 14 + .../api/redirect/redirect-to-dataurl.html | 13 + .../fetch/api/redirect/redirect-to-dataurl.js | 35 + .../fetch/api/request/request-cache.html | 2 +- .../fetch/api/request/request-consume.html | 68 +- .../fetch/api/request/request-disturbed.html | 22 + .../fetch/api/request/request-headers.html | 23 + .../fetch/api/request/request-init-002.html | 5 +- .../request/resources/get-host-info.sub.js | 32 - .../fetch/api/resources/redirect.py | 21 +- .../fetch/api/resources/status.py | 9 + .../fetch/api/resources/utils.js | 3 +- .../fetch/api/response/response-clone.html | 34 +- .../api/response/response-consume-stream.html | 9 + .../fetch/api/response/response-consume.html | 40 +- .../fetch/api/response/response-init-002.html | 8 + .../fetch/nosniff/resources/image.py | 2 +- .../fetch/nosniff/stylesheet.html | 6 +- .../browsing_context_name.html | 2 +- .../navigate-child-function-parent.html | 17 + .../source/navigate-child-function-src.html | 17 + .../source/navigate-child-function.html | 18 + .../navigate-child-src-about-blank.html | 17 + .../source/support/dummy.html | 3 + .../source/support/location-set.html | 8 + .../source/support/set-parent-src.html | 8 + .../history/the-history-interface/008.js | 11 + .../security_location_0.sub.htm | 8 +- .../cross-origin-objects-on-new-window.html | 25 + ...cts.sub.html => cross-origin-objects.html} | 26 +- .../origin/cross-origin-objects/frame.html | 8 +- .../win-documentdomain.sub.html | 25 +- .../security-window/window-security.sub.html | 13 +- .../frameElement.sub.html | 3 +- ...s-origin-nested-browsing-contexts.sub.html | 3 +- .../Document.currentScript.sub.html | 3 +- .../html/dom/elements-forms.js | 4 +- .../html/dom/elements-tabular.js | 4 +- .../elements/global-attributes/dataset.html | 12 +- .../global-attributes/dir_auto-EN-L-ref.html | 1 - .../global-attributes/dir_auto-EN-R-ref.html | 1 - .../global-attributes/dir_auto-L-ref.html | 1 - .../dir_auto-N-EN-L-ref.html | 1 - .../dir_auto-N-EN-R-ref.html | 1 - .../global-attributes/dir_auto-N-L-ref.html | 1 - .../global-attributes/dir_auto-N-R-ref.html | 1 - .../global-attributes/dir_auto-R-ref.html | 1 - .../dir_auto-contained-L-ref.html | 1 - .../dir_auto-contained-R-ref.html | 1 - .../dir_auto-contained-bdi-L-ref.html | 1 - .../dir_auto-contained-bdi-R-ref.html | 1 - .../dir_auto-contained-dir-L-ref.html | 1 - .../dir_auto-contained-dir-R-ref.html | 1 - .../dir_auto-contained-dir_auto-L-ref.html | 1 - .../dir_auto-contained-dir_auto-R-ref.html | 1 - .../dir_auto-contained-script-L-ref.html | 1 - .../dir_auto-contained-script-R-ref.html | 1 - .../dir_auto-contained-style-L-ref.html | 1 - .../dir_auto-contained-style-R-ref.html | 1 - .../dir_auto-contained-textarea-L-ref.html | 1 - .../dir_auto-contained-textarea-R-ref.html | 1 - .../dir_auto-input-EN-L-ref.html | 1 - .../dir_auto-input-EN-R-ref.html | 1 - .../dir_auto-input-L-ref.html | 1 - .../dir_auto-input-N-EN-L-ref.html | 1 - .../dir_auto-input-N-EN-R-ref.html | 1 - .../dir_auto-input-N-EN-ref.html | 1 - .../dir_auto-input-N-L-ref.html | 1 - .../dir_auto-input-N-R-ref.html | 1 - .../dir_auto-input-R-ref.html | 1 - .../dir_auto-input-script-EN-L-ref.html | 1 - .../dir_auto-input-script-EN-R-ref.html | 1 - .../dir_auto-input-script-L-ref.html | 1 - .../dir_auto-input-script-N-EN-L-ref.html | 1 - .../dir_auto-input-script-N-EN-R-ref.html | 1 - .../dir_auto-input-script-N-EN-ref.html | 1 - .../dir_auto-input-script-N-L-ref.html | 1 - .../dir_auto-input-script-N-R-ref.html | 1 - .../dir_auto-input-script-R-ref.html | 1 - .../dir_auto-isolate-ref.html | 1 - .../html/dom/interfaces.html | 449 +- .../web-platform-tests/html/dom/reflection.js | 40 + .../dndTransferCases-manual.html | 44 + .../query-encoding/resources/resolve-url.js | 2 +- .../query-encoding/utf-16be.html | Bin 1056 -> 906 bytes .../query-encoding/utf-16le.html | Bin 1062 -> 912 bytes ...type-should-fallback-as-text-type-ref.html | 1 - .../base_href_specified.sub.html | 11 +- .../the-audio-element/audio_constructor.html | 23 +- ...ub.html => security.drawImage.canvas.html} | 7 +- ...sub.html => security.drawImage.image.html} | 7 +- ...=> security.pattern.canvas.fillStyle.html} | 7 +- ... security.pattern.canvas.strokeStyle.html} | 7 +- ...ml => security.pattern.canvas.timing.html} | 7 +- ....sub.html => security.pattern.create.html} | 7 +- ...s.sub.html => security.pattern.cross.html} | 7 +- ... => security.pattern.image.fillStyle.html} | 7 +- ...> security.pattern.image.strokeStyle.html} | 7 +- ...ity.reset.sub.html => security.reset.html} | 7 +- .../iframe-allowfullscreen.html | 68 +- .../form-validation-validity-tooShort.html | 6 +- .../grouping-li-reftest-001-ref.html | 1 - .../grouping-li-reftest-002-ref.html | 1 - .../the-li-element/grouping-li.html | 36 +- .../grouping-ol-rev-reftest-001-ref.html | 1 - .../grouping-ol-start-reftest-001-ref.html | 1 - .../grouping-ol-start-reftest-002-ref.html | 1 - .../grouping-ol-type-reftest-001-ref.html | 1 - .../grouping-ol-type-reftest-002-ref.html | 1 - .../grouping-ol-type-reftest-003-ref.html | 1 - .../the-ol-element/grouping-ol.html | 6 +- .../grouping-pre-reftest-001-ref.html | 1 - .../html/semantics/interfaces.html | 1 + .../html/semantics/interfaces.js | 2 +- .../links/linktypes/alternate-css-ref.html | 1 - .../pseudo-classes/valid-invalid.html | 80 +- .../the-table-element/caption-methods.html | 14 + .../tabular-data/the-table-element/tFoot.html | 9 + .../xhtml-mathml-dtd-entity-support.htm | 40 +- .../html/tools/update_html5lib_tests.py | 2 +- .../event-loops/microtask_after_raf.html | 57 + .../event-loops/microtask_after_script.html | 55 + .../innerText/getter-tests.js | 15 +- .../web-platform-tests/innerText/getter.html | 2 +- .../innerText/setter-tests.js | 3 + .../web-platform-tests/input-events/OWNERS | 2 + tests/wpt/web-platform-tests/lint.whitelist | 8 + .../web-platform-tests/media-source/OWNERS | 2 - .../media-source/interfaces.html | 119 +- .../media-source/manifest.txt | 25 +- .../mediasource-activesourcebuffers.html | 238 + .../mediasource-addsourcebuffer-mode.html | 31 + .../mediasource-addsourcebuffer.html | 3 +- .../mediasource-append-buffer.html | 1 + ...diasource-appendbuffer-quota-exceeded.html | 43 + .../mediasource-appendwindow.html | 17 +- ...urce-attach-stops-delaying-load-event.html | 49 + .../media-source/mediasource-avtracks.html | 124 + .../media-source/mediasource-buffered.html | 24 +- .../media-source/mediasource-closed.html | 1 + ...diasource-config-change-mp4-a-bitrate.html | 1 + ...ce-config-change-mp4-av-audio-bitrate.html | 1 + ...source-config-change-mp4-av-framesize.html | 1 + ...ce-config-change-mp4-av-video-bitrate.html | 1 + ...diasource-config-change-mp4-v-bitrate.html | 1 + ...asource-config-change-mp4-v-framerate.html | 1 + ...asource-config-change-mp4-v-framesize.html | 1 + ...iasource-config-change-webm-a-bitrate.html | 1 + ...e-config-change-webm-av-audio-bitrate.html | 1 + ...ource-config-change-webm-av-framesize.html | 1 + ...e-config-change-webm-av-video-bitrate.html | 1 + ...iasource-config-change-webm-v-bitrate.html | 1 + ...source-config-change-webm-v-framerate.html | 1 + ...source-config-change-webm-v-framesize.html | 1 + .../mediasource-config-changes.js | 16 +- .../media-source/mediasource-detach.html | 50 + ...diasource-duration-boundaryconditions.html | 11 +- .../media-source/mediasource-duration.html | 204 +- .../mediasource-endofstream-invaliderror.html | 1 + .../media-source/mediasource-endofstream.html | 76 + .../media-source/mediasource-errors.html | 197 + .../mediasource-getvideoplaybackquality.html | 86 +- .../mediasource-is-type-supported.html | 9 +- .../mediasource-liveseekable.html | 11 +- .../mediasource-multiple-attach.html | 1 + .../mediasource-play-then-seek-back.html | 4 +- .../media-source/mediasource-play.html | 14 +- .../media-source/mediasource-preload.html | 2 - .../mediasource-redundant-seek.html | 1 + .../media-source/mediasource-remove.html | 69 +- .../mediasource-removesourcebuffer.html | 80 +- .../mediasource-seek-beyond-duration.html | 10 + .../mediasource-seek-during-pending-seek.html | 69 +- .../media-source/mediasource-seekable.html | 64 + ...ediasource-sequencemode-append-buffer.html | 37 +- ...iasource-sourcebuffer-mode-timestamps.html | 52 + .../mediasource-sourcebuffer-mode.html | 2 + ...ediasource-sourcebuffer-trackdefaults.html | 78 + .../mediasource-sourcebufferlist.html | 16 +- .../mediasource-timestamp-offset.html | 4 + .../mediasource-trackdefault.html | 101 + .../mediasource-trackdefaultlist.html | 60 + .../media-source/mediasource-util.js | 109 +- .../GUM-impossible-constraint.https.html | 8 +- .../generic/tools/common_paths.py | 4 +- .../OWNERS | 0 .../payment-request/interfaces.https.html | 126 + .../payment-request-in-iframe.html | 18 + ..._attributes_hoverable_pointers-manual.html | 125 + .../pointerevent_attributes_mouse-manual.html | 102 - ...vent_element_haspointercapture-manual.html | 115 + ...nt_lostpointercapture_is_first-manual.html | 14 +- .../pointerevents/pointerevent_styles.css | 23 +- .../pointerevents/pointerevent_support.js | 88 +- ...touch-action-button-test_touch-manual.html | 4 +- ...it_child-auto-child-none_touch-manual.html | 4 +- ...ction-inherit_child-none_touch-manual.html | 4 +- ..._child-pan-x-child-pan-x_touch-manual.html | 4 +- ..._child-pan-x-child-pan-y_touch-manual.html | 4 +- ...erit_highest-parent-none_touch-manual.html | 4 +- ...tion-inherit_parent-none_touch-manual.html | 4 +- ...ouch-action-pan-down-css_touch-manual.html | 114 + ...ouch-action-pan-left-css_touch-manual.html | 114 + ...uch-action-pan-right-css_touch-manual.html | 114 + ..._touch-action-pan-up-css_touch-manual.html | 114 + ...action-pan-x-pan-y-pan-y_touch-manual.html | 4 +- ...nt_touch-action-svg-test_touch-manual.html | 4 +- ...ointerevent_touch-action-verification.html | 120 +- ..._attributes_hoverable_pointers-iframe.html | 10 + .../wpt/web-platform-tests/pointerlock/OWNERS | 3 +- .../pointerlock/movementX_Y_basic-manual.html | 124 + .../movementX_Y_no-jumps-manual.html | 140 + .../pointerlock/pointerlock_basic-manual.html | 149 + .../pointerlock_fullscreen-manual.html | 173 + .../pointerlock_indefinite-manual.html | 107 + .../pointerlock_leave_Tab-manual.html | 85 + .../pointerlock_leave_UA-manual.html | 85 + .../pointerlock_remove_target-manual.html | 87 + .../presentation-api/OWNERS | 3 + .../PresentationRequest_error.html | 31 +- .../PresentationRequest_success.html | 42 +- .../defaultRequest_success-manual.html | 52 + .../getAvailability_mixedcontent.https.html | 18 + .../getAvailability_sandboxing_error.html | 26 + .../getAvailability_sandboxing_success.html | 25 + .../controlling-ua/idlharness.html | 15 +- ...nectToPresentation_mixedcontent.https.html | 18 + ...onnectToPresentation_sandboxing_error.html | 26 + ...nectToPresentation_sandboxing_success.html | 25 + ...resentation_mixedcontent-manual.https.html | 29 + ...on_mixedcontent_multiple-manual.https.html | 32 + ...wPresentation_sandboxing_error-manual.html | 31 + ...resentation_sandboxing_success-manual.html | 31 + .../controlling-ua/support/iframe.html | 59 + .../generic/subresource/subresource.py | 2 +- .../generic/tools/common_paths.py | 4 +- .../referrer-policy/generic/tools/generate.py | 4 - .../unsupported-csp-referrer-directive.html | 30 + ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - .../insecure-protocol.no-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...re-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - ...de-protocol.keep-origin-redirect.http.html | 41 - .../upgrade-protocol.no-redirect.http.html | 41 - ...de-protocol.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...in-insecure.keep-origin-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...ross-origin.keep-origin-redirect.http.html | 41 - .../cross-origin.no-redirect.http.html | 41 - ...ross-origin.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.keep-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.keep-origin-redirect.http.html | 41 - ...same-origin-insecure.no-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - ...in-insecure.swap-origin-redirect.http.html | 41 - .../referrer-policy/spec.src.json | 195 +- .../referrer-policy/spec_json.js | 2 +- ...ss-insecure.keep-origin-redirect.http.html | 40 + .../cross-insecure.no-redirect.http.html | 40 + ...ss-insecure.swap-origin-redirect.http.html | 40 + ...ss-insecure.keep-origin-redirect.http.html | 40 + .../cross-insecure.no-redirect.http.html | 40 + ...ss-insecure.swap-origin-redirect.http.html | 40 + ...de-protocol.keep-origin-redirect.http.html | 40 + .../upgrade-protocol.no-redirect.http.html | 40 + ...de-protocol.swap-origin-redirect.http.html | 40 + ...de-protocol.keep-origin-redirect.http.html | 40 + .../upgrade-protocol.no-redirect.http.html | 40 + ...de-protocol.swap-origin-redirect.http.html | 40 + ...e-insecure.keep-origin-redirect.http.html} | 13 +- .../same-insecure.no-redirect.http.html} | 13 +- ...me-insecure.swap-origin-redirect.http.html | 40 + ...e-insecure.keep-origin-redirect.http.html} | 12 +- .../same-insecure.no-redirect.http.html} | 12 +- ...me-insecure.swap-origin-redirect.http.html | 40 + ...de-protocol.keep-origin-redirect.http.html | 40 + .../upgrade-protocol.no-redirect.http.html | 40 + ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...de-protocol.keep-origin-redirect.http.html | 40 + .../upgrade-protocol.no-redirect.http.html | 40 + ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + ...ure.keep-origin-redirect.http.html.headers | 2 + .../cross-insecure.no-redirect.http.html | 41 + ...oss-insecure.no-redirect.http.html.headers | 2 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- ...ure.keep-origin-redirect.http.html.headers | 2 + .../same-insecure.no-redirect.http.html} | 14 +- ...ame-insecure.no-redirect.http.html.headers | 2 + ...me-insecure.swap-origin-redirect.http.html | 41 + ...ure.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...de-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html | 41 + ...ade-protocol.no-redirect.http.html.headers | 2 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...ss-insecure.keep-origin-redirect.http.html | 41 + .../cross-insecure.no-redirect.http.html | 41 + ...ss-insecure.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...e-insecure.keep-origin-redirect.http.html} | 14 +- .../same-insecure.no-redirect.http.html} | 14 +- ...me-insecure.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../insecure-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../insecure-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../upgrade-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../upgrade-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../insecure-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../insecure-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../upgrade-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 13 +- .../upgrade-protocol.no-redirect.http.html} | 13 +- ...e-protocol.swap-origin-redirect.http.html} | 13 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html} | 14 +- ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...re-protocol.keep-origin-redirect.http.html | 41 + ...col.keep-origin-redirect.http.html.headers | 2 + .../insecure-protocol.no-redirect.http.html | 41 + ...ure-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- ...col.keep-origin-redirect.http.html.headers | 2 + .../upgrade-protocol.no-redirect.http.html} | 14 +- ...ade-protocol.no-redirect.http.html.headers | 2 + ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...col.swap-origin-redirect.http.html.headers | 2 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...re-protocol.keep-origin-redirect.http.html | 41 + .../insecure-protocol.no-redirect.http.html | 41 + ...re-protocol.swap-origin-redirect.http.html | 41 + ...re-protocol.keep-origin-redirect.http.html | 41 + .../insecure-protocol.no-redirect.http.html | 41 + ...re-protocol.swap-origin-redirect.http.html | 41 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...de-protocol.keep-origin-redirect.http.html | 41 + .../upgrade-protocol.no-redirect.http.html | 41 + ...de-protocol.swap-origin-redirect.http.html | 41 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...re-protocol.keep-origin-redirect.http.html | 41 + .../insecure-protocol.no-redirect.http.html | 41 + ...re-protocol.swap-origin-redirect.http.html | 41 + ...re-protocol.keep-origin-redirect.http.html | 41 + .../insecure-protocol.no-redirect.http.html | 41 + ...re-protocol.swap-origin-redirect.http.html | 41 + ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../insecure-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- ...e-protocol.keep-origin-redirect.http.html} | 14 +- .../upgrade-protocol.no-redirect.http.html} | 14 +- ...e-protocol.swap-origin-redirect.http.html} | 14 +- .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../iframe-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../img-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../script-tag/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - .../generic.keep-origin-redirect.http.html | 41 - .../xhr-request/generic.no-redirect.http.html | 41 - .../generic.swap-origin-redirect.http.html | 41 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...re-protocol.keep-origin-redirect.http.html | 40 - .../insecure-protocol.no-redirect.http.html | 40 - ...re-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - ...de-protocol.keep-origin-redirect.http.html | 40 - .../upgrade-protocol.no-redirect.http.html | 40 - ...de-protocol.swap-origin-redirect.http.html | 40 - .../web-platform-tests/resources/docs/api.md | 2 +- .../resources/idlharness.js | 3 + .../resources/testharness.js | 8 +- .../ServiceWorkerGlobalScope/close.https.html | 11 - .../resources/close-worker.js | 8 - .../service-worker/activation.https.html | 179 + .../service-worker/client-navigate.https.html | 117 + .../controller-on-disconnect.https.html | 40 + .../getregistrations.https.html | 32 + .../resources/client-navigate-frame.html | 12 + .../resources/client-navigate-worker.js | 71 + .../resources/client-navigated-frame.html | 3 + .../resources/interfaces-worker.sub.js | 1 - .../resources/mint-new-worker.py | 25 + .../resources/referer-iframe.html | 2 +- .../resources/skip-waiting-worker.js | 6 +- .../service-workers/tools/blink-import.py | 4 +- ...ent-composed-path-with-related-target.html | 4 +- .../shadow-dom/event-composed-path.html | 4 +- .../shadow-dom/event-composed.html | 4 +- .../shadow-dom/slotchange.html | 4 +- .../shadow-dom/slots-fallback.html | 4 +- .../web-platform-tests/shadow-dom/slots.html | 4 +- .../web-platform-tests/svg/interfaces.html | 6 +- tests/wpt/web-platform-tests/tools/.gitignore | 4 + .../wpt/web-platform-tests/tools/.travis.yml | 41 +- .../wpt/web-platform-tests/tools/lint/lint.py | 149 +- .../tools/lint/tests/test_file_lints.py | 287 ++ .../tools/lint/tests/test_lint.py | 51 +- .../tools/lint/tests/test_path_lints.py | 25 + .../tools/manifest/sourcefile.py | 58 +- .../tools/manifest/tests/test_sourcefile.py | 239 + .../tools/manifest/utils.py | 4 +- tests/wpt/web-platform-tests/tools/pytest.ini | 2 + .../tools/runner/index.html | 6 + .../web-platform-tests/tools/runner/report.py | 12 +- .../tools/runner/runner.css | 7 +- .../web-platform-tests/tools/runner/runner.js | 30 + .../web-platform-tests/tools/serve/serve.py | 74 +- tests/wpt/web-platform-tests/tools/setup.cfg | 4 - tests/wpt/web-platform-tests/tools/tox.ini | 21 + .../touch-events/touch-retargeting.html | 54 + .../web-platform-tests/url/urltestdata.json | 15 + tests/wpt/web-platform-tests/wai-aria/OWNERS | 1 + .../wpt/web-platform-tests/wai-aria/README.md | 65 + .../animation-types/discrete-animation.html | 1 - .../animation-types/type-per-property.html | 569 +++ .../effect-value-context.html | 19 +- .../interfaces/Animatable/animate.html | 47 +- .../interfaces/Animation/cancel.html | 1 - .../interfaces/Animation/constructor.html | 26 +- .../interfaces/Animation/finish.html | 1 - .../interfaces/Animation/finished.html | 1 - .../interfaces/Animation/id.html | 1 - .../interfaces/Animation/oncancel.html | 1 - .../interfaces/Animation/onfinish.html | 1 - .../interfaces/Animation/pause.html | 1 - .../interfaces/Animation/play.html | 1 - .../interfaces/Animation/playState.html | 1 - .../interfaces/Animation/playbackRate.html | 1 - .../interfaces/Animation/ready.html | 1 - .../interfaces/Animation/reverse.html | 1 - .../interfaces/Animation/startTime.html | 1 - .../AnimationEffectTiming/delay.html | 1 - .../AnimationEffectTiming/direction.html | 1 - .../AnimationEffectTiming/easing.html | 25 +- .../AnimationEffectTiming/fill.html | 1 - .../getComputedStyle.html | 6 +- .../AnimationEffectTiming/iterations.html | 1 - .../KeyframeEffect/effect-easing.html | 10 + .../processing-a-keyframes-argument.html | 242 +- .../resources/effect-easing-tests.js | 62 +- .../resources/keyframe-utils.js | 10 +- .../web-animations/testcommon.js | 15 +- .../animation-effects/active-time.html | 136 +- .../animation-effects/current-iteration.html | 168 +- .../animation-effects/phases-and-states.html | 187 + .../simple-iteration-progress.html | 168 +- .../updating-the-finished-state.html | 331 ++ ...ementAudioSourceToScriptProcessorTest.html | 2 +- .../test-pannernode-automation.html | 31 + .../curve-tests.html | 4 +- .../webdriver/navigation.py | 2 +- .../conformance/more/README.md | 2 +- .../webgl/tools/import-conformance-tests.py | 2 +- .../buildtests.py | 2 +- .../webvtt-file-parsing/001.html | 4 +- .../support/settings-align.vtt | 12 +- .../support/settings-line.vtt | 8 +- .../support/settings-position.vtt | 2 +- .../DedicatedWorkerGlobalScope-members.html | 34 - ...dicatedWorkerGlobalScope-members.worker.js | 18 + .../Worker/expected-self-properties.html | 30 - .../Worker/expected-self-properties.worker.js | 11 + .../constructors/Worker/terminate.html | 1 - ...l => unexpected-self-properties.worker.js} | 31 +- .../web-platform-tests/workers/interfaces.idl | 20 +- .../wpt/web-platform-tests/workers/workers.js | 8 - 2381 files changed, 90360 insertions(+), 17722 deletions(-) create mode 100644 tests/wpt/metadata/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html.ini create mode 100644 tests/wpt/metadata/2dcontext/image-smoothing/imagesmoothing.html.ini rename tests/wpt/metadata/{html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html.ini => WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini} (54%) create mode 100644 tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/import_export/ec_importKey.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/import_export/rsa_importKey.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/import_export/symmetric_importKey.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/import_export/test_ec_importKey.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/import_export/test_rsa_importKey.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/import_export/test_symmetric_importKey.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/sign_verify/test_ecdsa.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/sign_verify/test_hmac.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pkcs.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pss.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html.ini create mode 100644 tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/abort-during-upload.htm.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/abort-event-order.htm.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/event-error-order.sub.html.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/event-error.html.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/event-timeout-order.htm.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/headers-normalize-response.htm.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/send-entity-body-empty.htm.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/send-entity-body-get-head.htm.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/send-entity-body-none.htm.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/send-sync-response-event-order.htm.ini create mode 100644 tests/wpt/metadata/XMLHttpRequest/setrequestheader-content-type.htm.ini create mode 100644 tests/wpt/metadata/dom/events/AddEventListenerOptions-once.html.ini create mode 100644 tests/wpt/metadata/dom/events/Event-propagation.html.ini create mode 100644 tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini create mode 100644 tests/wpt/metadata/dom/lists/DOMTokenList-iteration.html.ini create mode 100644 tests/wpt/metadata/dom/nodes/Node-properties.html.ini create mode 100644 tests/wpt/metadata/domparsing/DOMParser-parseFromString-xml-doctype.html.ini create mode 100644 tests/wpt/metadata/domparsing/innerhtml-02.html.ini rename tests/wpt/metadata/domparsing/{insert_adjacent_html.xhtml.ini => insert_adjacent_html-xhtml.xhtml.ini} (66%) delete mode 100644 tests/wpt/metadata/fetch/api/headers/headers-combine.html.ini create mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html.ini create mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html.ini create mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html.ini create mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html.ini create mode 100644 tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini create mode 100644 tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini create mode 100644 tests/wpt/metadata/html/dom/elements/global-attributes/dataset.html.ini create mode 100644 tests/wpt/metadata/html/semantics/tabular-data/the-table-element/caption-methods.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/event-loops/microtask_after_raf.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/scripting/event-loops/microtask_after_script.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/generic/unsupported-csp-referrer-directive.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html.ini delete mode 100644 tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini} (53%) rename tests/wpt/metadata/referrer-policy/{same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html.ini => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini} (55%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini} (51%) rename tests/wpt/metadata/referrer-policy/{same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini} (53%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.ini} (59%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.ini} (60%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.ini} (59%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini} (61%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini} (61%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini} (61%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini} (61%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini} (62%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini} (61%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html.ini} (60%) rename tests/wpt/metadata/referrer-policy/{same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html.ini} (60%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.ini} (59%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini} (52%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini} (52%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini} (52%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini} (61%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini} (62%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini => strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini} (61%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html.ini => strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.ini} (52%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html.ini => strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.ini} (54%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.ini} (52%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html.ini => strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini} (55%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.ini} (52%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html.ini => strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini} (54%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html.ini => strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini} (56%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html.ini => strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini} (54%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini => strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini} (53%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini => strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini} (53%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini => strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini} (53%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html.ini => strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini} (61%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini => strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini} (62%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html.ini => strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini} (61%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html.ini => strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini} (59%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html.ini => strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini} (59%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini => strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini} (53%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html.ini => strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini} (61%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini => strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini} (62%) rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html.ini => strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini} (61%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html.ini => strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini} (53%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html.ini => strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini} (55%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html.ini => strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini} (54%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini rename tests/wpt/metadata/referrer-policy/{origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html.ini => strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini} (56%) create mode 100644 tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini create mode 100644 tests/wpt/metadata/touch-events/touch-retargeting.html.ini delete mode 100644 tests/wpt/metadata/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html.ini create mode 100644 tests/wpt/metadata/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js.ini create mode 100644 tests/wpt/metadata/workers/constructors/Worker/expected-self-properties.worker.js.ini create mode 100644 tests/wpt/web-platform-tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html create mode 100644 tests/wpt/web-platform-tests/2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html create mode 100644 tests/wpt/web-platform-tests/DOM-parsing/todo/internalSubset.html create mode 100644 tests/wpt/web-platform-tests/IndexedDB/idb_binary_key_conversion.htm create mode 100644 tests/wpt/web-platform-tests/IndexedDB/idbfactory_cmp3.htm create mode 100644 tests/wpt/web-platform-tests/IndexedDB/idbfactory_cmp4.htm create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf_vectors.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2_vectors.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/import_export/rsa_importKey.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/import_export/test_ec_importKey.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa_vectors.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac_vectors.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pkcs_vectors.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss.worker.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa_pss_vectors.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_ecdsa.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_hmac.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pss.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js create mode 100644 tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js create mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.any.js delete mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.html delete mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js delete mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.js create mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/event-error-order.sub.html create mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/event-error.sub.html create mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/event-timeout-order.htm create mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/headers-normalize-response.htm create mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/resources/parse-headers.py create mode 100644 tests/wpt/web-platform-tests/XMLHttpRequest/resources/xmlhttprequest-event-order.js create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/.gitignore create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationContextValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationIdValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationTypeValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.1-bodyKeyFound.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.1-targetKeyFound.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.2-bodyObjectsRecognized.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.2-targetObjectsRecognized.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-bodyValueImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-bodyValueValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-notBodyBodyValue.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatedImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatedValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatorImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratedImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratedValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratorImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationModifiedImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationModifiedValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationSingleCreatorImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-singleAnnotationCreatorImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmailImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentIdImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNameImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentTypeImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentIdImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNameImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.3-annotationAudienceImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.5-annotationMotivationImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.5-annotationSingleMotivationImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.6-annotationRightsImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.6-annotationRightsValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationCanonicalImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationCanonicalValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationViaImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationViaValidated.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/4.4-annotationStylesheetImplemented.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/annotationAgentOptionals-manual.html create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/annotationAgentOptionals.test rename tests/wpt/web-platform-tests/annotation-model/{examples/example2-manual.html => annotations/annotationMusts-manual.html} (56%) create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/annotationMusts.test rename tests/wpt/web-platform-tests/annotation-model/{examples/example1-manual.html => annotations/annotationOptionals-manual.html} (57%) create mode 100644 tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals.test create mode 100644 tests/wpt/web-platform-tests/annotation-model/collections/.gitignore create mode 100644 tests/wpt/web-platform-tests/annotation-model/definitions/annotations.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/definitions/bodyTarget.json delete mode 100644 tests/wpt/web-platform-tests/annotation-model/definitions/externalWebResource.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/definitions/id.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/definitions/otherProperties.json delete mode 100644 tests/wpt/web-platform-tests/annotation-model/definitions/stringUri.json delete mode 100644 tests/wpt/web-platform-tests/annotation-model/definitions/textualBody.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/examples/example3.test create mode 100644 tests/wpt/web-platform-tests/annotation-model/scripts/showdown.min.js create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example1.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example10.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example11.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example12.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example13.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example14.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example15.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example16.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example17.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example18.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example19.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example2.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example20.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example3.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example4.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example5.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example6.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example7.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example8.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/samples/example9.json create mode 100644 tests/wpt/web-platform-tests/annotation-model/tools/template_js rename tests/wpt/web-platform-tests/annotation-model/tools/{template => template_manual} (86%) create mode 100644 tests/wpt/web-platform-tests/annotation-protocol/.editorconfig create mode 100644 tests/wpt/web-platform-tests/annotation-protocol/CONTRIBUTING.md create mode 100644 tests/wpt/web-platform-tests/annotation-protocol/README.md create mode 100644 tests/wpt/web-platform-tests/annotation-protocol/server/.gitignore create mode 100644 tests/wpt/web-platform-tests/annotation-protocol/server/server-manual.html create mode 100644 tests/wpt/web-platform-tests/common/get-host-info.sub.js create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/0001isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-dom-01-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-dom-02-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-08-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-09-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-10-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-11-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-12-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-13-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-14-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-15-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-17-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-19-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-20-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-21-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-22-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-23-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-24-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-25-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-26-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-27-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-28-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-29-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-30-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-31-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-32-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-33-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-34-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-35-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-36-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-37-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-38-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-39-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-40-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-41-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-44-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-46-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-52-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-53-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-60-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-61-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-62-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-63-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-64-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-65-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-66-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-67-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-68-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-69-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-70-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-77-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-78-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-80-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-81-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-82-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-83-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-84-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-85-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-86-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-87-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-88-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-89-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-90-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-91-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-92-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-events-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-pservers-grad-01-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-script-elem-01-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-struct-dom-01-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prof-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/conform-viewers-02-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/conform-viewers-03-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-coord-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-coord-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-01-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-02-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-03-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-08-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-09-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-10-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-11-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-12-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-13-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-14-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-01-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-viewattr-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/extend-namespace-01-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-background-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-blend-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-color-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-color-02-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-comptran-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-02-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-04-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-05-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-diffuse-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-displace-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-displace-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-example-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-felem-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-felem-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-05-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-morph-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-offset-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-offset-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-specular-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-tile-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-turb-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-turb-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-04-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-07-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-04-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-kern-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-overview-201-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/imp-path-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-cursor-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-dom-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-02-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-202-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-203-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-01-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-03-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-05-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-07-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-08-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-09-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-10-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-01-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-02-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-03-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-08-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-09-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-10-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-frag-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-filter-01-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-intro-01-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-mask-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-mask-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-opacity-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-04-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-06-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-07-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-08-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-09-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-10-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-11-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-12-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-13-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-14-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/metadata-example-01-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-06-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-05-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-04-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-06-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-07-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-properties-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-render-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-render-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-08-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-09-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-10-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-08-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-09-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-10-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-12-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-13-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-14-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-15-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-16-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-17-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-18-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-19-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-20-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-dom-01-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-dom-02-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-04-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-05-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-06-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-07-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-08-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-09-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-10-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-11-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-12-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-13-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-14-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-15-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-16-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-17-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-18-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-20-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-21-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-22-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-23-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-24-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-stops-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-06-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-07-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-08-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-09-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-08-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-groups-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-groups-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-04-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-specify-01-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-specify-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-circle-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-circle-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-grammar-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-intro-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-intro-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-line-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-line-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polyline-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polyline-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-03-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-06-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-07-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-defs-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-04-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-05-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-06-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-07-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-08-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-11-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-12-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-13-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-14-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-15-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-16-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-17-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-18-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-19-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-20-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-05-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-05-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-08-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-09-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-10-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-11-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-12-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-13-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-14-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-15-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-16-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-17-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-18-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-19-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-symbol-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-03-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-04-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-05-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-06-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-07-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-08-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-09-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-10-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-11-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-12-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-13-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-14-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-15-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-class-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-05-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-06-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-07-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-08-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-09-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-10-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-elem-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-inherit-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-02-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-03-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-05-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/svgdom-over-01-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-04-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-05-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-06-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-08-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-bidi-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-deco-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-02-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-03-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-04-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-05-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-02-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-03-t-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-05-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-202-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-203-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-204-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-01-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-09-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-10-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-11-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-12-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-path-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-path-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-spacing-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-03-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-04-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-05-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-06-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-07-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-08-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-09-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-10-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-11-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-12-t-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tref-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-02-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-03-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tspan-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tspan-02-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-basic-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-basic-02-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-01-b-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-02-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-03-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-04-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-05-b-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-06-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-07-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-08-f-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svglengthlist-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgnumberlist-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgstringlist-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgtransformable-01-f-isvalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/a/href/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/area/href/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/audio/src/port-999999-novalid.html rename tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/{port-999999-isvalid.html => port-999999-novalid.html} (62%) create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/blockquote/cite/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/button/formaction/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/del/cite/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/embed/src/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/form/action/port-999999-novalid.html rename tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/{port-999999-isvalid.html => port-999999-novalid.html} (64%) create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/src/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/img/src/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-formaction/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-src/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-submit-formaction/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-url-value/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/ins/cite/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/link/href/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/object/data/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/q/cite/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/script/src/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/source/src/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/track/src/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/poster/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/src/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemid/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemtype/port-999999-novalid.html create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/tools/build-svg-tests.py create mode 100644 tests/wpt/web-platform-tests/conformance-checkers/tools/index-isvalid.html rename tests/wpt/web-platform-tests/custom-elements/{custom-elements-registry => custom-element-registry}/define.html (83%) create mode 100644 tests/wpt/web-platform-tests/custom-elements/htmlconstructor/newtarget.html create mode 100644 tests/wpt/web-platform-tests/custom-elements/resources/custom-elements-helpers.js create mode 100644 tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-once.html create mode 100644 tests/wpt/web-platform-tests/dom/lists/DOMTokenList-iteration.html create mode 100644 tests/wpt/web-platform-tests/domparsing/DOMParser-parseFromString-xml-doctype.html create mode 100644 tests/wpt/web-platform-tests/domparsing/innerhtml-02.html rename tests/wpt/web-platform-tests/domparsing/{insert_adjacent_html.xhtml => insert_adjacent_html-xhtml.xhtml} (100%) create mode 100644 tests/wpt/web-platform-tests/domparsing/style_attribute_html.html create mode 100644 tests/wpt/web-platform-tests/editing/other/delete.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/EncryptedMediaExtensions.idl rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => chromium_specific_disabled}/encrypted-media-async-creation-with-gc.html (77%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => chromium_specific_disabled}/encrypted-media-async-setcert-with-gc.html (79%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => chromium_specific_disabled}/encrypted-media-lifetime-mediakeys-with-session.html (91%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => chromium_specific_disabled}/encrypted-media-lifetime-mediakeys.html (87%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => chromium_specific_disabled}/encrypted-media-lifetime-mediakeysession-reference.html (94%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => chromium_specific_disabled}/encrypted-media-lifetime-mediakeysession-release-noreference.html (94%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => chromium_specific_disabled}/encrypted-media-lifetime-mediakeysession-release.html (93%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => chromium_specific_disabled}/encrypted-media-lifetime-multiple-mediakeys.html (94%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => chromium_specific_disabled}/encrypted-media-lifetime-reload.html (92%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => migrated_to_root_disabled}/encrypted-media-check-init-data-type.html (85%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => migrated_to_root_disabled}/encrypted-media-events.html (86%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => migrated_to_root_disabled}/encrypted-media-generate-request-disallowed-input.html (91%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => migrated_to_root_disabled}/encrypted-media-keystatuses.html (63%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => migrated_to_root_disabled}/encrypted-media-not-callable-after-createsession.html (86%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => migrated_to_root_disabled}/encrypted-media-playback-setmediakeys-after-src.html (91%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => migrated_to_root_disabled}/encrypted-media-playback-setmediakeys-before-src.html (91%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => migrated_to_root_disabled}/encrypted-media-playback-two-videos.html (90%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => webm}/test-encrypted-different-av-keys.webm (100%) rename tests/wpt/web-platform-tests/encrypted-media/Google/{ => webm}/test-encrypted.webm (100%) create mode 100644 tests/wpt/web-platform-tests/encrypted-media/Google/webm/test.webm create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-check-initdata-type.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-events.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-keystatuses.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 create mode 100644 tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4 create mode 100644 tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4 create mode 100644 tests/wpt/web-platform-tests/encrypted-media/content/content-metadata.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_dashinit.mp4 create mode 100644 tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 create mode 100644 tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4 create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-check-initdata-type.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-events.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-generate-request-disallowed-input.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-events.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/idlharness.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/polyfill/cast-polyfill.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/polyfill/chrome-polyfill.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/polyfill/clearkey-polyfill.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/polyfill/edge-polyfill.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/polyfill/firefox-polyfill.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/polyfill/make-polyfill-tests.py create mode 100644 tests/wpt/web-platform-tests/encrypted-media/resources/clearkey-retrieve-destroy-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-destroy-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-persistent-license.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-persistent-usage-record.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/resources/retrieve-persistent-usage-record.html create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/check-initdata-type.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/events.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/keystatuses-multiple-sessions.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/keystatuses.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/not-callable-after-createsession.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-destroy-persistent-license.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-license-events.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-license.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-usage-record-events.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-usage-record.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-retrieve-persistent-license.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-events.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-multikey.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-setMediaKeys.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-two-videos.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-waitingforkey.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/util/clearkey-messagehandler.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/util/drm-messagehandler.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/util/fetch.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/util/testmediasource.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/util/utf8.js create mode 100644 tests/wpt/web-platform-tests/encrypted-media/util/utils.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/referrer-worker.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/referrer.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/referrer.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/request-head-worker.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/request-head.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/request-head.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/request-referrer.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/request-referrer.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/text-utf8.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html.headers create mode 100644 tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js.headers create mode 100644 tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin-worker.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-worker.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.html create mode 100644 tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.js delete mode 100644 tests/wpt/web-platform-tests/fetch/api/request/resources/get-host-info.sub.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/resources/status.py create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/dummy.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/location-set.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/set-parent-src.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/008.js create mode 100644 tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html rename tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/{cross-origin-objects.sub.html => cross-origin-objects.html} (95%) create mode 100755 tests/wpt/web-platform-tests/html/editing/dnd/the-datatransfer-interface/dndTransferCases-manual.html rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.drawImage.canvas.sub.html => security.drawImage.canvas.html} (83%) rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.drawImage.image.sub.html => security.drawImage.image.html} (81%) rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.pattern.canvas.fillStyle.sub.html => security.pattern.canvas.fillStyle.html} (83%) rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.pattern.canvas.strokeStyle.sub.html => security.pattern.canvas.strokeStyle.html} (83%) rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.pattern.canvas.timing.sub.html => security.pattern.canvas.timing.html} (85%) rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.pattern.create.sub.html => security.pattern.create.html} (81%) rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.pattern.cross.sub.html => security.pattern.cross.html} (85%) rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.pattern.image.fillStyle.sub.html => security.pattern.image.fillStyle.html} (81%) rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.pattern.image.strokeStyle.sub.html => security.pattern.image.strokeStyle.html} (81%) rename tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/{security.reset.sub.html => security.reset.html} (83%) create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_raf.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_script.html create mode 100644 tests/wpt/web-platform-tests/input-events/OWNERS create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-activesourcebuffers.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-addsourcebuffer-mode.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-appendbuffer-quota-exceeded.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-attach-stops-delaying-load-event.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-avtracks.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-detach.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-endofstream.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-errors.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-seekable.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-sourcebuffer-mode-timestamps.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-sourcebuffer-trackdefaults.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-trackdefault.html create mode 100644 tests/wpt/web-platform-tests/media-source/mediasource-trackdefaultlist.html rename tests/wpt/web-platform-tests/{browser-payment-api => payment-request}/OWNERS (100%) create mode 100644 tests/wpt/web-platform-tests/payment-request/interfaces.https.html create mode 100644 tests/wpt/web-platform-tests/payment-request/payment-request-in-iframe.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerevent_attributes_hoverable_pointers-manual.html delete mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerevent_attributes_mouse-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerevent_element_haspointercapture-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-down-css_touch-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-left-css_touch-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-right-css_touch-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-up-css_touch-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_attributes_hoverable_pointers-iframe.html create mode 100644 tests/wpt/web-platform-tests/pointerlock/movementX_Y_basic-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerlock/movementX_Y_no-jumps-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerlock/pointerlock_basic-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerlock/pointerlock_fullscreen-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerlock/pointerlock_indefinite-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerlock/pointerlock_leave_Tab-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerlock/pointerlock_leave_UA-manual.html create mode 100644 tests/wpt/web-platform-tests/pointerlock/pointerlock_remove_target-manual.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/OWNERS create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/defaultRequest_success-manual.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/getAvailability_mixedcontent.https.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/getAvailability_sandboxing_error.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/getAvailability_sandboxing_success.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/reconnectToPresentation_mixedcontent.https.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_error.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_success.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_mixedcontent-manual.https.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_mixedcontent_multiple-manual.https.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_sandboxing_error-manual.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/startNewPresentation_sandboxing_success-manual.html create mode 100644 tests/wpt/web-platform-tests/presentation-api/controlling-ua/support/iframe.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/generic/unsupported-csp-referrer-directive.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html} (75%) rename tests/wpt/web-platform-tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html} (75%) rename tests/wpt/web-platform-tests/referrer-policy/{unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html} (73%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html} (73%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.no-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html => strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html} (72%) rename tests/wpt/web-platform-tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html} (72%) rename tests/wpt/web-platform-tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html} (72%) rename tests/wpt/web-platform-tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html} (72%) rename tests/wpt/web-platform-tests/referrer-policy/{unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html} (72%) rename tests/wpt/web-platform-tests/referrer-policy/{no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (72%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (72%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html => strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (78%) rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html => strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.headers create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.no-redirect.http.html => strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (74%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (75%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.headers rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html} (76%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (76%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html} (76%) create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html create mode 100644 tests/wpt/web-platform-tests/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html} (74%) rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html} (75%) rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html} (75%) rename tests/wpt/web-platform-tests/referrer-policy/{origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html} (75%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html} (76%) rename tests/wpt/web-platform-tests/referrer-policy/{origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html => strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html} (76%) delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html delete mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/close.https.html delete mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/resources/close-worker.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/activation.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/client-navigate.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/controller-on-disconnect.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/client-navigate-frame.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/client-navigate-worker.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/client-navigated-frame.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/mint-new-worker.py create mode 100644 tests/wpt/web-platform-tests/tools/lint/tests/test_file_lints.py create mode 100644 tests/wpt/web-platform-tests/tools/lint/tests/test_path_lints.py create mode 100644 tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py create mode 100644 tests/wpt/web-platform-tests/tools/pytest.ini delete mode 100644 tests/wpt/web-platform-tests/tools/setup.cfg create mode 100644 tests/wpt/web-platform-tests/tools/tox.ini create mode 100644 tests/wpt/web-platform-tests/touch-events/touch-retargeting.html create mode 100644 tests/wpt/web-platform-tests/wai-aria/OWNERS create mode 100644 tests/wpt/web-platform-tests/wai-aria/README.md create mode 100644 tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/type-per-property.html create mode 100644 tests/wpt/web-platform-tests/web-animations/timing-model/animation-effects/phases-and-states.html create mode 100644 tests/wpt/web-platform-tests/web-animations/timing-model/animations/updating-the-finished-state.html create mode 100644 tests/wpt/web-platform-tests/webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html delete mode 100644 tests/wpt/web-platform-tests/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html create mode 100644 tests/wpt/web-platform-tests/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js delete mode 100644 tests/wpt/web-platform-tests/workers/constructors/Worker/expected-self-properties.html create mode 100644 tests/wpt/web-platform-tests/workers/constructors/Worker/expected-self-properties.worker.js rename tests/wpt/web-platform-tests/workers/constructors/Worker/{unexpected-self-properties.html => unexpected-self-properties.worker.js} (62%) delete mode 100644 tests/wpt/web-platform-tests/workers/workers.js diff --git a/tests/wpt/metadata/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html.ini b/tests/wpt/metadata/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html.ini new file mode 100644 index 00000000000..1c1b1311b57 --- /dev/null +++ b/tests/wpt/metadata/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html.ini @@ -0,0 +1,5 @@ +[2d.text.draw.fill.maxWidth.NaN.html] + type: testharness + [fillText handles maxWidth correctly] + expected: FAIL + diff --git a/tests/wpt/metadata/2dcontext/image-smoothing/imagesmoothing.html.ini b/tests/wpt/metadata/2dcontext/image-smoothing/imagesmoothing.html.ini new file mode 100644 index 00000000000..189d034a87c --- /dev/null +++ b/tests/wpt/metadata/2dcontext/image-smoothing/imagesmoothing.html.ini @@ -0,0 +1,11 @@ +[imagesmoothing.html] + type: testharness + [Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fillRect and createPattern().] + expected: FAIL + + [Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fill() and createPattern().] + expected: FAIL + + [Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern().] + expected: FAIL + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 60eb900a522..5696e4020dd 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -98,12 +98,20 @@ "url": "/XMLHttpRequest/send-authentication-prompt-manual.htm" }, { - "path": "annotation-model/examples/example1-manual.html", - "url": "/annotation-model/examples/example1-manual.html" + "path": "annotation-model/annotations/annotationAgentOptionals-manual.html", + "url": "/annotation-model/annotations/annotationAgentOptionals-manual.html" }, { - "path": "annotation-model/examples/example2-manual.html", - "url": "/annotation-model/examples/example2-manual.html" + "path": "annotation-model/annotations/annotationMusts-manual.html", + "url": "/annotation-model/annotations/annotationMusts-manual.html" + }, + { + "path": "annotation-model/annotations/annotationOptionals-manual.html", + "url": "/annotation-model/annotations/annotationOptionals-manual.html" + }, + { + "path": "annotation-protocol/server/server-manual.html", + "url": "/annotation-protocol/server/server-manual.html" }, { "path": "battery-status/battery-charging-manual.html", @@ -557,6 +565,10 @@ "path": "html/editing/dnd/target-origin/201-manual.html", "url": "/html/editing/dnd/target-origin/201-manual.html" }, + { + "path": "html/editing/dnd/the-datatransfer-interface/dndTransferCases-manual.html", + "url": "/html/editing/dnd/the-datatransfer-interface/dndTransferCases-manual.html" + }, { "path": "html/editing/dnd/the-dragevent-interface/dragevent-manual.html", "url": "/html/editing/dnd/the-dragevent-interface/dragevent-manual.html" @@ -938,8 +950,8 @@ "url": "/page-visibility/test_tab_state_change-manual.html" }, { - "path": "pointerevents/pointerevent_attributes_mouse-manual.html", - "url": "/pointerevents/pointerevent_attributes_mouse-manual.html" + "path": "pointerevents/pointerevent_attributes_hoverable_pointers-manual.html", + "url": "/pointerevents/pointerevent_attributes_hoverable_pointers-manual.html" }, { "path": "pointerevents/pointerevent_capture_mouse-manual.html", @@ -953,6 +965,10 @@ "path": "pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html", "url": "/pointerevents/pointerevent_change-touch-action-onpointerdown_touch-manual.html" }, + { + "path": "pointerevents/pointerevent_element_haspointercapture-manual.html", + "url": "/pointerevents/pointerevent_element_haspointercapture-manual.html" + }, { "path": "pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html", "url": "/pointerevents/pointerevent_gotpointercapture_before_first_pointerevent-manual.html" @@ -1161,6 +1177,22 @@ "path": "pointerevents/pointerevent_touch-action-none-css_touch-manual.html", "url": "/pointerevents/pointerevent_touch-action-none-css_touch-manual.html" }, + { + "path": "pointerevents/pointerevent_touch-action-pan-down-css_touch-manual.html", + "url": "/pointerevents/pointerevent_touch-action-pan-down-css_touch-manual.html" + }, + { + "path": "pointerevents/pointerevent_touch-action-pan-left-css_touch-manual.html", + "url": "/pointerevents/pointerevent_touch-action-pan-left-css_touch-manual.html" + }, + { + "path": "pointerevents/pointerevent_touch-action-pan-right-css_touch-manual.html", + "url": "/pointerevents/pointerevent_touch-action-pan-right-css_touch-manual.html" + }, + { + "path": "pointerevents/pointerevent_touch-action-pan-up-css_touch-manual.html", + "url": "/pointerevents/pointerevent_touch-action-pan-up-css_touch-manual.html" + }, { "path": "pointerevents/pointerevent_touch-action-pan-x-css_touch-manual.html", "url": "/pointerevents/pointerevent_touch-action-pan-x-css_touch-manual.html" @@ -1189,6 +1221,38 @@ "path": "pointerevents/pointerevent_touch-action-table-test_touch-manual.html", "url": "/pointerevents/pointerevent_touch-action-table-test_touch-manual.html" }, + { + "path": "pointerlock/movementX_Y_basic-manual.html", + "url": "/pointerlock/movementX_Y_basic-manual.html" + }, + { + "path": "pointerlock/movementX_Y_no-jumps-manual.html", + "url": "/pointerlock/movementX_Y_no-jumps-manual.html" + }, + { + "path": "pointerlock/pointerlock_basic-manual.html", + "url": "/pointerlock/pointerlock_basic-manual.html" + }, + { + "path": "pointerlock/pointerlock_fullscreen-manual.html", + "url": "/pointerlock/pointerlock_fullscreen-manual.html" + }, + { + "path": "pointerlock/pointerlock_indefinite-manual.html", + "url": "/pointerlock/pointerlock_indefinite-manual.html" + }, + { + "path": "pointerlock/pointerlock_leave_Tab-manual.html", + "url": "/pointerlock/pointerlock_leave_Tab-manual.html" + }, + { + "path": "pointerlock/pointerlock_leave_UA-manual.html", + "url": "/pointerlock/pointerlock_leave_UA-manual.html" + }, + { + "path": "pointerlock/pointerlock_remove_target-manual.html", + "url": "/pointerlock/pointerlock_remove_target-manual.html" + }, { "path": "presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html", "url": "/presentation-api/controlling-ua/PresentationConnection_onclosed-manual.html" @@ -1201,6 +1265,10 @@ "path": "presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html", "url": "/presentation-api/controlling-ua/PresentationConnection_onterminated-manual.html" }, + { + "path": "presentation-api/controlling-ua/defaultRequest_success-manual.html", + "url": "/presentation-api/controlling-ua/defaultRequest_success-manual.html" + }, { "path": "presentation-api/controlling-ua/reconnectToPresentation_error-manual.html", "url": "/presentation-api/controlling-ua/reconnectToPresentation_error-manual.html" @@ -1213,6 +1281,14 @@ "path": "presentation-api/controlling-ua/startNewPresentation_error-manual.html", "url": "/presentation-api/controlling-ua/startNewPresentation_error-manual.html" }, + { + "path": "presentation-api/controlling-ua/startNewPresentation_sandboxing_error-manual.html", + "url": "/presentation-api/controlling-ua/startNewPresentation_sandboxing_error-manual.html" + }, + { + "path": "presentation-api/controlling-ua/startNewPresentation_sandboxing_success-manual.html", + "url": "/presentation-api/controlling-ua/startNewPresentation_sandboxing_success-manual.html" + }, { "path": "presentation-api/controlling-ua/startNewPresentation_success-manual.html", "url": "/presentation-api/controlling-ua/startNewPresentation_success-manual.html" @@ -9065,6 +9141,10 @@ "path": "2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html", "url": "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.baseline.alphabetic.html" }, + { + "path": "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html", + "url": "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html" + }, { "path": "2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html", "url": "/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.bound.html" @@ -11109,6 +11189,10 @@ "path": "2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html", "url": "/2dcontext/the-canvas-state/2d.state.saverestore.globalCompositeOperation.html" }, + { + "path": "2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html", + "url": "/2dcontext/the-canvas-state/2d.state.saverestore.imageSmoothingEnabled.html" + }, { "path": "2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html", "url": "/2dcontext/the-canvas-state/2d.state.saverestore.lineCap.html" @@ -11381,6 +11465,10 @@ "path": "IndexedDB/cursor-overloads.htm", "url": "/IndexedDB/cursor-overloads.htm" }, + { + "path": "IndexedDB/idb_binary_key_conversion.htm", + "url": "/IndexedDB/idb_binary_key_conversion.htm" + }, { "path": "IndexedDB/idb_webworkers.htm", "url": "/IndexedDB/idb_webworkers.htm" @@ -11773,6 +11861,14 @@ "path": "IndexedDB/idbfactory_cmp2.htm", "url": "/IndexedDB/idbfactory_cmp2.htm" }, + { + "path": "IndexedDB/idbfactory_cmp3.htm", + "url": "/IndexedDB/idbfactory_cmp3.htm" + }, + { + "path": "IndexedDB/idbfactory_cmp4.htm", + "url": "/IndexedDB/idbfactory_cmp4.htm" + }, { "path": "IndexedDB/idbfactory_deleteDatabase.htm", "url": "/IndexedDB/idbfactory_deleteDatabase.htm" @@ -12385,6 +12481,22 @@ "path": "IndexedDB/value_recursive.htm", "url": "/IndexedDB/value_recursive.htm" }, + { + "path": "WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js", + "url": "/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker" + }, + { + "path": "WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js", + "url": "/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker" + }, + { + "path": "WebCryptoAPI/derive_bits_keys/hkdf.worker.js", + "url": "/WebCryptoAPI/derive_bits_keys/hkdf.worker" + }, + { + "path": "WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js", + "url": "/WebCryptoAPI/derive_bits_keys/pbkdf2.worker" + }, { "path": "WebCryptoAPI/digest/digest.worker.js", "url": "/WebCryptoAPI/digest/digest.worker" @@ -12505,10 +12617,54 @@ "path": "WebCryptoAPI/idlharness.worker.js", "url": "/WebCryptoAPI/idlharness.worker" }, + { + "path": "WebCryptoAPI/import_export/ec_importKey.worker.js", + "url": "/WebCryptoAPI/import_export/ec_importKey.worker" + }, + { + "path": "WebCryptoAPI/import_export/rsa_importKey.worker.js", + "url": "/WebCryptoAPI/import_export/rsa_importKey.worker" + }, + { + "path": "WebCryptoAPI/import_export/symmetric_importKey.worker.js", + "url": "/WebCryptoAPI/import_export/symmetric_importKey.worker" + }, + { + "path": "WebCryptoAPI/import_export/test_ec_importKey.html", + "url": "/WebCryptoAPI/import_export/test_ec_importKey.html" + }, + { + "path": "WebCryptoAPI/import_export/test_rsa_importKey.html", + "url": "/WebCryptoAPI/import_export/test_rsa_importKey.html" + }, + { + "path": "WebCryptoAPI/import_export/test_symmetric_importKey.html", + "url": "/WebCryptoAPI/import_export/test_symmetric_importKey.html" + }, + { + "path": "WebCryptoAPI/sign_verify/ecdsa.worker.js", + "url": "/WebCryptoAPI/sign_verify/ecdsa.worker" + }, + { + "path": "WebCryptoAPI/sign_verify/hmac.worker.js", + "url": "/WebCryptoAPI/sign_verify/hmac.worker" + }, + { + "path": "WebCryptoAPI/sign_verify/rsa_pkcs.worker.js", + "url": "/WebCryptoAPI/sign_verify/rsa_pkcs.worker" + }, + { + "path": "WebCryptoAPI/sign_verify/rsa_pss.worker.js", + "url": "/WebCryptoAPI/sign_verify/rsa_pss.worker" + }, { "path": "WebCryptoAPI/test_getRandomValues.html", "url": "/WebCryptoAPI/test_getRandomValues.html" }, + { + "path": "WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js", + "url": "/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker" + }, { "path": "WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html", "url": "/WebIDL/ecmascript-binding/es-exceptions/DOMException-constants.html" @@ -12542,12 +12698,12 @@ "url": "/XMLHttpRequest/FormData-append.html" }, { - "path": "XMLHttpRequest/XMLHttpRequest-withCredentials.html", - "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.html" + "path": "XMLHttpRequest/XMLHttpRequest-withCredentials.any.js", + "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.any.html" }, { - "path": "XMLHttpRequest/XMLHttpRequest-withCredentials.worker.js", - "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.worker" + "path": "XMLHttpRequest/XMLHttpRequest-withCredentials.any.js", + "url": "/XMLHttpRequest/XMLHttpRequest-withCredentials.any.worker" }, { "path": "XMLHttpRequest/abort-after-receive.htm", @@ -12621,10 +12777,18 @@ "path": "XMLHttpRequest/event-abort.htm", "url": "/XMLHttpRequest/event-abort.htm" }, + { + "path": "XMLHttpRequest/event-error-order.sub.html", + "url": "/XMLHttpRequest/event-error-order.sub.html" + }, { "path": "XMLHttpRequest/event-error.html", "url": "/XMLHttpRequest/event-error.html" }, + { + "path": "XMLHttpRequest/event-error.sub.html", + "url": "/XMLHttpRequest/event-error.sub.html" + }, { "path": "XMLHttpRequest/event-load.htm", "url": "/XMLHttpRequest/event-load.htm" @@ -12649,6 +12813,10 @@ "path": "XMLHttpRequest/event-readystatechange-loaded.htm", "url": "/XMLHttpRequest/event-readystatechange-loaded.htm" }, + { + "path": "XMLHttpRequest/event-timeout-order.htm", + "url": "/XMLHttpRequest/event-timeout-order.htm" + }, { "path": "XMLHttpRequest/event-timeout.htm", "url": "/XMLHttpRequest/event-timeout.htm" @@ -12721,6 +12889,10 @@ "path": "XMLHttpRequest/getresponseheader-unsent-opened-state.htm", "url": "/XMLHttpRequest/getresponseheader-unsent-opened-state.htm" }, + { + "path": "XMLHttpRequest/headers-normalize-response.htm", + "url": "/XMLHttpRequest/headers-normalize-response.htm" + }, { "path": "XMLHttpRequest/interfaces.html", "url": "/XMLHttpRequest/interfaces.html" @@ -13293,6 +13465,10 @@ "path": "ambient-light/idlharness.html", "url": "/ambient-light/idlharness.html" }, + { + "path": "app-uri/appURI_test.html", + "url": "/app-uri/appURI_test.html" + }, { "path": "battery-status/battery-interface-idlharness.html", "url": "/battery-status/battery-interface-idlharness.html" @@ -13441,6 +13617,10 @@ "path": "content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html", "url": "/content-security-policy/blink-contrib-2/stylehash-basic-blocked.sub.html" }, + { + "path": "content-security-policy/blink-contrib-2/stylehash-default-src.sub.html", + "url": "/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html" + }, { "path": "content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html", "url": "/content-security-policy/blink-contrib-2/stylenonce-allowed.sub.html" @@ -14090,8 +14270,12 @@ "url": "/cssom-view/scrollingElement.html" }, { - "path": "custom-elements/custom-elements-registry/define.html", - "url": "/custom-elements/custom-elements-registry/define.html" + "path": "custom-elements/custom-element-registry/define.html", + "url": "/custom-elements/custom-element-registry/define.html" + }, + { + "path": "custom-elements/htmlconstructor/newtarget.html", + "url": "/custom-elements/htmlconstructor/newtarget.html" }, { "path": "custom-elements/v0/concepts/custom-elements-type-naming.html", @@ -14337,6 +14521,10 @@ "path": "dom/collections/namednodemap-supported-property-names.html", "url": "/dom/collections/namednodemap-supported-property-names.html" }, + { + "path": "dom/events/AddEventListenerOptions-once.html", + "url": "/dom/events/AddEventListenerOptions-once.html" + }, { "path": "dom/events/AddEventListenerOptions-passive.html", "url": "/dom/events/AddEventListenerOptions-passive.html" @@ -14489,6 +14677,10 @@ "path": "dom/lists/DOMTokenList-coverage-for-attributes.html", "url": "/dom/lists/DOMTokenList-coverage-for-attributes.html" }, + { + "path": "dom/lists/DOMTokenList-iteration.html", + "url": "/dom/lists/DOMTokenList-iteration.html" + }, { "path": "dom/lists/DOMTokenList-stringifier.html", "url": "/dom/lists/DOMTokenList-stringifier.html" @@ -15045,6 +15237,10 @@ "path": "dom/nodes/Node-textContent.html", "url": "/dom/nodes/Node-textContent.html" }, + { + "path": "dom/nodes/NodeList-Iterable.html", + "url": "/dom/nodes/NodeList-Iterable.html" + }, { "path": "dom/nodes/ParentNode-append.html", "url": "/dom/nodes/ParentNode-append.html" @@ -15225,10 +15421,6 @@ "path": "dom/nodes/prepend-on-Document.html", "url": "/dom/nodes/prepend-on-Document.html" }, - { - "path": "dom/nodes/remove-row.html", - "url": "/dom/nodes/remove-row.html" - }, { "path": "dom/nodes/remove-unscopable.html", "url": "/dom/nodes/remove-unscopable.html" @@ -15289,6 +15481,10 @@ "path": "domparsing/DOMParser-parseFromString-html.html", "url": "/domparsing/DOMParser-parseFromString-html.html" }, + { + "path": "domparsing/DOMParser-parseFromString-xml-doctype.html", + "url": "/domparsing/DOMParser-parseFromString-xml-doctype.html" + }, { "path": "domparsing/DOMParser-parseFromString-xml.html", "url": "/domparsing/DOMParser-parseFromString-xml.html" @@ -15305,6 +15501,10 @@ "path": "domparsing/innerhtml-01.xhtml", "url": "/domparsing/innerhtml-01.xhtml" }, + { + "path": "domparsing/innerhtml-02.html", + "url": "/domparsing/innerhtml-02.html" + }, { "path": "domparsing/innerhtml-03.xhtml", "url": "/domparsing/innerhtml-03.xhtml" @@ -15330,12 +15530,12 @@ "url": "/domparsing/insert-adjacent.html" }, { - "path": "domparsing/insert_adjacent_html.html", - "url": "/domparsing/insert_adjacent_html.html" + "path": "domparsing/insert_adjacent_html-xhtml.xhtml", + "url": "/domparsing/insert_adjacent_html-xhtml.xhtml" }, { - "path": "domparsing/insert_adjacent_html.xhtml", - "url": "/domparsing/insert_adjacent_html.xhtml" + "path": "domparsing/insert_adjacent_html.html", + "url": "/domparsing/insert_adjacent_html.html" }, { "path": "domparsing/outerhtml-01.html", @@ -15345,6 +15545,10 @@ "path": "domparsing/outerhtml-02.html", "url": "/domparsing/outerhtml-02.html" }, + { + "path": "domparsing/style_attribute_html.html", + "url": "/domparsing/style_attribute_html.html" + }, { "path": "domparsing/xml-serialization.xhtml", "url": "/domparsing/xml-serialization.xhtml" @@ -15369,6 +15573,10 @@ "path": "editing/event.html", "url": "/editing/event.html" }, + { + "path": "editing/other/delete.html", + "url": "/editing/other/delete.html" + }, { "path": "editing/run/backcolor.html", "url": "/editing/run/backcolor.html" @@ -15569,6 +15777,126 @@ "path": "encoding/textencoder-utf16-surrogates.html", "url": "/encoding/textencoder-utf16-surrogates.html" }, + { + "path": "encrypted-media/Google/encrypted-media-clear-key-invalid-license.html", + "url": "/encrypted-media/Google/encrypted-media-clear-key-invalid-license.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-clearkey-update-non-ascii-input.html", + "url": "/encrypted-media/Google/encrypted-media-clearkey-update-non-ascii-input.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html", + "url": "/encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html", + "url": "/encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-onencrypted.html", + "url": "/encrypted-media/Google/encrypted-media-onencrypted.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html", + "url": "/encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-playback-multiple-sessions.html", + "url": "/encrypted-media/Google/encrypted-media-playback-multiple-sessions.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-requestmediakeysystemaccess.html", + "url": "/encrypted-media/Google/encrypted-media-requestmediakeysystemaccess.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html", + "url": "/encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-session-closed-event.html", + "url": "/encrypted-media/Google/encrypted-media-session-closed-event.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html", + "url": "/encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html", + "url": "/encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html", + "url": "/encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html", + "url": "/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html", + "url": "/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-setmediakeys-to-multiple-video-elements.html", + "url": "/encrypted-media/Google/encrypted-media-setmediakeys-to-multiple-video-elements.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-setmediakeys.html", + "url": "/encrypted-media/Google/encrypted-media-setmediakeys.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-syntax.html", + "url": "/encrypted-media/Google/encrypted-media-syntax.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-unique-origin.html", + "url": "/encrypted-media/Google/encrypted-media-unique-origin.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-update-disallowed-input.html", + "url": "/encrypted-media/Google/encrypted-media-update-disallowed-input.html" + }, + { + "path": "encrypted-media/Google/encrypted-media-waiting-for-a-key.html", + "url": "/encrypted-media/Google/encrypted-media-waiting-for-a-key.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-destroy-persistent-license.html", + "url": "/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-persistent-license-events.html", + "url": "/encrypted-media/clearkey-mp4-playback-persistent-license-events.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-persistent-license.html", + "url": "/encrypted-media/clearkey-mp4-playback-persistent-license.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.html", + "url": "/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html", + "url": "/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-destroy-persistent-license.html", + "url": "/encrypted-media/drm-mp4-playback-destroy-persistent-license.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-persistent-license-events.html", + "url": "/encrypted-media/drm-mp4-playback-persistent-license-events.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-persistent-license.html", + "url": "/encrypted-media/drm-mp4-playback-persistent-license.html" + }, + { + "path": "encrypted-media/idlharness.html", + "url": "/encrypted-media/idlharness.html" + }, { "path": "eventsource/dedicated-worker/eventsource-close.htm", "url": "/eventsource/dedicated-worker/eventsource-close.htm" @@ -15825,6 +16153,14 @@ "path": "fetch/api/basic/mode-same-origin.html", "url": "/fetch/api/basic/mode-same-origin.html" }, + { + "path": "fetch/api/basic/referrer-worker.html", + "url": "/fetch/api/basic/referrer-worker.html" + }, + { + "path": "fetch/api/basic/referrer.html", + "url": "/fetch/api/basic/referrer.html" + }, { "path": "fetch/api/basic/request-forbidden-headers-worker.html", "url": "/fetch/api/basic/request-forbidden-headers-worker.html" @@ -15833,6 +16169,14 @@ "path": "fetch/api/basic/request-forbidden-headers.html", "url": "/fetch/api/basic/request-forbidden-headers.html" }, + { + "path": "fetch/api/basic/request-head-worker.html", + "url": "/fetch/api/basic/request-head-worker.html" + }, + { + "path": "fetch/api/basic/request-head.html", + "url": "/fetch/api/basic/request-head.html" + }, { "path": "fetch/api/basic/request-headers-worker.html", "url": "/fetch/api/basic/request-headers-worker.html" @@ -15841,6 +16185,10 @@ "path": "fetch/api/basic/request-headers.html", "url": "/fetch/api/basic/request-headers.html" }, + { + "path": "fetch/api/basic/request-referrer.html", + "url": "/fetch/api/basic/request-referrer.html" + }, { "path": "fetch/api/basic/response-url-worker.html", "url": "/fetch/api/basic/response-url-worker.html" @@ -15889,6 +16237,10 @@ "path": "fetch/api/basic/stream-response.html", "url": "/fetch/api/basic/stream-response.html" }, + { + "path": "fetch/api/basic/text-utf8.html", + "url": "/fetch/api/basic/text-utf8.html" + }, { "path": "fetch/api/cors/cors-basic-worker.html", "url": "/fetch/api/cors/cors-basic-worker.html" @@ -15977,6 +16329,14 @@ "path": "fetch/api/cors/cors-redirect-credentials.html", "url": "/fetch/api/cors/cors-redirect-credentials.html" }, + { + "path": "fetch/api/cors/cors-redirect-preflight-worker.html", + "url": "/fetch/api/cors/cors-redirect-preflight-worker.html" + }, + { + "path": "fetch/api/cors/cors-redirect-preflight.html", + "url": "/fetch/api/cors/cors-redirect-preflight.html" + }, { "path": "fetch/api/cors/cors-redirect-worker.html", "url": "/fetch/api/cors/cors-redirect-worker.html" @@ -16045,6 +16405,14 @@ "path": "fetch/api/policies/referrer-no-referrer.html", "url": "/fetch/api/policies/referrer-no-referrer.html" }, + { + "path": "fetch/api/policies/referrer-origin-when-cross-origin-worker.html", + "url": "/fetch/api/policies/referrer-origin-when-cross-origin-worker.html" + }, + { + "path": "fetch/api/policies/referrer-origin-when-cross-origin.html", + "url": "/fetch/api/policies/referrer-origin-when-cross-origin.html" + }, { "path": "fetch/api/policies/referrer-origin-worker.html", "url": "/fetch/api/policies/referrer-origin-worker.html" @@ -16093,10 +16461,26 @@ "path": "fetch/api/redirect/redirect-mode.html", "url": "/fetch/api/redirect/redirect-mode.html" }, + { + "path": "fetch/api/redirect/redirect-origin-worker.html", + "url": "/fetch/api/redirect/redirect-origin-worker.html" + }, + { + "path": "fetch/api/redirect/redirect-origin.html", + "url": "/fetch/api/redirect/redirect-origin.html" + }, { "path": "fetch/api/redirect/redirect-schemes.html", "url": "/fetch/api/redirect/redirect-schemes.html" }, + { + "path": "fetch/api/redirect/redirect-to-dataurl-worker.html", + "url": "/fetch/api/redirect/redirect-to-dataurl-worker.html" + }, + { + "path": "fetch/api/redirect/redirect-to-dataurl.html", + "url": "/fetch/api/redirect/redirect-to-dataurl.html" + }, { "path": "fetch/api/request/request-clone.sub.html", "url": "/fetch/api/request/request-clone.sub.html" @@ -16461,6 +16845,22 @@ "path": "html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html", "url": "/html/browsers/browsing-the-web/navigating-across-documents/navigation_unload_same_origin.html" }, + { + "path": "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html", + "url": "/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html" + }, + { + "path": "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html", + "url": "/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html" + }, + { + "path": "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html", + "url": "/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html" + }, + { + "path": "html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html", + "url": "/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html" + }, { "path": "html/browsers/browsing-the-web/read-media/pageload-image.html", "url": "/html/browsers/browsing-the-web/read-media/pageload-image.html" @@ -18906,44 +19306,44 @@ "url": "/html/semantics/embedded-content/the-canvas-element/security.dataURI.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.drawImage.image.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.drawImage.image.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.create.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.create.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.create.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.create.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.cross.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.cross.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.html" }, { - "path": "html/semantics/embedded-content/the-canvas-element/security.reset.sub.html", - "url": "/html/semantics/embedded-content/the-canvas-element/security.reset.sub.html" + "path": "html/semantics/embedded-content/the-canvas-element/security.reset.html", + "url": "/html/semantics/embedded-content/the-canvas-element/security.reset.html" }, { "path": "html/semantics/embedded-content/the-canvas-element/size.attributes.default.html", @@ -19689,6 +20089,10 @@ "path": "html/semantics/forms/the-meter-element/meter.html", "url": "/html/semantics/forms/the-meter-element/meter.html" }, + { + "path": "html/semantics/forms/the-option-element/option-form.html", + "url": "/html/semantics/forms/the-option-element/option-form.html" + }, { "path": "html/semantics/forms/the-option-element/option-label.html", "url": "/html/semantics/forms/the-option-element/option-label.html" @@ -19821,6 +20225,10 @@ "path": "html/semantics/interactive-elements/the-dialog-element/dialog-close.html", "url": "/html/semantics/interactive-elements/the-dialog-element/dialog-close.html" }, + { + "path": "html/semantics/interactive-elements/the-dialog-element/dialog-open.html", + "url": "/html/semantics/interactive-elements/the-dialog-element/dialog-open.html" + }, { "path": "html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html", "url": "/html/semantics/interactive-elements/the-dialog-element/dialog-showModal.html" @@ -19909,6 +20317,10 @@ "path": "html/semantics/scripting-1/the-script-element/script-charset-02.html", "url": "/html/semantics/scripting-1/the-script-element/script-charset-02.html" }, + { + "path": "html/semantics/scripting-1/the-script-element/script-charset-03.html", + "url": "/html/semantics/scripting-1/the-script-element/script-charset-03.html" + }, { "path": "html/semantics/scripting-1/the-script-element/script-for-event-xhtml.xhtml", "url": "/html/semantics/scripting-1/the-script-element/script-for-event-xhtml.xhtml" @@ -20125,6 +20537,10 @@ "path": "html/semantics/tabular-data/the-table-element/insertRow-method-03.html", "url": "/html/semantics/tabular-data/the-table-element/insertRow-method-03.html" }, + { + "path": "html/semantics/tabular-data/the-table-element/remove-row.html", + "url": "/html/semantics/tabular-data/the-table-element/remove-row.html" + }, { "path": "html/semantics/tabular-data/the-table-element/tBodies.html", "url": "/html/semantics/tabular-data/the-table-element/tBodies.html" @@ -20197,6 +20613,10 @@ "path": "html/semantics/text-level-semantics/the-a-element/a.text-setter-01.html", "url": "/html/semantics/text-level-semantics/the-a-element/a.text-setter-01.html" }, + { + "path": "html/semantics/text-level-semantics/the-data-element/data.value-001.html", + "url": "/html/semantics/text-level-semantics/the-data-element/data.value-001.html" + }, { "path": "html/semantics/text-level-semantics/the-time-element/001.html", "url": "/html/semantics/text-level-semantics/the-time-element/001.html" @@ -20409,6 +20829,14 @@ "path": "html/webappapis/atob/base64.html", "url": "/html/webappapis/atob/base64.html" }, + { + "path": "html/webappapis/scripting/event-loops/microtask_after_raf.html", + "url": "/html/webappapis/scripting/event-loops/microtask_after_raf.html" + }, + { + "path": "html/webappapis/scripting/event-loops/microtask_after_script.html", + "url": "/html/webappapis/scripting/event-loops/microtask_after_script.html" + }, { "path": "html/webappapis/scripting/event-loops/task_microtask_ordering.html", "url": "/html/webappapis/scripting/event-loops/task_microtask_ordering.html" @@ -20441,6 +20869,10 @@ "path": "html/webappapis/scripting/events/inline-event-handler-ordering.html", "url": "/html/webappapis/scripting/events/inline-event-handler-ordering.html" }, + { + "path": "html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html", + "url": "/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html" + }, { "path": "html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-once.html", "url": "/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-once.html" @@ -20753,6 +21185,14 @@ "path": "media-source/interfaces.html", "url": "/media-source/interfaces.html" }, + { + "path": "media-source/mediasource-activesourcebuffers.html", + "url": "/media-source/mediasource-activesourcebuffers.html" + }, + { + "path": "media-source/mediasource-addsourcebuffer-mode.html", + "url": "/media-source/mediasource-addsourcebuffer-mode.html" + }, { "path": "media-source/mediasource-addsourcebuffer.html", "url": "/media-source/mediasource-addsourcebuffer.html" @@ -20765,6 +21205,14 @@ "path": "media-source/mediasource-appendwindow.html", "url": "/media-source/mediasource-appendwindow.html" }, + { + "path": "media-source/mediasource-attach-stops-delaying-load-event.html", + "url": "/media-source/mediasource-attach-stops-delaying-load-event.html" + }, + { + "path": "media-source/mediasource-avtracks.html", + "url": "/media-source/mediasource-avtracks.html" + }, { "path": "media-source/mediasource-buffered.html", "url": "/media-source/mediasource-buffered.html" @@ -20829,6 +21277,10 @@ "path": "media-source/mediasource-config-change-webm-v-framesize.html", "url": "/media-source/mediasource-config-change-webm-v-framesize.html" }, + { + "path": "media-source/mediasource-detach.html", + "url": "/media-source/mediasource-detach.html" + }, { "path": "media-source/mediasource-duration-boundaryconditions.html", "url": "/media-source/mediasource-duration-boundaryconditions.html" @@ -20841,6 +21293,14 @@ "path": "media-source/mediasource-endofstream-invaliderror.html", "url": "/media-source/mediasource-endofstream-invaliderror.html" }, + { + "path": "media-source/mediasource-endofstream.html", + "url": "/media-source/mediasource-endofstream.html" + }, + { + "path": "media-source/mediasource-errors.html", + "url": "/media-source/mediasource-errors.html" + }, { "path": "media-source/mediasource-getvideoplaybackquality.html", "url": "/media-source/mediasource-getvideoplaybackquality.html" @@ -20885,14 +21345,26 @@ "path": "media-source/mediasource-seek-during-pending-seek.html", "url": "/media-source/mediasource-seek-during-pending-seek.html" }, + { + "path": "media-source/mediasource-seekable.html", + "url": "/media-source/mediasource-seekable.html" + }, { "path": "media-source/mediasource-sequencemode-append-buffer.html", "url": "/media-source/mediasource-sequencemode-append-buffer.html" }, + { + "path": "media-source/mediasource-sourcebuffer-mode-timestamps.html", + "url": "/media-source/mediasource-sourcebuffer-mode-timestamps.html" + }, { "path": "media-source/mediasource-sourcebuffer-mode.html", "url": "/media-source/mediasource-sourcebuffer-mode.html" }, + { + "path": "media-source/mediasource-sourcebuffer-trackdefaults.html", + "url": "/media-source/mediasource-sourcebuffer-trackdefaults.html" + }, { "path": "media-source/mediasource-sourcebufferlist.html", "url": "/media-source/mediasource-sourcebufferlist.html" @@ -20901,6 +21373,14 @@ "path": "media-source/mediasource-timestamp-offset.html", "url": "/media-source/mediasource-timestamp-offset.html" }, + { + "path": "media-source/mediasource-trackdefault.html", + "url": "/media-source/mediasource-trackdefault.html" + }, + { + "path": "media-source/mediasource-trackdefaultlist.html", + "url": "/media-source/mediasource-trackdefaultlist.html" + }, { "path": "mediacapture-streams/GUM-api.https.html", "url": "/mediacapture-streams/GUM-api.https.html" @@ -23057,6 +23537,14 @@ "path": "page-visibility/unload.html", "url": "/page-visibility/unload.html" }, + { + "path": "payment-request/interfaces.https.html", + "url": "/payment-request/interfaces.https.html" + }, + { + "path": "payment-request/payment-request-in-iframe.html", + "url": "/payment-request/payment-request-in-iframe.html" + }, { "path": "performance-timeline/idlharness.html", "url": "/performance-timeline/idlharness.html" @@ -23129,14 +23617,46 @@ "path": "presentation-api/controlling-ua/getAvailability.html", "url": "/presentation-api/controlling-ua/getAvailability.html" }, + { + "path": "presentation-api/controlling-ua/getAvailability_mixedcontent.https.html", + "url": "/presentation-api/controlling-ua/getAvailability_mixedcontent.https.html" + }, + { + "path": "presentation-api/controlling-ua/getAvailability_sandboxing_error.html", + "url": "/presentation-api/controlling-ua/getAvailability_sandboxing_error.html" + }, + { + "path": "presentation-api/controlling-ua/getAvailability_sandboxing_success.html", + "url": "/presentation-api/controlling-ua/getAvailability_sandboxing_success.html" + }, { "path": "presentation-api/controlling-ua/idlharness.html", "url": "/presentation-api/controlling-ua/idlharness.html" }, + { + "path": "presentation-api/controlling-ua/reconnectToPresentation_mixedcontent.https.html", + "url": "/presentation-api/controlling-ua/reconnectToPresentation_mixedcontent.https.html" + }, + { + "path": "presentation-api/controlling-ua/reconnectToPresentation_sandboxing_error.html", + "url": "/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_error.html" + }, + { + "path": "presentation-api/controlling-ua/reconnectToPresentation_sandboxing_success.html", + "url": "/presentation-api/controlling-ua/reconnectToPresentation_sandboxing_success.html" + }, { "path": "presentation-api/controlling-ua/startNewPresentation_error.html", "url": "/presentation-api/controlling-ua/startNewPresentation_error.html" }, + { + "path": "presentation-api/controlling-ua/startNewPresentation_mixedcontent-manual.https.html", + "url": "/presentation-api/controlling-ua/startNewPresentation_mixedcontent-manual.https.html" + }, + { + "path": "presentation-api/controlling-ua/startNewPresentation_mixedcontent_multiple-manual.https.html", + "url": "/presentation-api/controlling-ua/startNewPresentation_mixedcontent_multiple-manual.https.html" + }, { "path": "presentation-api/receiving-ua/idlharness.html", "url": "/presentation-api/receiving-ua/idlharness.html" @@ -23233,6 +23753,10 @@ "path": "referrer-policy/generic/subresource-test/xhr-messaging.html", "url": "/referrer-policy/generic/subresource-test/xhr-messaging.html" }, + { + "path": "referrer-policy/generic/unsupported-csp-referrer-directive.html", + "url": "/referrer-policy/generic/unsupported-csp-referrer-directive.html" + }, { "path": "referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", "url": "/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" @@ -23569,246 +24093,6 @@ "path": "referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", "url": "/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer-when-downgrade/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/no-referrer-when-downgrade/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", "url": "/referrer-policy/no-referrer-when-downgrade/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" @@ -24385,246 +24669,6 @@ "path": "referrer-policy/no-referrer/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", "url": "/referrer-policy/no-referrer/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/no-referrer/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/no-referrer/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", "url": "/referrer-policy/no-referrer/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" @@ -25313,326 +25357,6 @@ "path": "referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html", "url": "/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-upgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-upgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/script-tag/same-origin-upgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-downgrade.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.no-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin-when-cross-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-upgrade.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html", "url": "/referrer-policy/origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html" @@ -26289,246 +26013,6 @@ "path": "referrer-policy/origin/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", "url": "/referrer-policy/origin/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/origin/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", "url": "/referrer-policy/origin/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" @@ -27049,206 +26533,6 @@ "path": "referrer-policy/same-origin/http-rp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", "url": "/referrer-policy/same-origin/http-rp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/fetch-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/script-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-http/xhr-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/fetch-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/fetch-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/fetch-request/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", - "url": "/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/same-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html", "url": "/referrer-policy/same-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-origin.keep-origin-redirect.http.html" @@ -27449,6 +26733,1158 @@ "path": "referrer-policy/same-origin/meta-referrer/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html", "url": "/referrer-policy/same-origin/meta-referrer/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html" }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/fetch-request/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/fetch-request/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" + }, + { + "path": "referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", + "url": "/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" + }, { "path": "referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", "url": "/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" @@ -27785,246 +28221,6 @@ "path": "referrer-policy/unsafe-url/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", "url": "/referrer-policy/unsafe-url/http-rp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/fetch-request/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html" - }, - { - "path": "referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html", - "url": "/referrer-policy/unsafe-url/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/unsafe-url/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html", "url": "/referrer-policy/unsafe-url/meta-referrer/cross-origin/http-http/fetch-request/generic.keep-origin-redirect.http.html" @@ -28601,246 +28797,6 @@ "path": "referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", "url": "/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/fetch-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/fetch-request/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html" - }, - { - "path": "referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html", - "url": "/referrer-policy/unset-referrer-policy/meta-csp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html" - }, { "path": "referrer-policy/unset-referrer-policy/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html", "url": "/referrer-policy/unset-referrer-policy/meta-referrer/cross-origin/http-http/fetch-request/insecure-protocol.keep-origin-redirect.http.html" @@ -29181,10 +29137,6 @@ "path": "service-workers/cache-storage/serviceworker/credentials.html", "url": "/service-workers/cache-storage/serviceworker/credentials.html" }, - { - "path": "service-workers/service-worker/ServiceWorkerGlobalScope/close.https.html", - "url": "/service-workers/service-worker/ServiceWorkerGlobalScope/close.https.html" - }, { "path": "service-workers/service-worker/ServiceWorkerGlobalScope/registration-attribute.https.html", "url": "/service-workers/service-worker/ServiceWorkerGlobalScope/registration-attribute.https.html" @@ -29205,6 +29157,10 @@ "path": "service-workers/service-worker/activation-after-registration.https.html", "url": "/service-workers/service-worker/activation-after-registration.https.html" }, + { + "path": "service-workers/service-worker/activation.https.html", + "url": "/service-workers/service-worker/activation.https.html" + }, { "path": "service-workers/service-worker/active.https.html", "url": "/service-workers/service-worker/active.https.html" @@ -29221,6 +29177,10 @@ "path": "service-workers/service-worker/claim-using-registration.https.html", "url": "/service-workers/service-worker/claim-using-registration.https.html" }, + { + "path": "service-workers/service-worker/client-navigate.https.html", + "url": "/service-workers/service-worker/client-navigate.https.html" + }, { "path": "service-workers/service-worker/clients-get-cross-origin.https.html", "url": "/service-workers/service-worker/clients-get-cross-origin.https.html" @@ -29241,6 +29201,10 @@ "path": "service-workers/service-worker/clients-matchall.https.html", "url": "/service-workers/service-worker/clients-matchall.https.html" }, + { + "path": "service-workers/service-worker/controller-on-disconnect.https.html", + "url": "/service-workers/service-worker/controller-on-disconnect.https.html" + }, { "path": "service-workers/service-worker/controller-on-load.https.html", "url": "/service-workers/service-worker/controller-on-load.https.html" @@ -29581,6 +29545,18 @@ "path": "shadow-dom/ShadowRoot-interface.html", "url": "/shadow-dom/ShadowRoot-interface.html" }, + { + "path": "shadow-dom/event-composed-path-with-related-target.html", + "url": "/shadow-dom/event-composed-path-with-related-target.html" + }, + { + "path": "shadow-dom/event-composed-path.html", + "url": "/shadow-dom/event-composed-path.html" + }, + { + "path": "shadow-dom/event-composed.html", + "url": "/shadow-dom/event-composed.html" + }, { "path": "shadow-dom/leaktests/get-elements.html", "url": "/shadow-dom/leaktests/get-elements.html" @@ -29597,6 +29573,18 @@ "path": "shadow-dom/scroll-to-the-fragment-in-shadow-tree.html", "url": "/shadow-dom/scroll-to-the-fragment-in-shadow-tree.html" }, + { + "path": "shadow-dom/slotchange.html", + "url": "/shadow-dom/slotchange.html" + }, + { + "path": "shadow-dom/slots-fallback.html", + "url": "/shadow-dom/slots-fallback.html" + }, + { + "path": "shadow-dom/slots.html", + "url": "/shadow-dom/slots.html" + }, { "path": "shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/attributes/test-006.html", "url": "/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/attributes/test-006.html" @@ -29889,6 +29877,10 @@ "path": "touch-events/touch-globaleventhandler-interface.html", "url": "/touch-events/touch-globaleventhandler-interface.html" }, + { + "path": "touch-events/touch-retargeting.html", + "url": "/touch-events/touch-retargeting.html" + }, { "path": "touch-events/touch-touchevent-constructor.html", "url": "/touch-events/touch-touchevent-constructor.html" @@ -30077,6 +30069,10 @@ "path": "web-animations/animation-model/animation-types/discrete-animation.html", "url": "/web-animations/animation-model/animation-types/discrete-animation.html" }, + { + "path": "web-animations/animation-model/animation-types/type-per-property.html", + "url": "/web-animations/animation-model/animation-types/type-per-property.html" + }, { "path": "web-animations/animation-model/keyframe-effects/effect-value-context.html", "url": "/web-animations/animation-model/keyframe-effects/effect-value-context.html" @@ -30241,6 +30237,10 @@ "path": "web-animations/timing-model/animation-effects/current-iteration.html", "url": "/web-animations/timing-model/animation-effects/current-iteration.html" }, + { + "path": "web-animations/timing-model/animation-effects/phases-and-states.html", + "url": "/web-animations/timing-model/animation-effects/phases-and-states.html" + }, { "path": "web-animations/timing-model/animation-effects/simple-iteration-progress.html", "url": "/web-animations/timing-model/animation-effects/simple-iteration-progress.html" @@ -30257,6 +30257,10 @@ "path": "web-animations/timing-model/animations/set-the-timeline-of-an-animation.html", "url": "/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html" }, + { + "path": "web-animations/timing-model/animations/updating-the-finished-state.html", + "url": "/web-animations/timing-model/animations/updating-the-finished-state.html" + }, { "path": "webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html", "url": "/webaudio/the-audio-api/the-audiobuffer-interface/idl-test.html" @@ -30305,6 +30309,14 @@ "path": "webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html", "url": "/webaudio/the-audio-api/the-offlineaudiocontext-interface/current-time-block-size.html" }, + { + "path": "webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html", + "url": "/webaudio/the-audio-api/the-pannernode-interface/test-pannernode-automation.html" + }, + { + "path": "webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html", + "url": "/webaudio/the-audio-api/the-waveshapernode-interface/curve-tests.html" + }, { "path": "webdriver/interface.html", "url": "/webdriver/interface.html" @@ -35038,8 +35050,8 @@ "url": "/workers/constructors/Worker/Blob-url.html" }, { - "path": "workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html", - "url": "/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html" + "path": "workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js", + "url": "/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker" }, { "path": "workers/constructors/Worker/ctor-1.html", @@ -35054,8 +35066,8 @@ "url": "/workers/constructors/Worker/ctor-undefined.html" }, { - "path": "workers/constructors/Worker/expected-self-properties.html", - "url": "/workers/constructors/Worker/expected-self-properties.html" + "path": "workers/constructors/Worker/expected-self-properties.worker.js", + "url": "/workers/constructors/Worker/expected-self-properties.worker" }, { "path": "workers/constructors/Worker/no-arguments-ctor.html", @@ -35074,8 +35086,8 @@ "url": "/workers/constructors/Worker/terminate.html" }, { - "path": "workers/constructors/Worker/unexpected-self-properties.html", - "url": "/workers/constructors/Worker/unexpected-self-properties.html" + "path": "workers/constructors/Worker/unexpected-self-properties.worker.js", + "url": "/workers/constructors/Worker/unexpected-self-properties.worker" }, { "path": "workers/constructors/Worker/unresolvable-url.html", @@ -35496,6 +35508,26 @@ "timeout": "long", "url": "/IndexedDB/writer-starvation.htm" }, + { + "path": "WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html", + "timeout": "long", + "url": "/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html" + }, + { + "path": "WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html", + "timeout": "long", + "url": "/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html" + }, + { + "path": "WebCryptoAPI/derive_bits_keys/test_hkdf.html", + "timeout": "long", + "url": "/WebCryptoAPI/derive_bits_keys/test_hkdf.html" + }, + { + "path": "WebCryptoAPI/derive_bits_keys/test_pbkdf2.html", + "timeout": "long", + "url": "/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html" + }, { "path": "WebCryptoAPI/digest/test_digest.html", "timeout": "long", @@ -35641,6 +35673,31 @@ "timeout": "long", "url": "/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html" }, + { + "path": "WebCryptoAPI/sign_verify/test_ecdsa.html", + "timeout": "long", + "url": "/WebCryptoAPI/sign_verify/test_ecdsa.html" + }, + { + "path": "WebCryptoAPI/sign_verify/test_hmac.html", + "timeout": "long", + "url": "/WebCryptoAPI/sign_verify/test_hmac.html" + }, + { + "path": "WebCryptoAPI/sign_verify/test_rsa_pkcs.html", + "timeout": "long", + "url": "/WebCryptoAPI/sign_verify/test_rsa_pkcs.html" + }, + { + "path": "WebCryptoAPI/sign_verify/test_rsa_pss.html", + "timeout": "long", + "url": "/WebCryptoAPI/sign_verify/test_rsa_pss.html" + }, + { + "path": "WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html", + "timeout": "long", + "url": "/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html" + }, { "path": "XMLHttpRequest/progress-events-response-data-gzip.htm", "timeout": "long", @@ -35896,6 +35953,206 @@ "timeout": "long", "url": "/encoding/single-byte-decoder.html" }, + { + "path": "encrypted-media/clearkey-check-initdata-type.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-check-initdata-type.html" + }, + { + "path": "encrypted-media/clearkey-events.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-events.html" + }, + { + "path": "encrypted-media/clearkey-generate-request-disallowed-input.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-generate-request-disallowed-input.html" + }, + { + "path": "encrypted-media/clearkey-keystatuses-multiple-sessions.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-keystatuses-multiple-sessions.html" + }, + { + "path": "encrypted-media/clearkey-keystatuses.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-keystatuses.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-persistent-usage-record.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-events.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-events.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-multikey.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-multikey.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-two-videos.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html" + }, + { + "path": "encrypted-media/clearkey-mp4-playback-temporary.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-mp4-playback-temporary.html" + }, + { + "path": "encrypted-media/clearkey-not-callable-after-createsession.html", + "timeout": "long", + "url": "/encrypted-media/clearkey-not-callable-after-createsession.html" + }, + { + "path": "encrypted-media/drm-check-initdata-type.html", + "timeout": "long", + "url": "/encrypted-media/drm-check-initdata-type.html" + }, + { + "path": "encrypted-media/drm-events.html", + "timeout": "long", + "url": "/encrypted-media/drm-events.html" + }, + { + "path": "encrypted-media/drm-generate-request-disallowed-input.html", + "timeout": "long", + "url": "/encrypted-media/drm-generate-request-disallowed-input.html" + }, + { + "path": "encrypted-media/drm-keystatuses-multiple-sessions.html", + "timeout": "long", + "url": "/encrypted-media/drm-keystatuses-multiple-sessions.html" + }, + { + "path": "encrypted-media/drm-keystatuses.html", + "timeout": "long", + "url": "/encrypted-media/drm-keystatuses.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-persistent-usage-record-events.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-persistent-usage-record.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-persistent-usage-record.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-retrieve-persistent-license.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-retrieve-persistent-license.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-events.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-events.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-multikey.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-multikey.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-two-videos.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-two-videos.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary-waitingforkey.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html" + }, + { + "path": "encrypted-media/drm-mp4-playback-temporary.html", + "timeout": "long", + "url": "/encrypted-media/drm-mp4-playback-temporary.html" + }, + { + "path": "encrypted-media/drm-not-callable-after-createsession.html", + "timeout": "long", + "url": "/encrypted-media/drm-not-callable-after-createsession.html" + }, { "path": "eventsource/dedicated-worker/eventsource-constructor-non-same-origin.htm", "timeout": "long", @@ -35957,9 +36214,14 @@ "url": "/html/browsers/history/the-history-interface/007.html" }, { - "path": "html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html", + "path": "html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html", "timeout": "long", - "url": "/html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html" + "url": "/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html" + }, + { + "path": "html/browsers/origin/cross-origin-objects/cross-origin-objects.html", + "timeout": "long", + "url": "/html/browsers/origin/cross-origin-objects/cross-origin-objects.html" }, { "path": "html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html", @@ -36836,6 +37098,11 @@ "timeout": "long", "url": "/media-source/SourceBuffer-abort-readyState.html" }, + { + "path": "media-source/mediasource-appendbuffer-quota-exceeded.html", + "timeout": "long", + "url": "/media-source/mediasource-appendbuffer-quota-exceeded.html" + }, { "path": "media-source/mediasource-redundant-seek.html", "timeout": "long", @@ -37209,56 +37476,9 @@ ] }, "local_changes": { - "deleted": [ - "dom/nodes/remove-row.html" - ], + "deleted": [], "deleted_reftests": {}, - "items": { - "testharness": { - "dom/nodes/NodeList-Iterable.html": [ - { - "path": "dom/nodes/NodeList-Iterable.html", - "url": "/dom/nodes/NodeList-Iterable.html" - } - ], - "html/semantics/forms/the-option-element/option-form.html": [ - { - "path": "html/semantics/forms/the-option-element/option-form.html", - "url": "/html/semantics/forms/the-option-element/option-form.html" - } - ], - "html/semantics/interactive-elements/the-dialog-element/dialog-open.html": [ - { - "path": "html/semantics/interactive-elements/the-dialog-element/dialog-open.html", - "url": "/html/semantics/interactive-elements/the-dialog-element/dialog-open.html" - } - ], - "html/semantics/scripting-1/the-script-element/script-charset-03.html": [ - { - "path": "html/semantics/scripting-1/the-script-element/script-charset-03.html", - "url": "/html/semantics/scripting-1/the-script-element/script-charset-03.html" - } - ], - "html/semantics/tabular-data/the-table-element/remove-row.html": [ - { - "path": "html/semantics/tabular-data/the-table-element/remove-row.html", - "url": "/html/semantics/tabular-data/the-table-element/remove-row.html" - } - ], - "html/semantics/text-level-semantics/the-data-element/data.value-001.html": [ - { - "path": "html/semantics/text-level-semantics/the-data-element/data.value-001.html", - "url": "/html/semantics/text-level-semantics/the-data-element/data.value-001.html" - } - ], - "html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html": [ - { - "path": "html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html", - "url": "/html/webappapis/scripting/events/invalid-uncompiled-raw-handler-compiled-late.html" - } - ] - } - }, + "items": {}, "reftest_nodes": {} }, "reftest_nodes": { @@ -37622,18 +37842,6 @@ "url": "/2dcontext/line-styles/lineto_a.html" } ], - "2dcontext/shadows/canvas_shadows_002-ref.htm": [ - { - "path": "2dcontext/shadows/canvas_shadows_002-ref.htm", - "references": [ - [ - "/2dcontext/shadows/canvas_shadows_002-ref.htm", - "==" - ] - ], - "url": "/2dcontext/shadows/canvas_shadows_002-ref.htm" - } - ], "2dcontext/shadows/canvas_shadows_002.htm": [ { "path": "2dcontext/shadows/canvas_shadows_002.htm", @@ -37862,18 +38070,6 @@ "url": "/custom-elements/v0/registering/unresolved-element-pseudoclass/unresolved-element-pseudoclass-css-test-type-extension.html" } ], - "html/dom/elements/global-attributes/dir_auto-EN-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-EN-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-EN-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-EN-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-EN-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-EN-L.html", @@ -37886,18 +38082,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-EN-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-EN-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-EN-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-EN-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-EN-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-EN-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-EN-R.html", @@ -37910,18 +38094,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-EN-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-L.html", @@ -37934,18 +38106,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-N-EN-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-N-EN-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-N-EN-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-N-EN-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-N-EN-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-N-EN-L.html", @@ -37958,18 +38118,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-N-EN-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-N-EN-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-N-EN-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-N-EN-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-N-EN-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-N-EN-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-N-EN-R.html", @@ -38006,18 +38154,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-N-EN.html" } ], - "html/dom/elements/global-attributes/dir_auto-N-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-N-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-N-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-N-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-N-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-N-L.html", @@ -38030,18 +38166,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-N-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-N-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-N-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-N-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-N-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-N-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-N-R.html", @@ -38054,18 +38178,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-N-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-R.html", @@ -38078,18 +38190,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-L.html", @@ -38102,18 +38202,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-R.html", @@ -38126,18 +38214,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-bdi-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-bdi-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-bdi-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-bdi-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-bdi-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-bdi-L.html", @@ -38150,18 +38226,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-bdi-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-bdi-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-bdi-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-bdi-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-bdi-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-bdi-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-bdi-R.html", @@ -38174,18 +38238,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-bdi-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-dir-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-dir-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-dir-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-dir-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-dir-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-dir-L.html", @@ -38198,18 +38250,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-dir-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-dir-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-dir-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-dir-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-dir-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-dir-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-dir-R.html", @@ -38222,18 +38262,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-dir-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L.html", @@ -38246,18 +38274,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R.html", @@ -38270,18 +38286,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-script-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-script-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-script-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-script-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-script-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-script-L.html", @@ -38294,18 +38298,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-script-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-script-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-script-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-script-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-script-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-script-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-script-R.html", @@ -38318,18 +38310,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-script-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-style-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-style-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-style-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-style-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-style-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-style-L.html", @@ -38342,18 +38322,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-style-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-style-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-style-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-style-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-style-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-style-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-style-R.html", @@ -38366,18 +38334,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-style-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-textarea-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-textarea-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-textarea-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-textarea-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-textarea-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-textarea-L.html", @@ -38390,18 +38346,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-textarea-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-contained-textarea-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-contained-textarea-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-contained-textarea-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-contained-textarea-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-contained-textarea-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-contained-textarea-R.html", @@ -38414,18 +38358,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-contained-textarea-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-EN-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-EN-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-EN-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-EN-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-EN-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-EN-L.html", @@ -38438,18 +38370,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-EN-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-EN-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-EN-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-EN-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-EN-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-EN-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-EN-R.html", @@ -38462,18 +38382,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-EN-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-L.html", @@ -38486,18 +38394,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-N-EN-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-N-EN-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-N-EN-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-N-EN-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-N-EN-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-N-EN-L.html", @@ -38510,18 +38406,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-N-EN-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-N-EN-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-N-EN-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-N-EN-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-N-EN-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-N-EN-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-N-EN-R.html", @@ -38534,18 +38418,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-N-EN-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-N-EN-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-N-EN-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-N-EN-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-N-EN-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-N-EN.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-N-EN.html", @@ -38558,18 +38430,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-N-EN.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-N-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-N-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-N-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-N-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-N-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-N-L.html", @@ -38582,18 +38442,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-N-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-N-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-N-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-N-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-N-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-N-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-N-R.html", @@ -38606,18 +38454,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-N-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-R.html", @@ -38630,18 +38466,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-script-EN-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-script-EN-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-script-EN-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-script-EN-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-script-EN-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-script-EN-L.html", @@ -38654,18 +38478,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-script-EN-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-script-EN-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-script-EN-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-script-EN-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-script-EN-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-script-EN-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-script-EN-R.html", @@ -38678,18 +38490,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-script-EN-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-script-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-script-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-script-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-script-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-script-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-script-L.html", @@ -38702,18 +38502,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-script-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L.html", @@ -38726,18 +38514,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R.html", @@ -38750,18 +38526,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-EN-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-script-N-EN.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-EN.html", @@ -38774,18 +38538,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-EN.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-script-N-L-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-L-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-script-N-L-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-L-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-script-N-L.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-L.html", @@ -38798,18 +38550,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-L.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-script-N-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-script-N-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-script-N-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-script-N-R.html", @@ -38822,18 +38562,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-script-N-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-input-script-R-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-input-script-R-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-input-script-R-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-input-script-R-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-input-script-R.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-input-script-R.html", @@ -38846,18 +38574,6 @@ "url": "/html/dom/elements/global-attributes/dir_auto-input-script-R.html" } ], - "html/dom/elements/global-attributes/dir_auto-isolate-ref.html": [ - { - "path": "html/dom/elements/global-attributes/dir_auto-isolate-ref.html", - "references": [ - [ - "/html/dom/elements/global-attributes/dir_auto-isolate-ref.html", - "==" - ] - ], - "url": "/html/dom/elements/global-attributes/dir_auto-isolate-ref.html" - } - ], "html/dom/elements/global-attributes/dir_auto-isolate.html": [ { "path": "html/dom/elements/global-attributes/dir_auto-isolate.html", @@ -39362,18 +39078,6 @@ "url": "/html/editing/the-hidden-attribute/hidden-2.svg" } ], - "html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type-ref.html": [ - { - "path": "html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type-ref.html", - "references": [ - [ - "/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type-ref.html", - "==" - ] - ], - "url": "/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type-ref.html" - } - ], "html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type.html": [ { "path": "html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type.html", @@ -40286,18 +39990,6 @@ "url": "/html/semantics/forms/the-textarea-element/textarea-newline-bidi.html" } ], - "html/semantics/grouping-content/the-li-element/grouping-li-reftest-001-ref.html": [ - { - "path": "html/semantics/grouping-content/the-li-element/grouping-li-reftest-001-ref.html", - "references": [ - [ - "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-001.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-001-ref.html" - } - ], "html/semantics/grouping-content/the-li-element/grouping-li-reftest-001.html": [ { "path": "html/semantics/grouping-content/the-li-element/grouping-li-reftest-001.html", @@ -40310,18 +40002,6 @@ "url": "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-001.html" } ], - "html/semantics/grouping-content/the-li-element/grouping-li-reftest-002-ref.html": [ - { - "path": "html/semantics/grouping-content/the-li-element/grouping-li-reftest-002-ref.html", - "references": [ - [ - "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-002-ref.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-002-ref.html" - } - ], "html/semantics/grouping-content/the-li-element/grouping-li-reftest-002.html": [ { "path": "html/semantics/grouping-content/the-li-element/grouping-li-reftest-002.html", @@ -40334,18 +40014,6 @@ "url": "/html/semantics/grouping-content/the-li-element/grouping-li-reftest-002.html" } ], - "html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001-ref.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001-ref.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001-ref.html" - } - ], "html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001.html": [ { "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001.html", @@ -40358,18 +40026,6 @@ "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-rev-reftest-001.html" } ], - "html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-001-ref.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-001-ref.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-001.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-001-ref.html" - } - ], "html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-001.html": [ { "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-001.html", @@ -40382,18 +40038,6 @@ "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-001.html" } ], - "html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-002-ref.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-002-ref.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-002.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-002-ref.html" - } - ], "html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-002.html": [ { "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-002.html", @@ -40406,18 +40050,6 @@ "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-start-reftest-002.html" } ], - "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-001-ref.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-001-ref.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-001.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-001-ref.html" - } - ], "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-001.html": [ { "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-001.html", @@ -40430,18 +40062,6 @@ "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-001.html" } ], - "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-002-ref.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-002-ref.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-002.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-002-ref.html" - } - ], "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-002.html": [ { "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-002.html", @@ -40454,18 +40074,6 @@ "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-002.html" } ], - "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-003-ref.html": [ - { - "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-003-ref.html", - "references": [ - [ - "/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-003.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-003-ref.html" - } - ], "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-003.html": [ { "path": "html/semantics/grouping-content/the-ol-element/grouping-ol-type-reftest-003.html", @@ -40490,18 +40098,6 @@ "url": "/html/semantics/grouping-content/the-ol-element/reversed-2.html" } ], - "html/semantics/grouping-content/the-pre-element/grouping-pre-reftest-001-ref.html": [ - { - "path": "html/semantics/grouping-content/the-pre-element/grouping-pre-reftest-001-ref.html", - "references": [ - [ - "/html/semantics/grouping-content/the-pre-element/grouping-pre-reftest-001.html", - "==" - ] - ], - "url": "/html/semantics/grouping-content/the-pre-element/grouping-pre-reftest-001-ref.html" - } - ], "html/semantics/grouping-content/the-pre-element/grouping-pre-reftest-001.html": [ { "path": "html/semantics/grouping-content/the-pre-element/grouping-pre-reftest-001.html", @@ -40526,18 +40122,6 @@ "url": "/html/semantics/grouping-content/the-pre-element/pre-newline-bidi.html" } ], - "html/semantics/links/linktypes/alternate-css-ref.html": [ - { - "path": "html/semantics/links/linktypes/alternate-css-ref.html", - "references": [ - [ - "/html/semantics/links/linktypes/alternate-css-ref.html", - "==" - ] - ], - "url": "/html/semantics/links/linktypes/alternate-css-ref.html" - } - ], "html/semantics/links/linktypes/alternate-css.html": [ { "path": "html/semantics/links/linktypes/alternate-css.html", @@ -43599,7 +43183,7 @@ } ] }, - "rev": "53f3408ffe1fd0e56a37aff4aaf1fa8441c41d6d", + "rev": "dc5cbf088edcdb266541d4e5a76149a2c6e716a0", "url_base": "/", "version": 3 } diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini similarity index 54% rename from tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html.ini rename to tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini index e189163568f..a38bb6334e6 100644 --- a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js.ini @@ -1,3 +1,3 @@ -[cross-origin-objects.sub.html] +[ecdh_bits.worker] type: testharness expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini new file mode 100644 index 00000000000..d06f90911fe --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js.ini @@ -0,0 +1,3 @@ +[ecdh_keys.worker] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini new file mode 100644 index 00000000000..c036e5efc17 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/hkdf.worker.js.ini @@ -0,0 +1,3 @@ +[hkdf.worker] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini new file mode 100644 index 00000000000..449664ad47b --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/pbkdf2.worker.js.ini @@ -0,0 +1,3 @@ +[pbkdf2.worker] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html.ini new file mode 100644 index 00000000000..5f9f13687d2 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html.ini @@ -0,0 +1,3 @@ +[test_ecdh_bits.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html.ini new file mode 100644 index 00000000000..ed6862c391e --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html.ini @@ -0,0 +1,3 @@ +[test_ecdh_keys.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.html.ini new file mode 100644 index 00000000000..682e712cf00 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_hkdf.html.ini @@ -0,0 +1,3 @@ +[test_hkdf.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html.ini b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html.ini new file mode 100644 index 00000000000..afdc5b5b5ac --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html.ini @@ -0,0 +1,3 @@ +[test_pbkdf2.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/digest/digest.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/digest/digest.worker.js.ini index fc3de2fa61a..896fdc48351 100644 --- a/tests/wpt/metadata/WebCryptoAPI/digest/digest.worker.js.ini +++ b/tests/wpt/metadata/WebCryptoAPI/digest/digest.worker.js.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [SHA-1 with empty source data] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/WebCryptoAPI/digest/test_digest.html.ini b/tests/wpt/metadata/WebCryptoAPI/digest/test_digest.html.ini index e6b83e69ffb..5919ea90676 100644 --- a/tests/wpt/metadata/WebCryptoAPI/digest/test_digest.html.ini +++ b/tests/wpt/metadata/WebCryptoAPI/digest/test_digest.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [SHA-1 with empty source data] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/WebCryptoAPI/import_export/ec_importKey.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/import_export/ec_importKey.worker.js.ini new file mode 100644 index 00000000000..d413cf5e6f6 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/import_export/ec_importKey.worker.js.ini @@ -0,0 +1,6 @@ +[ec_importKey.worker] + type: testharness + expected: ERROR + [Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, [\])] + expected: NOTRUN + diff --git a/tests/wpt/metadata/WebCryptoAPI/import_export/rsa_importKey.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/import_export/rsa_importKey.worker.js.ini new file mode 100644 index 00000000000..c0066600d39 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/import_export/rsa_importKey.worker.js.ini @@ -0,0 +1,6 @@ +[rsa_importKey.worker] + type: testharness + expected: ERROR + [Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt\])] + expected: NOTRUN + diff --git a/tests/wpt/metadata/WebCryptoAPI/import_export/symmetric_importKey.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/import_export/symmetric_importKey.worker.js.ini new file mode 100644 index 00000000000..a543f0fa40a --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/import_export/symmetric_importKey.worker.js.ini @@ -0,0 +1,6 @@ +[symmetric_importKey.worker] + type: testharness + expected: ERROR + [Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [encrypt\])] + expected: NOTRUN + diff --git a/tests/wpt/metadata/WebCryptoAPI/import_export/test_ec_importKey.html.ini b/tests/wpt/metadata/WebCryptoAPI/import_export/test_ec_importKey.html.ini new file mode 100644 index 00000000000..569b894dae4 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/import_export/test_ec_importKey.html.ini @@ -0,0 +1,6 @@ +[test_ec_importKey.html] + type: testharness + expected: ERROR + [Good parameters: P-256 bits (spki, buffer(91), {name: ECDSA, namedCurve: P-256}, true, [\])] + expected: NOTRUN + diff --git a/tests/wpt/metadata/WebCryptoAPI/import_export/test_rsa_importKey.html.ini b/tests/wpt/metadata/WebCryptoAPI/import_export/test_rsa_importKey.html.ini new file mode 100644 index 00000000000..a36b2da56a8 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/import_export/test_rsa_importKey.html.ini @@ -0,0 +1,6 @@ +[test_rsa_importKey.html] + type: testharness + expected: ERROR + [Good parameters: 1024 bits (spki, buffer(162), {hash: SHA-1, name: RSA-OAEP}, true, [encrypt\])] + expected: NOTRUN + diff --git a/tests/wpt/metadata/WebCryptoAPI/import_export/test_symmetric_importKey.html.ini b/tests/wpt/metadata/WebCryptoAPI/import_export/test_symmetric_importKey.html.ini new file mode 100644 index 00000000000..e1b1153922c --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/import_export/test_symmetric_importKey.html.ini @@ -0,0 +1,6 @@ +[test_symmetric_importKey.html] + type: testharness + expected: ERROR + [Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CTR}, true, [encrypt\])] + expected: NOTRUN + diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini new file mode 100644 index 00000000000..50fe8b0f2f0 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/ecdsa.worker.js.ini @@ -0,0 +1,3 @@ +[ecdsa.worker] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini new file mode 100644 index 00000000000..76f33a3d17d --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/hmac.worker.js.ini @@ -0,0 +1,3 @@ +[hmac.worker] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini new file mode 100644 index 00000000000..63b341c3b39 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pkcs.worker.js.ini @@ -0,0 +1,3 @@ +[rsa_pkcs.worker] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini new file mode 100644 index 00000000000..4b81358e800 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/rsa_pss.worker.js.ini @@ -0,0 +1,3 @@ +[rsa_pss.worker] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_ecdsa.html.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_ecdsa.html.ini new file mode 100644 index 00000000000..ea6a1238b34 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_ecdsa.html.ini @@ -0,0 +1,3 @@ +[test_ecdsa.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_hmac.html.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_hmac.html.ini new file mode 100644 index 00000000000..b731b53f6e4 --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_hmac.html.ini @@ -0,0 +1,3 @@ +[test_hmac.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pkcs.html.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pkcs.html.ini new file mode 100644 index 00000000000..097b7a6a48c --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pkcs.html.ini @@ -0,0 +1,3 @@ +[test_rsa_pkcs.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pss.html.ini b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pss.html.ini new file mode 100644 index 00000000000..a2d5f22402e --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/sign_verify/test_rsa_pss.html.ini @@ -0,0 +1,3 @@ +[test_rsa_pss.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html.ini b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html.ini new file mode 100644 index 00000000000..af7e5b6ff9a --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html.ini @@ -0,0 +1,3 @@ +[test_wrapKey_unwrapKey.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini new file mode 100644 index 00000000000..1467e49622f --- /dev/null +++ b/tests/wpt/metadata/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.worker.js.ini @@ -0,0 +1,3 @@ +[wrapKey_unwrapKey.worker] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/XMLHttpRequest/abort-during-upload.htm.ini b/tests/wpt/metadata/XMLHttpRequest/abort-during-upload.htm.ini new file mode 100644 index 00000000000..a3e060ee07d --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/abort-during-upload.htm.ini @@ -0,0 +1,5 @@ +[abort-during-upload.htm] + type: testharness + [XMLHttpRequest: abort() while sending data] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/abort-event-order.htm.ini b/tests/wpt/metadata/XMLHttpRequest/abort-event-order.htm.ini new file mode 100644 index 00000000000..c77110633c2 --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/abort-event-order.htm.ini @@ -0,0 +1,5 @@ +[abort-event-order.htm] + type: testharness + [XMLHttpRequest: The abort() method: abort and loadend events] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/event-error-order.sub.html.ini b/tests/wpt/metadata/XMLHttpRequest/event-error-order.sub.html.ini new file mode 100644 index 00000000000..2cf89c33915 --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/event-error-order.sub.html.ini @@ -0,0 +1,5 @@ +[event-error-order.sub.html] + type: testharness + [XMLHttpRequest: event - error (order of events)] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/event-error.html.ini b/tests/wpt/metadata/XMLHttpRequest/event-error.html.ini new file mode 100644 index 00000000000..437b86cb787 --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/event-error.html.ini @@ -0,0 +1,5 @@ +[event-error.html] + type: testharness + [XMLHttpRequest Test: event - error] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/event-timeout-order.htm.ini b/tests/wpt/metadata/XMLHttpRequest/event-timeout-order.htm.ini new file mode 100644 index 00000000000..fbcbece7163 --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/event-timeout-order.htm.ini @@ -0,0 +1,5 @@ +[event-timeout-order.htm] + type: testharness + [XMLHttpRequest: event - timeout (order of events)] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/headers-normalize-response.htm.ini b/tests/wpt/metadata/XMLHttpRequest/headers-normalize-response.htm.ini new file mode 100644 index 00000000000..7ac33fce748 --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/headers-normalize-response.htm.ini @@ -0,0 +1,20 @@ +[headers-normalize-response.htm] + type: testharness + [Header value: hello_world\\0] + expected: FAIL + + [Header value: \\0hello_world] + expected: FAIL + + [Header value: hello\\0world] + expected: FAIL + + [Header value: hello_world[tab\]] + expected: FAIL + + [Header value: [tab\]hello_world[tab\]] + expected: FAIL + + [Header value: \\0] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/send-entity-body-empty.htm.ini b/tests/wpt/metadata/XMLHttpRequest/send-entity-body-empty.htm.ini new file mode 100644 index 00000000000..4e4db04ce23 --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/send-entity-body-empty.htm.ini @@ -0,0 +1,5 @@ +[send-entity-body-empty.htm] + type: testharness + [XMLHttpRequest: send("") - empty entity body (HEAD)] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/send-entity-body-get-head.htm.ini b/tests/wpt/metadata/XMLHttpRequest/send-entity-body-get-head.htm.ini new file mode 100644 index 00000000000..c1ab904b4bb --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/send-entity-body-get-head.htm.ini @@ -0,0 +1,5 @@ +[send-entity-body-get-head.htm] + type: testharness + [XMLHttpRequest: send() - non-empty data argument and GET/HEAD (HEAD)] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/send-entity-body-none.htm.ini b/tests/wpt/metadata/XMLHttpRequest/send-entity-body-none.htm.ini new file mode 100644 index 00000000000..19ab087415b --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/send-entity-body-none.htm.ini @@ -0,0 +1,8 @@ +[send-entity-body-none.htm] + type: testharness + [No content type (HEAD)] + expected: FAIL + + [Explicit content type (HEAD)] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/send-sync-response-event-order.htm.ini b/tests/wpt/metadata/XMLHttpRequest/send-sync-response-event-order.htm.ini new file mode 100644 index 00000000000..a0c83f99d4d --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/send-sync-response-event-order.htm.ini @@ -0,0 +1,5 @@ +[send-sync-response-event-order.htm] + type: testharness + [XMLHttpRequest: The send() method: event order when synchronous flag is set] + expected: FAIL + diff --git a/tests/wpt/metadata/XMLHttpRequest/setrequestheader-content-type.htm.ini b/tests/wpt/metadata/XMLHttpRequest/setrequestheader-content-type.htm.ini new file mode 100644 index 00000000000..86c37ea443f --- /dev/null +++ b/tests/wpt/metadata/XMLHttpRequest/setrequestheader-content-type.htm.ini @@ -0,0 +1,32 @@ +[setrequestheader-content-type.htm] + type: testharness + [XML Document request has correct default Content-Type of "application/xml;charset=UTF-8"] + expected: FAIL + + [HTML Document request has correct default Content-Type of "text/html;charset=UTF-8"] + expected: FAIL + + [ArrayBuffer request sends no Content-Type without setRequestHeader() call] + expected: FAIL + + [ArrayBuffer request keeps setRequestHeader() Content-Type and charset] + expected: FAIL + + [ArrayBufferView request sends no Content-Type without setRequestHeader() call] + expected: FAIL + + [ArrayBufferView request keeps setRequestHeader() Content-Type and charset] + expected: FAIL + + [URLSearchParams request keeps setRequestHeader() Content-Type, with charset adjusted to UTF-8] + expected: FAIL + + [ReadableStream request respects setRequestHeader("")] + expected: FAIL + + [ReadableStream request with under type sends no Content-Type without setRequestHeader() call] + expected: FAIL + + [ReadableStream request keeps setRequestHeader() Content-Type and charset] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/AddEventListenerOptions-once.html.ini b/tests/wpt/metadata/dom/events/AddEventListenerOptions-once.html.ini new file mode 100644 index 00000000000..fb69b38b0a4 --- /dev/null +++ b/tests/wpt/metadata/dom/events/AddEventListenerOptions-once.html.ini @@ -0,0 +1,11 @@ +[AddEventListenerOptions-once.html] + type: testharness + [Once listener should be invoked only once] + expected: FAIL + + [Once listener should be invoked only once even if the event is nested] + expected: FAIL + + [Once listener should be added / removed like normal listeners] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/Event-propagation.html.ini b/tests/wpt/metadata/dom/events/Event-propagation.html.ini new file mode 100644 index 00000000000..3c2599077fc --- /dev/null +++ b/tests/wpt/metadata/dom/events/Event-propagation.html.ini @@ -0,0 +1,8 @@ +[Event-propagation.html] + type: testharness + [After stopPropagation()] + expected: FAIL + + [After stopImmediatePropagation()] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini b/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini new file mode 100644 index 00000000000..201224d1802 --- /dev/null +++ b/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent.html.ini @@ -0,0 +1,41 @@ +[EventTarget-dispatchEvent.html] + type: testharness + [If the event's initialized flag is not set, an InvalidStateError must be thrown (AnimationEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (BeforeUnloadEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (CompositionEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (DeviceMotionEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (DeviceOrientationEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (DragEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (IDBVersionChangeEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (SVGZoomEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (SVGZoomEvents).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (TextEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (TrackEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (TransitionEvent).] + expected: FAIL + + [If the event's initialized flag is not set, an InvalidStateError must be thrown (WheelEvent).] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index 8b7910b4c0f..1142ba76fa4 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -165,3 +165,222 @@ [DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError] expected: FAIL + [Document interface: operation createCDATASection(DOMString)] + expected: FAIL + + [Document interface: new Document() must inherit property "createCDATASection" with the proper type (18)] + expected: FAIL + + [Document interface: calling createCDATASection(DOMString) on new Document() with too few arguments must throw TypeError] + expected: FAIL + + [Document interface: xmlDoc must inherit property "createCDATASection" with the proper type (18)] + expected: FAIL + + [Document interface: calling createCDATASection(DOMString) on xmlDoc with too few arguments must throw TypeError] + expected: FAIL + + [Attr interface: existence and properties of interface object] + expected: FAIL + + [Attr interface: existence and properties of interface prototype object] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ELEMENT_NODE" with the proper type (0)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ATTRIBUTE_NODE" with the proper type (1)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "TEXT_NODE" with the proper type (2)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "CDATA_SECTION_NODE" with the proper type (3)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ENTITY_REFERENCE_NODE" with the proper type (4)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ENTITY_NODE" with the proper type (5)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "PROCESSING_INSTRUCTION_NODE" with the proper type (6)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "COMMENT_NODE" with the proper type (7)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_NODE" with the proper type (8)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_TYPE_NODE" with the proper type (9)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_FRAGMENT_NODE" with the proper type (10)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "NOTATION_NODE" with the proper type (11)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "nodeType" with the proper type (12)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "baseURI" with the proper type (14)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isConnected" with the proper type (15)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "ownerDocument" with the proper type (16)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "parentNode" with the proper type (17)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "parentElement" with the proper type (18)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "hasChildNodes" with the proper type (19)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "childNodes" with the proper type (20)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "firstChild" with the proper type (21)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lastChild" with the proper type (22)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "previousSibling" with the proper type (23)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "nextSibling" with the proper type (24)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "normalize" with the proper type (27)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "cloneNode" with the proper type (28)] + expected: FAIL + + [Node interface: calling cloneNode(boolean) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isEqualNode" with the proper type (29)] + expected: FAIL + + [Node interface: calling isEqualNode(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isSameNode" with the proper type (30)] + expected: FAIL + + [Node interface: calling isSameNode(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_DISCONNECTED" with the proper type (31)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_PRECEDING" with the proper type (32)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_FOLLOWING" with the proper type (33)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_CONTAINS" with the proper type (34)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_CONTAINED_BY" with the proper type (35)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" with the proper type (36)] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "compareDocumentPosition" with the proper type (37)] + expected: FAIL + + [Node interface: calling compareDocumentPosition(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "contains" with the proper type (38)] + expected: FAIL + + [Node interface: calling contains(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lookupPrefix" with the proper type (39)] + expected: FAIL + + [Node interface: calling lookupPrefix(DOMString) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "lookupNamespaceURI" with the proper type (40)] + expected: FAIL + + [Node interface: calling lookupNamespaceURI(DOMString) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "isDefaultNamespace" with the proper type (41)] + expected: FAIL + + [Node interface: calling isDefaultNamespace(DOMString) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "insertBefore" with the proper type (42)] + expected: FAIL + + [Node interface: calling insertBefore(Node,Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "appendChild" with the proper type (43)] + expected: FAIL + + [Node interface: calling appendChild(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "replaceChild" with the proper type (44)] + expected: FAIL + + [Node interface: calling replaceChild(Node,Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [Node interface: document.querySelector("[id\]").attributes[0\] must inherit property "removeChild" with the proper type (45)] + expected: FAIL + + [Node interface: calling removeChild(Node) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "addEventListener" with the proper type (0)] + expected: FAIL + + [EventTarget interface: calling addEventListener(DOMString,EventListener,[object Object\],[object Object\]) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "removeEventListener" with the proper type (1)] + expected: FAIL + + [EventTarget interface: calling removeEventListener(DOMString,EventListener,[object Object\],[object Object\]) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [EventTarget interface: document.querySelector("[id\]").attributes[0\] must inherit property "dispatchEvent" with the proper type (2)] + expected: FAIL + + [EventTarget interface: calling dispatchEvent(Event) on document.querySelector("[id\]").attributes[0\] with too few arguments must throw TypeError] + expected: FAIL + + [CDATASection interface: existence and properties of interface object] + expected: FAIL + + [CDATASection interface object length] + expected: FAIL + + [CDATASection interface object name] + expected: FAIL + + [CDATASection interface: existence and properties of interface prototype object] + expected: FAIL + + [CDATASection interface: existence and properties of interface prototype object's "constructor" property] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/lists/DOMTokenList-iteration.html.ini b/tests/wpt/metadata/dom/lists/DOMTokenList-iteration.html.ini new file mode 100644 index 00000000000..75ff2f81817 --- /dev/null +++ b/tests/wpt/metadata/dom/lists/DOMTokenList-iteration.html.ini @@ -0,0 +1,5 @@ +[DOMTokenList-iteration.html] + type: testharness + [DOMTokenList iteration: keys, values, etc.] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini b/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini index 08074624384..e86af236483 100644 --- a/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini +++ b/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName-xhtml.xhtml.ini @@ -15,3 +15,6 @@ [Element in HTML namespace, prefix, non-ascii characters in name] expected: FAIL + [Element in non-HTML namespace, prefix, non-ascii characters in name] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName.html.ini b/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName.html.ini index 3abe2d9b08f..35ef59b4c8f 100644 --- a/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName.html.ini +++ b/tests/wpt/metadata/dom/nodes/Document-getElementsByTagName.html.ini @@ -9,3 +9,9 @@ [Element in non-HTML namespace, prefix, uppercase name] expected: FAIL + [Element in HTML namespace, prefix, non-ascii characters in name] + expected: FAIL + + [Element in non-HTML namespace, prefix, non-ascii characters in name] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName.html.ini b/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName.html.ini index 55701c6264d..7a4d6ec4ec3 100644 --- a/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName.html.ini +++ b/tests/wpt/metadata/dom/nodes/Element-getElementsByTagName.html.ini @@ -9,3 +9,9 @@ [Element in non-HTML namespace, prefix, uppercase name] expected: FAIL + [Element in HTML namespace, prefix, non-ascii characters in name] + expected: FAIL + + [Element in non-HTML namespace, prefix, non-ascii characters in name] + expected: FAIL + diff --git a/tests/wpt/metadata/dom/nodes/Node-properties.html.ini b/tests/wpt/metadata/dom/nodes/Node-properties.html.ini new file mode 100644 index 00000000000..2e1731cc21b --- /dev/null +++ b/tests/wpt/metadata/dom/nodes/Node-properties.html.ini @@ -0,0 +1,8 @@ +[Node-properties.html] + type: testharness + [xmlElement.namespaceURI] + expected: FAIL + + [detachedXmlElement.namespaceURI] + expected: FAIL + diff --git a/tests/wpt/metadata/domparsing/DOMParser-parseFromString-xml-doctype.html.ini b/tests/wpt/metadata/domparsing/DOMParser-parseFromString-xml-doctype.html.ini new file mode 100644 index 00000000000..97956b1327d --- /dev/null +++ b/tests/wpt/metadata/domparsing/DOMParser-parseFromString-xml-doctype.html.ini @@ -0,0 +1,5 @@ +[DOMParser-parseFromString-xml-doctype.html] + type: testharness + [Doctype parsing of System Id must fail on ommitted value] + expected: FAIL + diff --git a/tests/wpt/metadata/domparsing/innerhtml-02.html.ini b/tests/wpt/metadata/domparsing/innerhtml-02.html.ini new file mode 100644 index 00000000000..6528bc716b8 --- /dev/null +++ b/tests/wpt/metadata/domparsing/innerhtml-02.html.ini @@ -0,0 +1,5 @@ +[innerhtml-02.html] + type: testharness + [Expected innerHTML: "<" for xmp.] + expected: FAIL + diff --git a/tests/wpt/metadata/domparsing/insert_adjacent_html.xhtml.ini b/tests/wpt/metadata/domparsing/insert_adjacent_html-xhtml.xhtml.ini similarity index 66% rename from tests/wpt/metadata/domparsing/insert_adjacent_html.xhtml.ini rename to tests/wpt/metadata/domparsing/insert_adjacent_html-xhtml.xhtml.ini index 68854311bc7..8fa2f436edb 100644 --- a/tests/wpt/metadata/domparsing/insert_adjacent_html.xhtml.ini +++ b/tests/wpt/metadata/domparsing/insert_adjacent_html-xhtml.xhtml.ini @@ -1,4 +1,4 @@ -[insert_adjacent_html.xhtml] +[insert_adjacent_html-xhtml.xhtml] type: testharness [insertAdjacentHTML in HTML] expected: FAIL diff --git a/tests/wpt/metadata/fetch/api/headers/headers-combine.html.ini b/tests/wpt/metadata/fetch/api/headers/headers-combine.html.ini deleted file mode 100644 index f12bddcc5c9..00000000000 --- a/tests/wpt/metadata/fetch/api/headers/headers-combine.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[headers-combine.html] - type: testharness - [Create headers using same name for different values] - expected: FAIL - - [Check append methods when called with already used name] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/api/request/request-cache.html.ini b/tests/wpt/metadata/fetch/api/request/request-cache.html.ini index f9bf8428a70..453cd49d255 100644 --- a/tests/wpt/metadata/fetch/api/request/request-cache.html.ini +++ b/tests/wpt/metadata/fetch/api/request/request-cache.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [RequestCache "default" mode checks the cache for previously cached content and goes to the network for stale responses with Etag and stale response] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/request/request-consume-empty.html.ini b/tests/wpt/metadata/fetch/api/request/request-consume-empty.html.ini index e50ab07ae2a..3984cbe0d77 100644 --- a/tests/wpt/metadata/fetch/api/request/request-consume-empty.html.ini +++ b/tests/wpt/metadata/fetch/api/request/request-consume-empty.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Consume request's body as text] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/request/request-consume.html.ini b/tests/wpt/metadata/fetch/api/request/request-consume.html.ini index 2493d1473c9..0823dce5d84 100644 --- a/tests/wpt/metadata/fetch/api/request/request-consume.html.ini +++ b/tests/wpt/metadata/fetch/api/request/request-consume.html.ini @@ -4,3 +4,6 @@ [Consume request's body as text] expected: FAIL + [Consume String request's body as text] + expected: NOTRUN + diff --git a/tests/wpt/metadata/fetch/api/request/request-headers.html.ini b/tests/wpt/metadata/fetch/api/request/request-headers.html.ini index 199c41344cf..c8bf2e7f491 100644 --- a/tests/wpt/metadata/fetch/api/request/request-headers.html.ini +++ b/tests/wpt/metadata/fetch/api/request/request-headers.html.ini @@ -1,5 +1,12 @@ [request-headers.html] type: testharness + expected: ERROR [Request should get its content-type from the body if none is provided] expected: FAIL + [Testing request header creations with various objects] + expected: FAIL + + [Testing empty Request Content-Type header] + expected: NOTRUN + diff --git a/tests/wpt/metadata/fetch/api/request/request-init-002.html.ini b/tests/wpt/metadata/fetch/api/request/request-init-002.html.ini index 34c703c4aba..094110f7feb 100644 --- a/tests/wpt/metadata/fetch/api/request/request-init-002.html.ini +++ b/tests/wpt/metadata/fetch/api/request/request-init-002.html.ini @@ -5,5 +5,5 @@ expected: FAIL [Initialize Request's body with undefined] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-cancel-stream.html.ini b/tests/wpt/metadata/fetch/api/response/response-cancel-stream.html.ini index 58237104f8b..6edab145393 100644 --- a/tests/wpt/metadata/fetch/api/response/response-cancel-stream.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-cancel-stream.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Cancelling a starting blob Response stream] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-consume-empty.html.ini b/tests/wpt/metadata/fetch/api/response/response-consume-empty.html.ini index d5a984585f9..7b3de44a527 100644 --- a/tests/wpt/metadata/fetch/api/response/response-consume-empty.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-consume-empty.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Consume response's body as text] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-consume-stream.html.ini b/tests/wpt/metadata/fetch/api/response/response-consume-stream.html.ini index 3d642c940ff..8c33fce2739 100644 --- a/tests/wpt/metadata/fetch/api/response/response-consume-stream.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-consume-stream.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Read empty text response's body as readableStream] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-consume.html.ini b/tests/wpt/metadata/fetch/api/response/response-consume.html.ini index aee0ff74cf1..4c3ad7cc84c 100644 --- a/tests/wpt/metadata/fetch/api/response/response-consume.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-consume.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Consume response's body as text] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini b/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini index 49a729ba72e..7a29195fff2 100644 --- a/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini @@ -5,5 +5,5 @@ expected: FAIL [Initialize Response's body with application/octet-binary] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-1.html.ini b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-1.html.ini index 4c28dac3f46..cf3bd11dfc1 100644 --- a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-1.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-1.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Getting blob after getting the Response body - not disturbed, not locked] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-2.html.ini b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-2.html.ini index a0f69bb460b..f06515815e0 100644 --- a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-2.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-2.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Getting blob after getting a locked Response body] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-3.html.ini b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-3.html.ini index 1fae2e402d2..9fe666dc8bf 100644 --- a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-3.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-3.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Getting blob after reading the Response body] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-4.html.ini b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-4.html.ini index 2a663209676..ceeea9d3650 100644 --- a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-4.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-4.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Getting blob after cancelling the Response body] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-5.html.ini b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-5.html.ini index 647919f227e..ae46c41f0b8 100644 --- a/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-5.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-stream-disturbed-5.html.ini @@ -2,5 +2,5 @@ type: testharness expected: ERROR [Getting a body reader after consuming as blob] - expected: FAIL + expected: NOTRUN diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html.ini new file mode 100644 index 00000000000..3335be3418f --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html.ini @@ -0,0 +1,3 @@ +[navigate-child-function-parent.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html.ini new file mode 100644 index 00000000000..afc5c397fe2 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html.ini @@ -0,0 +1,6 @@ +[navigate-child-function-src.html] + type: testharness + expected: TIMEOUT + [Set src from a function called from a parent] + expected: NOTRUN + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html.ini new file mode 100644 index 00000000000..8bb91c33c67 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html.ini @@ -0,0 +1,6 @@ +[navigate-child-function.html] + type: testharness + expected: TIMEOUT + [Set location from a function called from a parent] + expected: NOTRUN + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html.ini new file mode 100644 index 00000000000..84796af9188 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html.ini @@ -0,0 +1,3 @@ +[navigate-child-src-about-blank.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini new file mode 100644 index 00000000000..f5eb23dabc9 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini @@ -0,0 +1,3 @@ +[cross-origin-objects-on-new-window.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini new file mode 100644 index 00000000000..5ebe00f1029 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects.html.ini @@ -0,0 +1,3 @@ +[cross-origin-objects.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/html/dom/elements/global-attributes/dataset.html.ini b/tests/wpt/metadata/html/dom/elements/global-attributes/dataset.html.ini new file mode 100644 index 00000000000..d203d04ea6d --- /dev/null +++ b/tests/wpt/metadata/html/dom/elements/global-attributes/dataset.html.ini @@ -0,0 +1,5 @@ +[dataset.html] + type: testharness + [SVG elements should have a .dataset] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 3ae6e829747..7832b77a50a 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -4422,9 +4422,6 @@ [CanvasProxy interface: operation setContext(RenderingContext)] expected: FAIL - [CanvasRenderingContext2D interface object length] - expected: FAIL - [CanvasRenderingContext2D interface: attribute width] expected: FAIL @@ -9003,3 +9000,1761 @@ [Event interface: calling initEvent(DOMString,boolean,boolean) on new TrackEvent("addtrack", {track:document.createElement("track").track}) with too few arguments must throw TypeError] expected: FAIL + [Document interface: operation open(USVString,DOMString,DOMString)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "createCDATASection" with the proper type (18)] + expected: FAIL + + [Document interface: calling createCDATASection(DOMString) on iframe.contentDocument with too few arguments must throw TypeError] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "createComment" with the proper type (19)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "createProcessingInstruction" with the proper type (20)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "importNode" with the proper type (21)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "adoptNode" with the proper type (22)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "createAttribute" with the proper type (23)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "createAttributeNS" with the proper type (24)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "createEvent" with the proper type (25)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "createRange" with the proper type (26)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "createNodeIterator" with the proper type (27)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "createTreeWalker" with the proper type (28)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "styleSheets" with the proper type (29)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "selectedStyleSheetSet" with the proper type (30)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "lastStyleSheetSet" with the proper type (31)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "preferredStyleSheetSet" with the proper type (32)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "styleSheetSets" with the proper type (33)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "enableStyleSheetsForSet" with the proper type (34)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "domain" with the proper type (36)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "referrer" with the proper type (37)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "cookie" with the proper type (38)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "lastModified" with the proper type (39)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "readyState" with the proper type (40)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "title" with the proper type (42)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "dir" with the proper type (43)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "body" with the proper type (44)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "head" with the proper type (45)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "images" with the proper type (46)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "embeds" with the proper type (47)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "plugins" with the proper type (48)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "links" with the proper type (49)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "forms" with the proper type (50)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "scripts" with the proper type (51)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "getElementsByName" with the proper type (52)] + expected: FAIL + + [Document interface: calling open(USVString,DOMString,DOMString) on iframe.contentDocument with too few arguments must throw TypeError] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onreadystatechange" with the proper type (69)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "fgColor" with the proper type (70)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type (71)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type (72)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type (73)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "bgColor" with the proper type (74)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "anchors" with the proper type (75)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "applets" with the proper type (76)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "clear" with the proper type (77)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "captureEvents" with the proper type (78)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "releaseEvents" with the proper type (79)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "all" with the proper type (80)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "getElementById" with the proper type (81)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "children" with the proper type (82)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "firstElementChild" with the proper type (83)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "lastElementChild" with the proper type (84)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "childElementCount" with the proper type (85)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "prepend" with the proper type (86)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "append" with the proper type (87)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "querySelector" with the proper type (88)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "querySelectorAll" with the proper type (89)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onabort" with the proper type (90)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onblur" with the proper type (91)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "oncancel" with the proper type (92)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "oncanplay" with the proper type (93)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "oncanplaythrough" with the proper type (94)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onchange" with the proper type (95)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onclick" with the proper type (96)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onclose" with the proper type (97)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "oncontextmenu" with the proper type (98)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "oncuechange" with the proper type (99)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondblclick" with the proper type (100)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondrag" with the proper type (101)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondragend" with the proper type (102)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondragenter" with the proper type (103)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondragexit" with the proper type (104)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondragleave" with the proper type (105)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondragover" with the proper type (106)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondragstart" with the proper type (107)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondrop" with the proper type (108)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ondurationchange" with the proper type (109)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onemptied" with the proper type (110)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onended" with the proper type (111)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onerror" with the proper type (112)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onfocus" with the proper type (113)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "oninput" with the proper type (114)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "oninvalid" with the proper type (115)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onkeydown" with the proper type (116)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onkeypress" with the proper type (117)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onkeyup" with the proper type (118)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onload" with the proper type (119)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onloadeddata" with the proper type (120)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onloadedmetadata" with the proper type (121)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onloadstart" with the proper type (122)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onmousedown" with the proper type (123)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onmouseenter" with the proper type (124)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onmouseleave" with the proper type (125)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onmousemove" with the proper type (126)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onmouseout" with the proper type (127)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onmouseover" with the proper type (128)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onmouseup" with the proper type (129)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onmousewheel" with the proper type (130)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onpause" with the proper type (131)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onplay" with the proper type (132)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onplaying" with the proper type (133)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onprogress" with the proper type (134)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onratechange" with the proper type (135)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onreset" with the proper type (136)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onresize" with the proper type (137)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onscroll" with the proper type (138)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onseeked" with the proper type (139)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onseeking" with the proper type (140)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onselect" with the proper type (141)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onshow" with the proper type (142)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onstalled" with the proper type (143)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onsubmit" with the proper type (144)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onsuspend" with the proper type (145)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ontimeupdate" with the proper type (146)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "ontoggle" with the proper type (147)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onvolumechange" with the proper type (148)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onwaiting" with the proper type (149)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "oncopy" with the proper type (150)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "oncut" with the proper type (151)] + expected: FAIL + + [Document interface: iframe.contentDocument must inherit property "onpaste" with the proper type (152)] + expected: FAIL + + [Document interface: new Document() must inherit property "createCDATASection" with the proper type (18)] + expected: FAIL + + [Document interface: calling createCDATASection(DOMString) on new Document() with too few arguments must throw TypeError] + expected: FAIL + + [Document interface: new Document() must inherit property "selectedStyleSheetSet" with the proper type (30)] + expected: FAIL + + [Document interface: new Document() must inherit property "lastStyleSheetSet" with the proper type (31)] + expected: FAIL + + [Document interface: new Document() must inherit property "preferredStyleSheetSet" with the proper type (32)] + expected: FAIL + + [Document interface: new Document() must inherit property "styleSheetSets" with the proper type (33)] + expected: FAIL + + [Document interface: new Document() must inherit property "enableStyleSheetsForSet" with the proper type (34)] + expected: FAIL + + [Document interface: new Document() must inherit property "dir" with the proper type (43)] + expected: FAIL + + [Document interface: calling open(USVString,DOMString,DOMString) on new Document() with too few arguments must throw TypeError] + expected: FAIL + + [Document interface: new Document() must inherit property "linkColor" with the proper type (71)] + expected: FAIL + + [Document interface: new Document() must inherit property "vlinkColor" with the proper type (72)] + expected: FAIL + + [Document interface: new Document() must inherit property "alinkColor" with the proper type (73)] + expected: FAIL + + [Document interface: new Document() must inherit property "all" with the proper type (80)] + expected: FAIL + + [Document interface: new Document() must inherit property "onmousewheel" with the proper type (130)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "createCDATASection" with the proper type (18)] + expected: FAIL + + [Document interface: calling createCDATASection(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "selectedStyleSheetSet" with the proper type (30)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "lastStyleSheetSet" with the proper type (31)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "preferredStyleSheetSet" with the proper type (32)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "styleSheetSets" with the proper type (33)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "enableStyleSheetsForSet" with the proper type (34)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "dir" with the proper type (43)] + expected: FAIL + + [Document interface: calling open(USVString,DOMString,DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "linkColor" with the proper type (71)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "vlinkColor" with the proper type (72)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "alinkColor" with the proper type (73)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type (80)] + expected: FAIL + + [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmousewheel" with the proper type (130)] + expected: FAIL + + [HTMLElement interface: attribute innerText] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "contextMenu" with the proper type (14)] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type (15)] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "forceSpellCheck" with the proper type (16)] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "innerText" with the proper type (17)] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "onmousewheel" with the proper type (58)] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type (81)] + expected: FAIL + + [HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type (82)] + expected: FAIL + + [HTMLStyleElement interface: attribute nonce] + expected: FAIL + + [HTMLStyleElement interface: document.createElement("style") must inherit property "nonce" with the proper type (1)] + expected: FAIL + + [HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type (2)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("video") must inherit property "controls" with the proper type (34)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("video") must inherit property "volume" with the proper type (35)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("video") must inherit property "muted" with the proper type (36)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("video") must inherit property "defaultMuted" with the proper type (37)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("video") must inherit property "audioTracks" with the proper type (38)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type (39)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type (40)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack" with the proper type (41)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("audio") must inherit property "controls" with the proper type (34)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("audio") must inherit property "volume" with the proper type (35)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("audio") must inherit property "muted" with the proper type (36)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultMuted" with the proper type (37)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("audio") must inherit property "audioTracks" with the proper type (38)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type (39)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("audio") must inherit property "textTracks" with the proper type (40)] + expected: FAIL + + [HTMLMediaElement interface: document.createElement("audio") must inherit property "addTextTrack" with the proper type (41)] + expected: FAIL + + [HTMLMediaElement interface: new Audio() must inherit property "controls" with the proper type (34)] + expected: FAIL + + [HTMLMediaElement interface: new Audio() must inherit property "volume" with the proper type (35)] + expected: FAIL + + [HTMLMediaElement interface: new Audio() must inherit property "muted" with the proper type (36)] + expected: FAIL + + [HTMLMediaElement interface: new Audio() must inherit property "defaultMuted" with the proper type (37)] + expected: FAIL + + [HTMLMediaElement interface: new Audio() must inherit property "audioTracks" with the proper type (38)] + expected: FAIL + + [HTMLMediaElement interface: new Audio() must inherit property "videoTracks" with the proper type (39)] + expected: FAIL + + [HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type (40)] + expected: FAIL + + [HTMLMediaElement interface: new Audio() must inherit property "addTextTrack" with the proper type (41)] + expected: FAIL + + [HTMLMediaElement interface: operation play()] + expected: FAIL + + [HTMLAreaElement interface: stringifier] + expected: FAIL + + [HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type (14)] + expected: FAIL + + [HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type (15)] + expected: FAIL + + [HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type (16)] + expected: FAIL + + [HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type (17)] + expected: FAIL + + [HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type (18)] + expected: FAIL + + [HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type (21)] + expected: FAIL + + [HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type (22)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type (37)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "stepUp" with the proper type (38)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "stepDown" with the proper type (39)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type (40)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type (41)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type (42)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "checkValidity" with the proper type (43)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "reportValidity" with the proper type (44)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity" with the proper type (45)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "select" with the proper type (47)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "setRangeText" with the proper type (51)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "setRangeText" with the proper type (52)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type (54)] + expected: FAIL + + [HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type (55)] + expected: FAIL + + [HTMLCanvasElement interface: operation toBlob(BlobCallback,DOMString,any)] + expected: FAIL + + [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob" with the proper type (4)] + expected: FAIL + + [HTMLCanvasElement interface: calling toBlob(BlobCallback,DOMString,any) on document.createElement("canvas") with too few arguments must throw TypeError] + expected: FAIL + + [CanvasRenderingContext2D interface: operation getTransform()] + expected: FAIL + + [CanvasRenderingContext2D interface: operation setTransform(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double)] + expected: FAIL + + [CanvasRenderingContext2D interface: operation setTransform(DOMMatrixInit)] + expected: FAIL + + [CanvasRenderingContext2D interface: attribute imageSmoothingQuality] + expected: FAIL + + [CanvasRenderingContext2D interface: attribute filter] + expected: FAIL + + [CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Element)] + expected: FAIL + + [CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Path2D,Element)] + expected: FAIL + + [CanvasRenderingContext2D interface: operation clearHitRegions()] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getTransform" with the proper type (7)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingQuality" with the proper type (14)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeStyle" with the proper type (15)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillStyle" with the proper type (16)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "filter" with the proper type (24)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "resetClip" with the proper type (35)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke" with the proper type (38)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke" with the proper type (39)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded" with the proper type (40)] + expected: FAIL + + [CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded" with the proper type (41)] + expected: FAIL + + [CanvasRenderingContext2D interface: calling drawFocusIfNeeded(Path2D,Element) on document.createElement("canvas").getContext("2d") with too few arguments must throw TypeError] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView" with the proper type (42)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView" with the proper type (43)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillText" with the proper type (44)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeText" with the proper type (45)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "measureText" with the proper type (46)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "addHitRegion" with the proper type (50)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "removeHitRegion" with the proper type (51)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "clearHitRegions" with the proper type (52)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setLineDash" with the proper type (62)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getLineDash" with the proper type (63)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineDashOffset" with the proper type (64)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "font" with the proper type (65)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textAlign" with the proper type (66)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textBaseline" with the proper type (67)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type (68)] + expected: FAIL + + [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "ellipse" with the proper type (78)] + expected: FAIL + + [CanvasPattern interface: operation setTransform(DOMMatrixInit)] + expected: FAIL + + [Path2D interface: operation addPath(Path2D,DOMMatrixInit)] + expected: FAIL + + [Window interface: window must inherit property "onmousewheel" with the proper type (78)] + expected: FAIL + + [Window interface: window must inherit property "createImageBitmap" with the proper type (119)] + expected: FAIL + + [Location interface: stringifier] + expected: FAIL + + [Navigator interface: attribute productSub] + expected: FAIL + + [Navigator interface: attribute vendor] + expected: FAIL + + [Navigator interface: attribute vendorSub] + expected: FAIL + + [Navigator interface: operation registerProtocolHandler(DOMString,USVString,DOMString)] + expected: FAIL + + [Navigator interface: operation registerContentHandler(DOMString,USVString,DOMString)] + expected: FAIL + + [Navigator interface: operation isProtocolHandlerRegistered(DOMString,USVString)] + expected: FAIL + + [Navigator interface: operation isContentHandlerRegistered(DOMString,USVString)] + expected: FAIL + + [Navigator interface: operation unregisterProtocolHandler(DOMString,USVString)] + expected: FAIL + + [Navigator interface: operation unregisterContentHandler(DOMString,USVString)] + expected: FAIL + + [Navigator interface: attribute hardwareConcurrency] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "productSub" with the proper type (5)] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "vendor" with the proper type (7)] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "vendorSub" with the proper type (8)] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "languages" with the proper type (10)] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "onLine" with the proper type (11)] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "registerProtocolHandler" with the proper type (12)] + expected: FAIL + + [Navigator interface: calling registerProtocolHandler(DOMString,USVString,DOMString) on window.navigator with too few arguments must throw TypeError] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "registerContentHandler" with the proper type (13)] + expected: FAIL + + [Navigator interface: calling registerContentHandler(DOMString,USVString,DOMString) on window.navigator with too few arguments must throw TypeError] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "isProtocolHandlerRegistered" with the proper type (14)] + expected: FAIL + + [Navigator interface: calling isProtocolHandlerRegistered(DOMString,USVString) on window.navigator with too few arguments must throw TypeError] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "isContentHandlerRegistered" with the proper type (15)] + expected: FAIL + + [Navigator interface: calling isContentHandlerRegistered(DOMString,USVString) on window.navigator with too few arguments must throw TypeError] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "unregisterProtocolHandler" with the proper type (16)] + expected: FAIL + + [Navigator interface: calling unregisterProtocolHandler(DOMString,USVString) on window.navigator with too few arguments must throw TypeError] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "unregisterContentHandler" with the proper type (17)] + expected: FAIL + + [Navigator interface: calling unregisterContentHandler(DOMString,USVString) on window.navigator with too few arguments must throw TypeError] + expected: FAIL + + [Navigator interface: window.navigator must inherit property "hardwareConcurrency" with the proper type (22)] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/reflection-forms.html.ini b/tests/wpt/metadata/html/dom/reflection-forms.html.ini index a41391a3f7f..e656f6a2570 100644 --- a/tests/wpt/metadata/html/dom/reflection-forms.html.ini +++ b/tests/wpt/metadata/html/dom/reflection-forms.html.ini @@ -16341,3 +16341,9 @@ [data.itemValue (): IDL set to object "test-valueOf" followed by IDL get] expected: FAIL + [textarea.cols: IDL set to 0 should not throw] + expected: FAIL + + [textarea.rows: IDL set to 0 should not throw] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/reflection-tabular.html.ini b/tests/wpt/metadata/html/dom/reflection-tabular.html.ini index 2a9f4d09c64..c7066086538 100644 --- a/tests/wpt/metadata/html/dom/reflection-tabular.html.ini +++ b/tests/wpt/metadata/html/dom/reflection-tabular.html.ini @@ -17331,3 +17331,15 @@ [td.scope: IDL set to "COLGROUP" followed by IDL get] expected: FAIL + [colgroup.span: IDL set to 0 followed by getAttribute()] + expected: FAIL + + [colgroup.span: IDL set to 0 followed by IDL get] + expected: FAIL + + [col.span: IDL set to 0 followed by getAttribute()] + expected: FAIL + + [col.span: IDL set to 0 followed by IDL get] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/selectors/pseudo-classes/valid-invalid.html.ini b/tests/wpt/metadata/html/semantics/selectors/pseudo-classes/valid-invalid.html.ini index ffcc544ebe1..4f158392df0 100644 --- a/tests/wpt/metadata/html/semantics/selectors/pseudo-classes/valid-invalid.html.ini +++ b/tests/wpt/metadata/html/semantics/selectors/pseudo-classes/valid-invalid.html.ini @@ -43,3 +43,45 @@ [':invalid' matches new elements that do not satisfy their constraints] expected: FAIL + [empty form correctly styled on page-load] + expected: FAIL + + [valid form correctly styled on page-load] + expected: FAIL + + [invalid form correctly styled on page-load] + expected: FAIL + + [programmatically adding valid to empty form results in correct style] + expected: FAIL + + [programmatically adding invalid to empty form results in correct style] + expected: FAIL + + [programmatically-invalidated form correctly styled] + expected: FAIL + + [programmatically-validated form correctly styled] + expected: FAIL + + [empty fieldset correctly styled on page-load] + expected: FAIL + + [valid fieldset correctly styled on page-load] + expected: FAIL + + [invalid fieldset correctly styled on page-load] + expected: FAIL + + [programmatically adding valid to empty fieldset results in correct style] + expected: FAIL + + [programmatically adding invalid to empty fieldset results in correct style] + expected: FAIL + + [programmatically-invalidated fieldset correctly styled] + expected: FAIL + + [programmatically-validated fieldset correctly styled] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/tabular-data/the-table-element/caption-methods.html.ini b/tests/wpt/metadata/html/semantics/tabular-data/the-table-element/caption-methods.html.ini new file mode 100644 index 00000000000..a5e8453532a --- /dev/null +++ b/tests/wpt/metadata/html/semantics/tabular-data/the-table-element/caption-methods.html.ini @@ -0,0 +1,3 @@ +[caption-methods.html] + type: testharness + expected: CRASH diff --git a/tests/wpt/metadata/html/webappapis/scripting/event-loops/microtask_after_raf.html.ini b/tests/wpt/metadata/html/webappapis/scripting/event-loops/microtask_after_raf.html.ini new file mode 100644 index 00000000000..65b151e379d --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/event-loops/microtask_after_raf.html.ini @@ -0,0 +1,6 @@ +[microtask_after_raf.html] + type: testharness + expected: ERROR + [Microtask execute immediately after script] + expected: NOTRUN + diff --git a/tests/wpt/metadata/html/webappapis/scripting/event-loops/microtask_after_script.html.ini b/tests/wpt/metadata/html/webappapis/scripting/event-loops/microtask_after_script.html.ini new file mode 100644 index 00000000000..58a9150837c --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/scripting/event-loops/microtask_after_script.html.ini @@ -0,0 +1,6 @@ +[microtask_after_script.html] + type: testharness + expected: ERROR + [Microtask immediately after script] + expected: NOTRUN + diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index b547d562fdd..39ceb2544b0 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1 +1 @@ -9b01a4cc97af29b81f92a403992d0498d4290f4f \ No newline at end of file +2d13178d2930da8668e77de078eeb65438eb502e \ No newline at end of file diff --git a/tests/wpt/metadata/referrer-policy/generic/unsupported-csp-referrer-directive.html.ini b/tests/wpt/metadata/referrer-policy/generic/unsupported-csp-referrer-directive.html.ini new file mode 100644 index 00000000000..3b1d940099b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/unsupported-csp-referrer-directive.html.ini @@ -0,0 +1,6 @@ +[unsupported-csp-referrer-directive.html] + type: testharness + expected: ERROR + [Image has a referrer despite CSP 'referrer' directive] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini deleted file mode 100644 index e36900a6a40..00000000000 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[generic.keep-origin-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini deleted file mode 100644 index 93bece42fc8..00000000000 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[generic.no-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini deleted file mode 100644 index 443f99f3c77..00000000000 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[generic.swap-origin-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini deleted file mode 100644 index 443118fe4a3..00000000000 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[generic.no-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini deleted file mode 100644 index e54767c071a..00000000000 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[generic.swap-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini deleted file mode 100644 index 11030dafe43..00000000000 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[generic.keep-origin-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini deleted file mode 100644 index bddeb2d4599..00000000000 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[generic.no-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini deleted file mode 100644 index 3eb69ad7fd7..00000000000 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[generic.swap-origin-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini deleted file mode 100644 index 135af1d3e80..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.keep-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html.ini deleted file mode 100644 index 69cfbde54d4..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.no-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.no-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini deleted file mode 100644 index d47ae823d78..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.swap-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini deleted file mode 100644 index 9c930749dba..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.keep-origin-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini deleted file mode 100644 index be38bf3b941..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.no-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini deleted file mode 100644 index 4d5a4413286..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.swap-origin-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini deleted file mode 100644 index d6c78880815..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.keep-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.keep-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html.ini deleted file mode 100644 index 6e6f801990c..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.no-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.no-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini deleted file mode 100644 index 980aebfa8dc..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/iframe-tag/cross-origin.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.swap-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini deleted file mode 100644 index bffb9962509..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.keep-origin-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini deleted file mode 100644 index e2d84432901..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.no-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini deleted file mode 100644 index 46f8b4b9fc8..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.swap-origin-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html.ini deleted file mode 100644 index 36e6153bde7..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.keep-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.keep-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html.ini deleted file mode 100644 index 7b89621e780..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.no-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.no-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html.ini deleted file mode 100644 index 85c95ffc328..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/script-tag/cross-origin.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.swap-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html.ini deleted file mode 100644 index 6b83ec7a179..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.keep-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.keep-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html.ini deleted file mode 100644 index 168015de53b..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.no-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.no-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html.ini deleted file mode 100644 index 004db19474f..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/cross-origin/http-https/xhr-request/cross-origin.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[cross-origin.swap-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini deleted file mode 100644 index 8bb4c9a9bf4..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[same-origin-insecure.swap-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html.ini deleted file mode 100644 index 43b3731efbe..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.keep-origin-redirect.http.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[same-origin-insecure.keep-origin-redirect.http.html] - type: testharness - [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] - expected: FAIL - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html.ini deleted file mode 100644 index 143e1ab04db..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/xhr-request/same-origin-insecure.no-redirect.http.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[same-origin-insecure.no-redirect.http.html] - type: testharness - [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] - expected: FAIL - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini deleted file mode 100644 index 487743fb3d5..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/iframe-tag/same-origin-insecure.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[same-origin-insecure.swap-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini deleted file mode 100644 index 7a20c0bfdc2..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[same-origin-insecure.swap-origin-redirect.http.html] - type: testharness - expected: ERROR - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via img-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html.ini deleted file mode 100644 index 85d38a01dcb..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/script-tag/same-origin-insecure.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[same-origin-insecure.swap-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html.ini deleted file mode 100644 index fb81ed3d389..00000000000 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-https/xhr-request/same-origin-insecure.swap-origin-redirect.http.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[same-origin-insecure.swap-origin-redirect.http.html] - type: testharness - expected: TIMEOUT - [The referrer URL is omitted when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] - expected: NOTRUN - diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..ce89698a8fa --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..e8c83997b6a --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..352950cbaeb --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..4d95d045ee4 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..931ff741def --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..951164796e3 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..fef74d375b9 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..fec4994441f --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..1833e604934 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..9bcb799ebed --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..06be64ec268 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..8aefe77c6da --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini similarity index 53% rename from tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini index 1d1e8115ae3..e803a4f0960 100644 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[same-origin-insecure.keep-origin-redirect.http.html] +[same-insecure.keep-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini similarity index 55% rename from tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini index ff573e6a5f8..b52c8da3c83 100644 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/iframe-tag/same-origin-insecure.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[same-origin-insecure.no-redirect.http.html] +[same-insecure.no-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..291fb4144d1 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[same-insecure.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini similarity index 51% rename from tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini index d4d2eec9267..2f45a7b2556 100644 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini @@ -1,5 +1,5 @@ -[same-origin-insecure.keep-origin-redirect.http.html] +[same-insecure.keep-origin-redirect.http.html] type: testharness - [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini similarity index 53% rename from tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini index 1cb45393371..bdde4f3e024 100644 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini @@ -1,5 +1,5 @@ -[same-origin-insecure.no-redirect.http.html] +[same-insecure.no-redirect.http.html] type: testharness - [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..34aee35e3b0 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..cf5d3be2cac --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..441f9bb2be1 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..dfb54e379b5 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..f9a2a10c1dd --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..47e6a90ced9 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..30db2d8f971 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..3a7f017e9a2 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..b7fe04baaa0 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..e91e2f59359 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..443774f1171 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..145ee8b675d --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..d40b4e6229c --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..aba0b677050 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[cross-insecure.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..a74fad7a3ac --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[cross-insecure.no-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..267dd862a0e --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[cross-insecure.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.ini similarity index 59% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.ini index 9d66542833f..9a72e127430 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.keep-origin-redirect.http.html] +[cross-insecure.keep-origin-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.ini similarity index 60% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.ini index a9555c4e535..916653bccbe 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.no-redirect.http.html] +[cross-insecure.no-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.ini similarity index 59% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.ini index 61b022733b3..c7706b620a5 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/script-tag/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.swap-origin-redirect.http.html] +[cross-insecure.swap-origin-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..ddff1a7914b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..cacd6b0c4b9 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..5057a04042d --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index 1c76f799ff8..3c27c976af4 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.keep-origin-redirect.http.html] +[upgrade-protocol.keep-origin-redirect.http.html] type: testharness expected: ERROR - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index ee0581e963a..1eff10d3bda 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.no-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness expected: ERROR - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index 51471c7231c..254214984f7 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.swap-origin-redirect.http.html] +[upgrade-protocol.swap-origin-redirect.http.html] type: testharness expected: ERROR - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..62a3ad297c6 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..8cdd582532f --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..1eac8d3e77c --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini index c4a32847efa..580c6efec27 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.swap-origin-redirect.http.html] +[upgrade-protocol.keep-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini similarity index 62% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini index 6898553c4c3..76bd9ace891 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.no-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini index ea25ff64590..c23091d2554 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.keep-origin-redirect.http.html] +[upgrade-protocol.swap-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..08093d10265 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[same-insecure.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..c5cb92cea23 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[same-insecure.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..0ab85a1c1d0 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[same-insecure.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..0dfac59316b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..4df4961d3c1 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.no-redirect.http.html] + type: testharness + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..2f011b0126b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..5459fd2dd5a --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..5aacf4c8e72 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.no-redirect.http.html] + type: testharness + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..4d9fcc6daff --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html.ini similarity index 60% rename from tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html.ini index 53cf4e59c2a..5fcdb536ad4 100644 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.keep-origin-redirect.http.html.ini @@ -1,5 +1,5 @@ -[same-origin-insecure.keep-origin-redirect.http.html] +[same-insecure.keep-origin-redirect.http.html] type: testharness - [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via script-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html.ini similarity index 60% rename from tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html.ini index d50005cc3ea..c2e6c807f9f 100644 --- a/tests/wpt/metadata/referrer-policy/same-origin/meta-csp/same-origin/http-http/script-tag/same-origin-insecure.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.no-redirect.http.html.ini @@ -1,5 +1,5 @@ -[same-origin-insecure.no-redirect.http.html] +[same-insecure.no-redirect.http.html] type: testharness - [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via script-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.ini similarity index 59% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.ini index 45b90e08d06..92ffd07bf3b 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.keep-origin-redirect.http.html] +[same-insecure.swap-origin-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..2446a00a7f9 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..aa1dd4fb124 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..7fd4893f58d --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini similarity index 52% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index 89384b97f6a..b008f044b5c 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -1,5 +1,6 @@ -[generic.keep-origin-redirect.http.html] +[upgrade-protocol.keep-origin-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] - expected: FAIL + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini similarity index 52% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index 3faf14cd0ce..17386205a98 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -1,5 +1,6 @@ -[generic.no-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] - expected: FAIL + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini similarity index 52% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index 2c49444bf05..91a36b043eb 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -1,5 +1,6 @@ -[generic.swap-origin-redirect.http.html] +[upgrade-protocol.swap-origin-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] - expected: FAIL + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..aae2dfeb2ef --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..e1945afa6be --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..cccd6731fb5 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini index ee95b1ad503..3175044d9ad 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.keep-origin-redirect.http.html] +[upgrade-protocol.keep-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini similarity index 62% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini index 46acac0944b..496a7ecdb4c 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.no-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini index 1bc79436ed2..b87594d4f01 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.swap-origin-redirect.http.html] +[upgrade-protocol.swap-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..fceb3ac85cc --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..07e7f76aa6b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..b91070bc88b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/iframe-tag/cross-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..9ce46d34281 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..0cbd31e4bb8 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..e0549624b31 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/img-tag/cross-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[cross-insecure.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..05482c3f549 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[cross-insecure.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..604c7296642 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[cross-insecure.no-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..5c51956d4cf --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/script-tag/cross-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[cross-insecure.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.ini similarity index 52% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.ini index 95525d62ba0..879abf7734d 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.keep-origin-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.swap-origin-redirect.http.html] +[cross-insecure.keep-origin-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.ini similarity index 54% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.ini index 0da3e4dc2fe..0b8de85fe01 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.no-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.no-redirect.http.html] +[cross-insecure.no-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.ini similarity index 52% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.ini index 5774ad46c72..c65854a70cb 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-http/xhr-request/cross-insecure.swap-origin-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.keep-origin-redirect.http.html] +[cross-insecure.swap-origin-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..04a22b14265 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..fd647b13465 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..a2f203b7c0a --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..86ef35c76ad --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..561e9d4d025 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..158fd4ca84f --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..49fa6488bb8 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..0a03f864f4b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..75853f5da21 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..f4f91a151c5 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini similarity index 55% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini index 5bcac07822b..8f32f494122 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.swap-origin-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..964b8c91053 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..a46673c6df9 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[same-insecure.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..f7440ff7b02 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[same-insecure.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..96bc1ad9965 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/iframe-tag/same-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[same-insecure.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..94726eb94b4 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini new file mode 100644 index 00000000000..fd6d65484d3 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.no-redirect.http.html] + type: testharness + [The referrer URL is stripped-referrer when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..4210cd5eca1 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/img-tag/same-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..02bcca685d4 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/script-tag/same-insecure.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[same-insecure.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.ini similarity index 52% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.ini index 16432ed28a8..5a12c2378f9 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-http/xhr-request/same-insecure.swap-origin-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.keep-origin-redirect.http.html] +[same-insecure.swap-origin-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..08ad42e01bf --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..a41f7b6ecc2 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..79329441bdf --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..25d7c0642d0 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..1ad999a35cd --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..1324e55f015 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..9e401a82e6e --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..3efe91fd2b4 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..3aadfbb2e62 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini similarity index 54% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini index b7bf9091c26..28a49843afb 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.keep-origin-redirect.http.html] +[upgrade-protocol.keep-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini similarity index 56% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini index dc4389f1558..c389157c85c 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.no-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini similarity index 54% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini index 39649d0293c..55ae5a2cbe5 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin-when-cross-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.swap-origin-redirect.http.html] +[upgrade-protocol.swap-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..29c83b50cea --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..d1180524a99 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..c743a164608 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..de2fde73650 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..a6702f9704f --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..543c06f7e72 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..fef74d375b9 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..fec4994441f --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..1833e604934 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..9bcb799ebed --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..06be64ec268 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..8aefe77c6da --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..215046fad39 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..a7753c04d88 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..3d0ea535a93 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..625557351b7 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..802febc9230 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..070cd72d2ae --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..cf5d3be2cac --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..441f9bb2be1 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..dfb54e379b5 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..f9a2a10c1dd --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..47e6a90ced9 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..30db2d8f971 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the attr-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..a127fa96985 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..3c0cf48dacd --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..511c92c67c3 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..79039cdbfb4 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..df1b1b0a052 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..d7edb9662dd --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..d4a97348b6c --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..3dbf7c88ba0 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..92df89fb638 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini similarity index 53% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini index acf4a71af96..f277f2a9459 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini @@ -1,6 +1,5 @@ -[generic.swap-origin-redirect.http.html] +[insecure-protocol.keep-origin-redirect.http.html] type: testharness - expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini similarity index 53% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini index e27e3e0d72c..6868b0015c1 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini @@ -1,6 +1,5 @@ -[generic.no-redirect.http.html] +[insecure-protocol.no-redirect.http.html] type: testharness - expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] - expected: NOTRUN + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini similarity index 53% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini index 24e171cd132..8c94f20cee6 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini @@ -1,6 +1,5 @@ -[generic.keep-origin-redirect.http.html] +[insecure-protocol.swap-origin-redirect.http.html] type: testharness - expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] - expected: NOTRUN + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..ddff1a7914b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..cacd6b0c4b9 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..5057a04042d --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..3c27c976af4 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..1eff10d3bda --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..254214984f7 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..62a3ad297c6 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..8cdd582532f --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..1eac8d3e77c --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini index 179d2d28786..580c6efec27 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.keep-origin-redirect.http.html] +[upgrade-protocol.keep-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini similarity index 62% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini index 4c13b3aa844..76bd9ace891 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.no-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with no-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini index 6484899f984..c23091d2554 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/script-tag/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.swap-origin-redirect.http.html] +[upgrade-protocol.swap-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..f3e44c0cf07 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..02c1b97f501 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..3e12cc6e67c --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..8eeb7da8fcb --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..923d4df61de --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..bdab82ffa6f --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..bc89b8d1a66 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..6a4e4530015 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..3ae0418f164 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini similarity index 59% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini index 39adeb9b21e..b159aa3d0b6 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.swap-origin-redirect.http.html] +[insecure-protocol.keep-origin-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini similarity index 59% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini index 1e6789efb98..4865047e1e5 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/script-tag/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.no-redirect.http.html] +[insecure-protocol.no-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini similarity index 53% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini index aa99330f0b6..365f6bea745 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/iframe-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini @@ -1,6 +1,5 @@ -[generic.keep-origin-redirect.http.html] +[insecure-protocol.swap-origin-redirect.http.html] type: testharness - expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] - expected: NOTRUN + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..2446a00a7f9 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..aa1dd4fb124 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..7fd4893f58d --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..b008f044b5c --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..17386205a98 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..91a36b043eb --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..aae2dfeb2ef --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..e1945afa6be --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..cccd6731fb5 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini index 7a006546cef..3175044d9ad 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.keep-origin-redirect.http.html] +[upgrade-protocol.keep-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini similarity index 62% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini index e56185e96b9..496a7ecdb4c 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/iframe-tag/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.no-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-csp\n delivery method with no-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with no-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini similarity index 61% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini index 1a71cfc0ba7..b87594d4f01 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/script-tag/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/http-rp/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.swap-origin-redirect.http.html] +[upgrade-protocol.swap-origin-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the http-rp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..2f4303189b0 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..4974b86152b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..ddda530365b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..a4f7ede037d --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..c771d30a55c --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..740462a8742 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..43abc2f414a --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..6ee0a8ff356 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..468342a5a45 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..0a78edf606a --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini similarity index 53% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini index c11ba659d89..46b377bde8c 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-http/xhr-request/generic.swap-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.swap-origin-redirect.http.html] +[insecure-protocol.no-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-csp\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..3088300bc39 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..04a22b14265 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..fd647b13465 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..a2f203b7c0a --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..86ef35c76ad --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..561e9d4d025 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..158fd4ca84f --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..49fa6488bb8 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..0a03f864f4b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..75853f5da21 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..f4f91a151c5 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini similarity index 55% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini index ba49828c878..8f32f494122 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/same-origin/http-https/xhr-request/generic.keep-origin-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.keep-origin-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with no-redirect and when\n the target request is cross-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..964b8c91053 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/cross-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is cross-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..a8101bab454 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..cb70ec87c8b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..963b720012b --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/iframe-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via iframe-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..16932daf0de --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..3d221db9f00 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..97a2a11b5c8 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via img-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..06487589ac4 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..9ba3d807d85 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.no-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.no-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..b60e1484768 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/script-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via script-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..2969c6499e0 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.keep-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini similarity index 54% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini index 2c412a7a68d..a80efc52482 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-http/xhr-request/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.no-redirect.http.html.ini @@ -1,5 +1,5 @@ -[generic.no-redirect.http.html] +[insecure-protocol.no-redirect.http.html] type: testharness - [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..acf6cec5de7 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-http/xhr-request/insecure-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,5 @@ +[insecure-protocol.swap-origin-redirect.http.html] + type: testharness + [The referrer URL is origin when a\n document served over http requires an http\n sub-resource via xhr-request using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..08ad42e01bf --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..a41f7b6ecc2 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..79329441bdf --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/iframe-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via iframe-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..25d7c0642d0 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..1ad999a35cd --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..1324e55f015 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: ERROR + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via img-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..9e401a82e6e --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini new file mode 100644 index 00000000000..3efe91fd2b4 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.no-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.no-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..3aadfbb2e62 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/script-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via script-tag using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini new file mode 100644 index 00000000000..28a49843afb --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.keep-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with keep-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini similarity index 56% rename from tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html.ini rename to tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini index 33c89d90464..c389157c85c 100644 --- a/tests/wpt/metadata/referrer-policy/origin/meta-csp/cross-origin/http-https/xhr-request/generic.no-redirect.http.html.ini +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.no-redirect.http.html.ini @@ -1,6 +1,6 @@ -[generic.no-redirect.http.html] +[upgrade-protocol.no-redirect.http.html] type: testharness expected: TIMEOUT - [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-csp\n delivery method with no-redirect and when\n the target request is cross-origin.] + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with no-redirect and when\n the target request is same-origin.] expected: NOTRUN diff --git a/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini new file mode 100644 index 00000000000..55ae5a2cbe5 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/strict-origin/meta-referrer/same-origin/http-https/xhr-request/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -0,0 +1,6 @@ +[upgrade-protocol.swap-origin-redirect.http.html] + type: testharness + expected: TIMEOUT + [The referrer URL is origin when a\n document served over http requires an https\n sub-resource via xhr-request using the meta-referrer\n delivery method with swap-origin-redirect and when\n the target request is same-origin.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/touch-events/touch-retargeting.html.ini b/tests/wpt/metadata/touch-events/touch-retargeting.html.ini new file mode 100644 index 00000000000..7eedc7ea390 --- /dev/null +++ b/tests/wpt/metadata/touch-events/touch-retargeting.html.ini @@ -0,0 +1,3 @@ +[touch-retargeting.html] + type: testharness + expected: ERROR diff --git a/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini b/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini index e9c12489e2e..975c9bddbfc 100644 --- a/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini +++ b/tests/wpt/metadata/url/a-element-xhtml.xhtml.ini @@ -735,3 +735,6 @@ [Parsing: against ] expected: FAIL + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/url/a-element.html.ini b/tests/wpt/metadata/url/a-element.html.ini index c9de2729c00..056f31747fa 100644 --- a/tests/wpt/metadata/url/a-element.html.ini +++ b/tests/wpt/metadata/url/a-element.html.ini @@ -735,3 +735,6 @@ [Parsing: against ] expected: FAIL + [Parsing: against ] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html.ini b/tests/wpt/metadata/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html.ini deleted file mode 100644 index c77808fe380..00000000000 --- a/tests/wpt/metadata/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[DedicatedWorkerGlobalScope-members.html] - type: testharness - [members of DedicatedWorkerGlobalScope] - expected: FAIL - diff --git a/tests/wpt/metadata/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js.ini b/tests/wpt/metadata/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js.ini new file mode 100644 index 00000000000..71011a2a4ca --- /dev/null +++ b/tests/wpt/metadata/workers/constructors/Worker/DedicatedWorkerGlobalScope-members.worker.js.ini @@ -0,0 +1,8 @@ +[DedicatedWorkerGlobalScope-members.worker] + type: testharness + [existence of onoffline] + expected: FAIL + + [existence of ononline] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/constructors/Worker/expected-self-properties.worker.js.ini b/tests/wpt/metadata/workers/constructors/Worker/expected-self-properties.worker.js.ini new file mode 100644 index 00000000000..c626848dd1f --- /dev/null +++ b/tests/wpt/metadata/workers/constructors/Worker/expected-self-properties.worker.js.ini @@ -0,0 +1,8 @@ +[expected-self-properties.worker] + type: testharness + [existence of MessageChannel] + expected: FAIL + + [existence of SharedWorker] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/interfaces.worker.js.ini b/tests/wpt/metadata/workers/interfaces.worker.js.ini index 9111901ba73..1277160775a 100644 --- a/tests/wpt/metadata/workers/interfaces.worker.js.ini +++ b/tests/wpt/metadata/workers/interfaces.worker.js.ini @@ -1,5 +1,9 @@ [interfaces.worker] type: testharness + expected: + if os == "mac": TIMEOUT + if os == "linux": CRASH + [WorkerGlobalScope interface: operation close()] expected: FAIL diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html b/tests/wpt/web-platform-tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html new file mode 100644 index 00000000000..28647ac55aa --- /dev/null +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-text-to-the-canvas/2d.text.draw.fill.maxWidth.NaN.html @@ -0,0 +1,32 @@ + + +Canvas test: 2d.text.draw.fill.maxWidth.NaN + + + + + + +

2d.text.draw.fill.maxWidth.NaN

+

fillText handles maxWidth correctly

+ + +

Actual output:

+

FAIL (fallback content)

+

Expected output:

+

    + + diff --git a/tests/wpt/web-platform-tests/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html b/tests/wpt/web-platform-tests/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html index 3e20e6faa3f..ad18881da38 100644 --- a/tests/wpt/web-platform-tests/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html +++ b/tests/wpt/web-platform-tests/2dcontext/fill-and-stroke-styles/2d.gradient.interpolate.colouralpha.html @@ -24,9 +24,9 @@ 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, 191,191,63,63, "25,25", "191,191,63,63", 3); -_assertPixelApprox(canvas, 50,25, 127,127,127,127, "50,25", "127,127,127,127", 3); -_assertPixelApprox(canvas, 75,25, 63,63,191,191, "75,25", "63,63,191,191", 3); +_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); }); diff --git a/tests/wpt/web-platform-tests/2dcontext/image-smoothing/imagesmoothing.html b/tests/wpt/web-platform-tests/2dcontext/image-smoothing/imagesmoothing.html index ccc3110e8e8..1a86a8f2015 100644 --- a/tests/wpt/web-platform-tests/2dcontext/image-smoothing/imagesmoothing.html +++ b/tests/wpt/web-platform-tests/2dcontext/image-smoothing/imagesmoothing.html @@ -1,45 +1,119 @@ - - - CanvasRenderingContext2D imageSmoothingEnabled test - - - - - - -
    - - - + +CanvasRenderingContext2D imageSmoothingEnabled test + + + + - - +test(function() { + var ctx = document.createElement('canvas').getContext('2d'); + var image = createTestImage(); + ctx.strokeStyle = ctx.createPattern(image, 'repeat'); + ctx.lineWidth = 5; + ctx.imageSmoothingEnabled = false; + ctx.scale(10, 10); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(10, 10); + ctx.stroke(); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); +}, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern()."); + +test(function() { + var repaints = 5; + var ctx = document.createElement('canvas').getContext('2d'); + + function draw() { + ctx.clearRect(0, 0, 10, 10); + ctx.setTransform(1, 0, 0, 1, 0, 0); + var image = createTestImage(); + ctx.imageSmoothingEnabled = false; + ctx.scale(10, 10); + ctx.drawImage(image, 0, 0); + var pixels = ctx.getImageData(9, 9, 1, 1).data; + assert_array_equals(pixels, [0, 255, 0, 255]); + } + + while (repaints > 0) { + draw(); + repaints = repaints - 1; + } + +}, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) still works after repaints."); + diff --git a/tests/wpt/web-platform-tests/2dcontext/shadows/canvas_shadows_002-ref.htm b/tests/wpt/web-platform-tests/2dcontext/shadows/canvas_shadows_002-ref.htm index 7f39d1ca1b0..0658be808eb 100644 --- a/tests/wpt/web-platform-tests/2dcontext/shadows/canvas_shadows_002-ref.htm +++ b/tests/wpt/web-platform-tests/2dcontext/shadows/canvas_shadows_002-ref.htm @@ -4,7 +4,6 @@ HTML5 Canvas Test: Shadows for images - + + + diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/gentest.py b/tests/wpt/web-platform-tests/2dcontext/tools/gentest.py index 500cb4d8bce..079f476d2d3 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/gentest.py +++ b/tests/wpt/web-platform-tests/2dcontext/tools/gentest.py @@ -128,18 +128,18 @@ if len(sys.argv) > 1 and sys.argv[1] == '--test': doctest.testmod() sys.exit() -templates = yaml.load(open('templates.yaml').read()) -name_mapping = yaml.load(open('name2dir.yaml').read()) +templates = yaml.load(open('templates.yaml', "r").read()) +name_mapping = yaml.load(open('name2dir.yaml', "r").read()) spec_assertions = [] -for s in yaml.load(open('spec.yaml').read())['assertions']: +for s in yaml.load(open('spec.yaml', "r").read())['assertions']: if 'meta' in s: eval(compile(s['meta'], '', 'exec'), {}, {'assertions':spec_assertions}) else: spec_assertions.append(s) tests = [] -for t in sum([ yaml.load(open(f).read()) for f in ['tests.yaml', 'tests2d.yaml', 'tests2dtext.yaml']], []): +for t in sum([ yaml.load(open(f, "r").read()) for f in ['tests.yaml', 'tests2d.yaml', 'tests2dtext.yaml']], []): if 'DISABLED' in t: continue if 'meta' in t: @@ -423,6 +423,10 @@ for i in range(len(tests)): notes = '

    %s' % test['notes'] if 'notes' in test else '' + scripts = '' + for s in test.get('scripts', []): + scripts += '\n' % (s) + images = '' for i in test.get('images', []): id = i.split('/')[-1] @@ -453,7 +457,7 @@ for i in range(len(tests)): 'desc':desc, 'escaped_desc':escaped_desc, 'prev':prev, 'next':next, 'refs':refs, 'notes':notes, 'images':images, 'fonts':fonts, 'fonthack':fonthack, - 'canvas':canvas, 'expected':expectation_html, 'code':code, + 'canvas':canvas, 'expected':expectation_html, 'code':code, 'scripts':scripts, 'mochi_name':mochi_name, 'mochi_desc':mochi_desc, 'mochi_code':mochi_code, 'mochi_setup':mochi_setup, 'mochi_footer':mochi_footer, 'mochi_images':mochi_images, 'fallback':fallback @@ -543,7 +547,7 @@ def write_results(): if not os.path.exists('results.yaml'): print "Can't find results.yaml" else: - for resultset in yaml.load(open('results.yaml').read()): + for resultset in yaml.load(open('results.yaml', "r").read()): #title = "%s (%s)" % (resultset['ua'], resultset['time']) title = resultset['name'] #assert title not in uas # don't allow repetitions diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/specextract.py b/tests/wpt/web-platform-tests/2dcontext/tools/specextract.py index 679bf10e285..042c0bd8404 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/specextract.py +++ b/tests/wpt/web-platform-tests/2dcontext/tools/specextract.py @@ -9,7 +9,7 @@ import html5lib.treebuilders.dom def extract(): parser = html5lib.html5parser.HTMLParser(tree=html5lib.treebuilders.dom.TreeBuilder) - doc = parser.parse(open('current-work'), encoding='utf-8') + doc = parser.parse(open('current-work', "r"), encoding='utf-8') head = doc.getElementsByTagName('head')[0] for n in head.childNodes: diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/templates.yaml b/tests/wpt/web-platform-tests/2dcontext/tools/templates.yaml index 8c8e8fda708..a67f3aad40c 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/templates.yaml +++ b/tests/wpt/web-platform-tests/2dcontext/tools/templates.yaml @@ -108,7 +108,7 @@ w3c: | }); - %(images)s + %(scripts)s%(images)s mochitest: | diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/tests.yaml b/tests/wpt/web-platform-tests/2dcontext/tools/tests.yaml index 67eef796a74..083dfd1bd75 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/tests.yaml +++ b/tests/wpt/web-platform-tests/2dcontext/tools/tests.yaml @@ -869,27 +869,29 @@ # TODO: work out what security exception should be thrown # TODO: test same-origin vs same-host -- name: security.drawImage.image.sub +- name: security.drawImage.image desc: drawImage of different-origin image makes the canvas origin-unclean mozilla: { disabled } # relies on external resources testing: - security.drawImage.image - security.toDataURL - security.getImageData - images: - - http://{{domains[www2]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | ctx.drawImage(document.getElementById('yellow.png'), 0, 0); @assert throws SECURITY_ERR canvas.toDataURL(); @assert throws SECURITY_ERR ctx.getImageData(0, 0, 1, 1); -- name: security.drawImage.canvas.sub +- name: security.drawImage.canvas desc: drawImage of unclean canvas makes the canvas origin-unclean mozilla: { disabled } # relies on external resources testing: - security.drawImage.canvas - images: - - http://{{domains[www2]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -900,26 +902,28 @@ @assert throws SECURITY_ERR canvas.toDataURL(); @assert throws SECURITY_ERR ctx.getImageData(0, 0, 1, 1); -- name: security.pattern.create.sub +- name: security.pattern.create desc: Creating an unclean pattern does not make the canvas origin-unclean mozilla: { disabled } # relies on external resources testing: - security.start - images: - - http://{{domains[www]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | var p = ctx.createPattern(document.getElementById('yellow.png'), 'repeat'); canvas.toDataURL(); ctx.getImageData(0, 0, 1, 1); @assert true; // okay if there was no exception -- name: security.pattern.cross.sub +- name: security.pattern.cross desc: Using an unclean pattern makes the target canvas origin-unclean, not the pattern canvas mozilla: { disabled } # relies on external resources testing: - security.start - images: - - http://{{domains[www2]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -933,15 +937,16 @@ canvas2.toDataURL(); ctx2.getImageData(0, 0, 1, 1); -- name: security.pattern.canvas.timing.sub +- name: security.pattern.canvas.timing desc: Pattern safety depends on whether the source was origin-clean, not on whether it still is clean notes: Disagrees with spec on "is" vs "was" mozilla: { disabled } # relies on external resources testing: - security.start - security.fillStyle.canvas - images: - - http://{{domains[www2]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -957,13 +962,14 @@ ctx.getImageData(0, 0, 1, 1); @assert true; // okay if there was no exception -- name: security.pattern.image.fillStyle.sub +- name: security.pattern.image.fillStyle desc: Setting fillStyle to a pattern of a different-origin image makes the canvas origin-unclean mozilla: { disabled } # relies on external resources testing: - security.fillStyle.image - images: - - http://{{domains[www2]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | var p = ctx.createPattern(document.getElementById('yellow.png'), 'repeat'); ctx.fillStyle = p; @@ -971,13 +977,14 @@ @assert throws SECURITY_ERR canvas.toDataURL(); @assert throws SECURITY_ERR ctx.getImageData(0, 0, 1, 1); -- name: security.pattern.canvas.fillStyle.sub +- name: security.pattern.canvas.fillStyle desc: Setting fillStyle to a pattern of an unclean canvas makes the canvas origin-unclean mozilla: { bug: 354127, disabled } # relies on external resources testing: - security.fillStyle.canvas - images: - - http://{{domains[www2]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -990,13 +997,14 @@ @assert throws SECURITY_ERR canvas.toDataURL(); @assert throws SECURITY_ERR ctx.getImageData(0, 0, 1, 1); -- name: security.pattern.image.strokeStyle.sub +- name: security.pattern.image.strokeStyle desc: Setting strokeStyle to a pattern of a different-origin image makes the canvas origin-unclean mozilla: { disabled } # relies on external resources testing: - security.strokeStyle.image - images: - - http://{{domains[www2]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | var p = ctx.createPattern(document.getElementById('yellow.png'), 'repeat'); ctx.strokeStyle = p; @@ -1004,13 +1012,14 @@ @assert throws SECURITY_ERR canvas.toDataURL(); @assert throws SECURITY_ERR ctx.getImageData(0, 0, 1, 1); -- name: security.pattern.canvas.strokeStyle.sub +- name: security.pattern.canvas.strokeStyle desc: Setting strokeStyle to a pattern of an unclean canvas makes the canvas origin-unclean mozilla: { bug: 354127, disabled } # relies on external resources testing: - security.strokeStyle.canvas - images: - - http://{{domains[www2]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | var canvas2 = document.createElement('canvas'); canvas2.width = 100; @@ -1043,13 +1052,14 @@ img.src = data; expected: green -- name: security.reset.sub +- name: security.reset desc: Resetting the canvas state does not reset the origin-clean flag mozilla: { disabled } # relies on external resources testing: - initial.reset - images: - - http://{{domains[www2]}}:{{ports[http][0]}}/images/yellow.png + scripts: + - /common/get-host-info.sub.js + - data:text/javascript,addCrossOriginYellowImage() code: | canvas.width = 50; ctx.drawImage(document.getElementById('yellow.png'), 0, 0); diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/tests2d.yaml b/tests/wpt/web-platform-tests/2dcontext/tools/tests2d.yaml index 4694e98d9af..546e994fbe9 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/tests2d.yaml +++ b/tests/wpt/web-platform-tests/2dcontext/tools/tests2d.yaml @@ -1668,9 +1668,9 @@ g.addColorStop(1, 'rgba(0,0,255, 1)'); ctx.fillStyle = g; ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,25 ==~ 191,191,63,63 +/- 3; - @assert pixel 50,25 ==~ 127,127,127,127 +/- 3; - @assert pixel 75,25 ==~ 63,63,191,191 +/- 3; + @assert pixel 25,25 ==~ 190,190,65,65 +/- 3; + @assert pixel 50,25 ==~ 126,126,128,128 +/- 3; + @assert pixel 75,25 ==~ 62,62,192,192 +/- 3; expected: | size 100 50 g = cairo.LinearGradient(0, 0, 100, 0) diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/tests2dtext.yaml b/tests/wpt/web-platform-tests/2dcontext/tools/tests2dtext.yaml index e2358494eed..96c65265c8d 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/tests2dtext.yaml +++ b/tests/wpt/web-platform-tests/2dcontext/tools/tests2dtext.yaml @@ -320,6 +320,19 @@ _assertGreen(ctx, 100, 50); expected: green +- 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); + ctx.fillStyle = '#f00'; + ctx.font = '35px Arial, sans-serif'; + ctx.fillText('fail fail fail fail fail', 5, 35, NaN); + _assertGreen(ctx, 100, 50); + expected: green + - name: 2d.text.draw.stroke.basic desc: strokeText draws stroked text manual: diff --git a/tests/wpt/web-platform-tests/DOM-parsing/todo/internalSubset.html b/tests/wpt/web-platform-tests/DOM-parsing/todo/internalSubset.html new file mode 100644 index 00000000000..cc131bbfbd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/DOM-parsing/todo/internalSubset.html @@ -0,0 +1,16 @@ + +... + + + + + +
    Results
    UAResult +
    Gecko<!DOCTYPE foo [ <!ELEMENT foo (#PCDATA)> ]>\n<foo/> +
    WebKit<!DOCTYPE foo><foo/> +
    Presto<?xml version="1.0"?><!DOCTYPE foo><foo/> +
    diff --git a/tests/wpt/web-platform-tests/FileAPI/historical.html b/tests/wpt/web-platform-tests/FileAPI/historical.html index 3ff56a30164..a9ae674d457 100644 --- a/tests/wpt/web-platform-tests/FileAPI/historical.html +++ b/tests/wpt/web-platform-tests/FileAPI/historical.html @@ -36,13 +36,6 @@ assert_false(prefixes[i]+'BlobBuilder' in window, prefixes[i]+'BlobBuilder'); } }, 'BlobBuilder should not be supported.'); - - test(function() { - var reader = new FileReader(); - assert_false('readAsBinaryString' in reader, 'should not be in reader'); - assert_equals(reader.readAsBinaryString, undefined, - 'should be undefined on getting') - }, 'FileReader should not support readAsBinaryString'); diff --git a/tests/wpt/web-platform-tests/IndexedDB/idb_binary_key_conversion.htm b/tests/wpt/web-platform-tests/IndexedDB/idb_binary_key_conversion.htm new file mode 100644 index 00000000000..b55e6324b34 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idb_binary_key_conversion.htm @@ -0,0 +1,79 @@ + + +Verify the coversion of various types of BufferSource + + + + + + + +

    diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_cmp3.htm b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_cmp3.htm new file mode 100644 index 00000000000..749fd7b8614 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_cmp3.htm @@ -0,0 +1,27 @@ + + +IDBFactory.cmp() - compared keys in different types + + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbfactory_cmp4.htm b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_cmp4.htm new file mode 100644 index 00000000000..757e7c23973 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbfactory_cmp4.htm @@ -0,0 +1,40 @@ + + +IDBFactory.cmp() - comparison of binary keys + + + + + + + +
    diff --git a/tests/wpt/web-platform-tests/IndexedDB/interfaces.idl b/tests/wpt/web-platform-tests/IndexedDB/interfaces.idl index 6eee5f47a35..353864de259 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/interfaces.idl +++ b/tests/wpt/web-platform-tests/IndexedDB/interfaces.idl @@ -83,6 +83,7 @@ interface IDBDatabase : EventTarget { IDBTransaction transaction ((DOMString or sequence) storeNames, optional IDBTransactionMode mode = "readonly"); void close (); attribute EventHandler onabort; + attribute EventHandler onclose; attribute EventHandler onerror; attribute EventHandler onversionchange; }; diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.js new file mode 100644 index 00000000000..fe82ffe5712 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.js @@ -0,0 +1,269 @@ + +function run_test() { + // May want to test prefixed implementations. + var subtle = self.crypto.subtle; + + var pkcs8 = { + "P-521": new Uint8Array([48, 129, 238, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 35, 4, 129, 214, 48, 129, 211, 2, 1, 1, 4, 66, 1, 166, 126, 211, 33, 145, 90, 100, 170, 53, 155, 125, 100, 141, 220, 38, 24, 250, 142, 141, 24, 103, 232, 247, 24, 48, 177, 13, 37, 237, 40, 145, 250, 241, 47, 60, 126, 117, 66, 26, 46, 162, 100, 249, 169, 21, 50, 13, 39, 79, 225, 71, 7, 66, 185, 132, 233, 107, 152, 145, 32, 129, 250, 205, 71, 141, 161, 129, 137, 3, 129, 134, 0, 4, 0, 32, 157, 72, 63, 40, 102, 104, 129, 198, 100, 31, 58, 18, 111, 64, 15, 81, 228, 101, 17, 112, 254, 103, 140, 117, 232, 87, 18, 226, 134, 138, 220, 133, 8, 36, 153, 123, 235, 240, 188, 130, 180, 48, 40, 166, 210, 236, 23, 119, 202, 69, 39, 159, 114, 6, 163, 234, 139, 92, 210, 7, 63, 73, 62, 69, 0, 12, 181, 76, 58, 90, 202, 162, 104, 197, 103, 16, 66, 136, 120, 217, 139, 138, 251, 246, 138, 97, 33, 83, 99, 40, 70, 216, 7, 233, 38, 114, 105, 143, 27, 156, 97, 29, 231, 211, 142, 52, 205, 108, 115, 136, 144, 146, 197, 110, 82, 214, 128, 241, 223, 208, 146, 184, 122, 200, 239, 159, 243, 200, 251, 72]), + "P-256": new Uint8Array([48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 15, 247, 79, 232, 241, 202, 175, 97, 92, 206, 241, 29, 217, 53, 114, 87, 98, 217, 216, 65, 236, 186, 185, 94, 170, 38, 68, 123, 52, 100, 245, 113, 161, 68, 3, 66, 0, 4, 140, 96, 11, 44, 102, 25, 45, 97, 158, 39, 210, 37, 107, 59, 151, 118, 178, 141, 30, 5, 246, 13, 234, 189, 98, 174, 123, 154, 211, 157, 224, 217, 59, 4, 102, 109, 199, 119, 14, 126, 207, 13, 211, 203, 203, 211, 110, 221, 107, 94, 220, 153, 81, 7, 55, 161, 237, 104, 46, 205, 112, 244, 10, 47]), + "P-384": new Uint8Array([48, 129, 182, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 4, 129, 158, 48, 129, 155, 2, 1, 1, 4, 48, 248, 113, 165, 102, 101, 137, 193, 74, 87, 71, 38, 62, 248, 91, 49, 156, 192, 35, 219, 110, 53, 103, 108, 61, 120, 30, 239, 139, 5, 95, 207, 190, 134, 250, 13, 6, 208, 86, 181, 25, 95, 177, 50, 58, 248, 222, 37, 179, 161, 100, 3, 98, 0, 4, 241, 25, 101, 223, 125, 212, 89, 77, 4, 25, 197, 8, 100, 130, 163, 184, 38, 185, 121, 127, 155, 224, 189, 13, 16, 156, 158, 30, 153, 137, 193, 185, 169, 43, 143, 38, 159, 152, 225, 122, 209, 132, 186, 115, 193, 247, 151, 98, 175, 69, 175, 129, 65, 96, 38, 66, 218, 39, 26, 107, 176, 255, 235, 12, 180, 71, 143, 207, 112, 126, 102, 26, 166, 214, 205, 245, 21, 73, 200, 140, 63, 19, 11, 233, 232, 32, 31, 111, 106, 9, 244, 24, 90, 175, 149, 196]) + }; + + var spki = { + "P-521": new Uint8Array([48, 129, 155, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 35, 3, 129, 134, 0, 4, 0, 238, 105, 249, 71, 21, 215, 1, 233, 226, 1, 19, 51, 212, 244, 249, 108, 186, 125, 145, 248, 139, 17, 43, 175, 117, 207, 9, 204, 31, 138, 202, 151, 97, 141, 169, 56, 152, 34, 210, 155, 111, 233, 153, 106, 97, 32, 62, 247, 82, 183, 113, 232, 149, 143, 196, 103, 123, 179, 119, 133, 101, 171, 96, 214, 237, 0, 222, 171, 103, 97, 137, 91, 147, 94, 58, 211, 37, 251, 133, 73, 229, 111, 19, 120, 106, 167, 63, 136, 162, 236, 254, 64, 147, 52, 115, 216, 174, 242, 64, 196, 223, 215, 213, 6, 242, 44, 221, 14, 85, 85, 143, 63, 191, 5, 235, 247, 239, 239, 122, 114, 215, 143, 70, 70, 155, 132, 72, 242, 110, 39, 18]), + "P-256": new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 154, 116, 32, 120, 126, 95, 77, 105, 211, 232, 34, 114, 115, 1, 109, 56, 224, 71, 129, 133, 223, 127, 238, 156, 142, 103, 60, 202, 211, 79, 126, 128, 254, 49, 141, 182, 221, 107, 119, 218, 99, 32, 165, 246, 151, 89, 9, 68, 23, 177, 52, 239, 138, 139, 116, 193, 101, 4, 57, 198, 115, 0, 90, 61]), + "P-384": new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 145, 130, 45, 194, 175, 89, 193, 143, 91, 103, 248, 13, 246, 26, 38, 3, 194, 168, 240, 179, 192, 175, 130, 45, 99, 194, 121, 112, 26, 130, 69, 96, 64, 68, 1, 221, 233, 165, 110, 229, 39, 87, 234, 139, 199, 72, 212, 200, 43, 83, 55, 180, 141, 123, 101, 88, 58, 61, 87, 36, 56, 136, 0, 54, 186, 198, 115, 15, 66, 202, 82, 120, 150, 107, 213, 242, 30, 134, 226, 29, 48, 197, 166, 208, 70, 62, 197, 19, 221, 80, 159, 252, 220, 175, 31, 245]) + }; + + var sizes = { + "P-521": 66, + "P-256": 32, + "P-384": 48 + }; + + var derivations = { + "P-521": new Uint8Array([0, 156, 43, 206, 87, 190, 128, 173, 171, 59, 7, 56, 91, 142, 89, 144, 235, 125, 111, 222, 189, 176, 27, 243, 83, 113, 164, 246, 7, 94, 157, 40, 138, 193, 42, 109, 254, 3, 170, 87, 67, 188, 129, 112, 157, 73, 168, 34, 148, 2, 25, 182, 75, 118, 138, 205, 82, 15, 161, 54, 142, 160, 175, 141, 71, 93]), + "P-256": new Uint8Array([14, 143, 60, 77, 177, 178, 162, 131, 115, 90, 0, 220, 87, 31, 26, 232, 151, 28, 227, 35, 250, 17, 131, 137, 203, 95, 65, 196, 59, 61, 181, 161]), + "P-384": new Uint8Array([224, 189, 107, 206, 10, 239, 140, 164, 136, 56, 166, 226, 252, 197, 126, 103, 185, 197, 232, 134, 12, 95, 11, 233, 218, 190, 197, 62, 69, 78, 24, 160, 161, 116, 196, 136, 136, 162, 100, 136, 17, 91, 45, 201, 241, 223, 165, 45]) + }; + + importKeys(pkcs8, spki, sizes) + .then(function(results) { + publicKeys = results.publicKeys; + privateKeys = results.privateKeys; + ecdsaKeyPairs = results.ecdsaKeyPairs; + noDeriveBitsKeys = results.noDeriveBitsKeys; + + Object.keys(sizes).forEach(function(namedCurve) { + // Basic success case + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: publicKeys[namedCurve]}, privateKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_true(equalBuffers(derivation, derivations[namedCurve]), "Derived correct bits"); + }, function(err) { + assert_unreached("deriveBits failed with error " + err.name + ": " + err.message); + }); + }, namedCurve + " good parameters"); + + // Case insensitivity check + promise_test(function(test) { + return subtle.deriveBits({name: "EcDh", public: publicKeys[namedCurve]}, privateKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_true(equalBuffers(derivation, derivations[namedCurve]), "Derived correct bits"); + }, function(err) { + assert_unreached("deriveBits failed with error " + err.name + ": " + err.message); + }); + }, namedCurve + " mixed case parameters"); + + // Null length + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: publicKeys[namedCurve]}, privateKeys[namedCurve], null) + .then(function(derivation) { + assert_true(equalBuffers(derivation, derivations[namedCurve]), "Derived correct bits"); + }, function(err) { + assert_unreached("deriveBits failed with error " + err.name + ": " + err.message); + }); + }, namedCurve + " with null length"); + + // Shorter than entire derivation per algorithm + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: publicKeys[namedCurve]}, privateKeys[namedCurve], 8 * sizes[namedCurve] - 32) + .then(function(derivation) { + assert_true(equalBuffers(derivation, derivations[namedCurve], 8 * sizes[namedCurve] - 32), "Derived correct bits"); + }, function(err) { + assert_unreached("deriveBits failed with error " + err.name + ": " + err.message); + }); + }, namedCurve + " short result"); + + // Non-multiple of 8 + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: publicKeys[namedCurve]}, privateKeys[namedCurve], 8 * sizes[namedCurve] - 11) + .then(function(derivation) { + assert_true(equalBuffers(derivation, derivations[namedCurve], 8 * sizes[namedCurve] - 11), "Derived correct bits"); + }, function(err) { + assert_unreached("deriveBits failed with error " + err.name + ": " + err.message); + }); + }, namedCurve + " non-multiple of 8 bits"); + + // Errors to test: + + // - missing public property TypeError + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH"}, privateKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_unreached("deriveBits succeeded but should have failed with TypeError"); + }, function(err) { + assert_equals(err.name, "TypeError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " missing public curve"); + + // - Non CryptoKey public property TypeError + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: {message: "Not a CryptoKey"}}, privateKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_unreached("deriveBits succeeded but should have failed with TypeError"); + }, function(err) { + assert_equals(err.name, "TypeError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " public property of algorithm is not a CryptoKey"); + + // - wrong named curve + promise_test(function(test) { + publicKey = publicKeys["P-256"]; + if (namedCurve === "P-256") { + publicKey = publicKeys["P-384"]; + } + return subtle.deriveBits({name: "ECDH", public: publicKey}, privateKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_unreached("deriveBits succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " mismatched curves"); + + // - not ECDH public property InvalidAccessError + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: ecdsaKeyPairs[namedCurve].publicKey}, privateKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_unreached("deriveBits succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " public property of algorithm is not an ECDSA public key"); + + // - No deriveBits usage in baseKey InvalidAccessError + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: publicKeys[namedCurve]}, noDeriveBitsKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_unreached("deriveBits succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " no deriveBits usage for base key"); + + // - Use public key for baseKey InvalidAccessError + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: publicKeys[namedCurve]}, publicKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_unreached("deriveBits succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " base key is not a private key"); + + // - Use private key for public property InvalidAccessError + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: privateKeys[namedCurve]}, privateKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_unreached("deriveBits succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " public property value is a private key"); + + // - Use secret key for public property InvalidAccessError + promise_test(function(test) { + return subtle.generateKey({name: "AES-CBC", length: 128}, true, ["encrypt", "decrypt"]) + .then(function(secretKey) { + subtle.deriveBits({name: "ECDH", public: secretKey}, privateKeys[namedCurve], 8 * sizes[namedCurve]) + .then(function(derivation) { + assert_unreached("deriveBits succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }); + }, namedCurve + " public property value is a secret key"); + + // - Length greater than 256, 384, 521 for particular curves OperationError + promise_test(function(test) { + return subtle.deriveBits({name: "ECDH", public: publicKeys[namedCurve]}, privateKeys[namedCurve], 8 * sizes[namedCurve] + 8) + .then(function(derivation) { + assert_unreached("deriveBits succeeded but should have failed with OperationError"); + }, function(err) { + assert_equals(err.name, "OperationError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " asking for too many bits"); + }); + done() + }); + + function importKeys(pkcs8, spki, sizes) { + var privateKeys = {}; + var publicKeys = {}; + var ecdsaKeyPairs = {}; + var noDeriveBitsKeys = {}; + + var promises = []; + Object.keys(pkcs8).forEach(function(namedCurve) { + var operation = subtle.importKey("pkcs8", pkcs8[namedCurve], + {name: "ECDH", namedCurve: namedCurve}, + false, ["deriveBits", "deriveKey"]) + .then(function(key) { + privateKeys[namedCurve] = key; + }); + promises.push(operation); + }); + Object.keys(pkcs8).forEach(function(namedCurve) { + var operation = subtle.importKey("pkcs8", pkcs8[namedCurve], + {name: "ECDH", namedCurve: namedCurve}, + false, ["deriveKey"]) + .then(function(key) { + noDeriveBitsKeys[namedCurve] = key; + }); + promises.push(operation); + }); + Object.keys(spki).forEach(function(namedCurve) { + var operation = subtle.importKey("spki", spki[namedCurve], + {name: "ECDH", namedCurve: namedCurve}, + false, []) + .then(function(key) { + publicKeys[namedCurve] = key; + }); + promises.push(operation); + }); + Object.keys(sizes).forEach(function(namedCurve) { + var operation = subtle.generateKey({name: "ECDSA", namedCurve: namedCurve}, false, ["sign", "verify"]) + .then(function(keyPair) { + ecdsaKeyPairs[namedCurve] = keyPair; + }); + promises.push(operation); + }); + + return Promise.all(promises) + .then(function(results) {return {privateKeys: privateKeys, publicKeys: publicKeys, ecdsaKeyPairs: ecdsaKeyPairs, noDeriveBitsKeys: noDeriveBitsKeys}}); + } + + // Compares two ArrayBuffer or ArrayBufferView objects. If bitCount is + // omitted, the two values must be the same length and have the same contents + // in every byte. If bitCount is included, only that leading number of bits + // have to match. + function equalBuffers(a, b, bitCount) { + var remainder; + + if (typeof bitCount === "undefined" && a.byteLength !== b.byteLength) { + return false; + } + + var aBytes = new Uint8Array(a); + var bBytes = new Uint8Array(b); + + var length = a.byteLength; + if (typeof bitCount !== "undefined") { + length = Math.floor(bitCount / 8); + } + + for (var i=0; i> (8 - remainder) === bBytes[length] >> (8 - remainder); + } + + return true; + } + +} diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js new file mode 100644 index 00000000000..8ff0ac3053c --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_bits.worker.js @@ -0,0 +1,4 @@ +importScripts("/resources/testharness.js"); +importScripts("ecdh_bits.js"); + +run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.js new file mode 100644 index 00000000000..b1a0bcd485d --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.js @@ -0,0 +1,238 @@ + +function run_test() { + // May want to test prefixed implementations. + var subtle = self.crypto.subtle; + + var pkcs8 = { + "P-521": new Uint8Array([48, 129, 238, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 35, 4, 129, 214, 48, 129, 211, 2, 1, 1, 4, 66, 1, 166, 126, 211, 33, 145, 90, 100, 170, 53, 155, 125, 100, 141, 220, 38, 24, 250, 142, 141, 24, 103, 232, 247, 24, 48, 177, 13, 37, 237, 40, 145, 250, 241, 47, 60, 126, 117, 66, 26, 46, 162, 100, 249, 169, 21, 50, 13, 39, 79, 225, 71, 7, 66, 185, 132, 233, 107, 152, 145, 32, 129, 250, 205, 71, 141, 161, 129, 137, 3, 129, 134, 0, 4, 0, 32, 157, 72, 63, 40, 102, 104, 129, 198, 100, 31, 58, 18, 111, 64, 15, 81, 228, 101, 17, 112, 254, 103, 140, 117, 232, 87, 18, 226, 134, 138, 220, 133, 8, 36, 153, 123, 235, 240, 188, 130, 180, 48, 40, 166, 210, 236, 23, 119, 202, 69, 39, 159, 114, 6, 163, 234, 139, 92, 210, 7, 63, 73, 62, 69, 0, 12, 181, 76, 58, 90, 202, 162, 104, 197, 103, 16, 66, 136, 120, 217, 139, 138, 251, 246, 138, 97, 33, 83, 99, 40, 70, 216, 7, 233, 38, 114, 105, 143, 27, 156, 97, 29, 231, 211, 142, 52, 205, 108, 115, 136, 144, 146, 197, 110, 82, 214, 128, 241, 223, 208, 146, 184, 122, 200, 239, 159, 243, 200, 251, 72]), + "P-256": new Uint8Array([48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 15, 247, 79, 232, 241, 202, 175, 97, 92, 206, 241, 29, 217, 53, 114, 87, 98, 217, 216, 65, 236, 186, 185, 94, 170, 38, 68, 123, 52, 100, 245, 113, 161, 68, 3, 66, 0, 4, 140, 96, 11, 44, 102, 25, 45, 97, 158, 39, 210, 37, 107, 59, 151, 118, 178, 141, 30, 5, 246, 13, 234, 189, 98, 174, 123, 154, 211, 157, 224, 217, 59, 4, 102, 109, 199, 119, 14, 126, 207, 13, 211, 203, 203, 211, 110, 221, 107, 94, 220, 153, 81, 7, 55, 161, 237, 104, 46, 205, 112, 244, 10, 47]), + "P-384": new Uint8Array([48, 129, 182, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 4, 129, 158, 48, 129, 155, 2, 1, 1, 4, 48, 248, 113, 165, 102, 101, 137, 193, 74, 87, 71, 38, 62, 248, 91, 49, 156, 192, 35, 219, 110, 53, 103, 108, 61, 120, 30, 239, 139, 5, 95, 207, 190, 134, 250, 13, 6, 208, 86, 181, 25, 95, 177, 50, 58, 248, 222, 37, 179, 161, 100, 3, 98, 0, 4, 241, 25, 101, 223, 125, 212, 89, 77, 4, 25, 197, 8, 100, 130, 163, 184, 38, 185, 121, 127, 155, 224, 189, 13, 16, 156, 158, 30, 153, 137, 193, 185, 169, 43, 143, 38, 159, 152, 225, 122, 209, 132, 186, 115, 193, 247, 151, 98, 175, 69, 175, 129, 65, 96, 38, 66, 218, 39, 26, 107, 176, 255, 235, 12, 180, 71, 143, 207, 112, 126, 102, 26, 166, 214, 205, 245, 21, 73, 200, 140, 63, 19, 11, 233, 232, 32, 31, 111, 106, 9, 244, 24, 90, 175, 149, 196]) + }; + + var spki = { + "P-521": new Uint8Array([48, 129, 155, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 35, 3, 129, 134, 0, 4, 0, 238, 105, 249, 71, 21, 215, 1, 233, 226, 1, 19, 51, 212, 244, 249, 108, 186, 125, 145, 248, 139, 17, 43, 175, 117, 207, 9, 204, 31, 138, 202, 151, 97, 141, 169, 56, 152, 34, 210, 155, 111, 233, 153, 106, 97, 32, 62, 247, 82, 183, 113, 232, 149, 143, 196, 103, 123, 179, 119, 133, 101, 171, 96, 214, 237, 0, 222, 171, 103, 97, 137, 91, 147, 94, 58, 211, 37, 251, 133, 73, 229, 111, 19, 120, 106, 167, 63, 136, 162, 236, 254, 64, 147, 52, 115, 216, 174, 242, 64, 196, 223, 215, 213, 6, 242, 44, 221, 14, 85, 85, 143, 63, 191, 5, 235, 247, 239, 239, 122, 114, 215, 143, 70, 70, 155, 132, 72, 242, 110, 39, 18]), + "P-256": new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 154, 116, 32, 120, 126, 95, 77, 105, 211, 232, 34, 114, 115, 1, 109, 56, 224, 71, 129, 133, 223, 127, 238, 156, 142, 103, 60, 202, 211, 79, 126, 128, 254, 49, 141, 182, 221, 107, 119, 218, 99, 32, 165, 246, 151, 89, 9, 68, 23, 177, 52, 239, 138, 139, 116, 193, 101, 4, 57, 198, 115, 0, 90, 61]), + "P-384": new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 145, 130, 45, 194, 175, 89, 193, 143, 91, 103, 248, 13, 246, 26, 38, 3, 194, 168, 240, 179, 192, 175, 130, 45, 99, 194, 121, 112, 26, 130, 69, 96, 64, 68, 1, 221, 233, 165, 110, 229, 39, 87, 234, 139, 199, 72, 212, 200, 43, 83, 55, 180, 141, 123, 101, 88, 58, 61, 87, 36, 56, 136, 0, 54, 186, 198, 115, 15, 66, 202, 82, 120, 150, 107, 213, 242, 30, 134, 226, 29, 48, 197, 166, 208, 70, 62, 197, 19, 221, 80, 159, 252, 220, 175, 31, 245]) + }; + + var sizes = { + "P-521": 66, + "P-256": 32, + "P-384": 48 + }; + + var derivations = { + "P-521": new Uint8Array([0, 156, 43, 206, 87, 190, 128, 173, 171, 59, 7, 56, 91, 142, 89, 144, 235, 125, 111, 222, 189, 176, 27, 243, 83, 113, 164, 246, 7, 94, 157, 40, 138, 193, 42, 109, 254, 3, 170, 87, 67, 188, 129, 112, 157, 73, 168, 34, 148, 2, 25, 182, 75, 118, 138, 205, 82, 15, 161, 54, 142, 160, 175, 141, 71, 93]), + "P-256": new Uint8Array([14, 143, 60, 77, 177, 178, 162, 131, 115, 90, 0, 220, 87, 31, 26, 232, 151, 28, 227, 35, 250, 17, 131, 137, 203, 95, 65, 196, 59, 61, 181, 161]), + "P-384": new Uint8Array([224, 189, 107, 206, 10, 239, 140, 164, 136, 56, 166, 226, 252, 197, 126, 103, 185, 197, 232, 134, 12, 95, 11, 233, 218, 190, 197, 62, 69, 78, 24, 160, 161, 116, 196, 136, 136, 162, 100, 136, 17, 91, 45, 201, 241, 223, 165, 45]) + }; + + importKeys(pkcs8, spki, sizes) + .then(function(results) { + publicKeys = results.publicKeys; + privateKeys = results.privateKeys; + ecdsaKeyPairs = results.ecdsaKeyPairs; + noDeriveKeyKeys = results.noDeriveKeyKeys; + + Object.keys(sizes).forEach(function(namedCurve) { + // Basic success case + promise_test(function(test) { + return subtle.deriveKey({name: "ECDH", public: publicKeys[namedCurve]}, privateKeys[namedCurve], {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_true(equalBuffers(exportedKey, derivations[namedCurve], 8 * exportedKey.length), "Derived correct key"); + }, function(err) { + assert_unreached("deriveKey failed with error " + err.name + ": " + err.message); + }); + }, namedCurve + " good parameters"); + + // Case insensitivity check + promise_test(function(test) { + return subtle.deriveKey({name: "EcDh", public: publicKeys[namedCurve]}, privateKeys[namedCurve], {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_true(equalBuffers(exportedKey, derivations[namedCurve], 8 * exportedKey.length), "Derived correct key"); + }, function(err) { + assert_unreached("deriveKey failed with error " + err.name + ": " + err.message); + }); + }, namedCurve + " mixed case parameters"); + // Errors to test: + + // - missing public property TypeError + promise_test(function(test) { + return subtle.deriveKey({name: "ECDH"}, privateKeys[namedCurve], {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_unreached("deriveKey succeeded but should have failed with TypeError"); + }, function(err) { + assert_equals(err.name, "TypeError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " missing public curve"); + + // - Non CryptoKey public property TypeError + promise_test(function(test) { + return subtle.deriveKey({name: "ECDH", public: {message: "Not a CryptoKey"}}, privateKeys[namedCurve], {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_unreached("deriveKey succeeded but should have failed with TypeError"); + }, function(err) { + assert_equals(err.name, "TypeError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " public property of algorithm is not a CryptoKey"); + + // - wrong named curve + promise_test(function(test) { + publicKey = publicKeys["P-256"]; + if (namedCurve === "P-256") { + publicKey = publicKeys["P-384"]; + } + return subtle.deriveKey({name: "ECDH", public: publicKey}, privateKeys[namedCurve], {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_unreached("deriveKey succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " mismatched curves"); + + // - not ECDH public property InvalidAccessError + promise_test(function(test) { + return subtle.deriveKey({name: "ECDH", public: ecdsaKeyPairs[namedCurve].publicKey}, privateKeys[namedCurve], {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_unreached("deriveKey succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " public property of algorithm is not an ECDSA public key"); + + // - No deriveKey usage in baseKey InvalidAccessError + promise_test(function(test) { + return subtle.deriveKey({name: "ECDH", public: publicKeys[namedCurve]}, noDeriveKeyKeys[namedCurve], {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_unreached("deriveKey succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " no deriveKey usage for base key"); + + // - Use public key for baseKey InvalidAccessError + promise_test(function(test) { + return subtle.deriveKey({name: "ECDH", public: publicKeys[namedCurve]}, publicKeys[namedCurve], {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_unreached("deriveKey succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " base key is not a private key"); + + // - Use private key for public property InvalidAccessError + promise_test(function(test) { + return subtle.deriveKey({name: "ECDH", public: privateKeys[namedCurve]}, privateKeys[namedCurve], {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_unreached("deriveKey succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }, namedCurve + " public property value is a private key"); + + // - Use secret key for public property InvalidAccessError + promise_test(function(test) { + return subtle.generateKey({name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]) + .then(function(secretKey) { + subtle.deriveKey({name: "ECDH", public: secretKey}, privateKeys[namedCurve], {name: "AES-CBC", length: 256}, true, ["sign", "verify"]) + .then(function(key) {return crypto.subtle.exportKey("raw", key);}) + .then(function(exportedKey) { + assert_unreached("deriveKey succeeded but should have failed with InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw correct error, not " + err.name + ": " + err.message); + }); + }); + }, namedCurve + " public property value is a secret key"); + }); + done(); + }); + + function importKeys(pkcs8, spki, sizes) { + var privateKeys = {}; + var publicKeys = {}; + var ecdsaKeyPairs = {}; + var noDeriveKeyKeys = {}; + + var promises = []; + Object.keys(pkcs8).forEach(function(namedCurve) { + var operation = subtle.importKey("pkcs8", pkcs8[namedCurve], + {name: "ECDH", namedCurve: namedCurve}, + false, ["deriveBits", "deriveKey"]) + .then(function(key) { + privateKeys[namedCurve] = key; + }); + promises.push(operation); + }); + Object.keys(pkcs8).forEach(function(namedCurve) { + var operation = subtle.importKey("pkcs8", pkcs8[namedCurve], + {name: "ECDH", namedCurve: namedCurve}, + false, ["deriveBits"]) + .then(function(key) { + noDeriveKeyKeys[namedCurve] = key; + }); + promises.push(operation); + }); + Object.keys(spki).forEach(function(namedCurve) { + var operation = subtle.importKey("spki", spki[namedCurve], + {name: "ECDH", namedCurve: namedCurve}, + false, []) + .then(function(key) { + publicKeys[namedCurve] = key; + }); + promises.push(operation); + }); + Object.keys(sizes).forEach(function(namedCurve) { + var operation = subtle.generateKey({name: "ECDSA", namedCurve: namedCurve}, false, ["sign", "verify"]) + .then(function(keyPair) { + ecdsaKeyPairs[namedCurve] = keyPair; + }); + promises.push(operation); + }); + + return Promise.all(promises) + .then(function(results) {return {privateKeys: privateKeys, publicKeys: publicKeys, ecdsaKeyPairs: ecdsaKeyPairs, noDeriveKeyKeys: noDeriveKeyKeys}}); + } + + // Compares two ArrayBuffer or ArrayBufferView objects. If bitCount is + // omitted, the two values must be the same length and have the same contents + // in every byte. If bitCount is included, only that leading number of bits + // have to match. + function equalBuffers(a, b, bitCount) { + var remainder; + + if (typeof bitCount === "undefined" && a.byteLength !== b.byteLength) { + return false; + } + + var aBytes = new Uint8Array(a); + var bBytes = new Uint8Array(b); + + var length = a.byteLength; + if (typeof bitCount !== "undefined") { + length = Math.floor(bitCount / 8); + } + + for (var i=0; i> (8 - remainder) === bBytes[length] >> (8 - remainder); + } + + return true; + } + +} diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js new file mode 100644 index 00000000000..488d60216fc --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/ecdh_keys.worker.js @@ -0,0 +1,4 @@ +importScripts("/resources/testharness.js"); +importScripts("ecdh_keys.js"); + +run_test(); diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js new file mode 100644 index 00000000000..e3503794063 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.js @@ -0,0 +1,294 @@ + +function run_test() { + // May want to test prefixed implementations. + var subtle = self.crypto.subtle; + + // hkdf2_vectors sets up test data with the correct derivations for each + // test case. + var testData = getTestData(); + var derivedKeys = testData.derivedKeys; + var salts = testData.salts; + var derivations = testData.derivations; + var infos = testData.infos; + + // What kinds of keys can be created with deriveKey? The following: + var derivedKeyTypes = testData.derivedKeyTypes; + + setUpBaseKeys(derivedKeys) + .then(function(allKeys) { + // We get several kinds of base keys. Normal ones that can be used for + // derivation operations, ones that lack the deriveBits usage, ones + // that lack the deriveKeys usage, and one key that is for the wrong + // algorithm (not HKDF in this case). + var baseKeys = allKeys.baseKeys; + var noBits = allKeys.noBits; + var noKey = allKeys.noKey; + var wrongKey = allKeys.wrongKey; + + // Test each combination of derivedKey size, salt size, hash function, + // and number of iterations. The derivations object is structured in + // that way, so navigate it to run tests and compare with correct results. + Object.keys(derivations).forEach(function(derivedKeySize) { + Object.keys(derivations[derivedKeySize]).forEach(function(saltSize) { + Object.keys(derivations[derivedKeySize][saltSize]).forEach(function(hashName) { + Object.keys(derivations[derivedKeySize][saltSize][hashName]).forEach(function(infoSize) { + var testName = derivedKeySize + " derivedKey, " + saltSize + " salt, " + hashName + ", with " + infoSize + " info"; + var algorithm = {name: "HKDF", salt: salts[saltSize], hash: hashName}; + if (infoSize !== "missing") { + algorithm.info = infos[infoSize]; + } + + // Check for correct deriveBits result + promise_test(function(test) { + return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], 256) + .then(function(derivation) { + assert_true(equalBuffers(derivation, derivations[derivedKeySize][saltSize][hashName][infoSize]), "Derived correct key"); + }, function(err) { + assert_unreached("deriveBits failed with error " + err.name + ": " + err.message); + }); + }, testName); + + // 0 length (OperationError) + promise_test(function(test) { + return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], 0) + .then(function(derivation) { + assert_equals(derivation.byteLength, 0, "Derived correctly empty key"); + }, function(err) { + assert_equals(err.name, "OperationError", "deriveBits with 0 length correctly threw OperationError: " + err.message); + }); + }, testName + " with 0 length"); + + // Check for correct deriveKey results for every kind of + // key that can be created by the deriveKeys operation. + derivedKeyTypes.forEach(function(derivedKeyType) { + var testName = "Derived key of type "; + Object.keys(derivedKeyType.algorithm).forEach(function(prop) { + testName += prop + ": " + derivedKeyType.algorithm[prop] + " "; + }); + testName += " using " + derivedKeySize + " derivedKey, " + saltSize + " salt, " + hashName + ", with " + infoSize + " info"; + + // Test the particular key derivation. + promise_test(function(test) { + return subtle.deriveKey(algorithm, baseKeys[derivedKeySize], derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(key) { + // Need to export the key to see that the correct bits were set. + return subtle.exportKey("raw", key) + .then(function(buffer) { + assert_true(equalBuffers(buffer, derivations[derivedKeySize][saltSize][hashName][infoSize].slice(0, derivedKeyType.algorithm.length/8)), "Exported key matches correct value"); + }, function(err) { + assert_unreached("Exporting derived key failed with error " + err.name + ": " + err.message); + }); + }, function(err) { + assert_unreached("deriveKey failed with error " + err.name + ": " + err.message); + + }); + }, testName); + + // Test various error conditions for deriveKey: + + // - illegal name for hash algorithm (NotSupportedError) + var badHash = hashName.substring(0, 3) + hashName.substring(4); + promise_test(function(test) { + var badAlgorithm = {name: "HKDF", salt: salts[saltSize], hash: badHash}; + return subtle.deriveKey(badAlgorithm, baseKeys[derivedKeySize], derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(key) { + assert_unreached("bad hash name should have thrown an NotSupportedError"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "deriveKey with bad hash name correctly threw NotSupportedError: " + err.message); + }); + }, testName + " with bad hash name " + badHash); + + // - baseKey usages missing "deriveKey" (InvalidAccessError) + promise_test(function(test) { + return subtle.deriveKey(algorithm, noKey[derivedKeySize], derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(key) { + assert_unreached("missing deriveKey usage should have thrown an InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "deriveKey with missing deriveKey usage correctly threw InvalidAccessError: " + err.message); + }); + }, testName + " with missing deriveKey usage"); + + // - baseKey algorithm does not match HKDF (InvalidAccessError) + promise_test(function(test) { + return subtle.deriveKey(algorithm, wrongKey, derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(key) { + assert_unreached("wrong (ECDH) key should have thrown an InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: " + err.message); + }); + }, testName + " with wrong (ECDH) key"); + + }); + + // Test various error conditions for deriveBits below: + // length null (OperationError) + promise_test(function(test) { + return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], null) + .then(function(derivation) { + assert_unreached("null length should have thrown an TypeError"); + }, function(err) { + assert_equals(err.name, "TypeError", "deriveBits with null length correctly threw OperationError: " + err.message); + }); + }, testName + " with null length"); + + // length not multiple of 8 (OperationError) + promise_test(function(test) { + return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], 44) + .then(function(derivation) { + assert_unreached("non-multiple of 8 length should have thrown an OperationError"); + }, function(err) { + assert_equals(err.name, "OperationError", "deriveBits with non-multiple of 8 length correctly threw OperationError: " + err.message); + }); + }, testName + " with non-multiple of 8 length"); + + // - illegal name for hash algorithm (NotSupportedError) + var badHash = hashName.substring(0, 3) + hashName.substring(4); + promise_test(function(test) { + var badAlgorithm = {name: "HKDF", salt: salts[saltSize], hash: badHash}; + return subtle.deriveBits(badAlgorithm, baseKeys[derivedKeySize], 256) + .then(function(derivation) { + assert_unreached("bad hash name should have thrown an NotSupportedError"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "deriveBits with bad hash name correctly threw NotSupportedError: " + err.message); + }); + }, testName + " with bad hash name " + badHash); + + // - baseKey usages missing "deriveBits" (InvalidAccessError) + promise_test(function(test) { + return subtle.deriveBits(algorithm, noBits[derivedKeySize], 256) + .then(function(derivation) { + assert_unreached("missing deriveBits usage should have thrown an InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "deriveBits with missing deriveBits usage correctly threw InvalidAccessError: " + err.message); + }); + }, testName + " with missing deriveBits usage"); + + // - baseKey algorithm does not match HKDF (InvalidAccessError) + promise_test(function(test) { + return subtle.deriveBits(algorithm, wrongKey, 256) + .then(function(derivation) { + assert_unreached("wrong (ECDH) key should have thrown an InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: " + err.message); + }); + }, testName + " with wrong (ECDH) key"); + }); + }); + + // - legal algorithm name but not digest one (e.g., PBKDF2) (NotSupportedError) + var nonDigestHash = "PBKDF2"; + Object.keys(infos).forEach(function(infoSize) { + var testName = derivedKeySize + " derivedKey, " + saltSize + " salt, " + nonDigestHash + ", with " + infoSize + " info"; + var algorithm = {name: "HKDF", salt: salts[saltSize], hash: nonDigestHash}; + if (infoSize !== "missing") { + algorithm.info = infos[infoSize]; + } + + promise_test(function(test) { + return subtle.deriveBits(algorithm, baseKeys[derivedKeySize], 256) + .then(function(derivation) { + assert_unreached("non-digest algorithm should have thrown an NotSupportedError"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "deriveBits with non-digest algorithm correctly threw NotSupportedError: " + err.message); + }); + }, testName + " with non-digest algorithm " + nonDigestHash); + + derivedKeyTypes.forEach(function(derivedKeyType) { + var testName = "Derived key of type "; + Object.keys(derivedKeyType.algorithm).forEach(function(prop) { + testName += prop + ": " + derivedKeyType.algorithm[prop] + " "; + }); + testName += " using " + derivedKeySize + " derivedKey, " + saltSize + " salt, " + nonDigestHash + ", with " + infoSize + " info"; + + promise_test(function(test) { + return subtle.deriveKey(algorithm, baseKeys[derivedKeySize], derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(derivation) { + assert_unreached("non-digest algorithm should have thrown an NotSupportedError"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "derivekey with non-digest algorithm correctly threw NotSupportedError: " + err.message); + }); + }, testName); + }); + + }); + + }); + }); + + done(); + }, function(err) { + test(function(test) { + assert_unreached("setUpBaseKeys failed with error '" + err.message + "'"); + }, "setUpBaseKeys"); + done(); + }); + + // Deriving bits and keys requires starting with a base key, which is created + // by importing a derivedKey. setUpBaseKeys returns a promise that yields the + // necessary base keys. + function setUpBaseKeys(derivedKeys) { + var promises = []; + + var baseKeys = {}; + var noBits = {}; + var noKey = {}; + var wrongKey = null; + + Object.keys(derivedKeys).forEach(function(derivedKeySize) { + var promise = subtle.importKey("raw", derivedKeys[derivedKeySize], {name: "HKDF"}, false, ["deriveKey", "deriveBits"]) + .then(function(baseKey) { + baseKeys[derivedKeySize] = baseKey; + }, function(err) { + baseKeys[derivedKeySize] = null; + }); + promises.push(promise); + + promise = subtle.importKey("raw", derivedKeys[derivedKeySize], {name: "HKDF"}, false, ["deriveBits"]) + .then(function(baseKey) { + noKey[derivedKeySize] = baseKey; + }, function(err) { + noKey[derivedKeySize] = null; + }); + promises.push(promise); + + promise = subtle.importKey("raw", derivedKeys[derivedKeySize], {name: "HKDF"}, false, ["deriveKey"]) + .then(function(baseKey) { + noBits[derivedKeySize] = baseKey; + }, function(err) { + noBits[derivedKeySize] = null; + }); + promises.push(promise); + }); + + var promise = subtle.generateKey({name: "ECDH", namedCurve: "P-256"}, false, ["deriveKey", "deriveBits"]) + .then(function(baseKey) { + wrongKey = baseKey.privateKey; + }, function(err) { + wrongKey = null; + }); + promises.push(promise); + + + return Promise.all(promises).then(function() { + return {baseKeys: baseKeys, noBits: noBits, noKey: noKey, wrongKey: wrongKey}; + }); + } + + function equalBuffers(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + + var aBytes = new Uint8Array(a); + var bBytes = new Uint8Array(b); + + for (var i=0; in + + // Variations to test: + // - empty, short, and fairly long derivedKey + // - empty, short, and fairly long salt + // - SHA-1, SHA-256, SHA-384, SHA-512 hash + // - 1, 1000, and 100000 million iterations + + // Test cases to generate: 3 * 3 * 4 * 3 = 108 + + // Error conditions to test: + // - length null (OperationError) + // - length not a multiple of 8 (OperationError) + // - illegal name for hash algorithm (NotSupportedError) + // - legal algorithm name but not digest one (e.g., AES-CBC) (NotSupportedError) + // - baseKey usages missing "deriveBits" (InvalidAccessError) + // - baseKey algorithm does not match HKDF (InvalidAccessError) + // - 0 iterations + + var derivedKeyTypes = [ + {algorithm: {name: "AES-CBC", length: 128}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CBC", length: 192}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CBC", length: 256}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CTR", length: 128}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CTR", length: 192}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CTR", length: 256}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-GCM", length: 128}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-GCM", length: 192}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-GCM", length: 256}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-KW", length: 128}, usages: ["wrapKey", "unwrapKey"]}, + {algorithm: {name: "AES-KW", length: 192}, usages: ["wrapKey", "unwrapKey"]}, + {algorithm: {name: "AES-KW", length: 256}, usages: ["wrapKey", "unwrapKey"]}, + {algorithm: {name: "HMAC", hash: "SHA-1", length: 256}, usages: ["sign", "verify"]}, + {algorithm: {name: "HMAC", hash: "SHA-256", length: 256}, usages: ["sign", "verify"]}, + {algorithm: {name: "HMAC", hash: "SHA-384", length: 256}, usages: ["sign", "verify"]}, + {algorithm: {name: "HMAC", hash: "SHA-512", length: 256}, usages: ["sign", "verify"]} + ]; + + var derivedKeys = { + "short": new Uint8Array([80, 64, 115, 115, 119, 48, 114, 100]), + "long": new Uint8Array([85, 115, 101, 114, 115, 32, 115, 104, 111, 117, 108, 100, 32, 112, 105, 99, 107, 32, 108, 111, 110, 103, 32, 112, 97, 115, 115, 112, 104, 114, 97, 115, 101, 115, 32, 40, 110, 111, 116, 32, 117, 115, 101, 32, 115, 104, 111, 114, 116, 32, 112, 97, 115, 115, 119, 111, 114, 100, 115, 41, 33]), + "empty": new Uint8Array([]) + }; + + var salts = { + "normal": new Uint8Array([83, 111, 100, 105, 117, 109, 32, 67, 104, 108, 111, 114, 105, 100, 101, 32, 99, 111, 109, 112, 111, 117, 110, 100]), + "empty": new Uint8Array([]), + "missing": null + }; + + var infos = { + "normal": new Uint8Array([72, 75, 68, 70, 32, 101, 120, 116, 114, 97, 32, 105, 110, 102, 111]), + "empty": new Uint8Array([]), + "missing": null + }; + + var derivations = { + "short": { + "normal": { + "SHA-384": { + "normal": new Uint8Array([25, 186, 116, 54, 142, 107, 153, 51, 144, 242, 127, 233, 167, 208, 43, 195, 56, 23, 63, 114, 190, 113, 161, 159, 199, 68, 252, 219, 63, 212, 184, 75]), + "empty": new Uint8Array([151, 96, 31, 78, 12, 83, 165, 211, 243, 162, 129, 0, 153, 188, 104, 32, 236, 80, 8, 52, 52, 118, 155, 89, 252, 36, 164, 23, 169, 84, 55, 52]), + "missing": new Uint8Array([151, 96, 31, 78, 12, 83, 165, 211, 243, 162, 129, 0, 153, 188, 104, 32, 236, 80, 8, 52, 52, 118, 155, 89, 252, 36, 164, 23, 169, 84, 55, 52]) + }, + "SHA-512": { + "normal": new Uint8Array([75, 189, 109, 178, 67, 95, 182, 150, 21, 127, 96, 137, 201, 119, 195, 199, 63, 62, 172, 94, 243, 221, 107, 170, 230, 4, 203, 83, 191, 187, 21, 62]), + "empty": new Uint8Array([47, 49, 87, 231, 254, 12, 16, 176, 18, 152, 200, 240, 136, 106, 144, 237, 207, 128, 171, 222, 245, 219, 193, 223, 43, 20, 130, 83, 43, 82, 185, 52]), + "missing": new Uint8Array([47, 49, 87, 231, 254, 12, 16, 176, 18, 152, 200, 240, 136, 106, 144, 237, 207, 128, 171, 222, 245, 219, 193, 223, 43, 20, 130, 83, 43, 82, 185, 52]) + }, + "SHA-1": { + "normal": new Uint8Array([5, 173, 34, 237, 33, 56, 201, 96, 14, 77, 158, 39, 37, 222, 211, 1, 245, 210, 135, 251, 251, 87, 2, 249, 153, 188, 101, 54, 211, 237, 239, 152]), + "empty": new Uint8Array([213, 27, 111, 183, 229, 153, 202, 48, 197, 238, 38, 69, 147, 228, 184, 95, 34, 32, 199, 195, 171, 0, 49, 87, 191, 248, 203, 79, 54, 156, 117, 96]), + "missing": new Uint8Array([213, 27, 111, 183, 229, 153, 202, 48, 197, 238, 38, 69, 147, 228, 184, 95, 34, 32, 199, 195, 171, 0, 49, 87, 191, 248, 203, 79, 54, 156, 117, 96]) + }, + "SHA-256": { + "normal": new Uint8Array([42, 245, 144, 30, 40, 132, 156, 40, 68, 56, 87, 56, 106, 161, 172, 59, 177, 39, 233, 38, 49, 193, 192, 81, 72, 45, 102, 144, 148, 23, 114, 180]), + "empty": new Uint8Array([158, 75, 113, 144, 51, 116, 33, 1, 233, 15, 26, 214, 30, 47, 243, 180, 37, 104, 99, 102, 114, 150, 215, 67, 137, 241, 240, 42, 242, 196, 230, 166]), + "missing": new Uint8Array([158, 75, 113, 144, 51, 116, 33, 1, 233, 15, 26, 214, 30, 47, 243, 180, 37, 104, 99, 102, 114, 150, 215, 67, 137, 241, 240, 42, 242, 196, 230, 166]) + } + }, + "empty": { + "SHA-384": { + "normal": new Uint8Array([251, 72, 47, 242, 44, 79, 141, 70, 108, 77, 254, 110, 41, 242, 204, 46, 205, 171, 245, 136, 67, 40, 251, 240, 138, 115, 143, 217, 69, 241, 102, 203]), + "empty": new Uint8Array([30, 2, 60, 23, 179, 64, 83, 60, 234, 239, 57, 35, 12, 184, 179, 187, 219, 246, 99, 161, 61, 96, 117, 208, 221, 50, 108, 4, 148, 120, 251, 165]), + "missing": new Uint8Array([30, 2, 60, 23, 179, 64, 83, 60, 234, 239, 57, 35, 12, 184, 179, 187, 219, 246, 99, 161, 61, 96, 117, 208, 221, 50, 108, 4, 148, 120, 251, 165]) + }, + "SHA-512": { + "normal": new Uint8Array([241, 123, 91, 220, 216, 215, 211, 212, 96, 16, 54, 161, 148, 54, 49, 125, 22, 68, 249, 164, 224, 149, 110, 252, 14, 55, 43, 131, 172, 218, 207, 219]), + "empty": new Uint8Array([199, 180, 116, 148, 47, 49, 248, 63, 175, 93, 20, 115, 24, 2, 177, 189, 73, 71, 133, 73, 203, 58, 143, 61, 191, 237, 196, 211, 32, 156, 245, 182]), + "missing": new Uint8Array([199, 180, 116, 148, 47, 49, 248, 63, 175, 93, 20, 115, 24, 2, 177, 189, 73, 71, 133, 73, 203, 58, 143, 61, 191, 237, 196, 211, 32, 156, 245, 182]) + }, + "SHA-1": { + "normal": new Uint8Array([193, 38, 241, 230, 242, 90, 157, 228, 44, 247, 212, 39, 5, 154, 82, 237, 150, 1, 242, 154, 88, 21, 203, 251, 198, 75, 199, 246, 104, 198, 163, 65]), + "empty": new Uint8Array([50, 21, 195, 240, 141, 231, 5, 73, 176, 81, 183, 3, 55, 69, 168, 24, 79, 140, 186, 166, 177, 115, 83, 48, 210, 188, 182, 177, 111, 70, 66, 239]), + "missing": new Uint8Array([50, 21, 195, 240, 141, 231, 5, 73, 176, 81, 183, 3, 55, 69, 168, 24, 79, 140, 186, 166, 177, 115, 83, 48, 210, 188, 182, 177, 111, 70, 66, 239]) + }, + "SHA-256": { + "normal": new Uint8Array([115, 60, 139, 107, 207, 172, 135, 92, 127, 8, 152, 42, 110, 63, 251, 86, 10, 206, 166, 241, 101, 71, 110, 184, 52, 96, 185, 53, 62, 212, 29, 254]), + "empty": new Uint8Array([200, 225, 39, 116, 19, 83, 5, 201, 20, 127, 44, 196, 118, 110, 94, 173, 37, 216, 244, 87, 185, 161, 149, 61, 82, 103, 115, 97, 206, 213, 88, 251]), + "missing": new Uint8Array([200, 225, 39, 116, 19, 83, 5, 201, 20, 127, 44, 196, 118, 110, 94, 173, 37, 216, 244, 87, 185, 161, 149, 61, 82, 103, 115, 97, 206, 213, 88, 251]) + } + }, + "missing": { + "SHA-384": { + "normal": new Uint8Array([251, 72, 47, 242, 44, 79, 141, 70, 108, 77, 254, 110, 41, 242, 204, 46, 205, 171, 245, 136, 67, 40, 251, 240, 138, 115, 143, 217, 69, 241, 102, 203]), + "empty": new Uint8Array([30, 2, 60, 23, 179, 64, 83, 60, 234, 239, 57, 35, 12, 184, 179, 187, 219, 246, 99, 161, 61, 96, 117, 208, 221, 50, 108, 4, 148, 120, 251, 165]), + "missing": new Uint8Array([30, 2, 60, 23, 179, 64, 83, 60, 234, 239, 57, 35, 12, 184, 179, 187, 219, 246, 99, 161, 61, 96, 117, 208, 221, 50, 108, 4, 148, 120, 251, 165]) + }, + "SHA-512": { + "normal": new Uint8Array([241, 123, 91, 220, 216, 215, 211, 212, 96, 16, 54, 161, 148, 54, 49, 125, 22, 68, 249, 164, 224, 149, 110, 252, 14, 55, 43, 131, 172, 218, 207, 219]), + "empty": new Uint8Array([199, 180, 116, 148, 47, 49, 248, 63, 175, 93, 20, 115, 24, 2, 177, 189, 73, 71, 133, 73, 203, 58, 143, 61, 191, 237, 196, 211, 32, 156, 245, 182]), + "missing": new Uint8Array([199, 180, 116, 148, 47, 49, 248, 63, 175, 93, 20, 115, 24, 2, 177, 189, 73, 71, 133, 73, 203, 58, 143, 61, 191, 237, 196, 211, 32, 156, 245, 182]) + }, + "SHA-1": { + "normal": new Uint8Array([193, 38, 241, 230, 242, 90, 157, 228, 44, 247, 212, 39, 5, 154, 82, 237, 150, 1, 242, 154, 88, 21, 203, 251, 198, 75, 199, 246, 104, 198, 163, 65]), + "empty": new Uint8Array([50, 21, 195, 240, 141, 231, 5, 73, 176, 81, 183, 3, 55, 69, 168, 24, 79, 140, 186, 166, 177, 115, 83, 48, 210, 188, 182, 177, 111, 70, 66, 239]), + "missing": new Uint8Array([50, 21, 195, 240, 141, 231, 5, 73, 176, 81, 183, 3, 55, 69, 168, 24, 79, 140, 186, 166, 177, 115, 83, 48, 210, 188, 182, 177, 111, 70, 66, 239]) + }, + "SHA-256": { + "normal": new Uint8Array([115, 60, 139, 107, 207, 172, 135, 92, 127, 8, 152, 42, 110, 63, 251, 86, 10, 206, 166, 241, 101, 71, 110, 184, 52, 96, 185, 53, 62, 212, 29, 254]), + "empty": new Uint8Array([200, 225, 39, 116, 19, 83, 5, 201, 20, 127, 44, 196, 118, 110, 94, 173, 37, 216, 244, 87, 185, 161, 149, 61, 82, 103, 115, 97, 206, 213, 88, 251]), + "missing": new Uint8Array([200, 225, 39, 116, 19, 83, 5, 201, 20, 127, 44, 196, 118, 110, 94, 173, 37, 216, 244, 87, 185, 161, 149, 61, 82, 103, 115, 97, 206, 213, 88, 251]) + } + } + }, + "long": { + "normal": { + "SHA-384": { + "normal": new Uint8Array([249, 21, 113, 181, 33, 247, 238, 241, 62, 87, 58, 164, 99, 120, 101, 158, 243, 183, 243, 111, 253, 209, 187, 5, 93, 178, 205, 119, 210, 96, 196, 103]), + "empty": new Uint8Array([104, 175, 28, 44, 246, 185, 55, 13, 32, 84, 52, 71, 152, 189, 187, 24, 71, 204, 244, 7, 183, 101, 43, 121, 61, 209, 54, 212, 100, 14, 3, 72]), + "missing": new Uint8Array([104, 175, 28, 44, 246, 185, 55, 13, 32, 84, 52, 71, 152, 189, 187, 24, 71, 204, 244, 7, 183, 101, 43, 121, 61, 209, 54, 212, 100, 14, 3, 72]) + }, + "SHA-512": { + "normal": new Uint8Array([113, 10, 174, 47, 223, 136, 158, 69, 254, 15, 185, 149, 178, 194, 107, 51, 235, 152, 134, 80, 236, 15, 174, 241, 103, 2, 138, 122, 108, 203, 54, 56]), + "empty": new Uint8Array([229, 222, 86, 128, 129, 199, 30, 86, 39, 80, 130, 152, 113, 195, 66, 117, 129, 4, 118, 94, 214, 243, 6, 240, 97, 60, 157, 75, 179, 54, 242, 170]), + "missing": new Uint8Array([229, 222, 86, 128, 129, 199, 30, 86, 39, 80, 130, 152, 113, 195, 66, 117, 129, 4, 118, 94, 214, 243, 6, 240, 97, 60, 157, 75, 179, 54, 242, 170]) + }, + "SHA-1": { + "normal": new Uint8Array([127, 149, 126, 220, 188, 227, 203, 11, 112, 86, 110, 30, 182, 14, 253, 30, 64, 90, 19, 48, 76, 102, 29, 54, 99, 119, 129, 9, 191, 6, 137, 156]), + "empty": new Uint8Array([48, 98, 243, 207, 26, 115, 11, 156, 239, 81, 240, 44, 29, 250, 200, 94, 217, 30, 75, 0, 101, 235, 80, 202, 159, 216, 176, 16, 126, 114, 135, 51]), + "missing": new Uint8Array([48, 98, 243, 207, 26, 115, 11, 156, 239, 81, 240, 44, 29, 250, 200, 94, 217, 30, 75, 0, 101, 235, 80, 202, 159, 216, 176, 16, 126, 114, 135, 51]) + }, + "SHA-256": { + "normal": new Uint8Array([49, 183, 214, 133, 48, 168, 99, 231, 23, 192, 129, 202, 105, 23, 182, 134, 80, 179, 221, 154, 41, 243, 6, 6, 226, 202, 209, 153, 190, 193, 77, 19]), + "empty": new Uint8Array([229, 121, 209, 249, 231, 240, 142, 111, 153, 15, 252, 252, 206, 30, 210, 1, 197, 227, 126, 98, 205, 246, 6, 240, 186, 74, 202, 128, 66, 127, 188, 68]), + "missing": new Uint8Array([229, 121, 209, 249, 231, 240, 142, 111, 153, 15, 252, 252, 206, 30, 210, 1, 197, 227, 126, 98, 205, 246, 6, 240, 186, 74, 202, 128, 66, 127, 188, 68]) + } + }, + "empty": { + "SHA-384": { + "normal": new Uint8Array([97, 158, 182, 249, 40, 115, 149, 187, 213, 237, 106, 103, 201, 104, 70, 90, 216, 43, 108, 85, 159, 60, 56, 182, 4, 187, 176, 143, 88, 50, 11, 3]), + "empty": new Uint8Array([255, 68, 123, 66, 61, 131, 254, 118, 131, 108, 50, 51, 114, 40, 181, 107, 91, 217, 191, 104, 213, 142, 125, 202, 75, 124, 202, 132, 42, 69, 225, 26]), + "missing": new Uint8Array([255, 68, 123, 66, 61, 131, 254, 118, 131, 108, 50, 51, 114, 40, 181, 107, 91, 217, 191, 104, 213, 142, 125, 202, 75, 124, 202, 132, 42, 69, 225, 26]) + }, + "SHA-512": { + "normal": new Uint8Array([19, 62, 138, 127, 127, 244, 51, 105, 12, 200, 132, 50, 194, 163, 56, 194, 119, 229, 193, 55, 86, 255, 135, 143, 70, 117, 63, 230, 165, 100, 227, 229]), + "empty": new Uint8Array([222, 84, 247, 238, 200, 12, 156, 198, 109, 52, 159, 201, 135, 248, 13, 70, 29, 178, 239, 79, 244, 225, 133, 5, 210, 139, 216, 12, 180, 44, 125, 118]), + "missing": new Uint8Array([222, 84, 247, 238, 200, 12, 156, 198, 109, 52, 159, 201, 135, 248, 13, 70, 29, 178, 239, 79, 244, 225, 133, 5, 210, 139, 216, 12, 180, 44, 125, 118]) + }, + "SHA-1": { + "normal": new Uint8Array([173, 185, 60, 219, 206, 121, 183, 213, 17, 89, 182, 192, 19, 26, 43, 98, 242, 56, 40, 210, 106, 205, 104, 94, 52, 192, 101, 53, 230, 247, 116, 150]), + "empty": new Uint8Array([71, 113, 13, 42, 117, 7, 224, 90, 29, 220, 200, 122, 124, 47, 144, 97, 119, 162, 102, 239, 185, 230, 34, 81, 12, 204, 179, 113, 60, 208, 141, 88]), + "missing": new Uint8Array([71, 113, 13, 42, 117, 7, 224, 90, 29, 220, 200, 122, 124, 47, 144, 97, 119, 162, 102, 239, 185, 230, 34, 81, 12, 204, 179, 113, 60, 208, 141, 88]) + }, + "SHA-256": { + "normal": new Uint8Array([164, 1, 215, 201, 21, 138, 41, 229, 199, 25, 58, 185, 115, 15, 7, 72, 133, 28, 197, 186, 173, 180, 44, 173, 2, 75, 98, 144, 254, 33, 52, 54]), + "empty": new Uint8Array([180, 247, 231, 85, 118, 116, 213, 1, 203, 251, 192, 20, 138, 216, 0, 192, 117, 1, 137, 254, 41, 90, 42, 202, 94, 27, 244, 18, 44, 133, 237, 249]), + "missing": new Uint8Array([180, 247, 231, 85, 118, 116, 213, 1, 203, 251, 192, 20, 138, 216, 0, 192, 117, 1, 137, 254, 41, 90, 42, 202, 94, 27, 244, 18, 44, 133, 237, 249]) + } + }, + "missing": { + "SHA-384": { + "normal": new Uint8Array([97, 158, 182, 249, 40, 115, 149, 187, 213, 237, 106, 103, 201, 104, 70, 90, 216, 43, 108, 85, 159, 60, 56, 182, 4, 187, 176, 143, 88, 50, 11, 3]), + "empty": new Uint8Array([255, 68, 123, 66, 61, 131, 254, 118, 131, 108, 50, 51, 114, 40, 181, 107, 91, 217, 191, 104, 213, 142, 125, 202, 75, 124, 202, 132, 42, 69, 225, 26]), + "missing": new Uint8Array([255, 68, 123, 66, 61, 131, 254, 118, 131, 108, 50, 51, 114, 40, 181, 107, 91, 217, 191, 104, 213, 142, 125, 202, 75, 124, 202, 132, 42, 69, 225, 26]) + }, + "SHA-512": { + "normal": new Uint8Array([19, 62, 138, 127, 127, 244, 51, 105, 12, 200, 132, 50, 194, 163, 56, 194, 119, 229, 193, 55, 86, 255, 135, 143, 70, 117, 63, 230, 165, 100, 227, 229]), + "empty": new Uint8Array([222, 84, 247, 238, 200, 12, 156, 198, 109, 52, 159, 201, 135, 248, 13, 70, 29, 178, 239, 79, 244, 225, 133, 5, 210, 139, 216, 12, 180, 44, 125, 118]), + "missing": new Uint8Array([222, 84, 247, 238, 200, 12, 156, 198, 109, 52, 159, 201, 135, 248, 13, 70, 29, 178, 239, 79, 244, 225, 133, 5, 210, 139, 216, 12, 180, 44, 125, 118]) + }, + "SHA-1": { + "normal": new Uint8Array([173, 185, 60, 219, 206, 121, 183, 213, 17, 89, 182, 192, 19, 26, 43, 98, 242, 56, 40, 210, 106, 205, 104, 94, 52, 192, 101, 53, 230, 247, 116, 150]), + "empty": new Uint8Array([71, 113, 13, 42, 117, 7, 224, 90, 29, 220, 200, 122, 124, 47, 144, 97, 119, 162, 102, 239, 185, 230, 34, 81, 12, 204, 179, 113, 60, 208, 141, 88]), + "missing": new Uint8Array([71, 113, 13, 42, 117, 7, 224, 90, 29, 220, 200, 122, 124, 47, 144, 97, 119, 162, 102, 239, 185, 230, 34, 81, 12, 204, 179, 113, 60, 208, 141, 88]) + }, + "SHA-256": { + "normal": new Uint8Array([164, 1, 215, 201, 21, 138, 41, 229, 199, 25, 58, 185, 115, 15, 7, 72, 133, 28, 197, 186, 173, 180, 44, 173, 2, 75, 98, 144, 254, 33, 52, 54]), + "empty": new Uint8Array([180, 247, 231, 85, 118, 116, 213, 1, 203, 251, 192, 20, 138, 216, 0, 192, 117, 1, 137, 254, 41, 90, 42, 202, 94, 27, 244, 18, 44, 133, 237, 249]), + "missing": new Uint8Array([180, 247, 231, 85, 118, 116, 213, 1, 203, 251, 192, 20, 138, 216, 0, 192, 117, 1, 137, 254, 41, 90, 42, 202, 94, 27, 244, 18, 44, 133, 237, 249]) + } + } + }, + "empty": { + "normal": { + "SHA-384": { + "normal": new Uint8Array([106, 134, 50, 228, 134, 137, 157, 194, 100, 241, 161, 249, 32, 89, 63, 40, 128, 128, 78, 14, 26, 218, 207, 148, 235, 78, 213, 229, 248, 61, 13, 18]), + "empty": new Uint8Array([234, 80, 18, 254, 181, 135, 81, 213, 188, 142, 182, 78, 13, 234, 205, 89, 126, 215, 16, 201, 243, 82, 88, 174, 107, 154, 8, 122, 237, 7, 37, 174]), + "missing": new Uint8Array([234, 80, 18, 254, 181, 135, 81, 213, 188, 142, 182, 78, 13, 234, 205, 89, 126, 215, 16, 201, 243, 82, 88, 174, 107, 154, 8, 122, 237, 7, 37, 174]) + }, + "SHA-512": { + "normal": new Uint8Array([199, 151, 225, 209, 242, 202, 183, 242, 138, 95, 67, 69, 92, 16, 89, 127, 148, 51, 133, 237, 251, 66, 140, 254, 43, 152, 190, 212, 169, 85, 215, 161]), + "empty": new Uint8Array([224, 140, 220, 196, 197, 166, 170, 121, 157, 134, 188, 3, 169, 84, 117, 39, 110, 187, 128, 29, 154, 222, 1, 110, 20, 168, 250, 91, 100, 5, 22, 81]), + "missing": new Uint8Array([224, 140, 220, 196, 197, 166, 170, 121, 157, 134, 188, 3, 169, 84, 117, 39, 110, 187, 128, 29, 154, 222, 1, 110, 20, 168, 250, 91, 100, 5, 22, 81]) + }, + "SHA-1": { + "normal": new Uint8Array([171, 103, 158, 103, 188, 180, 48, 95, 238, 66, 239, 148, 14, 80, 156, 221, 212, 6, 227, 73, 143, 133, 116, 24, 169, 121, 171, 57, 207, 49, 95, 81]), + "empty": new Uint8Array([254, 66, 33, 135, 24, 140, 134, 54, 211, 109, 170, 213, 142, 242, 132, 49, 164, 51, 191, 15, 239, 114, 209, 202, 231, 53, 160, 75, 219, 190, 185, 211]), + "missing": new Uint8Array([254, 66, 33, 135, 24, 140, 134, 54, 211, 109, 170, 213, 142, 242, 132, 49, 164, 51, 191, 15, 239, 114, 209, 202, 231, 53, 160, 75, 219, 190, 185, 211]) + }, + "SHA-256": { + "normal": new Uint8Array([223, 146, 185, 169, 250, 156, 1, 184, 152, 206, 234, 161, 49, 52, 131, 46, 49, 203, 28, 8, 29, 22, 165, 35, 92, 105, 216, 86, 81, 227, 23, 172]), + "empty": new Uint8Array([230, 13, 67, 43, 6, 238, 136, 157, 250, 183, 41, 154, 32, 236, 35, 105, 117, 49, 209, 25, 252, 247, 102, 208, 152, 141, 10, 203, 12, 0, 199, 247]), + "missing": new Uint8Array([230, 13, 67, 43, 6, 238, 136, 157, 250, 183, 41, 154, 32, 236, 35, 105, 117, 49, 209, 25, 252, 247, 102, 208, 152, 141, 10, 203, 12, 0, 199, 247]) + } + }, + "empty": { + "SHA-384": { + "normal": new Uint8Array([234, 203, 157, 102, 112, 255, 59, 25, 4, 119, 154, 65, 145, 1, 177, 255, 170, 189, 109, 101, 16, 189, 80, 133, 104, 1, 116, 106, 135, 31, 123, 49]), + "empty": new Uint8Array([71, 12, 198, 83, 135, 202, 74, 16, 199, 166, 138, 59, 81, 72, 200, 229, 19, 218, 166, 49, 1, 0, 7, 57, 196, 198, 101, 155, 134, 17, 136, 132]), + "missing": new Uint8Array([71, 12, 198, 83, 135, 202, 74, 16, 199, 166, 138, 59, 81, 72, 200, 229, 19, 218, 166, 49, 1, 0, 7, 57, 196, 198, 101, 155, 134, 17, 136, 132]) + }, + "SHA-512": { + "normal": new Uint8Array([87, 3, 145, 116, 241, 111, 84, 24, 168, 104, 86, 218, 235, 119, 246, 157, 75, 77, 80, 0, 51, 75, 109, 209, 244, 244, 179, 231, 179, 220, 185, 211]), + "empty": new Uint8Array([157, 115, 201, 142, 121, 30, 128, 235, 229, 180, 203, 69, 105, 58, 163, 47, 221, 68, 181, 250, 62, 218, 179, 236, 130, 249, 208, 244, 214, 105, 5, 226]), + "missing": new Uint8Array([157, 115, 201, 142, 121, 30, 128, 235, 229, 180, 203, 69, 105, 58, 163, 47, 221, 68, 181, 250, 62, 218, 179, 236, 130, 249, 208, 244, 214, 105, 5, 226]) + }, + "SHA-1": { + "normal": new Uint8Array([161, 189, 216, 195, 50, 198, 70, 74, 75, 182, 162, 242, 49, 174, 201, 164, 68, 35, 126, 171, 224, 77, 47, 85, 242, 171, 37, 212, 12, 84, 235, 238]), + "empty": new Uint8Array([136, 95, 192, 41, 179, 34, 75, 137, 110, 9, 224, 187, 229, 235, 52, 126, 197, 158, 104, 39, 200, 232, 87, 179, 148, 245, 79, 244, 155, 136, 168, 246]), + "missing": new Uint8Array([136, 95, 192, 41, 179, 34, 75, 137, 110, 9, 224, 187, 229, 235, 52, 126, 197, 158, 104, 39, 200, 232, 87, 179, 148, 245, 79, 244, 155, 136, 168, 246]) + }, + "SHA-256": { + "normal": new Uint8Array([183, 184, 110, 66, 42, 209, 200, 165, 113, 253, 165, 40, 218, 22, 160, 102, 244, 36, 134, 221, 64, 86, 121, 47, 217, 51, 98, 8, 142, 93, 212, 194]), + "empty": new Uint8Array([235, 112, 240, 29, 237, 233, 175, 175, 164, 73, 238, 225, 177, 40, 101, 4, 225, 246, 35, 136, 179, 247, 221, 79, 149, 102, 151, 176, 232, 40, 254, 24]), + "missing": new Uint8Array([235, 112, 240, 29, 237, 233, 175, 175, 164, 73, 238, 225, 177, 40, 101, 4, 225, 246, 35, 136, 179, 247, 221, 79, 149, 102, 151, 176, 232, 40, 254, 24]) + } + }, + "missing": { + "SHA-384": { + "normal": new Uint8Array([234, 203, 157, 102, 112, 255, 59, 25, 4, 119, 154, 65, 145, 1, 177, 255, 170, 189, 109, 101, 16, 189, 80, 133, 104, 1, 116, 106, 135, 31, 123, 49]), + "empty": new Uint8Array([71, 12, 198, 83, 135, 202, 74, 16, 199, 166, 138, 59, 81, 72, 200, 229, 19, 218, 166, 49, 1, 0, 7, 57, 196, 198, 101, 155, 134, 17, 136, 132]), + "missing": new Uint8Array([71, 12, 198, 83, 135, 202, 74, 16, 199, 166, 138, 59, 81, 72, 200, 229, 19, 218, 166, 49, 1, 0, 7, 57, 196, 198, 101, 155, 134, 17, 136, 132]) + }, + "SHA-512": { + "normal": new Uint8Array([87, 3, 145, 116, 241, 111, 84, 24, 168, 104, 86, 218, 235, 119, 246, 157, 75, 77, 80, 0, 51, 75, 109, 209, 244, 244, 179, 231, 179, 220, 185, 211]), + "empty": new Uint8Array([157, 115, 201, 142, 121, 30, 128, 235, 229, 180, 203, 69, 105, 58, 163, 47, 221, 68, 181, 250, 62, 218, 179, 236, 130, 249, 208, 244, 214, 105, 5, 226]), + "missing": new Uint8Array([157, 115, 201, 142, 121, 30, 128, 235, 229, 180, 203, 69, 105, 58, 163, 47, 221, 68, 181, 250, 62, 218, 179, 236, 130, 249, 208, 244, 214, 105, 5, 226]) + }, + "SHA-1": { + "normal": new Uint8Array([161, 189, 216, 195, 50, 198, 70, 74, 75, 182, 162, 242, 49, 174, 201, 164, 68, 35, 126, 171, 224, 77, 47, 85, 242, 171, 37, 212, 12, 84, 235, 238]), + "empty": new Uint8Array([136, 95, 192, 41, 179, 34, 75, 137, 110, 9, 224, 187, 229, 235, 52, 126, 197, 158, 104, 39, 200, 232, 87, 179, 148, 245, 79, 244, 155, 136, 168, 246]), + "missing": new Uint8Array([136, 95, 192, 41, 179, 34, 75, 137, 110, 9, 224, 187, 229, 235, 52, 126, 197, 158, 104, 39, 200, 232, 87, 179, 148, 245, 79, 244, 155, 136, 168, 246]) + }, + "SHA-256": { + "normal": new Uint8Array([183, 184, 110, 66, 42, 209, 200, 165, 113, 253, 165, 40, 218, 22, 160, 102, 244, 36, 134, 221, 64, 86, 121, 47, 217, 51, 98, 8, 142, 93, 212, 194]), + "empty": new Uint8Array([235, 112, 240, 29, 237, 233, 175, 175, 164, 73, 238, 225, 177, 40, 101, 4, 225, 246, 35, 136, 179, 247, 221, 79, 149, 102, 151, 176, 232, 40, 254, 24]), + "missing": new Uint8Array([235, 112, 240, 29, 237, 233, 175, 175, 164, 73, 238, 225, 177, 40, 101, 4, 225, 246, 35, 136, 179, 247, 221, 79, 149, 102, 151, 176, 232, 40, 254, 24]) + } + } + } + }; + + return {derivedKeys: derivedKeys, salts: salts, derivations: derivations, derivedKeyTypes: derivedKeyTypes, infos: infos}; +} diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js new file mode 100644 index 00000000000..ced14d93243 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/pbkdf2.js @@ -0,0 +1,310 @@ + +function run_test() { + // May want to test prefixed implementations. + var subtle = self.crypto.subtle; + + // pbkdf2_vectors sets up test data with the correct derivations for each + // test case. + var testData = getTestData(); + var passwords = testData.passwords; + var salts = testData.salts; + var derivations = testData.derivations; + + // What kinds of keys can be created with deriveKey? The following: + var derivedKeyTypes = testData.derivedKeyTypes; + + setUpBaseKeys(passwords) + .then(function(allKeys) { + // We get several kinds of base keys. Normal ones that can be used for + // derivation operations, ones that lack the deriveBits usage, ones + // that lack the deriveKeys usage, and one key that is for the wrong + // algorithm (not PBKDF2 in this case). + var baseKeys = allKeys.baseKeys; + var noBits = allKeys.noBits; + var noKey = allKeys.noKey; + var wrongKey = allKeys.wrongKey; + + // Test each combination of password size, salt size, hash function, + // and number of iterations. The derivations object is structured in + // that way, so navigate it to run tests and compare with correct results. + Object.keys(derivations).forEach(function(passwordSize) { + Object.keys(derivations[passwordSize]).forEach(function(saltSize) { + Object.keys(derivations[passwordSize][saltSize]).forEach(function(hashName) { + Object.keys(derivations[passwordSize][saltSize][hashName]).forEach(function(iterations) { + var testName = passwordSize + " password, " + saltSize + " salt, " + hashName + ", with " + iterations + " iterations"; + + // Check for correct deriveBits result + promise_test(function(test) { + return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], 256) + .then(function(derivation) { + assert_true(equalBuffers(derivation, derivations[passwordSize][saltSize][hashName][iterations]), "Derived correct key"); + }, function(err) { + assert_unreached("deriveBits failed with error " + err.name + ": " + err.message); + }); + }, testName); + + // Check for correct deriveKey results for every kind of + // key that can be created by the deriveKeys operation. + derivedKeyTypes.forEach(function(derivedKeyType) { + var testName = "Derived key of type "; + Object.keys(derivedKeyType.algorithm).forEach(function(prop) { + testName += prop + ": " + derivedKeyType.algorithm[prop] + " "; + }); + testName += " using " + passwordSize + " password, " + saltSize + " salt, " + hashName + ", with " + iterations + " iterations"; + + // Test the particular key derivation. + promise_test(function(test) { + return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(key) { + // Need to export the key to see that the correct bits were set. + return subtle.exportKey("raw", key) + .then(function(buffer) { + assert_true(equalBuffers(buffer, derivations[passwordSize][saltSize][hashName][iterations].slice(0, derivedKeyType.algorithm.length/8)), "Exported key matches correct value"); + }, function(err) { + assert_unreached("Exporting derived key failed with error " + err.name + ": " + err.message); + }); + }, function(err) { + assert_unreached("deriveKey failed with error " + err.name + ": " + err.message); + + }); + }, testName); + + // Test various error conditions for deriveKey: + + // - illegal name for hash algorithm (NotSupportedError) + var badHash = hashName.substring(0, 3) + hashName.substring(4); + promise_test(function(test) { + return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: badHash, iterations: parseInt(iterations)}, baseKeys[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(key) { + assert_unreached("bad hash name should have thrown an NotSupportedError"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "deriveKey with bad hash name correctly threw NotSupportedError: " + err.message); + }); + }, testName + " with bad hash name " + badHash); + + // - baseKey usages missing "deriveKey" (InvalidAccessError) + promise_test(function(test) { + return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, noKey[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(key) { + assert_unreached("missing deriveKey usage should have thrown an InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "deriveKey with missing deriveKey usage correctly threw InvalidAccessError: " + err.message); + }); + }, testName + " with missing deriveKey usage"); + + // - baseKey algorithm does not match PBKDF2 (InvalidAccessError) + promise_test(function(test) { + return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, wrongKey, derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(key) { + assert_unreached("wrong (ECDH) key should have thrown an InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "deriveKey with wrong (ECDH) key correctly threw InvalidAccessError: " + err.message); + }); + }, testName + " with wrong (ECDH) key"); + + }); + + // Test various error conditions for deriveBits below: + // length null (OperationError) + promise_test(function(test) { + return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], null) + .then(function(derivation) { + assert_unreached("null length should have thrown an OperationError"); + }, function(err) { + assert_equals(err.name, "OperationError", "deriveBits with null length correctly threw OperationError: " + err.message); + }); + }, testName + " with null length"); + + // 0 length (OperationError) + promise_test(function(test) { + return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], 0) + .then(function(derivation) { + assert_unreached("0 length should have thrown an OperationError"); + }, function(err) { + assert_equals(err.name, "OperationError", "deriveBits with 0 length correctly threw OperationError: " + err.message); + }); + }, testName + " with 0 length"); + + // length not multiple of 8 (OperationError) + promise_test(function(test) { + return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], 44) + .then(function(derivation) { + assert_unreached("non-multiple of 8 length should have thrown an OperationError"); + }, function(err) { + assert_equals(err.name, "OperationError", "deriveBits with non-multiple of 8 length correctly threw OperationError: " + err.message); + }); + }, testName + " with non-multiple of 8 length"); + + // - illegal name for hash algorithm (NotSupportedError) + var badHash = hashName.substring(0, 3) + hashName.substring(4); + promise_test(function(test) { + return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: badHash, iterations: parseInt(iterations)}, baseKeys[passwordSize], 256) + .then(function(derivation) { + assert_unreached("bad hash name should have thrown an NotSupportedError"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "deriveBits with bad hash name correctly threw NotSupportedError: " + err.message); + }); + }, testName + " with bad hash name " + badHash); + + // - baseKey usages missing "deriveBits" (InvalidAccessError) + promise_test(function(test) { + return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, noBits[passwordSize], 256) + .then(function(derivation) { + assert_unreached("missing deriveBits usage should have thrown an InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "deriveBits with missing deriveBits usage correctly threw InvalidAccessError: " + err.message); + }); + }, testName + " with missing deriveBits usage"); + + // - baseKey algorithm does not match PBKDF2 (InvalidAccessError) + promise_test(function(test) { + return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, wrongKey, 256) + .then(function(derivation) { + assert_unreached("wrong (ECDH) key should have thrown an InvalidAccessError"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "deriveBits with wrong (ECDH) key correctly threw InvalidAccessError: " + err.message); + }); + }, testName + " with wrong (ECDH) key"); + }); + + // Check that 0 iterations throws proper error + promise_test(function(test) { + return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: 0}, baseKeys[passwordSize], 256) + .then(function(derivation) { + assert_unreached("0 iterations should have thrown an error"); + }, function(err) { + assert_equals(err.name, "OperationError", "deriveBits with 0 iterations correctly threw OperationError: " + err.message); + }); + }, passwordSize + " password, " + saltSize + " salt, " + hashName + ", with 0 iterations"); + + derivedKeyTypes.forEach(function(derivedKeyType) { + var testName = "Derived key of type "; + Object.keys(derivedKeyType.algorithm).forEach(function(prop) { + testName += prop + ": " + derivedKeyType.algorithm[prop] + " "; + }); + testName += " using " + passwordSize + " password, " + saltSize + " salt, " + hashName + ", with 0 iterations"; + + promise_test(function(test) { + return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: 0}, baseKeys[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(derivation) { + assert_unreached("0 iterations should have thrown an error"); + }, function(err) { + assert_equals(err.name, "OperationError", "derivekey with 0 iterations correctly threw OperationError: " + err.message); + }); + }, testName); + }); + }); + + // - legal algorithm name but not digest one (e.g., PBKDF2) (NotSupportedError) + var nonDigestHash = "PBKDF2"; + [1, 1000, 100000].forEach(function(iterations) { + var testName = passwordSize + " password, " + saltSize + " salt, " + nonDigestHash + ", with " + iterations + " iterations"; + + promise_test(function(test) { + return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: nonDigestHash, iterations: parseInt(iterations)}, baseKeys[passwordSize], 256) + .then(function(derivation) { + assert_unreached("non-digest algorithm should have thrown an NotSupportedError"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "deriveBits with non-digest algorithm correctly threw NotSupportedError: " + err.message); + }); + }, testName + " with non-digest algorithm " + nonDigestHash); + + derivedKeyTypes.forEach(function(derivedKeyType) { + var testName = "Derived key of type "; + Object.keys(derivedKeyType.algorithm).forEach(function(prop) { + testName += prop + ": " + derivedKeyType.algorithm[prop] + " "; + }); + testName += " using " + passwordSize + " password, " + saltSize + " salt, " + nonDigestHash + ", with " + iterations + " iterations"; + + promise_test(function(test) { + return subtle.deriveKey({name: "PBKDF2", salt: salts[saltSize], hash: nonDigestHash, iterations: parseInt(iterations)}, baseKeys[passwordSize], derivedKeyType.algorithm, true, derivedKeyType.usages) + .then(function(derivation) { + assert_unreached("non-digest algorithm should have thrown an NotSupportedError"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "derivekey with non-digest algorithm correctly threw NotSupportedError: " + err.message); + }); + }, testName); + }); + + }); + + }); + }); + + done(); + }, function(err) { + test(function(test) { + assert_unreached("setUpBaseKeys failed with error '" + err.message + "'"); + }, "setUpBaseKeys"); + done(); + }); + + // Deriving bits and keys requires starting with a base key, which is created + // by importing a password. setUpBaseKeys returns a promise that yields the + // necessary base keys. + function setUpBaseKeys(passwords) { + var promises = []; + + var baseKeys = {}; + var noBits = {}; + var noKey = {}; + var wrongKey = null; + + Object.keys(passwords).forEach(function(passwordSize) { + var promise = subtle.importKey("raw", passwords[passwordSize], {name: "PBKDF2"}, false, ["deriveKey", "deriveBits"]) + .then(function(baseKey) { + baseKeys[passwordSize] = baseKey; + }, function(err) { + baseKeys[passwordSize] = null; + }); + promises.push(promise); + + promise = subtle.importKey("raw", passwords[passwordSize], {name: "PBKDF2"}, false, ["deriveBits"]) + .then(function(baseKey) { + noKey[passwordSize] = baseKey; + }, function(err) { + noKey[passwordSize] = null; + }); + promises.push(promise); + + promise = subtle.importKey("raw", passwords[passwordSize], {name: "PBKDF2"}, false, ["deriveKey"]) + .then(function(baseKey) { + noBits[passwordSize] = baseKey; + }, function(err) { + noBits[passwordSize] = null; + }); + promises.push(promise); + }); + + var promise = subtle.generateKey({name: "ECDH", namedCurve: "P-256"}, false, ["deriveKey", "deriveBits"]) + .then(function(baseKey) { + wrongKey = baseKey.privateKey; + }, function(err) { + wrongKey = null; + }); + promises.push(promise); + + + return Promise.all(promises).then(function() { + return {baseKeys: baseKeys, noBits: noBits, noKey: noKey, wrongKey: wrongKey}; + }); + } + + function equalBuffers(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + + var aBytes = new Uint8Array(a); + var bBytes = new Uint8Array(b); + + for (var i=0; in + + // Variations to test: + // - empty, short, and fairly long password + // - empty, short, and fairly long salt + // - SHA-1, SHA-256, SHA-384, SHA-512 hash + // - 1, 1000, and 100000 million iterations + + // Test cases to generate: 3 * 3 * 4 * 3 = 108 + + // Error conditions to test: + // - length null (OperationError) + // - length not a multiple of 8 (OperationError) + // - illegal name for hash algorithm (NotSupportedError) + // - legal algorithm name but not digest one (e.g., AES-CBC) (NotSupportedError) + // - baseKey usages missing "deriveBits" (InvalidAccessError) + // - baseKey algorithm does not match PBKDF2 (InvalidAccessError) + // - 0 iterations + + var derivedKeyTypes = [ + {algorithm: {name: "AES-CBC", length: 128}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CBC", length: 192}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CBC", length: 256}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CTR", length: 128}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CTR", length: 192}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CTR", length: 256}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-GCM", length: 128}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-GCM", length: 192}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-GCM", length: 256}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-KW", length: 128}, usages: ["wrapKey", "unwrapKey"]}, + {algorithm: {name: "AES-KW", length: 192}, usages: ["wrapKey", "unwrapKey"]}, + {algorithm: {name: "AES-KW", length: 256}, usages: ["wrapKey", "unwrapKey"]}, + {algorithm: {name: "HMAC", hash: "SHA-1", length: 256}, usages: ["sign", "verify"]}, + {algorithm: {name: "HMAC", hash: "SHA-256", length: 256}, usages: ["sign", "verify"]}, + {algorithm: {name: "HMAC", hash: "SHA-384", length: 256}, usages: ["sign", "verify"]}, + {algorithm: {name: "HMAC", hash: "SHA-512", length: 256}, usages: ["sign", "verify"]} + ]; + + var passwords = { + "short": new Uint8Array([80, 64, 115, 115, 119, 48, 114, 100]), + "long": new Uint8Array([85, 115, 101, 114, 115, 32, 115, 104, 111, 117, 108, 100, 32, 112, 105, 99, 107, 32, 108, 111, 110, 103, 32, 112, 97, 115, 115, 112, 104, 114, 97, 115, 101, 115, 32, 40, 110, 111, 116, 32, 117, 115, 101, 32, 115, 104, 111, 114, 116, 32, 112, 97, 115, 115, 119, 111, 114, 100, 115, 41, 33]), + "empty": new Uint8Array([]) + }; + + var salts = { + "short": new Uint8Array([78, 97, 67, 108]), + "long": new Uint8Array([83, 111, 100, 105, 117, 109, 32, 67, 104, 108, 111, 114, 105, 100, 101, 32, 99, 111, 109, 112, 111, 117, 110, 100]), + "empty": new Uint8Array([]) + }; + + var derivations = { + "short": { + "short": { + "SHA-384": { + "1000": new Uint8Array([170, 236, 90, 151, 109, 77, 53, 203, 32, 36, 72, 111, 201, 249, 187, 154, 163, 234, 231, 206, 242, 188, 230, 38, 100, 181, 179, 117, 28, 245, 15, 241]), + "1": new Uint8Array([128, 205, 15, 21, 54, 67, 102, 167, 37, 81, 195, 121, 117, 247, 182, 55, 186, 137, 194, 155, 70, 57, 236, 114, 15, 105, 167, 13, 187, 237, 81, 92]), + "100000": new Uint8Array([111, 94, 163, 198, 198, 245, 228, 131, 52, 103, 180, 124, 58, 103, 30, 101, 113, 78, 135, 7, 27, 209, 227, 109, 113, 111, 132, 107, 92, 210, 137, 128]) + }, + "SHA-512": { + "1000": new Uint8Array([134, 92, 89, 69, 225, 31, 91, 243, 221, 240, 2, 231, 203, 23, 72, 246, 34, 77, 38, 113, 232, 6, 218, 212, 170, 240, 144, 160, 67, 103, 218, 41]), + "1": new Uint8Array([105, 244, 213, 206, 245, 199, 216, 186, 147, 142, 136, 3, 136, 200, 246, 59, 107, 36, 72, 178, 98, 109, 19, 67, 252, 92, 182, 139, 189, 127, 39, 178]), + "100000": new Uint8Array([72, 59, 167, 242, 226, 254, 56, 44, 246, 29, 32, 178, 152, 18, 226, 212, 150, 16, 166, 0, 65, 174, 64, 236, 249, 252, 126, 241, 56, 233, 56, 118]) + }, + "SHA-1": { + "1000": new Uint8Array([83, 136, 234, 94, 98, 225, 181, 87, 152, 26, 190, 92, 228, 19, 33, 39, 88, 170, 106, 157, 44, 91, 240, 140, 1, 157, 69, 157, 186, 102, 107, 144]), + "1": new Uint8Array([70, 36, 219, 210, 19, 115, 238, 86, 89, 193, 37, 177, 132, 238, 218, 162, 106, 51, 183, 124, 161, 19, 20, 185, 240, 201, 218, 225, 228, 78, 155, 4]), + "100000": new Uint8Array([245, 143, 67, 95, 188, 92, 5, 134, 92, 145, 79, 217, 114, 16, 138, 9, 69, 125, 95, 154, 72, 241, 78, 117, 228, 204, 2, 217, 137, 131, 3, 138]) + }, + "SHA-256": { + "1000": new Uint8Array([78, 108, 165, 121, 87, 67, 155, 227, 167, 83, 112, 66, 66, 37, 226, 33, 29, 85, 240, 90, 240, 5, 97, 223, 63, 62, 254, 233, 17, 107, 195, 76]), + "1": new Uint8Array([198, 188, 85, 164, 4, 173, 206, 163, 106, 26, 181, 103, 152, 8, 94, 10, 175, 105, 127, 107, 178, 193, 106, 80, 114, 248, 56, 241, 125, 254, 108, 182]), + "100000": new Uint8Array([171, 37, 121, 101, 152, 231, 75, 41, 195, 36, 245, 186, 77, 144, 234, 125, 200, 159, 198, 137, 16, 65, 180, 213, 108, 148, 21, 101, 5, 247, 34, 192]) + } + }, + "long": { + "SHA-384": { + "1000": new Uint8Array([163, 16, 239, 60, 107, 58, 149, 230, 216, 202, 102, 68, 227, 220, 253, 136, 34, 42, 89, 254, 142, 0, 197, 45, 106, 18, 99, 29, 130, 193, 210, 75]), + "1": new Uint8Array([104, 7, 52, 108, 197, 62, 222, 209, 203, 150, 74, 114, 98, 133, 137, 166, 189, 72, 53, 89, 144, 191, 223, 231, 70, 81, 9, 113, 2, 7, 5, 157]), + "100000": new Uint8Array([44, 140, 102, 116, 200, 121, 207, 24, 80, 188, 155, 127, 189, 204, 110, 167, 171, 176, 161, 82, 33, 150, 168, 102, 135, 83, 5, 222, 165, 116, 134, 243]) + }, + "SHA-512": { + "1000": new Uint8Array([156, 23, 254, 150, 137, 94, 173, 191, 209, 204, 9, 95, 193, 187, 131, 79, 40, 229, 204, 201, 236, 150, 202, 129, 76, 255, 148, 26, 75, 244, 7, 39]), + "1": new Uint8Array([87, 119, 2, 122, 255, 64, 81, 251, 155, 67, 193, 241, 239, 4, 99, 189, 103, 117, 17, 117, 212, 40, 161, 61, 163, 218, 132, 90, 89, 19, 50, 205]), + "100000": new Uint8Array([180, 121, 201, 113, 92, 66, 22, 56, 220, 224, 167, 5, 252, 11, 123, 167, 213, 111, 163, 6, 49, 136, 6, 53, 128, 224, 112, 223, 241, 219, 73, 124]) + }, + "SHA-1": { + "1000": new Uint8Array([137, 211, 178, 123, 95, 110, 138, 240, 21, 242, 248, 124, 243, 104, 161, 67, 138, 32, 108, 78, 207, 95, 230, 129, 252, 59, 249, 76, 86, 33, 62, 246]), + "1": new Uint8Array([87, 111, 124, 22, 88, 37, 190, 249, 239, 20, 180, 188, 44, 130, 70, 157, 30, 64, 143, 248, 231, 186, 48, 102, 148, 121, 127, 158, 69, 183, 102, 237]), + "100000": new Uint8Array([30, 57, 232, 191, 102, 118, 252, 211, 21, 102, 85, 69, 122, 250, 20, 190, 231, 113, 219, 203, 252, 208, 114, 65, 199, 206, 226, 9, 167, 203, 31, 233]) + }, + "SHA-256": { + "1000": new Uint8Array([177, 167, 183, 220, 32, 223, 23, 74, 74, 14, 65, 13, 191, 175, 3, 180, 195, 117, 196, 80, 168, 157, 122, 158, 211, 73, 180, 229, 46, 100, 223, 216]), + "1": new Uint8Array([18, 185, 15, 89, 79, 9, 8, 207, 145, 45, 101, 92, 148, 143, 156, 42, 30, 171, 133, 87, 101, 188, 18, 120, 94, 241, 138, 160, 43, 142, 126, 220]), + "100000": new Uint8Array([212, 89, 77, 138, 27, 89, 82, 10, 72, 135, 137, 34, 166, 93, 102, 61, 40, 246, 165, 250, 73, 233, 49, 211, 0, 216, 249, 186, 249, 61, 10, 235]) + } + }, + "empty": { + "SHA-384": { + "1000": new Uint8Array([174, 181, 249, 125, 102, 39, 238, 188, 222, 107, 19, 154, 0, 137, 85, 0, 48, 247, 64, 28, 103, 224, 28, 5, 122, 51, 56, 23, 94, 63, 58, 23]), + "1": new Uint8Array([79, 16, 137, 192, 30, 67, 139, 222, 100, 154, 55, 159, 164, 24, 251, 195, 184, 86, 37, 135, 114, 223, 233, 17, 128, 111, 155, 208, 128, 159, 188, 126]), + "100000": new Uint8Array([215, 104, 125, 246, 199, 129, 220, 136, 214, 78, 249, 203, 175, 149, 211, 213, 209, 21, 95, 102, 178, 48, 35, 158, 110, 129, 193, 85, 12, 136, 64, 207]) + }, + "SHA-512": { + "1000": new Uint8Array([181, 172, 114, 11, 122, 190, 8, 50, 252, 81, 163, 27, 30, 197, 103, 59, 235, 30, 65, 132, 10, 223, 211, 214, 6, 232, 99, 143, 64, 6, 235, 72]), + "1": new Uint8Array([143, 123, 125, 69, 156, 117, 47, 100, 191, 18, 190, 98, 91, 101, 212, 150, 172, 36, 234, 54, 81, 107, 22, 142, 22, 251, 2, 104, 69, 180, 232, 46]), + "100000": new Uint8Array([186, 26, 15, 54, 186, 215, 113, 82, 101, 100, 5, 30, 185, 202, 32, 125, 161, 155, 98, 229, 55, 98, 52, 153, 118, 169, 163, 209, 176, 239, 126, 32]) + }, + "SHA-1": { + "1000": new Uint8Array([115, 111, 60, 61, 110, 188, 194, 167, 185, 112, 64, 62, 38, 150, 192, 235, 76, 209, 119, 15, 85, 241, 150, 252, 112, 137, 230, 102, 193, 31, 119, 218]), + "1": new Uint8Array([192, 207, 251, 12, 229, 219, 53, 31, 170, 36, 218, 213, 144, 37, 131, 207, 195, 10, 159, 84, 217, 170, 105, 145, 254, 130, 29, 3, 18, 33, 39, 233]), + "100000": new Uint8Array([28, 80, 149, 172, 154, 123, 212, 16, 239, 15, 114, 201, 147, 236, 169, 27, 176, 229, 113, 233, 178, 251, 171, 112, 79, 140, 19, 17, 145, 250, 209, 108]) + }, + "SHA-256": { + "1000": new Uint8Array([185, 210, 242, 33, 123, 78, 229, 168, 191, 3, 69, 243, 107, 44, 152, 135, 51, 245, 3, 169, 117, 223, 234, 199, 183, 19, 95, 84, 165, 242, 153, 113]), + "1": new Uint8Array([1, 158, 84, 171, 66, 240, 4, 133, 211, 170, 27, 38, 252, 222, 33, 174, 95, 82, 203, 15, 9, 96, 255, 201, 118, 127, 37, 198, 94, 45, 178, 249]), + "100000": new Uint8Array([167, 162, 134, 152, 41, 121, 120, 7, 179, 229, 118, 193, 120, 120, 180, 102, 68, 158, 137, 230, 4, 71, 213, 65, 119, 90, 150, 235, 124, 26, 93, 237]) + } + } + }, + "long": { + "short": { + "SHA-384": { + "1000": new Uint8Array([250, 164, 66, 251, 171, 244, 5, 140, 198, 83, 104, 181, 61, 126, 197, 17, 60, 9, 234, 126, 94, 55, 67, 49, 47, 75, 235, 237, 217, 128, 186, 55]), + "1": new Uint8Array([94, 222, 136, 54, 253, 171, 238, 197, 211, 115, 59, 67, 74, 186, 196, 67, 212, 21, 25, 59, 89, 158, 9, 38, 25, 59, 0, 15, 64, 106, 90, 125]), + "100000": new Uint8Array([246, 42, 230, 199, 135, 27, 24, 26, 167, 18, 50, 245, 235, 136, 55, 36, 152, 239, 50, 172, 10, 125, 113, 81, 25, 232, 240, 82, 235, 16, 45, 41]) + }, + "SHA-512": { + "1000": new Uint8Array([240, 146, 143, 80, 161, 85, 242, 106, 140, 156, 27, 199, 243, 181, 203, 83, 28, 83, 168, 245, 16, 64, 201, 206, 95, 199, 157, 67, 15, 240, 192, 244]), + "1": new Uint8Array([62, 156, 18, 179, 246, 223, 182, 68, 21, 148, 236, 112, 99, 252, 169, 98, 255, 218, 16, 182, 207, 48, 184, 152, 163, 30, 249, 241, 48, 107, 17, 25]), + "100000": new Uint8Array([151, 74, 207, 187, 15, 15, 32, 200, 30, 201, 40, 41, 243, 140, 61, 175, 8, 106, 125, 245, 139, 145, 43, 133, 109, 31, 94, 204, 147, 85, 239, 27]) + }, + "SHA-1": { + "1000": new Uint8Array([83, 180, 33, 97, 19, 78, 21, 200, 113, 171, 215, 26, 186, 19, 144, 208, 31, 76, 106, 148, 12, 170, 245, 193, 121, 37, 141, 143, 27, 29, 104, 11]), + "1": new Uint8Array([138, 231, 47, 148, 230, 252, 213, 79, 203, 252, 166, 98, 0, 162, 17, 165, 27, 47, 132, 103, 135, 210, 11, 104, 8, 190, 223, 21, 108, 228, 108, 160]), + "100000": new Uint8Array([167, 253, 164, 199, 157, 211, 186, 26, 135, 95, 101, 233, 36, 139, 33, 8, 153, 202, 8, 20, 174, 56, 153, 93, 140, 229, 165, 53, 96, 203, 172, 49]) + }, + "SHA-256": { + "1000": new Uint8Array([238, 235, 119, 20, 66, 10, 0, 177, 138, 206, 194, 181, 151, 157, 29, 166, 19, 115, 32, 43, 127, 139, 167, 27, 8, 98, 147, 170, 184, 89, 224, 160]), + "1": new Uint8Array([255, 161, 233, 167, 39, 169, 44, 39, 174, 111, 116, 177, 199, 151, 143, 158, 26, 248, 96, 225, 6, 55, 99, 64, 172, 67, 217, 105, 209, 54, 64, 91]), + "100000": new Uint8Array([222, 172, 112, 203, 227, 241, 114, 14, 53, 59, 78, 128, 22, 221, 181, 148, 117, 239, 183, 11, 106, 35, 133, 231, 53, 210, 214, 234, 109, 98, 74, 77]) + } + }, + "long": { + "SHA-384": { + "1000": new Uint8Array([53, 101, 133, 81, 240, 236, 19, 57, 138, 123, 69, 224, 38, 28, 253, 101, 76, 30, 82, 65, 30, 110, 69, 125, 238, 104, 244, 174, 171, 233, 37, 167]), + "1": new Uint8Array([207, 85, 66, 44, 239, 110, 27, 196, 158, 109, 8, 43, 34, 115, 212, 128, 232, 242, 232, 130, 45, 173, 209, 70, 156, 42, 50, 217, 101, 125, 18, 241]), + "100000": new Uint8Array([26, 186, 181, 241, 228, 97, 223, 55, 139, 136, 192, 162, 43, 231, 110, 242, 241, 98, 125, 247, 74, 199, 203, 251, 132, 189, 204, 179, 84, 188, 136, 137]) + }, + "SHA-512": { + "1000": new Uint8Array([67, 225, 32, 36, 196, 211, 84, 114, 127, 126, 88, 132, 44, 203, 96, 51, 161, 97, 214, 13, 197, 174, 81, 111, 7, 110, 74, 88, 161, 136, 13, 56]), + "1": new Uint8Array([222, 74, 251, 192, 173, 211, 228, 211, 47, 75, 198, 225, 34, 168, 138, 228, 74, 43, 60, 207, 1, 72, 231, 118, 43, 172, 5, 196, 62, 148, 239, 127]), + "100000": new Uint8Array([249, 169, 35, 132, 164, 234, 223, 195, 86, 6, 73, 179, 127, 182, 118, 232, 60, 69, 60, 187, 217, 159, 128, 187, 166, 240, 161, 14, 189, 21, 11, 82]) + }, + "SHA-1": { + "1000": new Uint8Array([110, 144, 200, 110, 224, 123, 135, 62, 150, 80, 113, 2, 86, 115, 255, 5, 66, 159, 103, 140, 48, 249, 27, 55, 225, 226, 218, 81, 32, 54, 211, 32]), + "1": new Uint8Array([29, 16, 78, 165, 210, 53, 0, 106, 18, 168, 15, 113, 184, 14, 229, 40, 4, 139, 100, 204, 26, 122, 15, 48, 247, 223, 75, 162, 107, 131, 32, 199]), + "100000": new Uint8Array([20, 16, 48, 118, 59, 249, 131, 200, 86, 77, 93, 76, 147, 95, 227, 202, 53, 73, 96, 129, 89, 172, 25, 52, 193, 89, 144, 64, 102, 140, 35, 99]) + }, + "SHA-256": { + "1000": new Uint8Array([63, 213, 135, 201, 75, 169, 70, 184, 185, 220, 205, 221, 42, 91, 116, 246, 119, 141, 79, 97, 230, 145, 248, 58, 196, 122, 47, 169, 88, 11, 253, 248]), + "1": new Uint8Array([253, 92, 174, 184, 179, 171, 229, 137, 188, 21, 156, 78, 81, 248, 0, 87, 14, 116, 246, 67, 151, 166, 197, 238, 19, 29, 254, 217, 63, 5, 17, 170]), + "100000": new Uint8Array([17, 153, 45, 139, 129, 51, 17, 36, 76, 84, 75, 98, 41, 41, 69, 226, 8, 212, 3, 206, 189, 107, 149, 82, 161, 165, 98, 6, 93, 153, 88, 234]) + } + }, + "empty": { + "SHA-384": { + "1000": new Uint8Array([249, 202, 20, 139, 12, 4, 24, 144, 191, 248, 131, 29, 182, 23, 71, 25, 126, 148, 206, 104, 241, 144, 237, 242, 105, 105, 75, 77, 100, 72, 97, 202]), + "1": new Uint8Array([73, 171, 63, 159, 136, 47, 219, 158, 82, 139, 77, 159, 27, 62, 140, 113, 210, 99, 154, 191, 23, 1, 213, 110, 185, 155, 213, 18, 1, 228, 32, 255]), + "100000": new Uint8Array([23, 73, 223, 205, 119, 229, 37, 133, 25, 234, 34, 49, 186, 44, 214, 84, 59, 7, 51, 57, 172, 155, 21, 69, 187, 100, 49, 83, 250, 246, 209, 123]) + }, + "SHA-512": { + "1000": new Uint8Array([69, 122, 121, 85, 235, 236, 236, 113, 165, 30, 251, 98, 55, 229, 177, 214, 47, 77, 234, 181, 201, 61, 123, 61, 17, 209, 231, 15, 175, 250, 65, 126]), + "1": new Uint8Array([209, 191, 161, 166, 184, 169, 119, 131, 159, 140, 63, 157, 82, 221, 2, 16, 78, 32, 41, 192, 235, 42, 98, 8, 204, 64, 136, 22, 231, 118, 138, 140]), + "100000": new Uint8Array([232, 5, 172, 156, 193, 216, 65, 44, 66, 68, 109, 35, 125, 27, 80, 79, 149, 64, 179, 98, 189, 27, 117, 228, 81, 83, 30, 133, 62, 36, 117, 61]) + }, + "SHA-1": { + "1000": new Uint8Array([231, 55, 93, 229, 3, 103, 102, 196, 12, 184, 95, 67, 181, 63, 206, 79, 250, 64, 42, 182, 190, 53, 113, 0, 126, 245, 213, 84, 83, 253, 127, 10]), + "1": new Uint8Array([164, 106, 98, 152, 109, 156, 57, 9, 244, 16, 20, 221, 114, 207, 227, 74, 38, 18, 71, 133, 77, 115, 18, 207, 79, 190, 173, 96, 185, 182, 158, 221]), + "100000": new Uint8Array([122, 64, 61, 154, 19, 174, 216, 22, 78, 156, 7, 44, 84, 84, 98, 37, 31, 217, 66, 241, 115, 106, 107, 240, 60, 225, 200, 131, 48, 4, 142, 4]) + }, + "SHA-256": { + "1000": new Uint8Array([126, 102, 200, 75, 234, 136, 143, 146, 195, 72, 217, 20, 85, 133, 24, 108, 174, 71, 43, 18, 251, 167, 240, 173, 40, 23, 149, 117, 193, 170, 129, 90]), + "1": new Uint8Array([79, 81, 12, 81, 129, 172, 92, 44, 95, 212, 189, 20, 31, 151, 18, 73, 91, 236, 162, 121, 98, 71, 66, 180, 214, 211, 13, 8, 185, 108, 10, 105]), + "100000": new Uint8Array([95, 26, 106, 196, 165, 109, 151, 150, 167, 48, 154, 120, 218, 170, 249, 24, 186, 218, 245, 237, 30, 236, 195, 240, 184, 163, 164, 76, 61, 56, 214, 84]) + } + } + }, + "empty": { + "short": { + "SHA-384": { + "1000": new Uint8Array([127, 247, 149, 74, 237, 223, 65, 121, 95, 200, 48, 6, 102, 120, 109, 73, 116, 38, 154, 169, 28, 199, 233, 56, 17, 201, 83, 51, 29, 86, 214, 9]), + "1": new Uint8Array([233, 240, 218, 30, 151, 223, 164, 85, 248, 88, 206, 107, 154, 241, 236, 192, 41, 159, 18, 95, 241, 168, 71, 235, 93, 73, 85, 134, 111, 67, 230, 4]), + "100000": new Uint8Array([28, 115, 19, 43, 106, 85, 233, 217, 222, 44, 219, 254, 31, 85, 191, 10, 181, 159, 217, 31, 120, 241, 9, 197, 0, 150, 3, 139, 133, 87, 177, 71]) + }, + "SHA-512": { + "1000": new Uint8Array([213, 97, 196, 200, 78, 156, 96, 186, 71, 82, 162, 211, 131, 191, 85, 239, 246, 67, 252, 158, 69, 34, 82, 214, 130, 30, 57, 68, 147, 80, 207, 114]), + "1": new Uint8Array([231, 226, 180, 31, 72, 135, 66, 27, 203, 118, 78, 180, 165, 111, 99, 210, 80, 46, 51, 199, 100, 251, 223, 96, 98, 106, 212, 46, 217, 103, 35, 66]), + "100000": new Uint8Array([239, 208, 7, 82, 188, 159, 250, 251, 90, 57, 157, 209, 213, 131, 78, 141, 44, 43, 103, 110, 205, 75, 32, 99, 251, 31, 229, 129, 208, 241, 56, 11]) + }, + "SHA-1": { + "1000": new Uint8Array([114, 201, 43, 189, 61, 218, 180, 120, 158, 136, 228, 42, 209, 205, 168, 60, 192, 114, 158, 108, 181, 16, 106, 87, 126, 80, 213, 207, 97, 120, 36, 129]), + "1": new Uint8Array([166, 103, 218, 71, 184, 248, 87, 183, 198, 95, 112, 166, 200, 231, 160, 108, 224, 210, 82, 17, 162, 182, 235, 175, 88, 220, 170, 242, 104, 180, 107, 29]), + "100000": new Uint8Array([6, 225, 158, 27, 131, 230, 72, 11, 21, 84, 223, 43, 49, 162, 201, 45, 27, 252, 249, 188, 27, 219, 200, 117, 31, 248, 104, 91, 222, 239, 125, 201]) + }, + "SHA-256": { + "1000": new Uint8Array([40, 53, 243, 237, 83, 86, 84, 32, 201, 9, 81, 80, 155, 12, 17, 115, 182, 69, 23, 79, 21, 70, 171, 58, 195, 230, 200, 92, 180, 113, 181, 59]), + "1": new Uint8Array([45, 219, 73, 36, 62, 179, 181, 145, 44, 178, 96, 205, 216, 127, 176, 78, 240, 209, 17, 191, 164, 77, 64, 164, 94, 2, 168, 165, 195, 193, 81, 141]), + "100000": new Uint8Array([128, 174, 217, 5, 202, 50, 174, 11, 178, 169, 216, 245, 50, 240, 72, 160, 230, 114, 70, 62, 239, 159, 131, 223, 167, 216, 139, 202, 114, 101, 83, 234]) + } + }, + "long": { + "SHA-384": { + "1000": new Uint8Array([139, 184, 156, 247, 25, 114, 254, 90, 204, 22, 253, 197, 248, 207, 253, 44, 46, 113, 120, 192, 134, 179, 187, 230, 28, 193, 49, 70, 25, 19, 89, 88]), + "1": new Uint8Array([123, 11, 204, 168, 29, 214, 55, 163, 179, 57, 134, 102, 97, 151, 22, 197, 242, 177, 244, 165, 194, 78, 133, 193, 138, 153, 85, 85, 158, 77, 118, 146]), + "100000": new Uint8Array([38, 198, 168, 174, 75, 209, 251, 231, 21, 174, 71, 142, 255, 243, 236, 174, 131, 175, 166, 23, 237, 53, 189, 74, 63, 99, 195, 218, 118, 164, 45, 34]) + }, + "SHA-512": { + "1000": new Uint8Array([92, 172, 193, 108, 223, 190, 5, 44, 253, 115, 169, 137, 27, 140, 14, 120, 177, 155, 46, 7, 234, 226, 66, 61, 72, 254, 213, 224, 138, 168, 73, 75]), + "1": new Uint8Array([187, 115, 248, 22, 138, 143, 57, 29, 61, 84, 202, 137, 47, 183, 43, 142, 96, 53, 227, 127, 137, 30, 90, 112, 73, 27, 148, 220, 5, 81, 11, 196]), + "100000": new Uint8Array([135, 253, 252, 41, 51, 146, 203, 243, 62, 204, 155, 81, 65, 162, 254, 250, 116, 209, 80, 73, 151, 86, 134, 60, 72, 76, 10, 120, 182, 39, 77, 127]) + }, + "SHA-1": { + "1000": new Uint8Array([204, 87, 72, 236, 196, 18, 136, 160, 225, 51, 104, 84, 58, 170, 46, 246, 44, 151, 186, 117, 24, 250, 136, 246, 225, 28, 53, 118, 63, 201, 48, 180]), + "1": new Uint8Array([31, 70, 180, 12, 242, 251, 61, 196, 26, 61, 156, 237, 136, 151, 184, 97, 5, 3, 104, 16, 226, 191, 172, 112, 64, 129, 75, 214, 93, 66, 141, 103]), + "100000": new Uint8Array([51, 226, 153, 59, 244, 114, 157, 201, 147, 255, 246, 110, 105, 204, 85, 119, 113, 53, 235, 250, 188, 229, 51, 87, 91, 206, 74, 150, 100, 90, 116, 44]) + }, + "SHA-256": { + "1000": new Uint8Array([19, 83, 247, 69, 130, 55, 171, 51, 46, 224, 82, 226, 159, 130, 154, 42, 185, 14, 114, 99, 14, 161, 4, 147, 180, 238, 207, 251, 159, 248, 158, 29]), + "1": new Uint8Array([97, 201, 53, 196, 98, 195, 50, 28, 137, 102, 53, 69, 209, 58, 79, 107, 82, 181, 25, 28, 251, 116, 121, 229, 141, 207, 230, 68, 77, 67, 16, 108]), + "100000": new Uint8Array([121, 186, 248, 14, 197, 130, 146, 5, 56, 128, 30, 157, 146, 156, 224, 112, 132, 39, 121, 135, 72, 141, 115, 58, 2, 104, 82, 196, 82, 240, 111, 180]) + } + }, + "empty": { + "SHA-384": { + "1000": new Uint8Array([156, 191, 231, 45, 25, 77, 163, 78, 23, 200, 33, 221, 21, 105, 239, 80, 168, 110, 180, 216, 147, 89, 23, 118, 173, 198, 165, 194, 30, 0, 49, 207]), + "1": new Uint8Array([75, 176, 66, 165, 194, 140, 238, 111, 102, 249, 145, 199, 23, 253, 119, 2, 103, 120, 126, 43, 179, 3, 30, 174, 39, 13, 135, 214, 58, 217, 149, 52]), + "100000": new Uint8Array([237, 107, 215, 40, 37, 103, 171, 228, 141, 84, 45, 6, 125, 9, 244, 4, 189, 4, 74, 226, 206, 254, 17, 218, 204, 83, 28, 71, 100, 205, 53, 205]) + }, + "SHA-512": { + "1000": new Uint8Array([203, 147, 9, 108, 58, 2, 190, 235, 28, 95, 172, 54, 118, 92, 144, 17, 254, 153, 248, 216, 234, 98, 54, 96, 72, 252, 152, 203, 152, 223, 234, 143]), + "1": new Uint8Array([109, 46, 203, 187, 251, 46, 109, 205, 112, 86, 250, 249, 175, 106, 160, 110, 174, 89, 67, 145, 219, 152, 50, 121, 166, 191, 39, 224, 235, 34, 134, 20]), + "100000": new Uint8Array([137, 225, 98, 84, 235, 173, 92, 186, 114, 224, 174, 190, 22, 20, 199, 249, 183, 149, 167, 80, 95, 38, 55, 32, 108, 225, 10, 52, 73, 162, 184, 187]) + }, + "SHA-1": { + "1000": new Uint8Array([110, 64, 145, 10, 192, 46, 200, 156, 235, 185, 216, 152, 177, 58, 9, 209, 205, 122, 223, 111, 140, 192, 140, 196, 115, 48, 44, 137, 115, 170, 46, 25]), + "1": new Uint8Array([30, 67, 122, 28, 121, 215, 91, 230, 30, 145, 20, 29, 174, 32, 175, 252, 72, 146, 204, 153, 171, 204, 63, 231, 83, 136, 123, 204, 200, 146, 1, 118]), + "100000": new Uint8Array([169, 225, 190, 187, 54, 188, 38, 215, 201, 151, 213, 72, 60, 188, 141, 228, 164, 25, 209, 231, 6, 87, 19, 66, 99, 37, 134, 236, 51, 10, 114, 144]) + }, + "SHA-256": { + "1000": new Uint8Array([79, 197, 138, 33, 193, 0, 206, 24, 53, 184, 249, 153, 29, 115, 139, 86, 150, 93, 20, 178, 78, 23, 97, 251, 223, 252, 105, 172, 94, 11, 102, 122]), + "1": new Uint8Array([247, 206, 11, 101, 61, 45, 114, 164, 16, 140, 245, 171, 233, 18, 255, 221, 119, 118, 22, 219, 187, 39, 167, 14, 130, 4, 243, 174, 45, 15, 111, 173]), + "100000": new Uint8Array([100, 168, 104, 212, 178, 58, 246, 150, 211, 115, 77, 11, 129, 77, 4, 205, 209, 172, 40, 1, 40, 233, 118, 83, 160, 95, 50, 180, 156, 19, 162, 154]) + } + } + } + }; + + return {passwords: passwords, salts: salts, derivations: derivations, derivedKeyTypes: derivedKeyTypes}; +} diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html new file mode 100644 index 00000000000..a1890382133 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits.html @@ -0,0 +1,17 @@ + + + +WebCryptoAPI: deriveBits() Using ECDH + + + + + + + +

    deriveBits Tests for ECDH

    + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html new file mode 100644 index 00000000000..b303295f4c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys.html @@ -0,0 +1,17 @@ + + + +WebCryptoAPI:deriveKey() Using ECDH + + + + + + + +

    deriveKey Tests for ECDH

    + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.html new file mode 100644 index 00000000000..23143bdbc85 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.html @@ -0,0 +1,19 @@ + + + +WebCryptoAPI: deriveBits() and deriveKey() Using HKDF + + + + + + + + + +

    deriveBits and deriveKey Tests for HKDF

    + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html new file mode 100644 index 00000000000..0658b1a2fd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2.html @@ -0,0 +1,19 @@ + + + +WebCryptoAPI: deriveBits() and deriveKey() Using PBKDF2 + + + + + + + + + +

    deriveBits and deriveKey Tests for PBKDF2

    + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.js b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.js new file mode 100644 index 00000000000..277851d0101 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/ec_importKey.js @@ -0,0 +1,279 @@ +// Test importKey and exportKey for EC algorithms. Only "happy paths" are +// currently tested - those where the operation should succeed. + +function run_test() { + var subtle = crypto.subtle; + + var curves = ['P-256', 'P-384', 'P-521']; + + var keyData = { + "P-521": { + spki: new Uint8Array([48, 129, 155, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 35, 3, 129, 134, 0, 4, 1, 86, 244, 121, 248, 223, 30, 32, 167, 255, 192, 76, 228, 32, 195, 225, 84, 174, 37, 25, 150, 190, 228, 47, 3, 75, 132, 212, 27, 116, 63, 52, 228, 95, 49, 27, 129, 58, 156, 222, 200, 205, 165, 155, 187, 189, 49, 212, 96, 179, 41, 37, 33, 231, 193, 183, 34, 229, 102, 124, 3, 219, 47, 174, 117, 63, 1, 80, 23, 54, 207, 226, 71, 57, 67, 32, 216, 228, 175, 194, 253, 57, 181, 169, 51, 16, 97, 184, 30, 34, 65, 40, 43, 158, 23, 137, 24, 34, 181, 183, 158, 5, 47, 69, 151, 181, 150, 67, 253, 57, 55, 156, 81, 189, 81, 37, 196, 244, 139, 195, 240, 37, 206, 60, 211, 105, 83, 40, 108, 203, 56, 251]), + pkcs8: new Uint8Array([48, 129, 238, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 35, 4, 129, 214, 48, 129, 211, 2, 1, 1, 4, 66, 0, 244, 8, 117, 131, 104, 186, 147, 15, 48, 247, 106, 224, 84, 254, 92, 210, 206, 127, 218, 44, 159, 118, 166, 212, 54, 207, 117, 214, 108, 68, 11, 254, 99, 49, 199, 193, 114, 161, 36, 120, 25, 60, 130, 81, 72, 123, 201, 18, 99, 250, 80, 33, 127, 133, 255, 99, 111, 89, 205, 84, 110, 58, 180, 131, 180, 161, 129, 137, 3, 129, 134, 0, 4, 1, 86, 244, 121, 248, 223, 30, 32, 167, 255, 192, 76, 228, 32, 195, 225, 84, 174, 37, 25, 150, 190, 228, 47, 3, 75, 132, 212, 27, 116, 63, 52, 228, 95, 49, 27, 129, 58, 156, 222, 200, 205, 165, 155, 187, 189, 49, 212, 96, 179, 41, 37, 33, 231, 193, 183, 34, 229, 102, 124, 3, 219, 47, 174, 117, 63, 1, 80, 23, 54, 207, 226, 71, 57, 67, 32, 216, 228, 175, 194, 253, 57, 181, 169, 51, 16, 97, 184, 30, 34, 65, 40, 43, 158, 23, 137, 24, 34, 181, 183, 158, 5, 47, 69, 151, 181, 150, 67, 253, 57, 55, 156, 81, 189, 81, 37, 196, 244, 139, 195, 240, 37, 206, 60, 211, 105, 83, 40, 108, 203, 56, 251]), + jwk: { + kty: "EC", + crv: "P-521", + x: "AVb0efjfHiCn_8BM5CDD4VSuJRmWvuQvA0uE1Bt0PzTkXzEbgTqc3sjNpZu7vTHUYLMpJSHnwbci5WZ8A9svrnU_", + y: "AVAXNs_iRzlDINjkr8L9ObWpMxBhuB4iQSgrnheJGCK1t54FL0WXtZZD_Tk3nFG9USXE9IvD8CXOPNNpUyhsyzj7", + d: "APQIdYNoupMPMPdq4FT-XNLOf9osn3am1DbPddZsRAv-YzHHwXKhJHgZPIJRSHvJEmP6UCF_hf9jb1nNVG46tIO0" + } + }, + + "P-256": { + spki: new Uint8Array([48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, 88, 180, 63, 164, 244, 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, 87, 194, 172, 174, 93, 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, 77, 16, 149, 112, 27, 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, 193, 152, 53, 131, 97, 232]), + pkcs8: new Uint8Array([48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 19, 211, 58, 45, 90, 191, 156, 249, 235, 178, 31, 248, 96, 212, 174, 254, 110, 86, 231, 119, 144, 244, 222, 233, 180, 8, 132, 235, 211, 53, 68, 234, 161, 68, 3, 66, 0, 4, 210, 16, 176, 166, 249, 217, 240, 18, 134, 128, 88, 180, 63, 164, 244, 113, 1, 133, 67, 187, 160, 12, 146, 80, 223, 146, 87, 194, 172, 174, 93, 209, 206, 3, 117, 82, 212, 129, 69, 12, 227, 155, 77, 16, 149, 112, 27, 23, 91, 250, 179, 75, 142, 108, 9, 158, 24, 241, 193, 152, 53, 131, 97, 232]), + jwk: { + kty: "EC", + crv: "P-256", + x: "0hCwpvnZ8BKGgFi0P6T0cQGFQ7ugDJJQ35JXwqyuXdE", + y: "zgN1UtSBRQzjm00QlXAbF1v6s0uObAmeGPHBmDWDYeg", + d: "E9M6LVq_nPnrsh_4YNSu_m5W53eQ9N7ptAiE69M1ROo" + } + }, + + "P-384": { + spki: new Uint8Array([48, 118, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 3, 98, 0, 4, 33, 156, 20, 214, 102, 23, 179, 110, 198, 216, 133, 107, 56, 91, 115, 167, 77, 52, 79, 216, 174, 117, 239, 4, 100, 53, 221, 165, 78, 59, 68, 189, 95, 189, 235, 209, 208, 141, 214, 158, 45, 125, 193, 220, 33, 140, 180, 53, 189, 40, 19, 140, 199, 120, 51, 122, 132, 47, 107, 214, 27, 36, 14, 116, 36, 159, 36, 102, 124, 42, 88, 16, 167, 107, 252, 40, 224, 51, 95, 136, 166, 80, 29, 236, 1, 151, 109, 168, 90, 251, 0, 134, 156, 182, 172, 232]), + pkcs8: new Uint8Array([48, 129, 182, 2, 1, 0, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 34, 4, 129, 158, 48, 129, 155, 2, 1, 1, 4, 48, 69, 55, 181, 153, 7, 132, 211, 194, 210, 46, 150, 168, 249, 47, 161, 170, 73, 46, 232, 115, 229, 118, 164, 21, 130, 225, 68, 24, 60, 152, 136, 209, 14, 107, 158, 180, 206, 212, 178, 204, 64, 18, 228, 172, 94, 168, 64, 115, 161, 100, 3, 98, 0, 4, 33, 156, 20, 214, 102, 23, 179, 110, 198, 216, 133, 107, 56, 91, 115, 167, 77, 52, 79, 216, 174, 117, 239, 4, 100, 53, 221, 165, 78, 59, 68, 189, 95, 189, 235, 209, 208, 141, 214, 158, 45, 125, 193, 220, 33, 140, 180, 53, 189, 40, 19, 140, 199, 120, 51, 122, 132, 47, 107, 214, 27, 36, 14, 116, 36, 159, 36, 102, 124, 42, 88, 16, 167, 107, 252, 40, 224, 51, 95, 136, 166, 80, 29, 236, 1, 151, 109, 168, 90, 251, 0, 134, 156, 182, 172, 232]), + jwk: { + kty: "EC", + crv: "P-384", + x: "IZwU1mYXs27G2IVrOFtzp000T9iude8EZDXdpU47RL1fvevR0I3Wni19wdwhjLQ1", + y: "vSgTjMd4M3qEL2vWGyQOdCSfJGZ8KlgQp2v8KOAzX4imUB3sAZdtqFr7AIactqzo", + d: "RTe1mQeE08LSLpao-S-hqkku6HPldqQVguFEGDyYiNEOa560ztSyzEAS5KxeqEBz" + } + }, + + }; + + // combinations to test + var testVectors = [ + {name: "ECDSA", privateUsages: ["sign"], publicUsages: ["verify"]}, + {name: "ECDH", privateUsages: ["deriveKey", "deriveBits"], publicUsages: []} + ]; + + // TESTS ARE HERE: + // Test every test vector, along with all available key data + testVectors.forEach(function(vector) { + curves.forEach(function(curve) { + + [true, false].forEach(function(extractable) { + + // Test public keys first + [[]].forEach(function(usages) { // Only valid usages argument is empty array + ['spki', 'jwk'].forEach(function(format) { + var algorithm = {name: vector.name, namedCurve: curve}; + var data = keyData[curve]; + if (format === "jwk") { // Not all fields used for public keys + data = {jwk: {kty: keyData[curve].jwk.kty, crv: keyData[curve].jwk.crv, x: keyData[curve].jwk.x, y: keyData[curve].jwk.y}}; + } + + testFormat(format, algorithm, data, curve, usages, extractable); + }); + + }); + + // Next, test private keys + allValidUsages(vector.privateUsages, []).forEach(function(usages) { + ['pkcs8', 'jwk'].forEach(function(format) { + var algorithm = {name: vector.name, namedCurve: curve}; + var data = keyData[curve]; + + testFormat(format, algorithm, data, curve, usages, extractable); + }); + }); + }); + + }); + }); + + + // Test importKey with a given key format and other parameters. If + // extrable is true, export the key and verify that it matches the input. + function testFormat(format, algorithm, keyData, keySize, usages, extractable) { + promise_test(function(test) { + return subtle.importKey(format, keyData[format], algorithm, extractable, usages). + then(function(key) { + assert_equals(key.constructor, CryptoKey, "Imported a CryptoKey object"); + if (!extractable) { + return; + } + + return subtle.exportKey(format, key). + then(function(result) { + if (format !== "jwk") { + assert_true(equalBuffers(keyData[format], result), "Round trip works"); + } else { + assert_true(equalJwk(keyData[format], result), "Round trip works"); + } + }, function(err) { + assert_unreached("Threw an unexpected error: " + err.toString()); + }); + }, function(err) { + assert_unreached("Threw an unexpected error: " + err.toString()); + }); + }, "Good parameters: " + keySize.toString() + " bits " + parameterString(format, keyData[format], algorithm, extractable, usages)); + } + + + + // Helper methods follow: + + // Are two array buffers the same? + function equalBuffers(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + + var aBytes = new Uint8Array(a); + var bBytes = new Uint8Array(b); + + for (var i=0; i 0) { + allNonemptySubsetsOf(remainingElements).forEach(function(combination) { + combination.push(firstElement); + results.push(combination); + }); + } + } + + return results; + } + + // Return a list of all valid usage combinations, given the possible ones + // and the ones that are required for a particular operation. + function allValidUsages(possibleUsages, requiredUsages) { + var allUsages = []; + + allNonemptySubsetsOf(possibleUsages).forEach(function(usage) { + for (var i=0; i 0) { + allNonemptySubsetsOf(remainingElements).forEach(function(combination) { + combination.push(firstElement); + results.push(combination); + }); + } + } + + return results; + } + + // Return a list of all valid usage combinations, given the possible ones + // and the ones that are required for a particular operation. + function allValidUsages(possibleUsages, requiredUsages) { + var allUsages = []; + + allNonemptySubsetsOf(possibleUsages).forEach(function(usage) { + for (var i=0; i 0) { + allNonemptySubsetsOf(remainingElements).forEach(function(combination) { + combination.push(firstElement); + results.push(combination); + }); + } + } + + return results; + } + + // Return a list of all valid usage combinations, given the possible ones + // and the ones that are required for a particular operation. + function allValidUsages(possibleUsages, requiredUsages) { + var allUsages = []; + + allNonemptySubsetsOf(possibleUsages).forEach(function(usage) { + for (var i=0; i + +WebCryptoAPI: importKey() for EC keys + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.html b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.html new file mode 100644 index 00000000000..219ad2d3bc5 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/test_rsa_importKey.html @@ -0,0 +1,12 @@ + + +WebCryptoAPI: importKey() for RSA keys + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey.html b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey.html new file mode 100644 index 00000000000..e82c4d78f6b --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey.html @@ -0,0 +1,12 @@ + + +WebCryptoAPI: importKey() for symmetric keys + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.js new file mode 100644 index 00000000000..869fb796517 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.js @@ -0,0 +1,479 @@ + +function run_test() { + var subtle = self.crypto.subtle; // Change to test prefixed implementations + + // When are all these tests really done? When all the promises they use have resolved. + var all_promises = []; + + // Source file [algorithm_name]_vectors.js provides the getTestVectors method + // for the algorithm that drives these tests. + var testVectors = getTestVectors(); + + // Test verification first, because signing tests rely on that working + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, vector.plaintext) + .then(function(is_verified) { + assert_true(is_verified, "Signature verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification"); + }); + + all_promises.push(promise); + }); + + // Test verification with an altered buffer after call + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + var signature = copyBuffer(vector.signature); + var operation = subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_true(is_verified, "Signature verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + signature[0] = 255 - signature[0]; + return operation; + }, vector.name + " verification with altered signature after call"); + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification with altered signature after call"); + }); + + all_promises.push(promise); + }); + + // Check for successful verification even if plaintext is altered after call. + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + var plaintext = copyBuffer(vector.plaintext); + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, plaintext) + .then(function(is_verified) { + assert_true(is_verified, "Signature verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + plaintext[0] = 255 - plaintext[0]; + return operation; + }, vector.name + " with altered plaintext after call"); + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " with altered plaintext after call"); + }); + + all_promises.push(promise); + }); + + // Check for failures due to using privateKey to verify. + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + return subtle.verify(algorithm, vector.privateKey, vector.signature, vector.plaintext) + .then(function(plaintext) { + assert_unreached("Should have thrown error for using privateKey to verify in " + vector.name + ": " + err.message + "'"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'"); + }); + }, vector.name + " using privateKey to verify"); + + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " using privateKey to verify"); + }); + + all_promises.push(promise); + }); + + // Check for failures due to using publicKey to sign. + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + return subtle.sign(algorithm, vector.publicKey, vector.plaintext) + .then(function(signature) { + assert_unreached("Should have thrown error for using publicKey to sign in " + vector.name + ": " + err.message + "'"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'"); + }); + }, vector.name + " using publicKey to sign"); + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " using publicKey to sign"); + }); + + all_promises.push(promise); + }); + + // Check for failures due to no "verify" usage. + testVectors.forEach(function(originalVector) { + var vector = Object.assign({}, originalVector); + + var promise = importVectorKeys(vector, [], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + return subtle.verify(algorithm, vector.publicKey, vector.signature, vector.plaintext) + .then(function(plaintext) { + assert_unreached("Should have thrown error for no verify usage in " + vector.name + ": " + err.message + "'"); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should throw InvalidAccessError instead of '" + err.message + "'"); + }); + }, vector.name + " no verify usage"); + }, function(err) { + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " no verify usage"); + }); + + all_promises.push(promise); + }); + + // Check for successful signing and verification. + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + return subtle.sign(algorithm, vector.privateKey, vector.plaintext) + .then(function(signature) { + // Can we verify the signature? + return subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_true(is_verified, "Round trip verification works"); + return signature; + }, function(err) { + assert_unreached("verify error for test " + vector.name + ": " + err.message + "'"); + }); + }, function(err) { + assert_unreached("sign error for test " + vector.name + ": '" + err.message + "'"); + }); + }, vector.name + " round trip"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested signing or verifying + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " round trip"); + }); + + all_promises.push(promise); + }); + + // Test signing with the wrong algorithm + testVectors.forEach(function(vector) { + // Want to get the key for the wrong algorithm + var promise = subtle.generateKey({name: "HMAC", hash: "SHA-1"}, false, ["sign", "verify"]) + .then(function(wrongKey) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + return importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + promise_test(function(test) { + var operation = subtle.sign(algorithm, wrongKey, vector.plaintext) + .then(function(signature) { + assert_unreached("Signing should not have succeeded for " + vector.name); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should have thrown InvalidAccessError instead of '" + err.message + "'"); + }); + + return operation; + }, vector.name + " signing with wrong algorithm name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " signing with wrong algorithm name"); + }); + }, function(err) { + promise_test(function(test) { + assert_unreached("Generate wrong key for test " + vector.name + " failed: '" + err.message + "'"); + }, "generate wrong key step: " + vector.name + " signing with wrong algorithm name"); + }); + + all_promises.push(promise); + }); + + // Test verification with the wrong algorithm + testVectors.forEach(function(vector) { + // Want to get the key for the wrong algorithm + var promise = subtle.generateKey({name: "HMAC", hash: "SHA-1"}, false, ["sign", "verify"]) + .then(function(wrongKey) { + return importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + promise_test(function(test) { + var operation = subtle.verify(algorithm, wrongKey, vector.signature, vector.plaintext) + .then(function(signature) { + assert_unreached("Verifying should not have succeeded for " + vector.name); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should have thrown InvalidAccessError instead of '" + err.message + "'"); + }); + + return operation; + }, vector.name + " verifying with wrong algorithm name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verifying with wrong algorithm name"); + }); + }, function(err) { + promise_test(function(test) { + assert_unreached("Generate wrong key for test " + vector.name + " failed: '" + err.message + "'"); + }, "generate wrong key step: " + vector.name + " verifying with wrong algorithm name"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with wrong signature + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + var signature = copyBuffer(vector.signature); + signature[0] = 255 - signature[0]; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure due to altered signature"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to altered signature"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with wrong hash + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var hashName = "SHA-1"; + if (vector.hashName === "SHA-1") { + hashName = "SHA-256" + } + var algorithm = {name: vector.algorithmName, hash: hashName}; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, vector.plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure due to wrong hash"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to wrong hash"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with bad hash name + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + // use the wrong name for the hash + var hashName = vector.hashName.substring(0, 3) + vector.hashName.substring(4); + var algorithm = {name: vector.algorithmName, hash: hashName}; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, vector.plaintext) + .then(function(is_verified) { + assert_unreached("Verification should throw an error"); + }, function(err) { + assert_equals(err.name, "NotSupportedError", "Correctly throws NotSupportedError for illegal hash name") + }); + + return operation; + }, vector.name + " verification failure due to bad hash name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to bad hash name"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with short (odd length) signature + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + var signature = vector.signature.slice(1); // Skip the first byte + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure due to shortened signature"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to shortened signature"); + }); + + all_promises.push(promise); + }); + + // Test verification fails with wrong plaintext + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + var algorithm = {name: vector.algorithmName, hash: vector.hashName}; + var plaintext = copyBuffer(vector.plaintext); + plaintext[0] = 255 - plaintext[0]; + promise_test(function(test) { + var operation = subtle.verify(algorithm, vector.publicKey, vector.signature, plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure due to altered plaintext"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure due to altered plaintext"); + }); + + all_promises.push(promise); + }); + + + Promise.all(all_promises) + .then(function() {done();}) + .catch(function() {done();}) + return; + + // A test vector has all needed fields for signing and verifying, EXCEPT that the + // key field may be null. This function replaces that null with the Correct + // CryptoKey object. + // + // Returns a Promise that yields an updated vector on success. + function importVectorKeys(vector, publicKeyUsages, privateKeyUsages) { + var publicPromise, privatePromise; + + if (vector.publicKey !== null) { + publicPromise = new Promise(function(resolve, reject) { + resolve(vector); + }); + } else { + publicPromise = subtle.importKey(vector.publicKeyFormat, vector.publicKeyBuffer, {name: vector.algorithmName, namedCurve: vector.namedCurve}, false, publicKeyUsages) + .then(function(key) { + vector.publicKey = key; + return vector; + }); // Returns a copy of the sourceBuffer it is sent. + } + + if (vector.privateKey !== null) { + privatePromise = new Promise(function(resolve, reject) { + resolve(vector); + }); + } else { + privatePromise = subtle.importKey(vector.privateKeyFormat, vector.privateKeyBuffer, {name: vector.algorithmName, namedCurve: vector.namedCurve}, false, privateKeyUsages) + .then(function(key) { + vector.privateKey = key; + return vector; + }); + } + + return Promise.all([publicPromise, privatePromise]); + } + + // Returns a copy of the sourceBuffer it is sent. + function copyBuffer(sourceBuffer) { + var source = new Uint8Array(sourceBuffer); + var copy = new Uint8Array(sourceBuffer.byteLength) + + for (var i=0; i 0) { + assert_false(equalBuffers(priorSignature, signature), "Two signings with a salt give different signatures") + } else { + assert_true(equalBuffers(priorSignature, signature), "Two signings with empty salt give same signature") + } + }, function(err) { + assert_unreached("second time verify error for test " + vector.name + ": '" + err.message + "'"); + }); + }, function(err) { + assert_unreached("sign error for test " + vector.name + ": '" + err.message + "'"); + }); + }, vector.name + " round trip"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested signing or verifying + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " round trip"); + }); + + all_promises.push(promise); + }); + + + // Test signing with the wrong algorithm + testVectors.forEach(function(vector) { + // Want to get the key for the wrong algorithm + var alteredVector = Object.assign({}, vector); + alteredVector.algorithm = Object.assign({}, vector.algorithm); + if (vector.algorithm.name === "RSA-PSS") { + alteredVector.algorithm.name = "RSASSA-PKCS1-v1_5"; + } else { + alteredVector.algorithm.name = "RSA-PSS"; + } + + var promise = importVectorKeys(alteredVector, ["verify"], ["sign"]) + .then(function(vectors) { + promise_test(function(test) { + var operation = subtle.sign(vector.algorithm, alteredVector.privateKey, vector.plaintext) + .then(function(signature) { + assert_unreached("Signing should not have succeeded for " + vector.name); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should have thrown InvalidAccessError instead of '" + err.message + "'"); + }); + + return operation; + }, vector.name + " signing with wrong algorithm name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " signing with wrong algorithm name"); + }); + + all_promises.push(promise); + }); + + // Test verification with the wrong algorithm + testVectors.forEach(function(vector) { + // Want to get the key for the wrong algorithm + var alteredVector = Object.assign({}, vector); + alteredVector.algorithm = Object.assign({}, vector.algorithm); + if (vector.algorithm.name === "RSA-PSS") { + alteredVector.algorithm.name = "RSASSA-PKCS1-v1_5"; + } else { + alteredVector.algorithm.name = "RSA-PSS"; + } + + var promise = importVectorKeys(alteredVector, ["verify"], ["sign"]) + .then(function(vectors) { + // Some tests are sign only + if (!("signature" in vector)) { + return; + } + promise_test(function(test) { + var operation = subtle.verify(vector.algorithm, alteredVector.publicKey, vector.signature, vector.plaintext) + .then(function(is_verified) { + assert_unreached("Verification should not have succeeded for " + vector.name); + }, function(err) { + assert_equals(err.name, "InvalidAccessError", "Should have thrown InvalidAccessError instead of '" + err.message + "'"); + }); + + return operation; + }, vector.name + " verification with wrong algorithm name"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification with wrong algorithm name"); + }); + + all_promises.push(promise); + }); + + // Verification should fail with wrong signature + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + promise_test(function(test) { + var signature = copyBuffer(vector.signature); + signature[0] = 255 - signature[0]; + var operation = subtle.verify(vector.algorithm, vector.publicKey, signature, vector.plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure with altered signature"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure with altered signature"); + }); + + all_promises.push(promise); + }); + + // Verification should fail with wrong plaintext + testVectors.forEach(function(vector) { + var promise = importVectorKeys(vector, ["verify"], ["sign"]) + .then(function(vectors) { + promise_test(function(test) { + var plaintext = copyBuffer(vector.plaintext); + plaintext[0] = 255 - plaintext[0]; + var operation = subtle.verify(vector.algorithm, vector.publicKey, vector.signature, plaintext) + .then(function(is_verified) { + assert_false(is_verified, "Signature NOT verified"); + }, function(err) { + assert_unreached("Verification should not throw error " + vector.name + ": " + err.message + "'"); + }); + + return operation; + }, vector.name + " verification failure with altered plaintext"); + + }, function(err) { + // We need a failed test if the importVectorKey operation fails, so + // we know we never tested verification. + promise_test(function(test) { + assert_unreached("importVectorKeys failed for " + vector.name + ". Message: ''" + err.message + "''"); + }, "importVectorKeys step: " + vector.name + " verification failure with altered plaintext"); + }); + + all_promises.push(promise); + }); + + + Promise.all(all_promises) + .then(function() {done();}) + .catch(function() {done();}) + + // A test vector has all needed fields for signing and verifying, EXCEPT that the + // key field may be null. This function replaces that null with the Correct + // CryptoKey object. + // + // Returns a Promise that yields an updated vector on success. + function importVectorKeys(vector, publicKeyUsages, privateKeyUsages) { + var publicPromise, privatePromise; + + if (vector.publicKey !== null) { + publicPromise = new Promise(function(resolve, reject) { + resolve(vector); + }); + } else { + publicPromise = subtle.importKey(vector.publicKeyFormat, vector.publicKeyBuffer, {name: vector.algorithm.name, hash: vector.hash}, false, publicKeyUsages) + .then(function(key) { + vector.publicKey = key; + return vector; + }); // Returns a copy of the sourceBuffer it is sent. + } + + if (vector.privateKey !== null) { + privatePromise = new Promise(function(resolve, reject) { + resolve(vector); + }); + } else { + privatePromise = subtle.importKey(vector.privateKeyFormat, vector.privateKeyBuffer, {name: vector.algorithm.name, hash: vector.hash}, false, privateKeyUsages) + .then(function(key) { + vector.privateKey = key; + return vector; + }); + } + + return Promise.all([publicPromise, privatePromise]); + } + + // Returns a copy of the sourceBuffer it is sent. + function copyBuffer(sourceBuffer) { + var source = new Uint8Array(sourceBuffer); + var copy = new Uint8Array(sourceBuffer.byteLength) + + for (var i=0; i + + +WebCryptoAPI: sign() and verify() Using ECDSA + + + + + + + + + +

    sign and verify Tests for ECDSA

    + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_hmac.html b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_hmac.html new file mode 100644 index 00000000000..6d5ff926f38 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_hmac.html @@ -0,0 +1,19 @@ + + + +WebCryptoAPI: sign() and verify() Using HMAC + + + + + + + + + +

    sign and verify Tests for HMAC

    + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.html b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.html new file mode 100644 index 00000000000..de428c0fc7e --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pkcs.html @@ -0,0 +1,19 @@ + + + +WebCryptoAPI: sign() and verify() Using RSASSA-PKCS1-v1_5 + + + + + + + + + +

    sign and verify Tests for RSASSA-PKCS1-v1_5

    + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pss.html b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pss.html new file mode 100644 index 00000000000..3a2034feb4a --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/test_rsa_pss.html @@ -0,0 +1,19 @@ + + + +WebCryptoAPI: sign() and verify() Using RSA-PSS + + + + + + + + + +

    sign and verify Tests for RSA-PSS

    + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html new file mode 100644 index 00000000000..337e0780e56 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/test_wrapKey_unwrapKey.html @@ -0,0 +1,17 @@ + + + +WebCryptoAPI: wrapKey() and unwrapKey() + + + + + + + +

    wrapKey and unwrapKey Tests

    + +
    + diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js new file mode 100644 index 00000000000..12bd696a782 --- /dev/null +++ b/tests/wpt/web-platform-tests/WebCryptoAPI/wrapKey_unwrapKey/wrapKey_unwrapKey.js @@ -0,0 +1,266 @@ +// Tests for wrapKey and unwrapKey round tripping + +function run_test() { + var subtle = self.crypto.subtle; + + var wrappers = []; // Things we wrap (and upwrap) keys with + var keys = []; // Things to wrap and unwrap + + // Generate all the keys needed, then iterate over all combinations + // to test wrapping and unwrapping. + Promise.all([generateWrappingKeys(), generateKeysToWrap()]) + .then(function(results) { + wrappers.forEach(function(wrapper) { + keys.forEach(function(key) { + testWrapping(wrapper, key); + }) + }); + }, function(err) { + promise_test(function(test) { + assert_unreached("A key failed to generate: " + err.name + ": " + err.message) + }, "Could not run all tests") + }) + .then(function() { + done(); + }, function(error) { + promise_test(function(test) { + assert_unreached("A test failed to run: " + err.name + ": " + err.message) + }, "Could not run all tests") + }); + + + function generateWrappingKeys() { + // There are five algorithms that can be used for wrapKey/unwrapKey. + // Generate one key with typical parameters for each kind. + // + // Note: we don't need cryptographically strong parameters for things + // like IV - just any legal value will do. + var parameters = [ + { + name: "RSA-OAEP", + generateParameters: {name: "RSA-OAEP", modulusLength: 4096, publicExponent: new Uint8Array([1,0,1]), hash: "SHA-256"}, + wrapParameters: {name: "RSA-OAEP", label: new Uint8Array(8)} + }, + { + name: "AES-CTR", + generateParameters: {name: "AES-CTR", length: 128}, + wrapParameters: {name: "AES-CTR", counter: new Uint8Array(16), length: 64} + }, + { + name: "AES-CBC", + generateParameters: {name: "AES-CBC", length: 128}, + wrapParameters: {name: "AES-CBC", iv: new Uint8Array(16)} + }, + { + name: "AES-GCM", + generateParameters: {name: "AES-GCM", length: 128}, + wrapParameters: {name: "AES-GCM", iv: new Uint8Array(16), additionalData: new Uint8Array(16), tagLength: 64} + }, + { + name: "AES-KW", + generateParameters: {name: "AES-KW", length: 128}, + wrapParameters: {name: "AES-KW"} + } + ]; + + return Promise.all(parameters.map(function(params) { + return subtle.generateKey(params.generateParameters, true, ["wrapKey", "unwrapKey"]) + .then(function(key) { + var wrapper; + if (params.name === "RSA-OAEP") { // we have a key pair, not just a key + wrapper = {wrappingKey: key.publicKey, unwrappingKey: key.privateKey, parameters: params}; + } else { + wrapper = {wrappingKey: key, unwrappingKey: key, parameters: params}; + } + wrappers.push(wrapper); + return true; + }) + })); + } + + + function generateKeysToWrap() { + var parameters = [ + {algorithm: {name: "RSASSA-PKCS1-v1_5", modulusLength: 1024, publicExponent: new Uint8Array([1,0,1]), hash: "SHA-256"}, privateUsages: ["sign"], publicUsages: ["verify"]}, + {algorithm: {name: "RSA-PSS", modulusLength: 1024, publicExponent: new Uint8Array([1,0,1]), hash: "SHA-256"}, privateUsages: ["sign"], publicUsages: ["verify"]}, + {algorithm: {name: "RSA-OAEP", modulusLength: 1024, publicExponent: new Uint8Array([1,0,1]), hash: "SHA-256"}, privateUsages: ["decrypt"], publicUsages: ["encrypt"]}, + {algorithm: {name: "ECDSA", namedCurve: "P-256"}, privateUsages: ["sign"], publicUsages: ["verify"]}, + {algorithm: {name: "ECDH", namedCurve: "P-256"}, privateUsages: ["deriveBits"], publicUsages: []}, + {algorithm: {name: "AES-CTR", length: 128}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-CBC", length: 128}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-GCM", length: 128}, usages: ["encrypt", "decrypt"]}, + {algorithm: {name: "AES-KW", length: 128}, usages: ["wrapKey", "unwrapKey"]}, + {algorithm: {name: "HMAC", length: 128, hash: "SHA-256"}, usages: ["sign", "verify"]} + ]; + + return Promise.all(parameters.map(function(params) { + var usages; + if ("usages" in params) { + usages = params.usages; + } else { + usages = params.publicUsages.concat(params.privateUsages); + } + + return subtle.generateKey(params.algorithm, true, usages) + .then(function(result) { + if (result.constructor === CryptoKey) { + keys.push({name: params.algorithm.name, algorithm: params.algorithm, usages: params.usages, key: result}); + } else { + keys.push({name: params.algorithm.name + " public key", algorithm: params.algorithm, usages: params.publicUsages, key: result.publicKey}); + keys.push({name: params.algorithm.name + " private key", algorithm: params.algorithm, usages: params.privateUsages, key: result.privateKey}); + } + return true; + }); + })); + } + + + // Can we successfully "round-trip" (wrap, then unwrap, a key)? + function testWrapping(wrapper, toWrap) { + var formats; + + if (toWrap.name.includes("private")) { + formats = ["pkcs8", "jwk"]; + } else if (toWrap.name.includes("public")) { + formats = ["spki", "jwk"] + } else { + formats = ["raw", "jwk"] + } + + formats.forEach(function(fmt) { + var originalExport; + + promise_test(function(test) { + return subtle.exportKey(fmt, toWrap.key) + .then(function(exportedKey) { + originalExport = exportedKey; + return exportedKey; + }).then(function(exportedKey) { + return subtle.wrapKey(fmt, toWrap.key, wrapper.wrappingKey, wrapper.parameters.wrapParameters); + }).then(function(wrappedResult) { + return subtle.unwrapKey(fmt, wrappedResult, wrapper.unwrappingKey, wrapper.parameters.wrapParameters, toWrap.algorithm, true, toWrap.usages) + }).then(function(unwrappedResult) { + return subtle.exportKey(fmt, unwrappedResult) + }).then(function(roundTripExport) { + if ("byteLength" in originalExport) { + assert_true(equalBuffers(originalExport, roundTripExport), "Post-wrap export matches original export"); + } else { + assert_true(equalJwk(originalExport, roundTripExport), "Post-wrap export matches original export."); + } + }, function(err) { + if (wrappingIsPossible(originalExport, wrapper.parameters.name)) { + assert_unreached("Round trip threw an error - " + err.name + ': "' + err.message + '"'); + } else { + assert_true(true, "Skipped test due to key length restrictions"); + } + }) + }, "Can wrap and unwrap " + toWrap.name + " keys using " + fmt + " and " + wrapper.parameters.name); + + }); + + } + + + // RSA-OAEP can only wrap relatively small payloads. AES-KW can only + // wrap payloads a multiple of 8 bytes long. + // + // Note that JWK payloads will be converted to ArrayBuffer for wrapping, + // and should automatically be padded if needed for AES-KW. + function wrappingIsPossible(exportedKey, algorithmName) { + if ("byteLength" in exportedKey && algorithmName === "AES-KW") { + return exportedKey.byteLength % 8 === 0; + } + + if ("byteLength" in exportedKey && algorithmName === "RSA-OAEP") { + // RSA-OAEP can only encrypt payloads with lengths shorter + // than modulusLength - 2*hashLength - 1 bytes long. For + // a 4096 bit modulus and SHA-256, that comes to + // 4096/8 - 2*(256/8) - 1 = 512 - 2*32 - 1 = 447 bytes. + return exportedKey.byteLength <= 446; + } + + if ("kty" in exportedKey && algorithmName === "RSA-OAEP") { + return JSON.stringify(exportedKey).length <= 478; + } + + return true; + } + + + // Helper methods follow: + + // Are two array buffers the same? + function equalBuffers(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + + var aBytes = new Uint8Array(a); + var bBytes = new Uint8Array(b); + + for (var i=0; i - -XMLHttpRequest#withCredentials - - - - -
    - diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js b/tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js deleted file mode 100644 index ea945e8ab8f..00000000000 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.js +++ /dev/null @@ -1,42 +0,0 @@ -function test_withCredentials(worker) { - test(function() { - var client = new XMLHttpRequest() - assert_false(client.withCredentials, "withCredentials defaults to false") - client.withCredentials = true - assert_true(client.withCredentials, "is true after setting") - }, "default value is false, set value is true") - - test(function() { - var client = new XMLHttpRequest() - client.open("GET", "resources/delay.py?ms=1000", true) - client.withCredentials = true - assert_true(client.withCredentials, "set in OPEN state") - }, "can also be set in OPEN state") - - test(function() { - var client = new XMLHttpRequest() - client.open("GET", "resources/delay.py?ms=1000", false) - client.withCredentials = true - assert_true(client.withCredentials, "set in OPEN state") - }, "setting on synchronous XHR") - - async_test(function() { - var client = new XMLHttpRequest() - client.open("GET", "resources/delay.py?ms=1000") - client.send() - assert_throws("InvalidStateError", function() { client.withCredentials = true }) - client.onreadystatechange = this.step_func(function() { - assert_throws("InvalidStateError", function() { client.withCredentials = true }) - if (client.readyState === 4) { - this.done() - } - }) - }, "setting withCredentials when not in UNSENT, OPENED state (asynchronous)") - - test(function() { - var client = new XMLHttpRequest() - client.open("GET", "resources/delay.py?ms=1000", false) - client.send(); - assert_throws("InvalidStateError", function() { client.withCredentials = true }) - }, "setting withCredentials when in DONE state (synchronous)") -} diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.js b/tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.js deleted file mode 100644 index 6e89fec5a01..00000000000 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/XMLHttpRequest-withCredentials.worker.js +++ /dev/null @@ -1,4 +0,0 @@ -importScripts("/resources/testharness.js") -importScripts("XMLHttpRequest-withCredentials.js") -test_withCredentials(true); -done() diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/abort-during-upload.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/abort-during-upload.htm index afb28284645..766dcc4693d 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/abort-during-upload.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/abort-during-upload.htm @@ -4,6 +4,7 @@ XMLHttpRequest: abort() while sending data + @@ -11,29 +12,16 @@
    + XMLHttpRequest: The abort() method: abort and loadend events @@ -16,18 +17,9 @@ test.step(function() { var xhr = new XMLHttpRequest(); - var expect = [1, 4, "upload.abort", "upload.loadend", "abort", "loadend"]; - var actual = []; + prepare_xhr_for_event_order_test(xhr); - xhr.onreadystatechange = function() - { - test.step(function() - { - actual.push(xhr.readyState); - }); - }; - xhr.onloadstart = function() - { + xhr.addEventListener("loadstart", function() { test.step(function() { var readyState = xhr.readyState; @@ -35,23 +27,18 @@ { xhr.abort(); VerifyResult(); - }else{ + } else { assert_unreached('Loadstart event should not fire in readyState '+readyState); } }); - }; - - xhr.onloadend = function(e){ actual.push(e.type); }; - xhr.onabort = function(e){ actual.push(e.type); }; - - xhr.upload.onloadend = function(e){ actual.push("upload." + e.type); }; - xhr.upload.onabort = function(e){ actual.push("upload." + e.type); }; + }); function VerifyResult() { test.step(function() { - assert_array_equals(actual, expect); + assert_xhr_event_order_matches([1, "loadstart(0,0,false)", 4, "upload.progress(0,0,false)", "upload.abort(0,0,false)", "upload.loadend(0,0,false)", "progress(0,0,false)", "abort(0,0,false)", "loadend(0,0,false)"]); + assert_equals(xhr.readyState, 0, 'state should be UNSENT'); test.done(); }); diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/event-error-order.sub.html b/tests/wpt/web-platform-tests/XMLHttpRequest/event-error-order.sub.html new file mode 100644 index 00000000000..9be8b4a1b29 --- /dev/null +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/event-error-order.sub.html @@ -0,0 +1,35 @@ + + + + + + + + XMLHttpRequest: event - error (order of events) + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/event-error.html b/tests/wpt/web-platform-tests/XMLHttpRequest/event-error.html index 3f95bf58d56..3171c49d7a8 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/event-error.html +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/event-error.html @@ -18,7 +18,7 @@ async_test(function (t) { t.done(); }); - client.open("GET", "http://example.nonexist"); + client.open("GET", "http://nonexistent-origin.{{host}}:{{ports[http][0]}}"); client.send("null"); }, document.title); diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/event-error.sub.html b/tests/wpt/web-platform-tests/XMLHttpRequest/event-error.sub.html new file mode 100644 index 00000000000..3171c49d7a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/event-error.sub.html @@ -0,0 +1,25 @@ + + +XMLHttpRequest Test: event - error + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/event-progress.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/event-progress.htm index 31b35b77217..f2f40b85bc7 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/event-progress.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/event-progress.htm @@ -23,7 +23,7 @@ if (client.readyState === 4) assert_unreached("onprogress not called."); }); - client.open("GET", "resources/trickle.py"); + client.open("GET", "resources/trickle.py?count=4&delay=150"); client.send(null); }); diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/event-timeout-order.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/event-timeout-order.htm new file mode 100644 index 00000000000..1d9ba31d6e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/event-timeout-order.htm @@ -0,0 +1,37 @@ + + + + + + + + XMLHttpRequest: event - timeout (order of events) + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/event-upload-progress-crossorigin.sub.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/event-upload-progress-crossorigin.sub.htm index 6130bba50a2..66461689c52 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/event-upload-progress-crossorigin.sub.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/event-upload-progress-crossorigin.sub.htm @@ -10,6 +10,7 @@
    + diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/headers-normalize-response.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/headers-normalize-response.htm new file mode 100644 index 00000000000..466b0d977cc --- /dev/null +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/headers-normalize-response.htm @@ -0,0 +1,42 @@ + + +Whitespace and null in header values + + + + +

    Whitespace and null in response header values

    + +
    + + diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/open-url-multi-window.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/open-url-multi-window.htm index b84aaa57fed..347f4b7e59c 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/open-url-multi-window.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/open-url-multi-window.htm @@ -15,9 +15,10 @@ var client = new self[0].XMLHttpRequest() client.onreadystatechange = function() { test.step(function() { - if(client.readyState == 4) + if(client.readyState == 4) { assert_equals(client.responseText, "bottom\n") test.done() + } }) } client.open("GET", "folder.txt") diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/resources/last-modified.py b/tests/wpt/web-platform-tests/XMLHttpRequest/resources/last-modified.py index 4f3a14c7341..ef05a6343c1 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/resources/last-modified.py +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/resources/last-modified.py @@ -4,4 +4,4 @@ def main(request, response): srcmoddt = datetime.datetime.fromtimestamp(os.path.getmtime(srcpath)) response.headers.set("Last-Modified", srcmoddt.strftime("%a, %d %b %Y %H:%M:%S GMT")) response.headers.set("Content-Type", "application/xml") - return open(srcpath).read() + return open(srcpath, "r").read() diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/resources/parse-headers.py b/tests/wpt/web-platform-tests/XMLHttpRequest/resources/parse-headers.py new file mode 100644 index 00000000000..fdc626539e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/resources/parse-headers.py @@ -0,0 +1,10 @@ +import json + +def main(request, response): + + content = "" + if "my-custom-header" in request.GET: + val = request.GET.first("my-custom-header") + response.headers.set("My-Custom-Header", val) + + return content diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/resources/trickle.py b/tests/wpt/web-platform-tests/XMLHttpRequest/resources/trickle.py index 0e709445c59..5a46c5e82e6 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/resources/trickle.py +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/resources/trickle.py @@ -1,12 +1,15 @@ import time def main(request, response): + chunk = "TEST_TRICKLE\n" delay = float(request.GET.first("ms", 500)) / 1E3 count = int(request.GET.first("count", 50)) + if "specifylength" in request.GET: + response.headers.set("Content-Length", count * len(chunk)) time.sleep(delay) response.headers.set("Content-type", "text/plain") response.write_status_headers() time.sleep(delay); for i in xrange(count): - response.writer.write_content("TEST_TRICKLE\n") + response.writer.write_content(chunk) time.sleep(delay) diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/resources/xmlhttprequest-event-order.js b/tests/wpt/web-platform-tests/XMLHttpRequest/resources/xmlhttprequest-event-order.js new file mode 100644 index 00000000000..820f9ee2214 --- /dev/null +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/resources/xmlhttprequest-event-order.js @@ -0,0 +1,33 @@ +(function(global) { + var recorded_xhr_events = []; + + function record_xhr_event(e) { + var prefix = e.target instanceof XMLHttpRequestUpload ? "upload." : ""; + recorded_xhr_events.push((prefix || "") + e.type + "(" + e.loaded + "," + e.total + "," + e.lengthComputable + ")"); + } + + global.prepare_xhr_for_event_order_test = function(xhr) { + xhr.addEventListener("readystatechange", function(e) { + recorded_xhr_events.push(xhr.readyState); + }); + var events = ["loadstart", "progress", "abort", "timeout", "error", "load", "loadend"]; + for(var i=0; i -var test = async_test(); - -test.step(function() { +function doTest(test, expectedLengthComputable, expectedTotal, url) { var client = new XMLHttpRequest(); var lastSize = 0; - client.onprogress = test.step_func(function() { + client.onprogress = test.step_func(function(e) { + assert_equals(e.total, expectedTotal); + assert_equals(e.lengthComputable, expectedLengthComputable); + var currentSize = client.responseText.length; if (lastSize > 0 && currentSize > lastSize) { // growth from a positive size to bigger! - test.done(); } @@ -39,7 +39,13 @@ test.step(function() { } }); - client.open("GET", "resources/trickle.py?count=1000"); + client.open("GET", url); client.send(null); -}); + return client; +} + +async_test(function () { doTest(this, false, 0, "resources/trickle.py?count=6&delay=150"); }, + document.title + ', unknown content-length'); +async_test(function () { doTest(this, true, 78, "resources/trickle.py?count=6&delay=150&specifylength=1"); }, + document.title + ', known content-length'); diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/responsexml-basic.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/responsexml-basic.htm index 8bc1ff52018..cc4b8dc4838 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/responsexml-basic.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/responsexml-basic.htm @@ -19,7 +19,7 @@ assert_equals(client.responseXML.documentElement.localName, "html", 'localName is html') assert_equals(client.responseXML.documentElement.childNodes.length, 5, 'childNodes is 5') assert_equals(client.responseXML.getElementById("n1").localName, client.responseXML.documentElement.childNodes[1].localName) - assert_equals(client.responseXML.getElementById("n2"), null, 'getElementById("n2")') + assert_equals(client.responseXML.getElementById("n2"), client.responseXML.documentElement.childrenNodes[3], 'getElementById("n2")') assert_equals(client.responseXML.getElementsByTagName("p")[1].namespaceURI, "namespacesarejuststrings", 'namespaceURI') }) test(function() { diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/responsexml-document-properties.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/responsexml-document-properties.htm index 1c23cf4c29d..c12f21b260b 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/responsexml-document-properties.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/responsexml-document-properties.htm @@ -45,7 +45,7 @@ test(function() { var lastModified = Math.floor(new Date(client.responseXML.lastModified).getTime() / 1000); - var now = Math.floor(new Date().getTime() / 1000); + var now = Math.floor(new Date().getTime(new Date().getTime() + 2000) / 1000); // two seconds from now, in case there's clock drift assert_greater_than_equal(lastModified, timePreXHR); assert_less_than_equal(lastModified, now); }, 'lastModified set to time of response if no HTTP header provided') diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/security-consideration.sub.html b/tests/wpt/web-platform-tests/XMLHttpRequest/security-consideration.sub.html index 7d42e947f20..5eb7110d41a 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/security-consideration.sub.html +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/security-consideration.sub.html @@ -21,7 +21,13 @@ assert_false(pe.lengthComputable, "lengthComputable is false."); assert_equals(pe.total, 0, "total is zero."); }); - xhr.onloadend = this.step_func_done(); + xhr.onloadend = this.step_func(function(pe) { + assert_equals(pe.type, "loadend"); + assert_equals(pe.loaded, 0, "loaded is zero."); + assert_false(pe.lengthComputable, "lengthComputable is false."); + assert_equals(pe.total, 0, "total is zero."); + this.done(); + }); xhr.open("GET", "http://{{host}}:{{ports[http][1]}}/XMLHttpRequest/resources/img.jpg", true); xhr.send(null); }) diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-empty.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-empty.htm index ab074c77287..f307e778091 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-empty.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-empty.htm @@ -10,13 +10,17 @@
    diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-get-head-async.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-get-head-async.htm index f8a5a59c16b..ff4c4b4cac0 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-get-head-async.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-get-head-async.htm @@ -23,13 +23,7 @@ client.upload.addEventListener('loadstart', logEvt) client.addEventListener('loadend', function(){ test.step(function(){ - if (method === "HEAD") { - // Fetch 4.4.3 --- Set Content-Length to 0 if method is HEAD and - // request's body is null. - assert_equals(client.getResponseHeader("x-request-content-length"), "0") - } else { - assert_equals(client.getResponseHeader("x-request-content-length"), "NO") - } + assert_equals(client.getResponseHeader("x-request-content-length"), "NO") assert_equals(client.getResponseHeader("x-request-method"), method) assert_equals(client.responseText, "") assert_array_equals(events, []) diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-get-head.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-get-head.htm index bc17cd61a41..f3b8cef3555 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-get-head.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-get-head.htm @@ -23,13 +23,7 @@ client.upload.addEventListener('loadend', logEvt) client.upload.addEventListener('loadstart', logEvt) - if (method === "HEAD") { - // Fetch 4.4.3 --- Set Content-Length to 0 if method is HEAD and - // request's body is null. - assert_equals(client.getResponseHeader("x-request-content-length"), "0") - } else { - assert_equals(client.getResponseHeader("x-request-content-length"), "NO") - } + assert_equals(client.getResponseHeader("x-request-content-length"), "NO") assert_equals(client.getResponseHeader("x-request-method"), method) assert_equals(client.responseText, "") assert_array_equals(events, []) diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-none.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-none.htm index 11ac824f4dd..d757cb30a9f 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-none.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/send-entity-body-none.htm @@ -9,24 +9,32 @@
    diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/send-no-response-event-order.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/send-no-response-event-order.htm index aabef30f0a4..44c1d779786 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/send-no-response-event-order.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/send-no-response-event-order.htm @@ -11,6 +11,7 @@ + XMLHttpRequest: The send() method: event order when there is no response entity body @@ -23,35 +24,18 @@ test.step(function() { var xhr = new XMLHttpRequest(); - var expect = ["loadstart", 4, "load", "loadend"]; - var actual = []; + prepare_xhr_for_event_order_test(xhr); - xhr.onreadystatechange = test.step_func(function() - { - test.step(function() - { - if (xhr.readyState == 3) - { - assert_equals(xhr.response, ""); - } - else if (xhr.readyState == 4) - { - actual.push(xhr.readyState); - } - }); - }); + xhr.addEventListener("readystatechange", test.step_func(function() { + if (xhr.readyState == 3) { + assert_equals(xhr.response, ""); + } + })); - xhr.onloadstart = test.step_func(function(e){ actual.push(e.type); }); - xhr.onload = test.step_func(function(e){ actual.push(e.type); }); - xhr.onloadend = test.step_func(function(e){ - actual.push(e.type); - assert_array_equals(actual, expect); + xhr.addEventListener("loadend", test.step_func(function(e) { + assert_xhr_event_order_matches([1, "loadstart(0,0,false)", 2, "progress(0,0,false)", 4,"load(0,0,false)", "loadend(0,0,false)"]); test.done(); - }); - - xhr.upload.onloadstart = test.step_func(function(e){ assert_unreached('upload.'+e.type); }); - xhr.upload.onload = test.step_func(function(e){ assert_unreached('upload.'+e.type); }); - xhr.upload.onloadend = test.step_func(function(e){ assert_unreached('upload.'+e.type); }); + })); xhr.open("POST", "./resources/content.py", true); xhr.send(); diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/send-non-same-origin.sub.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/send-non-same-origin.sub.htm index bfa9023c110..91c3845617f 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/send-non-same-origin.sub.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/send-non-same-origin.sub.htm @@ -4,13 +4,18 @@ XMLHttpRequest: send() - non same-origin - +
    + diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/send-sync-response-event-order.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/send-sync-response-event-order.htm index b574edb4c0e..f7e4b0b216e 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/send-sync-response-event-order.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/send-sync-response-event-order.htm @@ -3,6 +3,7 @@ + XMLHttpRequest: The send() method: event order when synchronous flag is set @@ -21,30 +22,13 @@ diff --git a/tests/wpt/web-platform-tests/XMLHttpRequest/setrequestheader-content-type.htm b/tests/wpt/web-platform-tests/XMLHttpRequest/setrequestheader-content-type.htm index a648efa64ca..64a72927a6d 100644 --- a/tests/wpt/web-platform-tests/XMLHttpRequest/setrequestheader-content-type.htm +++ b/tests/wpt/web-platform-tests/XMLHttpRequest/setrequestheader-content-type.htm @@ -9,19 +9,229 @@
    diff --git a/tests/wpt/web-platform-tests/annotation-model/CONTRIBUTING.md b/tests/wpt/web-platform-tests/annotation-model/CONTRIBUTING.md index c6180d49f3b..b71eaa5a9d9 100644 --- a/tests/wpt/web-platform-tests/annotation-model/CONTRIBUTING.md +++ b/tests/wpt/web-platform-tests/annotation-model/CONTRIBUTING.md @@ -54,6 +54,7 @@ Context](JSONtest-v1.jsonld). That context defines the following terms: |ref | URI | An optional reference to the portion of the specification to which the test relates |testType | `automated`, `manual`, `ref` | The type of test - this informs [WPT](https://github.com/w3c/web-platform-tests) how the test should be controlled and presented |assertions | list of URI, List @@@ATRISK@@@, or AssertionObject | The ordered collection of tests the input should be run against. See [JSON Schema Usage](#jsonSchema) for the structure of the objects. URI is relative to the top level folder of the test collection if it has a slash; relative to the current directory if it does not. @@@@ATRISK@@@@ Lists can be nested to define groups of sub-tests. Assertions / groups can be conditionally skipped. See [Assertion Lists](#assertionLists) for more details. +|content | URI or object | An object containing content to be checked against the referenced assertions, or a URI from which to retrieve that content Each test case has a suffix of `.test` and a shape like: @@ -101,6 +102,14 @@ External references are used when the "assertion" is a common one that needs to be checked on many different test cases (e.g., that there is an @context in the supplied annotation). +NOTE: The title property of an assertionObject can contain markdown. This can +help improve readability of the rendered assertions and debugging output. + +NOTE: The content property does not yet have a defined use. One potential use would +be to act as a pointer to a URI that can supply annotations from an implementation. +In that case the URI would take a parameter with the test name as a way of telling +the end point what test is running so it can deliver the right content. + ### Assertion Lists ### The `assertion` list is an ordered list of assertions that will be evaluated diff --git a/tests/wpt/web-platform-tests/annotation-model/OWNERS b/tests/wpt/web-platform-tests/annotation-model/OWNERS index fc5240b7511..e17fd64dd82 100644 --- a/tests/wpt/web-platform-tests/annotation-model/OWNERS +++ b/tests/wpt/web-platform-tests/annotation-model/OWNERS @@ -1,2 +1,3 @@ @halindrome @bigbluehat +@tcole3 diff --git a/tests/wpt/web-platform-tests/annotation-model/TODO b/tests/wpt/web-platform-tests/annotation-model/TODO index ffebab2381c..d2855cc9f4d 100644 --- a/tests/wpt/web-platform-tests/annotation-model/TODO +++ b/tests/wpt/web-platform-tests/annotation-model/TODO @@ -8,11 +8,6 @@ files Websocket communication to runner tests with a corresponding listener that an implementation could use to auto-submit jsonld into the "manual" tests -Change JSONtest logic so that it loads all of the required external files during -initialization so that it can populate the list of assertions for the HTML in a -manual test. Use Promises and Promise.all() to achieve this. - Add a Skip option to tools/runner Add a tuple mode for evaluating RDF declaratively as well. - diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/.gitignore b/tests/wpt/web-platform-tests/annotation-model/annotations/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationContextValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationContextValidated.json new file mode 100644 index 00000000000..f7d79f2f747 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationContextValidated.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-annotationContextValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation is missing @context key or 'http://www.w3.org/ns/anno.jsonld' is not a value of @context.", + "title": "Annotation has **_@context_ key** and '**http://www.w3.org/ns/anno.jsonld**' is **a value of _@context_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "description": "True when the Annotation has @context key and 'http://www.w3.org/ns/anno.jsonld' is an @context value (Section 3.1)", + "type": "object", + "required": [ "@context" ], + "properties": { + "@context": { + "oneOf": [ + { "$ref": "annotations.json#/definitions/contextValueFound" }, + { "$ref": "annotations.json#/definitions/contextValueInArrayFound" } + ] + } + } +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationIdValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationIdValidated.json new file mode 100644 index 00000000000..2fca8a4f3f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationIdValidated.json @@ -0,0 +1,11 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-annotationIdValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation is missing id key or its value is not a single string of format uri.", + "title": "Annotation has **_id_ key** which has a **single value** that is a **string of format uri** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "description": "True when the Annotation has a single id that is a string of format uri (Section 3.1)", + "$ref": "id.json#/definitions/idValueFound" +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationTypeValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationTypeValidated.json new file mode 100644 index 00000000000..b2c20d5e529 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-annotationTypeValidated.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-annotationTypeValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation is missing type key or 'Annotation' is not a value of type.", + "title": "Annotation has **_type_ key** and '**Annotation**' is **a value of _type_** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "allOf": [ + { "$ref": "annotations.json#/definitions/annotationTypeValueFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-bodyKeyFound.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-bodyKeyFound.json new file mode 100644 index 00000000000..8c9ba13f8a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-bodyKeyFound.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-bodyKeyFound.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Annotation Should have a body.", + "title": "Implements **_body_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "description": "True when the Annotation has a body key (Section 3.1)", + "type": "object", + "required": ["body" ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-targetKeyFound.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-targetKeyFound.json new file mode 100644 index 00000000000..be6ca25048f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.1-targetKeyFound.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-targetKeyFound.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "Error: Annotation is missing target key.", + "title": "Annotation has a **_target_ key** - [model 3.1](https://www.w3.org/TR/annotation-model/#annotations)", + "description": "True when the Annotation has a target key (Section 3.1)", + "type": "object", + "required": ["target" ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-bodyObjectsRecognized.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-bodyObjectsRecognized.json new file mode 100644 index 00000000000..27e79105b50 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-bodyObjectsRecognized.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.2-bodyObjectsRecognized.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: One or more Bodies of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.", + "title": "If present, each **_body_** is one of a **string of format uri**, an **External Web Resource**, an **Embedded Textual Body**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "description": "True when all Body(ies) are one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource (Sections 3.2, Section 4)", + "type": "object", + "properties": + { + "body": + {"oneOf": [ + { "$ref": "bodyTarget.json#/definitions/bodyResourcesFound" }, + { "type" : ["array"], + "items": { "$ref": "bodyTarget.json#/definitions/bodyResourcesFound" } + } + ] + } + } +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-targetObjectsRecognized.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-targetObjectsRecognized.json new file mode 100644 index 00000000000..f6dd20ebe55 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2-targetObjectsRecognized.json @@ -0,0 +1,22 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.2-targetObjectsRecognized.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: One or more Targets of the Annotation is not one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource.", + "title": "Each **_target_** is one of a **string of format uri**, an **External Web Resource**, a **Choice** or **Set**, or a **Specific Resource** - [model 3.2](https://www.w3.org/TR/annotation-model/#bodies-and-targets), [model 4](https://www.w3.org/TR/annotation-model/#specific-resources)", + "description": "True when all Target(s) are one of a string of format uri, an External Web Resource, a Choice or Set, a Specific Resource (Sections 3.2, Section 4)", + "type": "object", + "properties": + { + "target": + {"oneOf": [ + { "$ref": "bodyTarget.json#/definitions/targetResourcesFound" }, + { "type" : ["array"], + "items": { "$ref": "bodyTarget.json#/definitions/targetResourcesFound" } + } + ] + } + } +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-bodyValueImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-bodyValueImplemented.json new file mode 100644 index 00000000000..bce28da0b57 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-bodyValueImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.1-bodyValueImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "bodyValue key not found. Annotation May have exactly one bodyValue (if no body also included).", + "title": "Implements **_bodyValue_ key** which has a **single value** that is a **string** [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "description": "True when the Annotation implements a bodyValue key (Section 3.2.5)", + "allOf": + [ + { "$ref": "annotations.json#/definitions/bodyValueFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-bodyValueValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-bodyValueValidated.json new file mode 100644 index 00000000000..d36ee8c60a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-bodyValueValidated.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.2.5-bodyValueValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has multiple bodyValue key values or a single bodyValue key value that is not of type string.", + "title": "If present the **_bodyValue_ key** has a **single value** that is a **string** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "description": "True when no Annotation bodyValue or the Annotation bodyValue key value is a single string (Section 3.2.5)", + "allOf": [ + { "$ref": "annotations.json#/definitions/bodyValueValidIfPresent" } + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-notBodyBodyValue.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-notBodyBodyValue.json new file mode 100644 index 00000000000..f47d6f5754c --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.2.5-notBodyBodyValue.json @@ -0,0 +1,13 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.2.5-notBodyBodyValue.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: body and bodyValue are exclusive keys; a single annotation cannot have both.", + "title": "Annotation has a **_body_ key**, or a **_bodyValue_ key**, or **neither**, but **NEVER both** - [model 3.2.5](https://www.w3.org/TR/annotation-model/#string-body)", + "description": "True when the Annotation does not have both body key and bodyValue key (Section 3.2.5)", + "type": "object", + "not": + { "required": [ "body", "bodyValue"] } +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatedImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatedImplemented.json new file mode 100644 index 00000000000..d27fa374b5f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatedImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationCreatedImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Valid Annotation-level created key not found. Annotation may have zero or exactly one created key value.", + "title": "Implements Annotation-level **_created_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation implements exactly one created key value (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/createdPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatedValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatedValidated.json new file mode 100644 index 00000000000..5b7435d4d3a --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatedValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationCreatedValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has multiple created key values or a single created key value that is not of format date-time.", + "title": "If present the Annotation-level **_created_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when no Annotation created key present or when created key has a single value that is of format date-time (Section 3.3.1)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" } + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatorImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatorImplemented.json new file mode 100644 index 00000000000..ffe70598def --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationCreatorImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationCreatorImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "creator key not found. Annotation may have zero or more creators.", + "title": "Implements **_creator_ key** which has one or more values, each of which is a **string of format uri** or an **object** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation implements creator key (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/creatorPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratedImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratedImplemented.json new file mode 100644 index 00000000000..0820ae4b335 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratedImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationGeneratedImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Valid Annotation-level generated key not found. Annotation may have zero or exactly one generated key value.", + "title": "Implements Annotation-level **_generated_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation implements exactly one generated key value (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/generatedPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratedValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratedValidated.json new file mode 100644 index 00000000000..29a51a7f131 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratedValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationGeneratedValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has multiple generated key values or a single generated key value that is not of format date-time.", + "title": "If present the Annotation-level **_generated_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when no Annotation generated key present or when generated key has a single value that is of format date-time (Section 3.3.1)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/generatedValidIfPresent" } + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratorImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratorImplemented.json new file mode 100644 index 00000000000..adc1dd58f53 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationGeneratorImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationGeneratorImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "generator key not found. Annotation may have zero or more generators.", + "title": "Implements **_generator_ key** which has one or more values, each of which is a **string of format uri** or an **object** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information).", + "description": "True when the Annotation implements generator key (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/generatorPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationModifiedImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationModifiedImplemented.json new file mode 100644 index 00000000000..3bd8d4cef89 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationModifiedImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationModifiedImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Valid Annotation-level modified key not found. Annotation may have zero or exactly one modified key value.", + "title": "Implements Annotation-level **_modified_ key** which has a **single value** that is a **string of format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when the Annotation implements exactly one modified key value (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/modifiedPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationModifiedValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationModifiedValidated.json new file mode 100644 index 00000000000..cc7980afaf4 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationModifiedValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationModifiedValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has multiple modified key values or a single modified key value that is not of format date-time.", + "title": "If present the Annotation-level **_modified_ key** has a **single value** that is of **format date-time** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": "True when no Annotation modified key present or when modified key has a single value that is of format date-time (Section 3.3.1)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" } + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationSingleCreatorImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationSingleCreatorImplemented.json new file mode 100644 index 00000000000..b0bd901d9fd --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-annotationSingleCreatorImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-annotationSingleCreatorImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Annotation SHOULD have a creator key with a single value.", + "title": "Implements Annotation-level **_creator_ key** with a **single value** - [model 3.3.1](https://www.w3.org/TR/annotation-model/#lifecycle-information)", + "description": " (Section 3.3.1)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/singleCreatorPropertyFound" } + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-singleAnnotationCreatorImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-singleAnnotationCreatorImplemented.json new file mode 100644 index 00000000000..b7da822a697 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.1-singleAnnotationCreatorImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.1-singleAnnotationCreatorImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": " Annotation should have exactly one creator.", + "title": "Annotation implements creator key with single value.", + "description": "True when the Annotation implements creator key with single value (Section 3.3.1)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/singleCreatorPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmailImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmailImplemented.json new file mode 100644 index 00000000000..6d41632ec2d --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmailImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentEmailImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Email for Annotation Creator (Agent) not found. Agents may have one or more email values.", + "title": "Implements Annotation-level creator (Agent) **_email_ key** with one or more values, each of which is a **mailto: uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email values for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentEmailFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmailFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json new file mode 100644 index 00000000000..78aa363a525 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentEmail_sha1Implemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Email_sha1 for Annotation Creator (Agent) not found. Agents may have one or more email_sha1 values.", + "title": "Implements Annotation-level creator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email_sha1 values for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json new file mode 100644 index 00000000000..ff000a82618 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentHomepageImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Homepage for Annotation Creator (Agent) not found. Agents may have one or more homepage values.", + "title": "Implements Annotation-level creator (Agent) **_homepage_ key** with one or more values, each of which is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more homepage values for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentHomepageFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentHomepageFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentIdImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentIdImplemented.json new file mode 100644 index 00000000000..0a2ee9c9aea --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentIdImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentIdImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Id for Annotation Creator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.", + "title": "Implements Annotation-level creator (Agent) **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when type for Annotation Creator (Agent) has exactly one id (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "id.json#/definitions/idValueFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "id.json#/definitions/idValueFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNameImplemented.json new file mode 100644 index 00000000000..d30cd043d18 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentNameImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Name for Annotation Creator (Agent) not found. Agents may have one or more name values.", + "title": "Implements Annotation-level creator (Agent) **_name_ key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more name values for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentNameFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json new file mode 100644 index 00000000000..782d3a66c21 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentNicknameImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Nickname for Annotation Creator (Agent) not found. Agents should have exactly one nickname value.", + "title": "Implements Annotation-level creator (Agent) **_nickname_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when exactly one nickname for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json new file mode 100644 index 00000000000..6d52e898323 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentSingleNameImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Single name for Annotation Creator (Agent) not found. Agents should have exactly one name value.", + "title": "Implements Annotation-level creator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when exactly one name for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentSingularNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNameFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentTypeImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentTypeImplemented.json new file mode 100644 index 00000000000..5c8bb762312 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationCreatorAgentTypeImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationCreatorAgentTypeImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Type (Person, Organization, Software) for Annotation Creator (Agent) not found. Agents should have one or more type values.", + "title": "Implements Annotation-level creator (Agent) **_type_ key** with one or more values from **model-recommended list (Person, Organization, Software)** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when type for Annotation Creator (Agent) is implemented (Section 3.3.2)", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentTypeFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentTypeFound" } } } + } + ] + } + }, + "required": ["creator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json new file mode 100644 index 00000000000..1f619843562 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentEmailImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Email for Annotation Generator (Agent) not found. Agents may have one or more email values.", + "title": "Implements Annotation-level generator (Agent) **_email_ key** with one or more values, each of which is a **mailto: uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email values for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentEmailFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmailFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json new file mode 100644 index 00000000000..f864f24ae7b --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Email_sha1 for Annotation Generator (Agent) not found. Agents may have one or more email_sha1 values.", + "title": "Implements Annotation-level generator (Agent) **email_sha1 key** with one or more values - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more email_sha1 values for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentEmail_sha1Found" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json new file mode 100644 index 00000000000..664f5a5cf12 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentHomepageImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Homepage for Annotation Generator (Agent) not found. Agents may have one or more homepage values.", + "title": "Implements Annotation-level generator (Agent) **_homepage_ key** with one or more values, each of which is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more homepage values for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentHomepageFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentHomepageFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentIdImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentIdImplemented.json new file mode 100644 index 00000000000..59a70dbb47e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentIdImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentIdImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Id for Annotation Generator (Agent) not found or more than 1 found. Agents should have exactly one id of format uri.", + "title": "Implements Annotation-level generator (Agent) **_id_ key** with **single value** that is a **string of format uri** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when type for Annotation Generator (Agent) has exactly one id (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "id.json#/definitions/idValueFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "id.json#/definitions/idValueFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNameImplemented.json new file mode 100644 index 00000000000..eeb8722b36e --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentNameImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Name for Annotation Generator (Agent) not found. Agents may have one or more name values.", + "title": "Implements Annotation-level generator (Agent) **_name_ key** with one or more values. [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when one or more name values for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentNameFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json new file mode 100644 index 00000000000..ae8e235dea9 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentNicknameImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Nickname for Annotation Generator (Agent) not found. Agents should have exactly one nickname value.", + "title": "Implements Annotation-level generator (Agent) **_nickname_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when exactly one nickname for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNicknameFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json new file mode 100644 index 00000000000..a657e5cac1a --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentSingleNameImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Single name for Annotation Generator (Agent) not found. Agents should have exactly one name value.", + "title": "Implements Annotation-level generator (Agent) **_name_ key** with a **single value** that is a string - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when exactly one name for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentSingularNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentSingularNameFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json new file mode 100644 index 00000000000..4d12fbd07e9 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json @@ -0,0 +1,24 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.2-annotationGeneratorAgentTypeImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Type (Person, Organization, Software) for Annotation Generator (Agent) not found. Agents should have one or more type values.", + "title": "Implements Annotation-level generator (Agent) **_type_ key** with one or more values from **model-recommended list (Person, Organization, Software)** - [model 3.2.2](https://www.w3.org/TR/annotation-model/#agents)", + "description": "True when type for Annotation Generator (Agent) is implemented (Section 3.3.2)", + "properties": + { "generator": + { "oneOf": + [ + { "$ref": "otherProperties.json#/definitions/agentTypeFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "otherProperties.json#/definitions/agentTypeFound" } } } + } + ] + } + }, + "required": ["generator"] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.3-annotationAudienceImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.3-annotationAudienceImplemented.json new file mode 100644 index 00000000000..164a45d9991 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.3-annotationAudienceImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.3-annotationAudienceImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "audience key not found. An Annotation may have one or more audience values.", + "title": "Implements **_audience_ key** which has one or more values with each audience instance described using **[schema.org/Audience](http://schema.org/Audience) classes and properties** - [model 3.3.3](https://www.w3.org/TR/annotation-model/#intended-audience)", + "description": "True when the Annotation has an audience key (Section 3.3.3)", + "allOf": + [ + {"$ref": "otherProperties.json#/definitions/audiencePropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.5-annotationMotivationImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.5-annotationMotivationImplemented.json new file mode 100644 index 00000000000..3933df5bb62 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.5-annotationMotivationImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.5-annotationMotivationImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "motivation key with value from model motivation list not found. Annotation may have zero or more motivations with values drawn from model ontology.", + "title": "Implements **_motivation_ key** which has one or more values, each of which is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "description": "True when the Annotation implements motivation key with value(s) drawn from model motivation ontology (Section 3.3.5)", + "allOf": + [ + { "$ref": "annotations.json#/definitions/motivationPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.5-annotationSingleMotivationImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.5-annotationSingleMotivationImplemented.json new file mode 100644 index 00000000000..1f6358a0834 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.5-annotationSingleMotivationImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.5-annotationSingleMotivationImplemented.json", + "assertionType": "should", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": " Annotation SHOULD have a motivation key with a single value from model motivation ontology.", + "title": "Implements **_motivation_ key** with a **single value** that is from the **model's list of Motivations** - [model 3.3.5](https://www.w3.org/TR/annotation-model/#motivation-and-purpose)", + "description": "True when the Annotation has motivation key with a single value from model motivation ontology (Section 3.3.5)", + "type": "object", + "allOf": [ + { "$ref": "annotations.json#/definitions/singleMotivationPropertyFound" } + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.6-annotationRightsImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.6-annotationRightsImplemented.json new file mode 100644 index 00000000000..a2e2a993700 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.6-annotationRightsImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.6-annotationRightsImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Annotatoin-level rights key having string value(s) of format uri not found. Annotation may have zero or more rights key values.", + "title": "Implements Annotation-level **_rights_** key which has one or more values, each of which is a **string of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "description": "True when the Annotation implements rights key with with string(s) of format uri value(s) (Section 3.3.6)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/rightsPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.6-annotationRightsValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.6-annotationRightsValidated.json new file mode 100644 index 00000000000..40c025f689f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.6-annotationRightsValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.6-annotationRightsValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has one or more values for the rights key are not strings of format uri.", + "title": "If present the Annotation-level **_rights_ key** has values that are all **strings of format uri** - [model 3.3.6](https://www.w3.org/TR/annotation-model/#rights-information)", + "description": "True when no Annotation rights key present or when all values of rights key are strings of format uri (Section 3.3.6)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" } + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationCanonicalImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationCanonicalImplemented.json new file mode 100644 index 00000000000..1f58d84b0af --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationCanonicalImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.7-annotationCanonicalImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "canonical key having a single string value of format uri not found. Annotation may have canonical key with exactly one value.", + "title": "Implements Annotation-level **_canonical_ key** which has a single value that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "description": "True when the Annotation implements canonical key with with single string of format uri value (Section 3.3.7)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/canonicalPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationCanonicalValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationCanonicalValidated.json new file mode 100644 index 00000000000..db1a9c27f00 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationCanonicalValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.7-annotationCanonicalValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation has more than one value for canonical key or value for canonical key is not of format uri.", + "title": "If present the Annotation-level **_canonical_ key** has a **single value** that is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "description": "True when no Annotation canonical key present or when value of canonical key is singular and of format uri (Section 3.3.7)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/canonicalValidIfPresent" } + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationViaImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationViaImplemented.json new file mode 100644 index 00000000000..f25cfb02704 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationViaImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.7-annotationViaImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "Annotation-level via key with string(s) of format uri as value(s) not found. Annotation may have via key with one or more values.", + "title": "Implements Annotation-level **_via_ key** which has one or more values, each of which is a **string of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "description": "True when the Annotation implements via key with with string(s) of format uri as value(s) (Section 3.3.7)", + "allOf": + [ + { "$ref": "otherProperties.json#/definitions/viaPropertyFound"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationViaValidated.json b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationViaValidated.json new file mode 100644 index 00000000000..2592ed800df --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/3.3.7-annotationViaValidated.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "3.3.7-annotationviaValidated.json", + "assertionType": "must", + "expectedResult": "valid", + "onUnexpectedResult" : "failAndContinue", + "errorMessage": "ERROR: Annotation values for via key are not of format uri.", + "title": "If present the Annotation-level **_via_ key** has values that are all **strings of format uri** - [model 3.3.7](https://www.w3.org/TR/annotation-model/#other-identities)", + "description": "True when no Annotation via key present or when all values of via key are strings of format uri (Section 3.3.7)", + "type": "object", + "allOf": [ + { "$ref": "otherProperties.json#/definitions/viaValidIfPresent" } + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/4.4-annotationStylesheetImplemented.json b/tests/wpt/web-platform-tests/annotation-model/annotations/4.4-annotationStylesheetImplemented.json new file mode 100644 index 00000000000..d5a264732d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/4.4-annotationStylesheetImplemented.json @@ -0,0 +1,14 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "4.4-annotationStylesheetImplemented.json", + "assertionType": "may", + "expectedResult": "valid", + "onUnexpectedResult" : "passAndContinue", + "errorMessage": "stylesheet key with exactly one value not found. Annotation may have stylesheet key with exactly one value.", + "title": "Implements **_stylesheet_ key** which has a **single value** that is an **object or string of format uri**. [model 4.4](https://www.w3.org/TR/annotation-model/#styles)", + "description": "True when the Annotation implements stylesheet key with exactly one value (object or string of format uri)(Section 4.4)", + "allOf": + [ + { "$ref": "annotations.json#/definitions/stylesheetDetected"} + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/annotationAgentOptionals-manual.html b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationAgentOptionals-manual.html new file mode 100644 index 00000000000..1fe35437568 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationAgentOptionals-manual.html @@ -0,0 +1,61 @@ + + + +Annotation implements optional keys and meets optional key value constraints for Creator and Generator Agents + + + + + + + + +

    Fill the textarea below with JSON output from your annotation client +implementation that supports the following criteria:

    +
    +

    Specifically, the following assertions will be evaluated:

    +
    +
    + +

    +

    +
    + + diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/annotationAgentOptionals.test b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationAgentOptionals.test new file mode 100644 index 00000000000..ee61869e49b --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationAgentOptionals.test @@ -0,0 +1,25 @@ +{ + "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld", + "name": "Annotation implements optional keys and meets optional key value constraints for Creator and Generator Agents", + "description": "Agents (Creators, Generators) involved in an Annotation:
    • Should include certain properties (keys)
    • May include additional keys
    • should have Agent key values that conform to model recommended constraints
    Note: failing an assertion indicates that a recommended or optional feature has not been implemented or has not been implemented correctly.", + "testType": "manual", + "ref": "https://www.w3.org/TR/annotation-model/#other-properties", + "assertions": [ + "annotations/3.3.2-annotationCreatorAgentIdImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentIdImplemented.json", + "annotations/3.3.2-annotationCreatorAgentTypeImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentTypeImplemented.json", + "annotations/3.3.2-annotationCreatorAgentNicknameImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentNicknameImplemented.json", + "annotations/3.3.2-annotationCreatorAgentSingleNameImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentSingleNameImplemented.json", + "annotations/3.3.2-annotationCreatorAgentNameImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentNameImplemented.json", + "annotations/3.3.2-annotationCreatorAgentEmailImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentEmailImplemented.json", + "annotations/3.3.2-annotationCreatorAgentEmail_sha1Implemented.json", + "annotations/3.3.2-annotationGeneratorAgentEmail_sha1Implemented.json", + "annotations/3.3.2-annotationCreatorAgentHomepageImplemented.json", + "annotations/3.3.2-annotationGeneratorAgentHomepageImplemented.json" + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/examples/example2-manual.html b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationMusts-manual.html similarity index 56% rename from tests/wpt/web-platform-tests/annotation-model/examples/example2-manual.html rename to tests/wpt/web-platform-tests/annotation-model/annotations/annotationMusts-manual.html index 811ffd22e89..1caa167c73e 100644 --- a/tests/wpt/web-platform-tests/annotation-model/examples/example2-manual.html +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationMusts-manual.html @@ -1,23 +1,39 @@ -A test that has an 'or' clause +Annotation has all required keys and all annotation keys used meet required value constraints + -

    Fill the textarea below with JSON output from your annotation client +

    Fill the textarea below with JSON output from your annotation client implementation that supports the following criteria:

    Specifically, the following assertions will be evaluated:

    - +

    diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/annotationMusts.test b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationMusts.test new file mode 100644 index 00000000000..e32bd482e43 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationMusts.test @@ -0,0 +1,23 @@ +{ + "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld", + "name": "Annotation has all required keys and all annotation keys used meet required value constraints", + "description": "Web Annotations:
    • MUST include certain properties (keys)
    • MUST NOT have both body and bodyValue keys simultaneously
    • MUST satisfy model constraints on values of required and any optional Annotation keys used
    Note: Optional Annotation keys, optional constraints on key values, and optional and required details of body(ies) and target(s) checked by other tests.", + "testType": "manual", + "ref": "https://www.w3.org/TR/annotation-model/#annotations", + "assertions": [ + "annotations/3.1-annotationContextValidated.json", + "annotations/3.1-annotationIdValidated.json", + "annotations/3.1-annotationTypeValidated.json", + "annotations/3.1-targetKeyFound.json", + "annotations/3.2-targetObjectsRecognized.json", + "annotations/3.2.5-notBodyBodyValue.json", + "annotations/3.2-bodyObjectsRecognized.json", + "annotations/3.2.5-bodyValueValidated.json", + "annotations/3.3.1-annotationCreatedValidated.json", + "annotations/3.3.1-annotationModifiedValidated.json", + "annotations/3.3.1-annotationGeneratedValidated.json", + "annotations/3.3.6-annotationRightsValidated.json", + "annotations/3.3.7-annotationCanonicalValidated.json", + "annotations/3.3.7-annotationViaValidated.json" + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/examples/example1-manual.html b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals-manual.html similarity index 57% rename from tests/wpt/web-platform-tests/annotation-model/examples/example1-manual.html rename to tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals-manual.html index 4554567c9f4..acdefff4e27 100644 --- a/tests/wpt/web-platform-tests/annotation-model/examples/example1-manual.html +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals-manual.html @@ -1,23 +1,39 @@ -Verify annotation conforms to the model +Annotation implements optional keys and meets optional key value constraints + -

    Fill the textarea below with JSON output from your annotation client +

    Fill the textarea below with JSON output from your annotation client implementation that supports the following criteria:

    Specifically, the following assertions will be evaluated:

    - +

    diff --git a/tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals.test b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals.test new file mode 100644 index 00000000000..8fd1da41ce9 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/annotations/annotationOptionals.test @@ -0,0 +1,25 @@ +{ + "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld", + "name": "Annotation implements optional keys and meets optional key value constraints", + "description": "Web Annotations:
    • Should include certain properties (keys)
    • May include additional keys
    • should have Annotation key values that conform to model recommended constraints
    Note: failing an assertion indicates that a recommended or optional feature has not been implemented or has not been implemented correctly.", + "testType": "manual", + "ref": "https://www.w3.org/TR/annotation-model/#other-properties", + "assertions": [ + "annotations/3.1-bodyKeyFound.json", + "annotations/3.3.1-annotationSingleCreatorImplemented.json", + "annotations/3.3.1-annotationCreatedImplemented.json", + "annotations/3.3.5-annotationSingleMotivationImplemented.json", + "annotations/3.2.5-bodyValueImplemented.json", + "annotations/3.3.1-annotationCreatorImplemented.json", + "annotations/3.3.1-annotationGeneratorImplemented.json", + "annotations/3.3.1-annotationGeneratedImplemented.json", + "annotations/3.3.1-annotationModifiedImplemented.json", + "annotations/3.3.3-annotationAudienceImplemented.json", + "annotations/3.3.5-annotationMotivationImplemented.json", + "annotations/3.3.6-annotationRightsImplemented.json", + "annotations/3.3.7-annotationCanonicalImplemented.json", + "annotations/3.3.7-annotationViaImplemented.json", + "annotations/4.4-annotationStylesheetImplemented.json" + + ] +} diff --git a/tests/wpt/web-platform-tests/annotation-model/collections/.gitignore b/tests/wpt/web-platform-tests/annotation-model/collections/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/annotations.json b/tests/wpt/web-platform-tests/annotation-model/definitions/annotations.json new file mode 100644 index 00000000000..df1f73613ab --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/definitions/annotations.json @@ -0,0 +1,212 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "annotations.json", + "title": "Definitions: Annotations.", + "description": "Schemas in #/definitions detect or validate keys/objects (direct children) uniquely used to describe Annotations (Section 3.1 and 3.3.5).", + "definitions": { + + "contextValueFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid @context string", + "description": "True when the string has value http://www.w3.org/ns/anno.jsonld (Section 3.1)", + "type": "string", + "enum": [ "http://www.w3.org/ns/anno.jsonld" ] + }, + + "contextValueInArrayFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid @context string found in array", + "description": "True when the array contains a string item having value http://www.w3.org/ns/anno.jsonld (Section 3.1)", + "type": "array", + "not": + { "items": + { "not": + { "$ref": "#/definitions/contextValueFound" } + } + } + }, + + "annotationTypeValueRecognized": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid annotation type value string", + "description": "True when the string has value 'Annotation' (Section 3.1)", + "type": "string", + "enum": [ "Annotation" ] + }, + + "annotationTypeValueInArrayRecognized": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Valid annotation type array", + "description": "True when the array contains a string item having value 'Annotation' (Section 3.1)", + "type": "array", + "not": + { "items": + { "not": + { "$ref": "#/definitions/annotationTypeValueRecognized" } + } + } + }, + + "annotationTypeValueFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Implementation: Annotation type", + "description": "True when the Annotation has type key and 'Annotation' is a value of type (Section 3.1)", + "type": "object", + "required": [ "type" ], + "properties": { + "type": { + "oneOf": [ + { "$ref": "annotations.json#/definitions/annotationTypeValueRecognized" }, + { "$ref": "annotations.json#/definitions/annotationTypeValueInArrayRecognized" } + ] + } + } + }, + + "motivationList": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: list of motivation and purposes", + "description": "List of motivations and purposes as defined in the model (Section 3.3.5).", + "type": "string", + "enum": ["assessing", "bookmarking", "classifying", "commenting", "describing", "editing", "highlighting", "identifying", "linking", "moderating", "questioning", "replying", "tagging" ] + }, + + "motivationRecognizedIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: motivation value", + "description": "True when the annotation has 0 or more motivation property values (Section 3.3.5)", + "type": "object", + "properties": {"motivation": + { "oneOf": [ + { "$ref": "#/definitions/motivationList" }, + { "type": "array", + "minItems": 1, + "items": { "$ref": "#/definitions/motivationList" } } + ] + } + } + }, + + "motivationSingularIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: singular motivation value", + "description": "True when the annotation has 0 or exactly one motivation property value (Section 3.3.5)", + "type": "object", + "properties": {"motivation": + { "oneOf": [ + { "$ref": "#/definitions/motivationList" }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { "$ref": "#/definitions/motivationList" } } + ] + } + } + }, + + "motivationPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: via motivation with qualifying annotation class", + "description": "Supports implementation check of via (if/when) used on Annotation (Sections 3.3.5)", + "oneOf": [ + {"$ref": "#/definitions/annotationTypeValueFound"} + ], + "allOf": [ + {"required": ["motivation"]}, + {"$ref": "#/definitions/motivationRecognizedIfPresent"} + ] + }, + + "singleMotivationPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: via motivation with qualifying annotation class", + "description": "Supports implementation check of via (if/when) used on Annotation (Sections 3.3.5)", + "oneOf": [ + {"$ref": "#/definitions/annotationTypeValueFound"} + ], + "allOf": [ + {"required": ["motivation"]}, + {"$ref": "#/definitions/motivationSingularIfPresent"} + ] + }, + + "stylesheetValueDefinition": + { + "title": "Definition: stylesheet value", + "description": "True when Annotation has no stylesheet, references an external stylesheet, or has embedded stylesheet of type CssStylesheet (Section 4.4)", + "type": "object", + "properties": + { + "stylesheet": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri"}, + { "type": "object", + "properties": + { + "type": { "type": "string", + "enum": [ "CssStylesheet" ]}, + "id": { "$ref": "id.json#/definitions/stringUri" }, + "value": { "type": "string" } + }, + "not": { "required": [ "id", "value"] }, + "oneOf": [ + { "required": [ "id"] }, + { "required": [ "value"] } + ] + } + ] + } + } + }, + + "stylesheetDetected": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Annotation stylesheet", + "description": "True when the Annotation has a valid stylesheet property (Section 4.4)", + "allOf": [ + {"required": ["stylesheet"]}, + {"$ref": "#/definitions/stylesheetValueDefinition"} + ] + }, + + "bodyValueValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: bodyValue", + "description": "True when the Annotation has no bodyValue key or has a bodyValue key with valid value (Section 3.2.5)", + "type": "object", + "properties": + { + "bodyValue": + { + "oneOf": + [ + { "type": "string" }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { "type": "string" } + } + ] + } + } + }, + + "bodyValueFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": " Implementation: bodyValue", + "description": "True when the Annotation has a valid bodyValue (Section 3.2.5)", + "allOf": + [ + { "$ref": "#/definitions/bodyValueValidIfPresent" }, + { "required": [ "bodyValue" ] } + ] + } + + } +} diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/bodyTarget.json b/tests/wpt/web-platform-tests/annotation-model/definitions/bodyTarget.json new file mode 100644 index 00000000000..65af961f681 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/definitions/bodyTarget.json @@ -0,0 +1,1049 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "bodyTarget.json", + "title": "Definitions: Bodies and Targets.", + "description": "Schemas in #/definitions detect or validate keys, objects or constraints variously applicable to Bodies and/or Targets (Section 3.2.1 - 3.2.6). Excludes Choice, Set and Specific Resources.", + "definitions": + { + "externalWebResourceDetected": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: External Web Resource", + "description": "True when the object is an External Web Resource, i.e., includes an id that is of format uri but does not contain value (Textual Body) or source (Specific Resource) keys (Sections 3.2.1, 3.2.4, 4).", + "type": "object", + "allOf": [ {"$ref": "id.json#/definitions/idValueFound"} ], + "not": + { "anyOf": + [ + { "required": ["value"] }, + { "required": ["source"] }, + { "required": ["target"] } + ] + } + }, + + "sourceEwrDetected": + { + "type": "object", + "properties": + { + "source": {"$ref": "#/definitions/externalWebResourceDetected"} + } + }, + + "itemEwrDetected": + { + "type": "object", + "properties": + { + "items": { + "type": "array", + "minItems": 1, + "not": + { "items": {"not": { "$ref": "#/definitions/externalWebResourceDetected" } } } + } + } + }, + + "textualBodyFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Embedded Textual Body", + "description": "True when the object is an Embedded Textual Body, i.e., includes the value key (Section 3.2.4).", + "type" : "object", + "properties" : + { + "value": + { + "type": "string" + } + }, + "required": [ "value" ] + } , + + "itemETBDetected": + { + "type": "object", + "properties": + { + "items": { + "type": "array", + "minItems": 1, + "not": + { "items": {"not": { "$ref": "#/definitions/textualBodyFound" } } } + } + } + }, + + "targetResourcesFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Resources that can be used as Target", + "description": "True when the string is format uri or the object is recognized as a valid target resource (Sections 3.2 and 4).", + "type" : ["string", "object"], + "oneOf": [ + {"$ref": "id.json#/definitions/stringUri"}, + {"$ref": "choiceSet.json#/definitions/choiceDetected" }, + {"$ref": "choiceSet.json#/definitions/compositeDetected" }, + {"$ref": "choiceSet.json#/definitions/independentsDetected" }, + {"$ref": "choiceSet.json#/definitions/listDetected" }, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" } + ] + }, + + "bodyResourcesFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Resources that can be used as Body", + "description": "True when the string is format uri or the object is recognized as a valid body resource (Sections 3.2 and 4).", + "type" : ["string", "object"], + "oneOf": [ + {"$ref": "id.json#/definitions/stringUri"}, + {"$ref": "choiceSet.json#/definitions/choiceDetected" }, + {"$ref": "choiceSet.json#/definitions/compositeDetected" }, + {"$ref": "choiceSet.json#/definitions/independentsDetected" }, + {"$ref": "choiceSet.json#/definitions/listDetected" }, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ] + }, + + "optionalBodyPropertiesShould" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Body Keys Should Validations", + "description": "Supports validity checks of optional keys (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "$ref": "#/definitions/resourceTypeShouldIfPresent" }, + { "$ref": "#/definitions/formatValidIfPresent" }, + { "$ref": "#/definitions/languageValidIfPresent" }, + { "$ref": "#/definitions/processingLanguageValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/creatorValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/generatorValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/audienceValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/accessibilityValidIfPresent" } + ] + }, + + "optionalBodyPropertiesMust" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Body Keys Must Validations", + "description": "Supports validity checks of optional keys (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "$ref": "#/definitions/textDirectionValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/generatedValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/canonicalValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/viaValidIfPresent" } + ] + }, + + "optionalBodyPurposePropertyShould" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Purpose Key", + "description": "Supports validity checks of optional purpose key (if/when) used on Specific Resources or Textual Body Resources (Sections 3.3.5)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "$ref": "otherProperties.json#/definitions/purposeRecognizedIfPresent" } + ] + }, + + "optionalTargetPropertiesShould" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Target Keys Should validation", + "description": "Supports validity check of optional keys (if/when) used on External Web Resources, Specific Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" } + ], + "allOf" : + [ + { "$ref": "#/definitions/resourceTypeShouldIfPresent" }, + { "$ref": "#/definitions/formatValidIfPresent" }, + { "$ref": "#/definitions/languageValidIfPresent" }, + { "$ref": "#/definitions/processingLanguageValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/creatorValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/generatorValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/audienceValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/accessibilityValidIfPresent" } + ] + }, + + "optionalTargetPropertiesMust" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Optional Target Keys Must validation", + "description": "Supports validity check of optional keys (if/when) used on External Web Resources, Specific Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" } + ], + "allOf" : + [ + { "$ref": "#/definitions/textDirectionValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/generatedValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/canonicalValidIfPresent" }, + { "$ref": "otherProperties.json#/definitions/viaValidIfPresent" } + ] + }, + + "resourceTypeRecognizedIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: body / target classes", + "description": "True when type value for body / target is or includes item from recommended list of classes (Section 3.2.2)", + "type": "object", + "properties": + { + "type": + { "oneOf": + [ + { "type": "string", + "enum": [ "Dataset", "Image", "Video", "Sound", "Text" ] }, + { "type": "array", + "minItems": 1, + "not": + { "items": + { "not": + { "type": "string", + "enum": [ "Dataset", "Image", "Video", "Sound", "Text" ] } + } + } + } + ] + } + } + }, + + "resourceTypeShouldIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: body / target classes all from 3.2.2", + "description": "Adds TextualBody to list from 3.2.2. True when type absent or all type value(s) for body / target are from recommended list of classes (Section 3.2.2), or TextualBody", + "type": "object", + "properties": + { + "type": + { "oneOf": + [ + { "type": "string", + "enum": [ "Dataset", "Image", "Video", "Sound", "Text", "TextualBody" ] }, + { "type": "array", + "minItems": 1, + "items": + { "type": "string", + "enum": [ "Dataset", "Image", "Video", "Sound", "Text", "TextualBody" ] } + } + ] + } + } + }, + + "recognizedTypeFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: type key with recognized classes", + "description": "Supports implementation check of type (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.2)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["type" ] }, + { "$ref": "#/definitions/resourceTypeRecognizedIfPresent" } + ] + + }, + + "itemRecognizedTypeFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having type key with qualifying body/target classes", + "description": "Supports implementation check of items having type (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/recognizedTypeFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceRecognizedTypeFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having type key", + "description": "Supports implementation check of type (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["type"] , + "$ref": "#/definitions/resourceTypeRecognizedIfPresent" + } + }, + "required": ["source"] + }, + + "formatValueCheck": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: format value regex", + "description": "True when string value starts with a registered top-level Media type, including trailing slash (Section 3.2.1)", + "type": "string", + "pattern": "^(application/|audio/|example/|image/|multipart/|text/|video/)" + }, + + "formatValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: format validity", + "description": "True when the body or target has no format or has a valid format value - single string or array of strings (Section 3.2.1)", + "type": "object", + "properties": + { + "format": + { + "oneOf": + [ + {"$ref": "#/definitions/formatValueCheck"}, + {"type": "array", + "minItems": 1, + "items" : {"$ref": "#/definitions/formatValueCheck"} + } + ] + } + } + }, + + "formatSingularIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: format", + "description": "True when the body or target format value, if present, is singular and valid (Section 3.2.1)", + "type": "object", + "properties": + { + "format": + { + "oneOf": + [ + {"$ref": "#/definitions/formatValueCheck"}, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items" : {"$ref": "#/definitions/formatValueCheck"} } + ] + } + } + }, + + "formatPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: format key with qualifying body/target classes", + "description": "Supports implementation check of format (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["format" ] }, + { "$ref": "#/definitions/formatValidIfPresent" } + ] + }, + + "itemFormatPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having format key with qualifying body/target classes", + "description": "Supports implementation check of items having format (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/formatPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceFormatPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having format key", + "description": "Supports implementation check of format (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["format"] , + "$ref": "#/definitions/formatValidIfPresent" + } + }, + "required": ["source"] + }, + + "singleFormatPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: format key with qualifying body/target classes", + "description": "Supports implementation check of format being singular (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["format"] }, + { "$ref": "#/definitions/formatSingularIfPresent" } + ] + }, + + "itemSingleFormatPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having singular format key with qualifying body/target classes", + "description": "Supports implementation check of items having singular format (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/singleFormatPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceSingleFormatPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having single format key value", + "description": "Supports implementation check of singular format (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["format"] , + "$ref": "#/definitions/formatSingularIfPresent" + } + }, + "required": ["source"] + }, + + "languageValueCheck" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: language value regex", + "description": "True when string value starts with a two or three lc characters and a hyphen or end of string (Section 3.2.1)", + "type": "string", + "oneOf" : + [ + {"pattern": "^([a-z]){2,3}$"}, + {"pattern": "^([a-z]){2,3}-"} + ] + + }, + + "languageValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: language value", + "description": "True when the body or target has no language or has a valid language value - single string or array of strings (Section 3.2.1)", + "type": "object", + "properties": + { + "language": + { + "oneOf": + [ + {"$ref": "#/definitions/languageValueCheck"}, + {"type": "array", + "minItems": 1, + "items" : {"$ref": "#/definitions/languageValueCheck"} + } + ] + } + } + }, + + "languageSingularIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definitions: single language valid", + "description": "True when the body or target has no language or has exactly one language property - single string (Section 3.2.1)", + "type": "object", + "properties": + { + "language": + { + "oneOf": + [ + {"$ref": "#/definitions/languageValueCheck"}, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items" : {"$ref": "#/definitions/languageValueCheck"} } + ] + } + } + }, + + "languagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: language key with qualifying body/target classes", + "description": "Supports implementation check of language (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["language" ] }, + { "$ref": "#/definitions/languageValidIfPresent" } + ] + }, + + "itemLanguagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having language key with qualifying body/target classes", + "description": "Supports implementation check of items having language (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/languagePropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceLanguagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having language key", + "description": "Supports implementation check of language (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["language"] , + "$ref": "#/definitions/languageValidIfPresent" + } + }, + "required": ["source"] + }, + + "singleLanguagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: language key with qualifying body/target classes", + "description": "Supports implementation check of language being singular (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["language"] }, + { "$ref": "#/definitions/languageSingularIfPresent" } + ] + }, + + "itemSingleLanguagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having singular language key with qualifying body/target classes", + "description": "Supports implementation check of items having singular language (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/singleLanguagePropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceSingleLanguagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having single language key value", + "description": "Supports implementation check of singular language (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["language"] , + "$ref": "#/definitions/languageSingularIfPresent" + } + }, + "required": ["source"] + }, + + "processingLanguageValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: processingLanguage", + "description": "True when the Body or Target has no processingLanguage or exactly one processingLanguage property (Section 3.2.1)", + "type": "object", + "properties": + { + "processingLanguage": + { + "oneOf": + [ + {"$ref": "#/definitions/languageValueCheck"}, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items" : {"$ref": "#/definitions/languageValueCheck"} } + ] + } + } + }, + + "processingLanguagePropertyFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: processingLanguage Key with qualifying body/target classes", + "description": "Supports implementation check of processingLanguage (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["processingLanguage" ] }, + { "$ref": "#/definitions/processingLanguageValidIfPresent" } + ] + }, + + "itemProcessingLanguagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having processingLanguage key with qualifying body/target classes", + "description": "Supports implementation check of items having processingLanguage (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/processingLanguagePropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceProcessingLanguagePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having processingLanguage key", + "description": "Supports implementation check of processingLanguage (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["processingLanguage"] , + "$ref": "#/definitions/processingLanguageValidIfPresent" + } + }, + "required": ["source"] + }, + + "textDirectionValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: textDirection", + "description": "True when the body or target has no textDirection or exactly one valid textDirection (Section 3.2.1)", + "type": "object", + "properties": + { + "textDirection": + { + "oneOf": + [ + {"type": "string", + "enum": ["ltr", "rtl", "auto"] }, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items" : {"type": "string", + "enum": ["ltr", "rtl", "auto"] } } + ] + } + } + }, + + "textDirectionPropertyFound" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: textDirection Key with qualifying body/target classes", + "description": "Supports implementation check of textDirection (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": + [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + {"$ref": "#/definitions/externalWebResourceDetected" }, + {"$ref": "#/definitions/textualBodyFound" } + ], + "allOf" : + [ + { "required": ["textDirection" ] }, + { "$ref": "#/definitions/textDirectionValidIfPresent" } + ] + }, + + "itemTextDirectionPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having textDirection key with qualifying body/target classes", + "description": "Supports implementation check of items having textDirection (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/textDirectionPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceTextDirectionPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having textDirection key", + "description": "Supports implementation check of textDirection (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["textDirection"] , + "$ref": "#/definitions/textDirectionValidIfPresent" + } + }, + "required": ["source"] + }, + + "ewrWithItems" : + { + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/externalWebResourceDetected"}, + { "required": [ "items" ] } + ] + }, + + "sourceEwrWithItems": + { + "type": "object", + "properties": + { + "source": {"$ref": "#/definitions/ewrWithItems"} + }, + "required": ["source"] + }, + + "itemEwrWithItems": + { + "type": "object", + "properties": + { + "items": { + "type": "array", + "minItems": 1, + "not": + { "items": {"not": { "$ref": "#/definitions/ewrWithItems" } } } + } + }, + "required": ["items"] + }, + + "ewrWithPurpose" : + { + "allOf": + [ + { "$ref": "#/definitions/externalWebResourceDetected"}, + { "required": [ "purpose" ] } + ] + }, + + "sourceEwrWithPurpose": + { + "type": "object", + "properties": + { + "source": {"$ref": "#/definitions/ewrWithPurpose"} + }, + "required": ["source"] + }, + + "itemEwrWithPurpose": + { + "type": "object", + "properties": + { + "items": { + "type": "array", + "minItems": 1, + "not": + { "items": {"not": { "$ref": "#/definitions/ewrWithPurpose" } } } + } + }, + "required": ["items"] + }, + + "embeddedTextualBodyWithItems" : + { + "allOf": + [ + { "$ref": "#/definitions/textualBodyFound"}, + { "required": [ "items" ] } + ] + }, + + "itemETBWithItems": + { + "type": "object", + "properties": + { + "items": { + "type": "array", + "minItems": 1, + "not": + { "items": {"not": { "$ref": "#/definitions/embeddedTextualBodyWithItems" } } } + } + }, + "required": ["items"] + }, + + "embeddedTextualBodyWithSource" : + { + "allOf": + [ + { "$ref": "#/definitions/textualBodyFound"}, + { "required": [ "source" ] } + ] + }, + + "itemETBWithSource": + { + "type": "object", + "properties": + { + "items": { + "type": "array", + "minItems": 1, + "not": + { "items": {"not": { "$ref": "#/definitions/embeddedTextualBodyWithSource" } } } + } + }, + "required": ["items"] + }, + + "embeddedTextTypeIncludesTextualBody": + { + "allOf": + [ + { "$ref": "#/definitions/textualBodyFound" }, + { "required": ["type"] }, + { "properties": + { + "type": + { + "oneOf": + [ + { "type": "string", + "enum": ["TextualBody"] }, + { "type": "array", + "minItems": 1, + "not": + { "items": + { "not": { "enum": [ "TextualBody"] } } + } + } + ] + } + } + } + ] + }, + + "itemEmbeddedTextTypeIncludesTextualBody": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/embeddedTextTypeIncludesTextualBody" } } + } + } + }, + "required": ["items"] + }, + + "embeddedTextTypeIncludesText": + { + "allOf": + [ + { "$ref": "#/definitions/textualBodyFound" }, + { "required": ["type"] }, + { "properties": + { + "type": + { + "oneOf": + [ + { "type": "string", + "enum": ["Text"] }, + { "type": "array", + "minItems": 1, + "not": + { "items": + { "not": { "enum": [ "Text"] } } + } + } + ] + } + } + } + ] + }, + + "itemEmbeddedTextTypeIncludesText": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/embeddedTextTypeIncludesText" } } + } + } + }, + "required": ["items"] + } + + } +} diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/choiceSet.json b/tests/wpt/web-platform-tests/annotation-model/definitions/choiceSet.json index a1ce251b03a..ffe21a0f0e0 100644 --- a/tests/wpt/web-platform-tests/annotation-model/definitions/choiceSet.json +++ b/tests/wpt/web-platform-tests/annotation-model/definitions/choiceSet.json @@ -1,18 +1,214 @@ { "$schema": "http://json-schema.org/draft-04/schema#", - "id" : "choiceSet.json", - "type": "object", - "properties": + "id": "choiceSet.json", + "title": "Definitions: Choice, Composite, List, Independents.", + "description": "Schemas in #/definitions detect or validate keys/objects used in describing Choice, Composite, List, Independents (Sections 3.2.7 and 3.2.8).", + "definitions": { - "type": + + "itemsDetected" : { - "type": "string", - "enum": ["Choice", "Composite", "List", "Independents"] + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: items", + "description": "True when the object includes items key and value of items is an array containing at least 1 item, which can be a specificResource, an externalWebResource, a uri, a textualBody or another choice/set (Sections 3.2.7 and 3.2.8).", + "type": "object", + "properties" : + { + "items" : + { + "type" : "array", + "minItems": 1, + "items": { + "oneOf": + [ + { "$ref": "specificResource.json#/definitions/specificeResourceDetected" }, + { "$ref": "bodyTarget.json#/definitions/externalWebResourceDetected" }, + { "$ref": "bodyTarget.json#/definitions/textualBodyFound" }, + { "$ref": "id.json#/definitions/stringUri" }, + { "allOf": + [ + { "$ref" : "#/definitions/choiceOrSetTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] + } + ] + } + } + }, + "required": [ "items" ] }, - "items" : + + "choiceTypeDefinition": { - "type" : "array" + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Choice type", + "description": "True when object has type key and object's type is 'Choice' (Section 3.2.7)", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["Choice"] + } + }, + "required": [ "type" ] + }, + + "compositeTypeDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Composite type", + "description": "True when object has type key and object's type is 'Composite' (Section 3.2.7)", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["Composite"] + } + }, + "required": [ "type" ] + }, + + "listTypeDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: List type", + "description": "True when object has type key and object's type is 'List' (Section 3.2.7)", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["List"] + } + }, + "required": [ "type" ] + }, + + "independentsTypeDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Independents type", + "description": "True when object has type key and object's type is 'Independents' (Section 3.2.7)", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["Independents"] + } + }, + "required": [ "type" ] + }, + + "choiceOrSetTypeDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Choice or Set type", + "description": "True when object has type key and object's type is any of 'Choice', 'Composite', 'List', 'Independents' (Section 3.2.7)", + "type": "object", + "properties": + { + "type": + { + "type": "string", + "enum": ["Choice", "Composite", "List", "Independents"] + } + }, + "required": [ "type" ] + }, + + "choiceDetected": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Detection: Choice", + "description": "True when object's type is 'Choice' and the object has an items array (Section 3.2.7)", + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/choiceTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] + }, + + "compositeDetected": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Detection: Composite", + "description": "True when object's type is 'Composite' and the object has an items array (Section 3.2.8)", + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/compositeTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] + }, + + "listDetected": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Detection: List", + "description": "True when object's type is 'List' and the object has an items array (Section 3.2.7)", + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/listTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] + }, + + "independentsDetected": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Detection: Independents", + "description": "True when object's type is 'Independents' and the object has an items array (Section 3.2.7)", + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/independentsTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] + }, + + "choiceOrSetDetected": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Detection: Choice or Set", + "description": "True when object's type is one of Choice, Composite, List or Independents and the object has an items array (Section 3.2.7)", + "type": "object", + "allOf": + [ + { "$ref": "#/definitions/choiceOrSetTypeDefinition" }, + { "$ref": "#/definitions/itemsDetected" } + ] + }, + + "choiceSetWithValue" : + { + "allOf": + [ + { "$ref": "#/definitions/choiceOrSetDetected" }, + { "required": [ "value" ] } + ] + }, + + "choiceSetWithSource" : + { + "allOf": + [ + { "$ref": "#/definitions/choiceOrSetDetected" }, + { "required": [ "source" ] } + ] + }, + + "choiceSetWithPurpose" : + { + "allOf": + [ + { "$ref": "#/definitions/choiceOrSetDetected" }, + { "required": [ "purpose" ] } + ] } - }, - "required": [ "type", "items" ] + + } } diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/externalWebResource.json b/tests/wpt/web-platform-tests/annotation-model/definitions/externalWebResource.json deleted file mode 100644 index 0848b4c3460..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/definitions/externalWebResource.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id" : "externalWebResource.json", - "type": "object", - "properties": - { - "id": - { - "$ref": "stringUri.json#" - } - }, - "required": [ "id" ] -} diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/id.json b/tests/wpt/web-platform-tests/annotation-model/definitions/id.json new file mode 100644 index 00000000000..b037e87c94f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/definitions/id.json @@ -0,0 +1,38 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id" : "id.json", + "title": "Definitions: id key", + "description": "Schemas in #/definitions used to detect valid id (string of format uri or array containing 1 item of string, format uri).", + "definitions": + { + "stringUri" : + { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "string", + "format": "uri" + }, + + "arraySingleStringUri": + { + "oneOf": + [ + { "$ref": "#/definitions/stringUri" }, + { "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { "$ref": "#/definitions/stringUri" } + } + ] + }, + + "idValueFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "required": [ "id" ], + "properties": { + "id" : { "$ref": "#/definitions/arraySingleStringUri" } + } + } + } +} diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/otherProperties.json b/tests/wpt/web-platform-tests/annotation-model/definitions/otherProperties.json new file mode 100644 index 00000000000..0cf42525cb4 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/definitions/otherProperties.json @@ -0,0 +1,1472 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "otherProperties.json", + "title": "Definitions: Other Properties.", + "description": "Schemas in #/definitions detect or validate keys, objects or constraints variously applicable to Annotations, Bodies, Targets, Specific Resources, Textual Bodies, Items, and/or Sources (Section 3.3).", + "definitions": { + + "createdValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: created value", + "description": "True when the object being tested (annotation, body, target...) has no created or has a single created of format date-time (Section 3.3.1)", + "type": "object", + "properties": {"created": {"oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "type": "string", + "format": "date-time" + } + } + ]}} + }, + + "createdPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: created key with qualifying body/target classes", + "description": "Supports implementation check of created (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"$ref": "#/definitions/createdValidIfPresent"}, + {"required": ["created"]} + ] + }, + + "itemCreatedPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having created key with qualifying body/target classes", + "description": "Supports implementation check of items having created (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/createdPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceCreatedPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having created key", + "description": "Supports implementation check of created (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["created"] , + "$ref": "#/definitions/createdValidIfPresent" + } + }, + "required": ["source"] + }, + + "generatedValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: generated value", + "description": "True when the annotation, body or target has no generated or has a single generated of format date-time (Section 3.3.1)", + "type": "object", + "properties": {"generated": {"oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "type": "string", + "format": "date-time" + } + } + ]}} + }, + + "generatedPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: generated key with qualifying body/target classes", + "description": "Supports implementation check of generated (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"} + ], + "allOf": [ + {"$ref": "#/definitions/generatedValidIfPresent"}, + {"required": ["generated"]} + ] + }, + + "modifiedValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: modified value", + "description": "True when the annotation, body or target has no modified or has a single modified of format date-time (Section 3.3.1)", + "type": "object", + "properties": {"modified": {"oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": { + "type": "string", + "format": "date-time" + } + } + ]}} + }, + + "modifiedPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: modified key with qualifying body/target classes", + "description": "Supports implementation check of modified (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"$ref": "#/definitions/modifiedValidIfPresent"}, + {"required": ["modified"]} + ] + }, + + "itemModifiedPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having modified key with qualifying body/target classes", + "description": "Supports implementation check of items having modified (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/modifiedPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceModifiedPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having modified key", + "description": "Supports implementation check of modified (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["modified"] , + "$ref": "#/definitions/modifiedValidIfPresent" + } + }, + "required": ["source"] + }, + + "creatorValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: creator value", + "description": "True when the annotation, body or target has one or more creators (Section 3.3.1)", + "type": "object", + "properties": {"creator": + {"oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" }, + { + "type": "array", + "minItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" } + ] + } + } + ] + } + } + }, + + "creatorSingularIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: creator value", + "description": "True when the annotation, body or target has exactly 1 creator (Section 3.3.1)", + "type": "object", + "properties": {"creator": + {"oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" }, + { + "type": "array", + "minItems": 1, + "maxItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" } + ] + } + } + ] + } + } + }, + + "creatorPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: creator key with qualifying body/target classes", + "description": "Supports implementation check of creator (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.1)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["creator"]}, + {"$ref": "#/definitions/creatorValidIfPresent"} + ] + }, + + "itemCreatorPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having creator key with qualifying body/target classes", + "description": "Supports implementation check of items having creator (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/creatorPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceCreatorPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having creator key", + "description": "Supports implementation check of creator (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["creator"] , + "$ref": "#/definitions/creatorValidIfPresent" + } + }, + "required": ["source"] + }, + + "singleCreatorPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: creator key with qualifying body/target classes", + "description": "Supports implementation check of creator being singular (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.1)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["creator"]}, + {"$ref": "#/definitions/creatorSingularIfPresent"} + ] + }, + + "itemSingleCreatorPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having singular creator key with qualifying body/target classes", + "description": "Supports implementation check of items having singular creator (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/singleCreatorPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceSingleCreatorPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having singular creator key", + "description": "Supports implementation check of singular creator (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["creator"] , + "$ref": "#/definitions/creatorSingularIfPresent" + } + }, + "required": ["source"] + }, + + "generatorValidIfPresent": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: generator value", + "description": "True when the annotation, body or target has a single generator (Section 3.3.1)", + "type": "object", + "properties": {"generator": + {"oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" }, + { + "type": "array", + "minItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object" } + ] + } + } + ] + } + } + }, + + "generatorPropertyFound": { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: generator key with qualifying body/target classes", + "description": "Supports implementation check of generator (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.1)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"} + ], + "allOf": [ + {"required": ["generator"]}, + {"$ref": "#/definitions/generatorValidIfPresent"} + ] + }, + + "audienceDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: audience object", + "description": "True when object meets our requirements for audience value (Section 3.3.3)", + "type": "object", + "properties": { + "id": {"$ref": "id.json#/definitions/arraySingleStringUri"} , + "type": { + "oneOf": [ + { "type": "string", + "pattern": "^(schema:)"}, + { "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^(schema:)" + } + } + ] + } + }, + "patternProperties": { + "^(schema:)": { "type": ["string", "object", "array"] } + }, + "additionalProperties": false + }, + + "audienceValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: audience value", + "description": "True when no audience or audience property of the annotation, body, target, ... is valid (Section 3.3.3)", + "type": "object", + "properties": { + "audience": + { "oneOf": + [ + { "$ref": "id.json#/definitions/stringUri" }, + { "$ref": "#/definitions/audienceDefinition" }, + { + "type": "array", + "minItems": 1, + "items": { + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "$ref": "#/definitions/audienceDefinition" } + ] + } + } + ] + } + } + }, + + "audiencePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: audience key with qualifying body/target classes", + "description": "Supports implementation check of audience (if/when) used on Annotation, External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.3)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["audience"]}, + {"$ref": "#/definitions/audienceValidIfPresent"} + ] + }, + + "itemAudiencePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having audience key with qualifying body/target classes", + "description": "Supports implementation check of items having audience (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/audiencePropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceAudiencePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having audience key", + "description": "Supports implementation check of audience (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["audience"] , + "$ref": "#/definitions/audienceValidIfPresent" + } + }, + "required": ["source"] + }, + + "accessibilityValidIfPresent": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: accessibility value", + "description": "True when no accessibility or accessibility property of the body, target, ... is valid (Section 3.3.4)", + "type": "object", + "properties": { + "accessibility" : { + "oneOf": [ + { "type": "string" }, + { "type": "array" , + "minItems": 1, + "items": { + "type": "string" + } + } + ] + } + } + }, + + "accessibilityPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: accessibility key with qualifying body/target classes", + "description": "Supports implementation check of accessibility (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Section 3.3.4)", + "oneOf": [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["accessibility"]}, + {"$ref": "#/definitions/accessibilityValidIfPresent"} + ] + }, + + "itemAccessibilityPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having accessibility key with qualifying body/target classes", + "description": "Supports implementation check of items having accessibility (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/accessibilityPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceAccessibilityPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having audience key", + "description": "Supports implementation check of audience (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["accessibility"] , + "$ref": "#/definitions/accessibilityValidIfPresent" + } + }, + "required": ["source"] + }, + + "rightsValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: rights value", + "description": "True when the annotation, body or target has 0 or more rights properties that are strings of format uri (Section 3.3.6)", + "type": "object", + "properties": {"rights": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "array", + "minItems": 1, + "items": { "$ref": "id.json#/definitions/stringUri" } } + ] + } + } + }, + + "rightsPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: rights key with qualifying annotation/body/target classes", + "description": "Supports implementation check of rights (if/when) used on Annotation, External Web Resources, Specific Resources, Textual Body Resources (Sections 3.3.6)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["rights"]}, + {"$ref": "#/definitions/rightsValidIfPresent"} + ] + }, + + "itemRightsPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having rights key with qualifying body/target classes", + "description": "Supports implementation check of items having rights (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/rightsPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceRightsPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having rights key", + "description": "Supports implementation check of rights (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["rights"] , + "$ref": "#/definitions/rightsValidIfPresent" + } + }, + "required": ["source"] + }, + + "canonicalValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: canonical value", + "description": "True when the annotation, body or target has 0 or 1 canonical properties that are strings of format uri (Section 3.3.7)", + "type": "object", + "properties": { + "canonical": { "$ref": "id.json#/definitions/arraySingleStringUri" } + } + }, + + "canonicalPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: canonical key with qualifying annotation/body/target classes", + "description": "Supports implementation check of canonical (if/when) used on Annotation, External Web Resources, Specific Resources, Textual Body Resources (Sections 3.3.7)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["canonical"]}, + {"$ref": "#/definitions/canonicalValidIfPresent"} + ] + }, + + "itemCanonicalPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having canonical key with qualifying body/target classes", + "description": "Supports implementation check of items having canonical (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/canonicalPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceCanonicalPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having canonical key", + "description": "Supports implementation check of canonical (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["canonical"] , + "$ref": "#/definitions/canonicalValidIfPresent" + } + }, + "required": ["source"] + }, + + "viaValidIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: via value", + "description": "True when the annotation, body or target has 0 or more via properties that are strings of format uri (Section 3.3.7)", + "type": "object", + "properties": {"via": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "array", + "minItems": 1, + "items": { "$ref": "id.json#/definitions/stringUri" } } + ] + } + } + }, + + "viaPropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: via key with qualifying annotation/body/target classes", + "description": "Supports implementation check of via (if/when) used on Annotation, External Web Resources, Specific Resources, Textual Body Resources (Sections 3.3.7)", + "oneOf": [ + {"$ref": "annotations.json#/definitions/annotationTypeValueFound"}, + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["via"]}, + {"$ref": "#/definitions/viaValidIfPresent"} + ] + }, + + "itemViaPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having via key with qualifying body/target classes", + "description": "Supports implementation check of items having via (if/when) used on External Web Resources, Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/viaPropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "sourceViaPropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: Specific Resource source having via key", + "description": "Supports implementation check of via (if/when) used on Specific Resource source (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "source": + { + "type": "object", + "required": ["via"] , + "$ref": "#/definitions/viaValidIfPresent" + } + }, + "required": ["source"] + }, + + "purposeRecognizedIfPresent": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Validation: purpose value", + "description": "True when the body has 0 or more purpose property values (Section 3.3.5)", + "type": "object", + "properties": {"purpose": + { "oneOf": [ + { "$ref": "annotations.json#/definitions/motivationList" }, + { "type": "array", + "minItems": 1, + "items": { "$ref": "annotations.json#/definitions/motivationList" } } + ] + } + } + }, + + "purposePropertyFound": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: purpose key with qualifying body classes", + "description": "Supports implementation check of purpose (if/when) used on Specific Resource Body or Textual Body (Sections 3.3.5)", + "oneOf": [ + {"$ref": "specificResource.json#/definitions/specificeResourceDetected"}, + {"$ref": "bodyTarget.json#/definitions/textualBodyFound"} + ], + "allOf": [ + {"required": ["purpose"]}, + {"$ref": "#/definitions/purposeRecognizedIfPresent"} + ] + }, + + "itemPurposePropertyFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having purpose key with qualifying body/target classes", + "description": "Supports implementation check of items having purpose (if/when) used on Specific Resources, Textual Body Resources (Sections 3.2.1-6, 3.3)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/purposePropertyFound" } } + } + } + }, + "required": ["items"] + }, + + "creatorAgentWithIdFound": + { "type": "object", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "id.json#/definitions/idValueFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "id.json#/definitions/idValueFound" } } } + } + ] + } + }, + "required": ["creator"] + }, + + "sourceCreatorAgentWithIdFound": + { "type": "object", + "properties": + { + "source": + { "$ref": "#/definitions/creatorAgentWithIdFound" } + }, + "required": ["source"] + }, + + "itemCreatorAgentWithIdFound": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/creatorAgentWithIdFound" } } + } + } + }, + "required": ["items"] + }, + + "agentTypeDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent type value", + "description": "True when the object (creator or generator agent) has no type or has at least one recognized Agent type value (Section 3.3.2)", + "type": "object", + "properties": + { + "type": + { + "oneOf": + [ + {"type": "string", + "enum": ["Person", "Organization", "Software"] }, + {"type": "array", + "minItems": 1, + "not": + { + "items" : + { "not": + { "type": "string", + "enum": ["Person", "Organization", "Software"] } + } + } + } + ] + } + } + }, + + "agentTypeFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent type value", + "description": "True when the object (creator or generator agent) has at least one recognized Agent type value (Section 3.3.2)", + "allOf": [ + {"required": ["type"]}, + {"$ref": "#/definitions/agentTypeDefinition"} + ] + }, + + "creatorAgentWithTypeFound": + { "type": "object", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "#/definitions/agentTypeFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "#/definitions/agentTypeFound" } } } + } + ] + } + }, + "required": ["creator"] + }, + + "sourceCreatorAgentWithTypeFound": + { "type": "object", + "properties": + { + "source": + { "$ref": "#/definitions/creatorAgentWithTypeFound" } + }, + "required": ["source"] + }, + + "itemCreatorAgentWithTypeFound": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/creatorAgentWithTypeFound" } } + } + } + }, + "required": ["items"] + }, + + "agentNameDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent name value", + "description": "True when the object (creator or generator agent) has no name or has Agent name(s) of type string (Section 3.3.2)", + "type": "object", + "properties": + { + "name": + { + "oneOf": + [ + {"type": "string" }, + {"type": "array", + "minItems": 1, + "items": {"type": "string"} + } + ] + } + } + }, + + "agentSingularNameDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent name value", + "description": "True when the object (creator or generator agent) has no name or has exactly one Agent name that is a string (Section 3.3.2)", + "type": "object", + "properties": + { + "name": + { + "oneOf": + [ + {"type": "string" }, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items": {"type": "string"} + } + ] + } + } + }, + + "agentNameFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent name value", + "description": "True when the object (creator or generator agent) has Agent name value(s) (Section 3.3.2)", + "allOf": [ + {"required": ["name"]}, + {"$ref": "#/definitions/agentNameDefinition"} + ] + }, + + "creatorAgentWithNameFound": + { "type": "object", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "#/definitions/agentNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "#/definitions/agentNameFound" } } } + } + ] + } + }, + "required": ["creator"] + }, + + "sourceCreatorAgentWithNameFound": + { "type": "object", + "properties": + { + "source": + { "$ref": "#/definitions/creatorAgentWithNameFound" } + }, + "required": ["source"] + }, + + "itemCreatorAgentWithNameFound": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/creatorAgentWithNameFound" } } + } + } + }, + "required": ["items"] + }, + + "agentSingularNameFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent name value", + "description": "True when the object (creator or generator agent) has exactly one Agent name value (Section 3.3.2)", + "allOf": [ + {"required": ["name"]}, + {"$ref": "#/definitions/agentSingularNameDefinition"} + ] + }, + + "creatorAgentWithSingularNameFound": + { "type": "object", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "#/definitions/agentSingularNameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "#/definitions/agentSingularNameFound" } } } + } + ] + } + }, + "required": ["creator"] + }, + + "sourceCreatorAgentWithSingularNameFound": + { "type": "object", + "properties": + { + "source": + { "$ref": "#/definitions/creatorAgentWithSingularNameFound" } + }, + "required": ["source"] + }, + + "itemCreatorAgentWithSingularNameFound": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/creatorAgentWithSingularNameFound" } } + } + } + }, + "required": ["items"] + }, + + "agentSingularNicknameDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent nickname value", + "description": "True when the object (creator or generator agent) has no nickname or has exacly one Agent nickname that is a string (Section 3.3.2)", + "type": "object", + "properties": + { + "nickname": + { + "oneOf": + [ + {"type": "string" }, + {"type": "array", + "minItems": 1, + "maxItems": 1, + "items": {"type": "string"} + } + ] + } + } + }, + + "agentSingularNicknameFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent nickname value", + "description": "True when the object (creator or generator agent) has an Agent nickname value (Section 3.3.2)", + "allOf": [ + {"required": ["nickname"]}, + {"$ref": "#/definitions/agentSingularNicknameDefinition"} + ] + }, + + "creatorAgentWithSingularNicknameFound": + { "type": "object", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "#/definitions/agentSingularNicknameFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "#/definitions/agentSingularNicknameFound" } } } + } + ] + } + }, + "required": ["creator"] + }, + + "sourceCreatorAgentWithSingularNicknameFound": + { "type": "object", + "properties": + { + "source": + { "$ref": "#/definitions/creatorAgentWithSingularNicknameFound" } + }, + "required": ["source"] + }, + + "itemCreatorAgentWithSingularNicknameFound": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/creatorAgentWithSingularNicknameFound" } } + } + } + }, + "required": ["items"] + }, + + "agentEmailDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent email value", + "description": "True when the object (creator or generator agent) has no email or has Agent one or more email addresses that start(s) mailto: and is format uri (Section 3.3.2)", + "type": "object", + "properties": + { + "email": + { + "oneOf": + [ + { "type": "string", + "pattern": "^(mailto)", + "format": "uri" }, + {"type": "array", + "minItems": 1, + "items": {"type": "string", + "pattern": "^(mailto)", + "format": "uri" } + } + ] + } + } + }, + + "agentEmailFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent email value", + "description": "True when the object (creator or generator agent) has Agent email value(s) (Section 3.3.2)", + "allOf": [ + {"required": ["email"]}, + {"$ref": "#/definitions/agentEmailDefinition"} + ] + }, + + "creatorAgentWithEmailFound": + { "type": "object", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "#/definitions/agentEmailFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "#/definitions/agentEmailFound" } } } + } + ] + } + }, + "required": ["creator"] + }, + + "sourceCreatorAgentWithEmailFound": + { "type": "object", + "properties": + { + "source": + { "$ref": "#/definitions/creatorAgentWithEmailFound" } + }, + "required": ["source"] + }, + + "itemCreatorAgentWithEmailFound": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/creatorAgentWithEmailFound" } } + } + } + }, + "required": ["items"] + }, + + "agentEmail_sha1Definition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent email_sha1 value", + "description": "True when the object (creator or generator agent) has no email_sha1 or has one or more email_sha1 that is/are a string (Section 3.3.2)", + "type": "object", + "properties": + { + "email_sha1": + { + "oneOf": + [ + {"type": "string" }, + {"type": "array", + "minItems": 1, + "items": {"type": "string"} + } + ] + } + } + }, + + "agentEmail_sha1Found": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent email_sha1 value", + "description": "True when the object (creator or generator agent) has has one or more email_sha1 that is/are a string (Section 3.3.2)", + "allOf": [ + {"required": ["email_sha1"]}, + {"$ref": "#/definitions/agentEmail_sha1Definition"} + ] + }, + + "creatorAgentWithEmail_sha1Found": + { "type": "object", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "#/definitions/agentEmail_sha1Found" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "#/definitions/agentEmail_sha1Found" } } } + } + ] + } + }, + "required": ["creator"] + }, + + "sourceCreatorAgentWithEmail_sha1Found": + { "type": "object", + "properties": + { + "source": + { "$ref": "#/definitions/creatorAgentWithEmail_sha1Found" } + }, + "required": ["source"] + }, + + "itemCreatorAgentWithEmail_sha1Found": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/creatorAgentWithEmail_sha1Found" } } + } + } + }, + "required": ["items"] + }, + + "agentHomepageDefinition": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: Agent homepage value", + "description": "True when the object (creator or generator agent) has no homempage or has one or more agent homepage addresses of format uri (Section 3.3.2)", + "type": "object", + "properties": + { + "email": + { + "oneOf": + [ + { "type": "string", + "format": "uri" }, + {"type": "array", + "minItems": 1, + "items": {"type": "string", + "format": "uri" } + } + ] + } + } + }, + + "agentHomepageFound": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Check for implementation of Agent homepage value", + "description": "True when the object (creator or generator agent) has Agent homepage value(s) (Section 3.3.2)", + "allOf": [ + {"required": ["homepage"]}, + {"$ref": "#/definitions/agentHomepageDefinition"} + ] + }, + + "creatorAgentWithHomepageFound": + { "type": "object", + "properties": + { "creator": + { "oneOf": + [ + { "$ref": "#/definitions/agentHomepageFound" }, + { "type": "array", + "minItems": 1, + "not": + { "items": { "not": { "$ref": "#/definitions/agentHomepageFound" } } } + } + ] + } + }, + "required": ["creator"] + }, + + "sourceCreatorAgentWithHomepageFound": + { "type": "object", + "properties": + { + "source": + { "$ref": "#/definitions/creatorAgentWithHomepageFound" } + }, + "required": ["source"] + }, + + "itemCreatorAgentWithHomepageFound": + { + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/creatorAgentWithHomepageFound" } } + } + } + }, + "required": ["items"] + } + + } +} diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/specificResource.json b/tests/wpt/web-platform-tests/annotation-model/definitions/specificResource.json index 75bd46ba3d8..3e4fc843912 100644 --- a/tests/wpt/web-platform-tests/annotation-model/definitions/specificResource.json +++ b/tests/wpt/web-platform-tests/annotation-model/definitions/specificResource.json @@ -1,17 +1,660 @@ { "$schema": "http://json-schema.org/draft-04/schema#", "id" : "specificResource.json", - "type": "object", - "properties": - { - "source": + "title": "Definitions: Specific Resources.", + "description": "Schemas in #/definitions detect or validate keys/objects used in describing Specific Resources (Section 4).", + "definitions": { + + "sourceDetected": { - "type": ["string", "object" ], - "oneOf": [ - { "$ref": "stringUri.json#" }, - { "$ref": "externalWebResource.json#"} + "title": "Detection: source", + "description": "True when object has exactly 1 source key value and that value is of format uri or an External Web Resource (Section 4) - NB, the Specific Resource is closer in hierarchy to the External Web Resource than a Choice or Set; the items of a Choice or Set may be Specific Resources, but the source of a Specific Resource may not be a Choice or Set.", + "type": "object", + "properties": + { + "source": + { + "type": ["string", "object" ], + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "$ref": "bodyTarget.json#/definitions/externalWebResourceDetected"} + ] + } + }, + "required": ["source"] + }, + + "specificeResourceDetected": + { + "title": "Detection: Specific Resource", + "description": "True when object has exactly 1 source value and at least one of purpose, selector, state, styleClass, renderedVia, scope (Section 4)", + "type": "object", + "$ref": "#/definitions/sourceDetected", + "anyOf": [ + { "$ref": "otherProperties.json#/definitions/purposeRecognizedIfPresent", "required": ["purpose"] }, + { "$ref": "#/definitions/selectorDetected" }, + { "$ref": "#/definitions/stateDetected" }, + { "$ref": "#/definitions/styleClassDetected" }, + { "$ref": "#/definitions/renderedViaDetected" }, + { "$ref": "#/definitions/scopeDetected" } ] + }, + + "itemSpecificResourceDetected": + { + "title": "Detection: Specific Resource as item member of a Choice or Set", + "description": "True when object has items array containing an object with exactly 1 source value and at least one of purpose, selector, state, styleClass, renderedVia, scope (Section 4)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/specificeResourceDetected" } } + } + } + }, + "required": ["items"] + }, + + "selectorDetected": + { + "title": "Definition: selector", + "description": "True when object tested has selector with value matching one or more of the selectors described in the model (Section 4.2)", + "type": "object", + "properties": + { + "selector": + { + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object", + "anyOf": [ + {"$ref": "#/definitions/fragmentSelectorDetected"}, + {"$ref": "#/definitions/cssSelectorDetected"}, + {"$ref": "#/definitions/xpathSelectorDetected"}, + {"$ref": "#/definitions/textQuoteSelectorDetected"}, + {"$ref": "#/definitions/textPositionSelectorDetected"}, + {"$ref": "#/definitions/dataPositionSelectorDetected"}, + {"$ref": "#/definitions/rangeSelectorDetected"}, + {"$ref": "#/definitions/svgSelectorDetected"} + ] + }, + { + "type": "array", + "minItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object", + "anyOf": [ + {"$ref": "#/definitions/fragmentSelectorDetected"}, + {"$ref": "#/definitions/cssSelectorDetected"}, + {"$ref": "#/definitions/xpathSelectorDetected"}, + {"$ref": "#/definitions/textQuoteSelectorDetected"}, + {"$ref": "#/definitions/textPositionSelectorDetected"}, + {"$ref": "#/definitions/dataPositionSelectorDetected"}, + {"$ref": "#/definitions/rangeSelectorDetected"}, + {"$ref": "#/definitions/svgSelectorDetected"} + ] + } + ] + } + } + ] + } + }, + "required": ["selector"] + }, + + "fragmentSelectorDetected": + { + "title": "Detection: fragment selector", + "description": "True when object is a fragment selelctor (Section 4.2.1)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["FragmentSelector"] }, + "value": { "type": "string" }, + "conformsTo": { "type": "string", "format": "uri"} + }, + "required": ["value", "type"] + }, + + "cssSelectorDetected": + { + "title": "Detection: CssSelector selector", + "description": "True when object is a CssSelector selelctor (Section 4.2.2)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["CssSelector"] }, + "value": { "type": "string" } + }, + "required": ["value", "type"] + }, + + "xpathSelectorDetected": + { + "title": "Detection: XPath selector", + "description": "True when object is a XPath selelctor (Section 4.2.3)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["XPathSelector"] }, + "value": { "type": "string" } + }, + "required": ["value", "type"] + }, + + "textQuoteSelectorDetected": + { + "title": "Detection: text quote selector", + "description": "True when object is a text quote selelctor (Section 4.2.4)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["TextQuoteSelector"] }, + "exact": { "type": "string" }, + "prefix": { "type": "string" }, + "suffix": { "type": "string" } + }, + "required": ["exact", "type"] + }, + + "textPositionSelectorDetected": + { + "title": "Definition: text position selector", + "description": "True when object is a text position selelctor (Section 4.2.5)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["TextPositionSelector"] }, + "start": { "type": "integer", "minimum": 0 }, + "end": { "type": "integer","minimum": 0 } + }, + "required": ["start", "end", "type"] + }, + + "dataPositionSelectorDetected": + { + "title": "Detection: data position selector", + "description": "True when object is a data position selelctor (Section 4.2.6)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["DataPositionSelector"] }, + "start": { "type": "integer", "minimum": 0 }, + "end": { "type": "integer", "minimum": 0 } + }, + "required": ["start", "end", "type"] + }, + + "svgSelectorDetected": + { + "title": "Detection: svg selector", + "description": "True when object is a svg selelctor (Section 4.2.7)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["SvgSelector"] }, + "value": { "type": "string" }, + "id": { "$ref": "id.json#/definitions/arraySingleStringUri" } + }, + "required": ["type"], + "oneOf": [ + {"required": ["value"] }, + {"required": ["id"] } + ] + }, + + "rangeSelectorDetected": + { + "title": "Detection: range selector", + "description": "True when object is a range selelctor (Section 4.2.9)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["RangeSelector"] } + }, + "patternProperties": + { + "^(startSelector|endSelector)$": + { "type": "object", + "oneOf": [ + {"$ref": "#/definitions/fragmentSelectorDetected"}, + {"$ref": "#/definitions/cssSelectorDetected"}, + {"$ref": "#/definitions/xpathSelectorDetected"}, + {"$ref": "#/definitions/textQuoteSelectorDetected"}, + {"$ref": "#/definitions/textPositionSelectorDetected"}, + {"$ref": "#/definitions/dataPositionSelectorDetected"}, + {"$ref": "#/definitions/svgSelectorDetected"} + ] + } + }, + "required": ["type", "startSelector", "endSelector"] + }, + + "refinedByDetected": + { + "title": "Detection: refinedBy selector or state", + "description": "True when object is a refinedBy selelctor or state (Section 4.2.8, 4.3.3)", + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri" }, + { + "type": "object", + "oneOf": [ + {"$ref": "#/definitions/fragmentSelectorDetected"}, + {"$ref": "#/definitions/cssSelectorDetected"}, + {"$ref": "#/definitions/xpathSelectorDetected"}, + {"$ref": "#/definitions/textQuoteSelectorDetected"}, + {"$ref": "#/definitions/textPositionSelectorDetected"}, + {"$ref": "#/definitions/dataPositionSelectorDetected"}, + {"$ref": "#/definitions/rangeSelectorDetected"}, + {"$ref": "#/definitions/svgSelectorDetected"}, + {"$ref": "#/definitions/timeStateDetected"}, + {"$ref": "#/definitions/requestHeaderStateDetected"} + ] + }, + { + "type": "array", + "minItems": 1, + "items": + { + "oneOf": [ + { "$ref": "id.json#/definitions/arraySingleStringUri" }, + {"$ref": "#/definitions/fragmentSelectorDetected"}, + {"$ref": "#/definitions/cssSelectorDetected"}, + {"$ref": "#/definitions/xpathSelectorDetected"}, + {"$ref": "#/definitions/textQuoteSelectorDetected"}, + {"$ref": "#/definitions/textPositionSelectorDetected"}, + {"$ref": "#/definitions/dataPositionSelectorDetected"}, + {"$ref": "#/definitions/rangeSelectorDetected"}, + {"$ref": "#/definitions/svgSelectorDetected"}, + {"$ref": "#/definitions/timeStateDetected"}, + {"$ref": "#/definitions/requestHeaderStateDetected"} + ] + } + } + ] + }, + + "stateDetected" : + { + "title": "Definition: state", + "description": "True when object tested has state with value matching one or more of the state classes described in the model (Section 4.3)", + "type": "object", + "properties": + { + "state": + { + "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object", + "anyOf": [ + {"$ref": "id.json#/definitions/idValueFound"}, + {"$ref": "#/definitions/timeStateDetected"}, + {"$ref": "#/definitions/requestHeaderStateDetected"} + ] + }, + { + "type": "array", + "minItems": 1, + "items": + { "oneOf": [ + { "$ref": "id.json#/definitions/stringUri" }, + { "type": "object", + "anyOf": [ + {"$ref": "id.json#/definitions/idValueFound"}, + {"$ref": "#/definitions/timeStateDetected"}, + {"$ref": "#/definitions/requestHeaderStateDetected"} + ] + } + ] + } + } + ] + } + } + }, + + "timeStateDetected": + { + "title": "Definition: time state", + "description": "True when object is a time state (Section 4.3.1)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["TimeState"] }, + "sourceDate": + { "oneOf": [ + { "type": "string", + "format": "date-time"}, + { "type": "array", + "minItems": 1, + "items": + {"type": "string", "format": "date-time"} + } + ] + }, + "sourceDateStart": { "type": "string", "format": "date-time"}, + "sourceDateEnd": { "type": "string", "format": "date-time"}, + "cached": { "type": "string", "format": "uri"} + }, + "required": ["type"], + "dependencies" : + { + "sourceDateStart" : ["sourceDateEnd"], + "sourceDateEnd": ["sourceDateStart"] + }, + "not": + { "required": [ "sourceDate", "sourceDateStart", "sourceDateEnd" ] } + }, + + "requestHeaderStateDetected": + { + "title": "Definition: request header state", + "description": "True when object is a request header state (Section 4.3.2)", + "type": "object", + "properties": + { + "type": { "type": "string", "enum": ["HttpRequestState"] }, + "value": { "type": "string"} + }, + "required": ["type", "value"] + }, + + "styleClassDefinition": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: styleClass property value", + "description": "True when the body/target has no styleClass property or has a styleClass property that is a string values (Section 4.4)", + "type": "object", + "properties": { + "styleClass": { "type": "string" } + } + }, + + "styleClassDetected": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: styleClass key with qualifying body/target classes", + "description": "Supports implementation check of styleClass (if/when) used on Specific Resources (Sections 4.4)", + "allOf": [ + { "$ref": "#/definitions/sourceDetected" }, + { "required": ["styleClass"]}, + { "$ref": "#/definitions/styleClassDefinition"} + ] + }, + + "itemStyleClassPropertyDetected": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having styleClass key with qualifying body/target classes", + "description": "Supports implementation check of items having styleClass (if/when) used on Specific Resources (Sections 4.4)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/styleClassDetected" } } + } + } + }, + "required": ["items"] + }, + + "renderedViaDefinition": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: renderedVia property value", + "description": "True when the body/target has no renderedVia property or has a valid renderedVia property (Section 4.5)", + "type": "object", + "properties": { + "renderedVia": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri"}, + { "$ref": "id.json#/definitions/idValueFound"}, + { "type": "array", + "minItems": 1, + "items": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri"}, + { "$ref": "id.json#/definitions/idValueFound"} + ] + } + } + ] + } + } + }, + + "renderedViaDetected": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: renderedVia key with qualifying body/target classes", + "description": "Supports implementation check of renderedVia (if/when) used on Specific Resources (Sections 4.4)", + "allOf": [ + { "$ref": "#/definitions/sourceDetected" }, + { "required": ["renderedVia"] }, + { "$ref": "#/definitions/renderedViaDefinition" } + ] + }, + + "itemRenderedViaPropertyDetected": + { + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: items having renderedVia key with qualifying body/target classes", + "description": "Supports implementation check of items having renderedVia (if/when) used on Specific Resources (Sections 4.4)", + "type": "object", + "properties": + { + "items": + { + "type": "array", + "minItems": 1, + "not": + { + "items": + { "not": { "$ref": "#/definitions/renderedViaDetected" } } + } + } + }, + "required": ["items"] + }, + + "scopeDefinition": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Definition: scope property value", + "description": "True when the body/target has no scope property or has a valid scope property (Section 4.6)", + "type": "object", + "properties": { + "scope": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/stringUri"}, + { "type": "array", + "minItems": 1, + "items": { "$ref": "id.json#/definitions/stringUri"} + } + ] + } + } + }, + + "scopeDetected": + { "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Collate: scope key with qualifying body/target classes", + "description": "Supports implementation check of scope (if/when) used on Specific Resource Body (Sections 4.6)", + "$ref": "#/definitions/sourceDetected", + "allOf": [ + {"required": ["scope"]}, + {"$ref": "#/definitions/scopeDefinition"} + ] + }, + + "sourceWithCreated": + { + "description": "True if no source, or source is uri, or source is object that does not have created key, or if source is object that has only 1 created key of date-time format", + "type": "object", + "properties": + { + "source": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri" }, + { "$ref": "otherProperties.json#/definitions/createdValidIfPresent" } + ] + } + } + }, + + "sourceWithModified": + { + "description": "True if no source, or source is uri, or source is object that does not have modified key, or if source is object that has only 1 modified key of date-time format", + "type": "object", + "properties": + { + "source": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri" }, + { "$ref": "otherProperties.json#/definitions/modifiedValidIfPresent" } + ] + } + } + }, + + "sourceWithRights": + { + "description": "True if no source, or source is uri, or source is object that does not have rights key, or if source is object that has rights key with all values of uri format", + "type": "object", + "properties": + { + "source": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri" }, + { "$ref": "otherProperties.json#/definitions/rightsValidIfPresent" } + ] + } + } + }, + + "sourceWithCanonical": + { + "description": "True if no source, or source is uri, or source is object that does not have canonical key, or if source is object that has only 1 canonical key of uri format", + "type": "object", + "properties": + { + "source": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri" }, + { "$ref": "otherProperties.json#/definitions/canonicalValidIfPresent" } + ] + } + } + }, + + "sourceWithVia": + { + "description": "True if no source, or source is uri, or source is object that does not have via key, or if source is object that has via key with all values of uri format", + "type": "object", + "properties": + { + "source": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri" }, + { "$ref": "otherProperties.json#/definitions/viaValidIfPresent" } + ] + } + } + }, + + "sourceWithTextDirection": + { + "description": "True if no source, or source is uri, or source is object that does not have textDirection key, or if source is object that has only 1 textDirectoin key, one of ltr, rtl, auto", + "type": "object", + "properties": + { + "source": + { + "oneOf": + [ + { "$ref": "id.json#/definitions/arraySingleStringUri" }, + { "$ref": "bodyTarget.json#/definitions/textDirectionValidIfPresent" } + ] + } + } + }, + + "specificResourceWithItems" : + { + "description": "True if both source and items keys are present.", + "allOf": + [ + { "$ref": "#/definitions/sourceDetected"}, + { "required": [ "items" ] } + ] + }, + + "itemSRWithItems": + { + "type": "object", + "properties": + { + "items": { + "type": "array", + "minItems": 1, + "not": + { "items": {"not": { "$ref": "#/definitions/specificResourceWithItems" } } } + } + }, + "required": ["items"] + }, + + "specificResourceWithValue" : + { + "description": "True if both source and value keys are present.", + "allOf": + [ + { "$ref": "#/definitions/sourceDetected"}, + { "required": [ "value" ] } + ] + }, + + "itemSRWithValue": + { + "type": "object", + "properties": + { + "items": { + "type": "array", + "minItems": 1, + "not": + { "items": {"not": { "$ref": "#/definitions/specificResourceWithValue" } } } + } + }, + "required": ["items"] } - }, - "required": ["source"] + + } } diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/stringUri.json b/tests/wpt/web-platform-tests/annotation-model/definitions/stringUri.json deleted file mode 100644 index 74485e08125..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/definitions/stringUri.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id" : "stringUri.json", - "type": "string", - "format": "uri" -} diff --git a/tests/wpt/web-platform-tests/annotation-model/definitions/textualBody.json b/tests/wpt/web-platform-tests/annotation-model/definitions/textualBody.json deleted file mode 100644 index f6cd48dddf7..00000000000 --- a/tests/wpt/web-platform-tests/annotation-model/definitions/textualBody.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id" : "textualBody.json", - "type": "object", - "properties": - { - "value": - { - "type": "string" - } - }, - "required": [ "value" ] -} diff --git a/tests/wpt/web-platform-tests/annotation-model/examples/example3.test b/tests/wpt/web-platform-tests/annotation-model/examples/example3.test new file mode 100644 index 00000000000..38263cd1850 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/examples/example3.test @@ -0,0 +1,8 @@ +{ + "@context": "https://www.w3.org/ns/JSONtest-v1.jsonld", + "name": "Automated example test", + "description": "A test that runs with no user intervention", + "testType": "automated", + "assertions": [ "common/requiredProperties.json" ], + "content": "common/sampleContent2.jsonld" +} diff --git a/tests/wpt/web-platform-tests/annotation-model/scripts/JSONtest.js b/tests/wpt/web-platform-tests/annotation-model/scripts/JSONtest.js index 7f3e07cb40c..825522e9f42 100644 --- a/tests/wpt/web-platform-tests/annotation-model/scripts/JSONtest.js +++ b/tests/wpt/web-platform-tests/annotation-model/scripts/JSONtest.js @@ -1,4 +1,4 @@ -/* globals add_completion_callback, Promise, done, assert_true, Ajv, on_event */ +/* globals add_completion_callback, Promise, showdown, done, assert_true, Ajv, on_event */ /** * Creates a JSONtest object. If the parameters are supplied @@ -24,16 +24,34 @@ function JSONtest(params) { this.Assertions = []; // object that will contain the assertions to process this.AssertionText = ""; // string that holds the titles of all the assertions in use this.DescriptionText = ""; - this.Base = null; // URI "base" for the tests being run + this.Base = null; // URI "base" for the test suite being run + this.TestDir = null; // URI "base" for the test case being run this.Params = null; // paramaters passed in + this.Promise = null; // master Promise that resolves when intialization is complete this.Properties = null; // testharness_properties from the opening window this.Test = null; // test being run this.AssertionCounter = 0;// keeps track of which assertion is being processed - this._assertionText = []; // Array of text or nested arrays of assertions this._assertionCache = [];// Array to put loaded assertions into + this._assertionText = []; // Array of text or nested arrays of assertions this._loading = true; + showdown.extension('strip', function() { + return [ + { type: 'output', + regex: /

    /, + replace: '' + }, + { type: 'output', + regex: /<\/p>$/, + replace: '' + } + ]; + }); + + + this.markdown = new showdown.Converter({ extensions: [ 'strip' ] }) ; + var pending = [] ; // set up in case DOM finishes loading early @@ -52,6 +70,7 @@ function JSONtest(params) { var l = document.location; var p = l.pathname; + this.TestDir = p.substr(0, 1+p.lastIndexOf('/')); this.Base = p.substr(0, 1+p.indexOf('/', 1)); // if we are under runner, then there are props in the parent window @@ -103,6 +122,28 @@ function JSONtest(params) { this.DescriptionText = test.description; } + if (test.content) { + // we have content + if (typeof test.content === "string") { + // the test content is a string - meaning it is a reference to a file of content + var cPromise = new Promise(function(resolve, reject) { + this.loadDefinition(test.content) + .then(function(content) { + if (typeof content === 'string') { + content = JSON.parse(content) ; + } + test.content = content; + resolve(true); + }.bind(this)) + .catch(function(err) { + reject("Loading " + test.content + ": " + JSON.stringify(err)); + }); + + }.bind(this)); + pending.push(cPromise); + } + } + return new Promise(function(resolve, reject) { if (test.assertions && typeof test.assertions === "object") { @@ -119,6 +160,12 @@ function JSONtest(params) { .then(function (assertContents) { // assertContents has assertions in document order + var typeMap = { + 'must' : "[MANDATORY] ", + 'may' : "[OPTIONAL] ", + 'should' : "[RECOMMENDED] " + }; + var assertIdx = 0; // populate the display of assertions that are being exercised @@ -132,14 +179,22 @@ function JSONtest(params) { // accumulate the assertions - but only when level is 0 var list = [] ; + var type = ""; if (assertions) { if (typeof assertions === "object" && assertions.hasOwnProperty('assertions')) { // this is a conditionObject if (level === 0) { list.push(assertContents[assertIdx]); } + type = assertContents[assertIdx].hasOwnProperty('assertionType') ? + assertContents[assertIdx].assertionType : "must" ; - this.AssertionText += "

  • " + assertContents[assertIdx++].title; + // ensure type defaults to must + if (!typeMap.hasOwnProperty(type)) { + type = "must"; + } + + this.AssertionText += "
  • " + typeMap[type] + this.markdown.makeHtml(assertContents[assertIdx++].title); this.AssertionText += "
      "; buildList(assertions.assertions, level+1) ; this.AssertionText += "
  • \n"; @@ -151,12 +206,22 @@ function JSONtest(params) { // it is a nested list - recurse buildList(assert, level+1) ; this.AssertionText += "\n"; - } else if (typeof assert === "object" && !Array.isArray(assert) && assert.hasOwnProperty('assertions')) { + } else if (typeof assert === "object" && + !Array.isArray(assert) && + assert.hasOwnProperty('assertions')) { if (level === 0) { list.push(assertContents[assertIdx]); } + type = assertContents[assertIdx].hasOwnProperty('assertionType') ? + assertContents[assertIdx].assertionType : "must" ; + + // ensure type defaults to must + if (!typeMap.hasOwnProperty(type)) { + type = "must"; + } + // there is a condition object in the array - this.AssertionText += "
  • " + assertContents[assertIdx++].title; + this.AssertionText += "
  • " + typeMap[type] + this.markdown.makeHtml(assertContents[assertIdx++].title); this.AssertionText += "
      "; buildList(assert, level+1) ; // capture the children too this.AssertionText += "
  • \n"; @@ -164,7 +229,15 @@ function JSONtest(params) { if (level === 0) { list.push(assertContents[assertIdx]); } - this.AssertionText += "
  • " + assertContents[assertIdx++].title + "
  • \n"; + type = assertContents[assertIdx].hasOwnProperty('assertionType') ? + assertContents[assertIdx].assertionType : "must" ; + + // ensure type defaults to must + if (!typeMap.hasOwnProperty(type)) { + type = "must"; + } + + this.AssertionText += "
  • " + typeMap[type] + this.markdown.makeHtml(assertContents[assertIdx++].title) + "
  • \n"; } }.bind(this)); } @@ -189,19 +262,23 @@ function JSONtest(params) { }.bind(this)); }.bind(this))); - // once the DOM and the test / assertions are loaded... set us up - Promise.all(pending) - .then(function() { - this.loading = false; - this.init(); - }.bind(this)) - .catch(function(err) { - // loading the components failed somehow - report the errors and mark the test failed - test( function() { - assert_true(false, "Loading of test components failed: " +JSON.stringify(err)) ; - }, "Loading test components"); - done() ; - return ; + this.Promise = new Promise(function(resolve, reject) { + // once the DOM and the test / assertions are loaded... set us up + Promise.all(pending) + .then(function() { + this.loading = false; + this.init(); + resolve(this); + }.bind(this)) + .catch(function(err) { + // loading the components failed somehow - report the errors and mark the test failed + test( function() { + assert_true(false, "Loading of test components failed: " +JSON.stringify(err)) ; + }, "Loading test components"); + done() ; + reject("Loading of test components failed: "+JSON.stringify(err)); + return ; + }.bind(this)); }.bind(this)); return this; @@ -222,8 +299,10 @@ JSONtest.prototype = { var desc = document.getElementById("testDescription") ; if (!this.loading) { - runButton.disabled = false; - runButton.value = "Check JSON"; + if (runButton) { + runButton.disabled = false; + runButton.value = "Check JSON"; + } if (desc) { desc.innerHTML = this.DescriptionText; } @@ -249,32 +328,34 @@ JSONtest.prototype = { }.bind(this)); } - on_event(runButton, "click", function() { - // user clicked - var content = testInput.value; - runButton.disabled = true; + if (runButton) { + on_event(runButton, "click", function() { + // user clicked + var content = testInput.value; + runButton.disabled = true; - // make sure content is an object - if (typeof content === "string") { - try { - content = JSON.parse(content) ; - } catch(err) { - // if the parsing failed, create a special test and mark it failed - test( function() { - assert_true(false, "Parse of JSON failed: " + err) ; - }, "Parsing submitted input"); - // and just give up - done(); - return ; + // make sure content is an object + if (typeof content === "string") { + try { + content = JSON.parse(content) ; + } catch(err) { + // if the parsing failed, create a special test and mark it failed + test( function() { + assert_true(false, "Parse of JSON failed: " + err) ; + }, "Parsing submitted input"); + // and just give up + done(); + return ; + } } - } - // iterate over all of the tests for this instance - this.runTests(this.Assertions, content); + // iterate over all of the tests for this instance + this.runTests(this.Assertions, content); - // explicitly tell the test framework we are done - done(); - }.bind(this)); + // explicitly tell the test framework we are done + done(); + }.bind(this)); + } }, // runTests - process tests @@ -304,6 +385,13 @@ JSONtest.prototype = { compareWith = 'and'; } + var typeMap = { + 'must' : "", + 'may' : "INFORMATIONAL: ", + 'should' : "WARNING: " + }; + + // for each assertion (in order) load the external json schema if // one is referenced, or use the inline schema if supplied // validate content against the referenced schema @@ -314,8 +402,15 @@ JSONtest.prototype = { assertions.forEach( function(assert, num) { - var expected = assert.hasOwnProperty('expectedResult') ? assert.expectedResult : 'valid' ; - var message = assert.hasOwnProperty('message') ? assert.message : "Result was not " + expected; + var expected = assert.hasOwnProperty('expectedResult') ? + assert.expectedResult : 'valid' ; + var message = assert.hasOwnProperty('errorMessage') ? + assert.errorMessage : "Result was not " + expected; + var type = assert.hasOwnProperty('assertionType') ? + assert.assertionType : "must" ; + if (!typeMap.hasOwnProperty(type)) { + type = "must"; + } // first - what is the type of the assert if (typeof assert === "object" && !Array.isArray(assert)) { @@ -365,7 +460,7 @@ JSONtest.prototype = { } else { assert_true(result, err) ; } - }.bind(this), assert.title); + }.bind(this), "" + level + ":" + (num+1) + " " + assert.title); // we are going to return out of this return; } @@ -384,6 +479,18 @@ JSONtest.prototype = { var schemaName = "inline " + level + ":" + (num+1); + if (typeof assert === "string") { + // the assertion passed in is a file name; find it in the cache + if (this._assertionCache[assert]) { + assert = this._assertionCache[assert]; + } else { + test( function() { + assert_true(false, "Reference to assertion " + assert + " at level " + level + ":" + (num+1) + " unresolved") ; + }, "Processing " + assert); + return ; + } + } + if (assert.assertionFile) { schemaName = "external file " + assert.assertionFile + " " + level + ":" + (num+1); } @@ -428,11 +535,11 @@ JSONtest.prototype = { } if (result === false) { // test result was unexpected; use message - assert_true(result, message + err); + assert_true(result, typeMap[type] + message + err); } else { assert_true(result, err) ; } - }.bind(this), assert.title); + }.bind(this), "" + level + ":" + (num+1) + " " + assert.title); } }.bind(this)); } @@ -497,6 +604,7 @@ JSONtest.prototype = { this._loadFile("GET", theFile, true) .then(function(data) { data.assertionFile = afile; + this._assertionCache[afile] = data; resolve(data); }.bind(this)) .catch(function(err) { @@ -581,7 +689,7 @@ JSONtest.prototype = { if (theURI.indexOf('/') === -1) { // no slash - it's relative to where we are // so just use it - return theURI; + return this.TestDir + theURI; } else if (theURI.indexOf('/') === 0 || theURI.indexOf('http:') === 0 || theURI.indexOf('https:') === 0) { // it is an absolute URI so just use it return theURI; @@ -619,7 +727,8 @@ JSONtest.prototype = { } else if (typeof assert === "object") { ret.push(assert) ; if (assert.hasOwnProperty("assertions")) { - ret.push(this._assertionRefs(assert.assertions)); + // there are embedded assertions; get those too + ret.concat(this._assertionRefs(assert.assertions)); } } else { // it is a file name diff --git a/tests/wpt/web-platform-tests/annotation-model/scripts/showdown.min.js b/tests/wpt/web-platform-tests/annotation-model/scripts/showdown.min.js new file mode 100644 index 00000000000..b0676c7bc34 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/scripts/showdown.min.js @@ -0,0 +1,4 @@ +/*! showdown 20-07-2016 */ + +(function(){function a(a){"use strict";var b={omitExtraWLInCodeBlocks:{defaultValue:!1,describe:"Omit the default extra whiteline added to code blocks",type:"boolean"},noHeaderId:{defaultValue:!1,describe:"Turn on/off generated header id",type:"boolean"},prefixHeaderId:{defaultValue:!1,describe:"Specify a prefix to generated header ids",type:"string"},headerLevelStart:{defaultValue:!1,describe:"The header blocks level start",type:"integer"},parseImgDimensions:{defaultValue:!1,describe:"Turn on/off image dimension parsing",type:"boolean"},simplifiedAutoLink:{defaultValue:!1,describe:"Turn on/off GFM autolink style",type:"boolean"},literalMidWordUnderscores:{defaultValue:!1,describe:"Parse midword underscores as literal underscores",type:"boolean"},strikethrough:{defaultValue:!1,describe:"Turn on/off strikethrough support",type:"boolean"},tables:{defaultValue:!1,describe:"Turn on/off tables support",type:"boolean"},tablesHeaderId:{defaultValue:!1,describe:"Add an id to table headers",type:"boolean"},ghCodeBlocks:{defaultValue:!0,describe:"Turn on/off GFM fenced code blocks support",type:"boolean"},tasklists:{defaultValue:!1,describe:"Turn on/off GFM tasklist support",type:"boolean"},smoothLivePreview:{defaultValue:!1,describe:"Prevents weird effects in live previews due to incomplete input",type:"boolean"},smartIndentationFix:{defaultValue:!1,description:"Tries to smartly fix identation in es6 strings",type:"boolean"}};if(a===!1)return JSON.parse(JSON.stringify(b));var c={};for(var d in b)b.hasOwnProperty(d)&&(c[d]=b[d].defaultValue);return c}function b(a,b){"use strict";var c=b?"Error in "+b+" extension->":"Error in unnamed extension",e={valid:!0,error:""};d.helper.isArray(a)||(a=[a]);for(var f=0;f-1,l=new RegExp(b+"|"+c,"g"+j.replace(/g/g,"")),m=new RegExp(b,j.replace(/g/g,"")),n=[];do for(e=0;g=l.exec(a);)if(m.test(g[0]))e++||(f=l.lastIndex,h=f-g[0].length);else if(e&&!--e){i=g.index+g[0].length;var o={left:{start:h,end:f},match:{start:f,end:g.index},right:{start:g.index,end:i},wholeMatch:{start:h,end:i}};if(n.push(o),!k)return n}while(e&&(l.lastIndex=f));return n};d.helper.matchRecursiveRegExp=function(a,b,c,d){"use strict";for(var e=i(a,b,c,d),f=[],g=0;g0){var l=[];0!==h[0].wholeMatch.start&&l.push(a.slice(0,h[0].wholeMatch.start));for(var m=0;k>m;++m)l.push(b(a.slice(h[m].wholeMatch.start,h[m].wholeMatch.end),a.slice(h[m].match.start,h[m].match.end),a.slice(h[m].left.start,h[m].left.end),a.slice(h[m].right.start,h[m].right.end))),k-1>m&&l.push(a.slice(h[m].wholeMatch.end,h[m+1].wholeMatch.start));h[k-1].wholeMatch.end-1))return a;m=""}else m=c.gUrls[l],d.helper.isUndefined(c.gTitles[l])||(n=c.gTitles[l]);m=d.helper.escapeCharacters(m,"*_",!1);var o='"};return a=a.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)][ ]?(?:\n[ ]*)?\[(.*?)])()()()()/g,e),a=a.replace(/(\[((?:\[[^\]]*]|[^\[\]])*)]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,e),a=a.replace(/(\[([^\[\]]+)])()()()()()/g,e),a=c.converter._dispatch("anchors.after",a,b,c)}),d.subParser("autoLinks",function(a,b,c){"use strict";function e(a,b){var c=d.subParser("unescapeSpecialChars")(b);return d.subParser("encodeEmailAddress")(c)}a=c.converter._dispatch("autoLinks.before",a,b,c);var f=/\b(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+)(?=\s|$)(?!["<>])/gi,g=/<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)>/gi,h=/(?:^|[ \n\t])([A-Za-z0-9!#$%&'*+-\/=?^_`\{|}~\.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?:$|[ \n\t])/gi,i=/<(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi;return a=a.replace(g,'$1'),a=a.replace(i,e),b.simplifiedAutoLink&&(a=a.replace(f,'$1'),a=a.replace(h,e)),a=c.converter._dispatch("autoLinks.after",a,b,c)}),d.subParser("blockGamut",function(a,b,c){"use strict";a=c.converter._dispatch("blockGamut.before",a,b,c),a=d.subParser("blockQuotes")(a,b,c),a=d.subParser("headers")(a,b,c);var e=d.subParser("hashBlock")("
    ",b,c);return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,e),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,e),a=a.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,e),a=d.subParser("lists")(a,b,c),a=d.subParser("codeBlocks")(a,b,c),a=d.subParser("tables")(a,b,c),a=d.subParser("hashHTMLBlocks")(a,b,c),a=d.subParser("paragraphs")(a,b,c),a=c.converter._dispatch("blockGamut.after",a,b,c)}),d.subParser("blockQuotes",function(a,b,c){"use strict";return a=c.converter._dispatch("blockQuotes.before",a,b,c),a=a.replace(/((^[ \t]{0,3}>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,e){var f=e;return f=f.replace(/^[ \t]*>[ \t]?/gm,"~0"),f=f.replace(/~0/g,""),f=f.replace(/^[ \t]+$/gm,""),f=d.subParser("githubCodeBlocks")(f,b,c),f=d.subParser("blockGamut")(f,b,c),f=f.replace(/(^|\n)/g,"$1 "),f=f.replace(/(\s*
    [^\r]+?<\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /gm,"~0"),c=c.replace(/~0/g,"")}),d.subParser("hashBlock")("
    \n"+f+"\n
    ",b,c)}),a=c.converter._dispatch("blockQuotes.after",a,b,c)}),d.subParser("codeBlocks",function(a,b,c){"use strict";a=c.converter._dispatch("codeBlocks.before",a,b,c),a+="~0";var e=/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g;return a=a.replace(e,function(a,e,f){var g=e,h=f,i="\n";return g=d.subParser("outdent")(g),g=d.subParser("encodeCode")(g),g=d.subParser("detab")(g),g=g.replace(/^\n+/g,""),g=g.replace(/\n+$/g,""),b.omitExtraWLInCodeBlocks&&(i=""),g="
    "+g+i+"
    ",d.subParser("hashBlock")(g,b,c)+h}),a=a.replace(/~0/,""),a=c.converter._dispatch("codeBlocks.after",a,b,c)}),d.subParser("codeSpans",function(a,b,c){"use strict";return a=c.converter._dispatch("codeSpans.before",a,b,c),"undefined"==typeof a&&(a=""),a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,e){var f=e;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=d.subParser("encodeCode")(f),b+""+f+""}),a=c.converter._dispatch("codeSpans.after",a,b,c)}),d.subParser("detab",function(a){"use strict";return a=a.replace(/\t(?=\t)/g," "),a=a.replace(/\t/g,"~A~B"),a=a.replace(/~B(.+?)~A/g,function(a,b){for(var c=b,d=4-c.length%4,e=0;d>e;e++)c+=" ";return c}),a=a.replace(/~A/g," "),a=a.replace(/~B/g,"")}),d.subParser("encodeAmpsAndAngles",function(a){"use strict";return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<")}),d.subParser("encodeBackslashEscapes",function(a){"use strict";return a=a.replace(/\\(\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,d.helper.escapeCharactersCallback)}),d.subParser("encodeCode",function(a){"use strict";return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=d.helper.escapeCharacters(a,"*_{}[]\\",!1)}),d.subParser("encodeEmailAddress",function(a){"use strict";var b=[function(a){return"&#"+a.charCodeAt(0)+";"},function(a){return"&#x"+a.charCodeAt(0).toString(16)+";"},function(a){return a}];return a="mailto:"+a,a=a.replace(/./g,function(a){if("@"===a)a=b[Math.floor(2*Math.random())](a);else if(":"!==a){var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a}),a=''+a+"",a=a.replace(/">.+:/g,'">')}),d.subParser("escapeSpecialCharsWithinTagAttributes",function(a){"use strict";var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=d.helper.escapeCharacters(b,"\\`*_",!1)})}),d.subParser("githubCodeBlocks",function(a,b,c){"use strict";return b.ghCodeBlocks?(a=c.converter._dispatch("githubCodeBlocks.before",a,b,c),a+="~0",a=a.replace(/(?:^|\n)```(.*)\n([\s\S]*?)\n```/g,function(a,e,f){var g=b.omitExtraWLInCodeBlocks?"":"\n";return f=d.subParser("encodeCode")(f),f=d.subParser("detab")(f),f=f.replace(/^\n+/g,""),f=f.replace(/\n+$/g,""),f="
    "+f+g+"
    ",f=d.subParser("hashBlock")(f,b,c),"\n\n~G"+(c.ghCodeBlocks.push({text:a,codeblock:f})-1)+"G\n\n"}),a=a.replace(/~0/,""),c.converter._dispatch("githubCodeBlocks.after",a,b,c)):a}),d.subParser("hashBlock",function(a,b,c){"use strict";return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.gHtmlBlocks.push(a)-1)+"K\n\n"}),d.subParser("hashElement",function(a,b,c){"use strict";return function(a,b){var d=b;return d=d.replace(/\n\n/g,"\n"),d=d.replace(/^\n/,""),d=d.replace(/\n+$/g,""),d="\n\n~K"+(c.gHtmlBlocks.push(d)-1)+"K\n\n"}}),d.subParser("hashHTMLBlocks",function(a,b,c){"use strict";for(var e=["pre","div","h1","h2","h3","h4","h5","h6","blockquote","table","dl","ol","ul","script","noscript","form","fieldset","iframe","math","style","section","header","footer","nav","article","aside","address","audio","canvas","figure","hgroup","output","video","p"],f=function(a,b,d,e){var f=a;return-1!==d.search(/\bmarkdown\b/)&&(f=d+c.converter.makeHtml(b)+e),"\n\n~K"+(c.gHtmlBlocks.push(f)-1)+"K\n\n"},g=0;g]*>","","gim");return a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/()/g,d.subParser("hashElement")(a,b,c)),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d.subParser("hashElement")(a,b,c))}),d.subParser("hashHTMLSpans",function(a,b,c){"use strict";for(var e=d.helper.matchRecursiveRegExp(a,"]*>","","gi"),f=0;f]*>\\s*]*>","^(?: |\\t){0,3}\\s*
    ","gim")}),d.subParser("headers",function(a,b,c){"use strict";function e(a){var b,e=a.replace(/[^\w]/g,"").toLowerCase();return c.hashLinkCounts[e]?b=e+"-"+c.hashLinkCounts[e]++:(b=e,c.hashLinkCounts[e]=1),f===!0&&(f="section"),d.helper.isString(f)?f+b:b}a=c.converter._dispatch("headers.before",a,b,c);var f=b.prefixHeaderId,g=isNaN(parseInt(b.headerLevelStart))?1:parseInt(b.headerLevelStart),h=b.smoothLivePreview?/^(.+)[ \t]*\n={2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n=+[ \t]*\n+/gm,i=b.smoothLivePreview?/^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n-+[ \t]*\n+/gm;return a=a.replace(h,function(a,f){var h=d.subParser("spanGamut")(f,b,c),i=b.noHeaderId?"":' id="'+e(f)+'"',j=g,k=""+h+"";return d.subParser("hashBlock")(k,b,c)}),a=a.replace(i,function(a,f){var h=d.subParser("spanGamut")(f,b,c),i=b.noHeaderId?"":' id="'+e(f)+'"',j=g+1,k=""+h+"";return d.subParser("hashBlock")(k,b,c)}),a=a.replace(/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm,function(a,f,h){var i=d.subParser("spanGamut")(h,b,c),j=b.noHeaderId?"":' id="'+e(h)+'"',k=g-1+f.length,l=""+i+"";return d.subParser("hashBlock")(l,b,c)}),a=c.converter._dispatch("headers.after",a,b,c)}),d.subParser("images",function(a,b,c){"use strict";function e(a,b,e,f,g,h,i,j){var k=c.gUrls,l=c.gTitles,m=c.gDimensions;if(e=e.toLowerCase(),j||(j=""),""===f||null===f){if((""===e||null===e)&&(e=b.toLowerCase().replace(/ ?\n/g," ")),f="#"+e,d.helper.isUndefined(k[e]))return a;f=k[e],d.helper.isUndefined(l[e])||(j=l[e]),d.helper.isUndefined(m[e])||(g=m[e].width,h=m[e].height)}b=b.replace(/"/g,"""),b=d.helper.escapeCharacters(b,"*_",!1),f=d.helper.escapeCharacters(f,"*_",!1);var n=''+b+'?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(['"])(.*?)\6[ \t]*)?\)/g,g=/!\[([^\]]*?)] ?(?:\n *)?\[(.*?)]()()()()()/g;return a=a.replace(g,e),a=a.replace(f,e),a=c.converter._dispatch("images.after",a,b,c)}),d.subParser("italicsAndBold",function(a,b,c){"use strict";return a=c.converter._dispatch("italicsAndBold.before",a,b,c),b.literalMidWordUnderscores?(a=a.replace(/(^|\s|>|\b)__(?=\S)([\s\S]+?)__(?=\b|<|\s|$)/gm,"$1$2"),a=a.replace(/(^|\s|>|\b)_(?=\S)([\s\S]+?)_(?=\b|<|\s|$)/gm,"$1$2"),a=a.replace(/(\*\*)(?=\S)([^\r]*?\S[*]*)\1/g,"$2"),a=a.replace(/(\*)(?=\S)([^\r]*?\S)\1/g,"$2")):(a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2")),a=c.converter._dispatch("italicsAndBold.after",a,b,c)}),d.subParser("lists",function(a,b,c){"use strict";function e(a,e){c.gListLevel++,a=a.replace(/\n{2,}$/,"\n"),a+="~0";var f=/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,g=/\n[ \t]*\n(?!~0)/.test(a);return a=a.replace(f,function(a,e,f,h,i,j,k){k=k&&""!==k.trim();var l=d.subParser("outdent")(i,b,c),m="";return j&&b.tasklists&&(m=' class="task-list-item" style="list-style-type: none;"',l=l.replace(/^[ \t]*\[(x|X| )?]/m,function(){var a='-1?(l=d.subParser("githubCodeBlocks")(l,b,c),l=d.subParser("blockGamut")(l,b,c)):(l=d.subParser("lists")(l,b,c),l=l.replace(/\n$/,""),l=g?d.subParser("paragraphs")(l,b,c):d.subParser("spanGamut")(l,b,c)),l="\n"+l+"\n"}),a=a.replace(/~0/g,""),c.gListLevel--,e&&(a=a.replace(/\s+$/,"")),a}function f(a,b,c){var d="ul"===b?/^ {0,2}\d+\.[ \t]/gm:/^ {0,2}[*+-][ \t]/gm,f=[],g="";if(-1!==a.search(d)){!function i(a){var f=a.search(d);-1!==f?(g+="\n\n<"+b+">"+e(a.slice(0,f),!!c)+"\n\n",b="ul"===b?"ol":"ul",d="ul"===b?/^ {0,2}\d+\.[ \t]/gm:/^ {0,2}[*+-][ \t]/gm,i(a.slice(f))):g+="\n\n<"+b+">"+e(a,!!c)+"\n\n"}(a);for(var h=0;h"+e(a,!!c)+"\n\n";return g}a=c.converter._dispatch("lists.before",a,b,c),a+="~0";var g=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return c.gListLevel?a=a.replace(g,function(a,b,c){var d=c.search(/[*+-]/g)>-1?"ul":"ol";return f(b,d,!0)}):(g=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm,a=a.replace(g,function(a,b,c,d){var e=d.search(/[*+-]/g)>-1?"ul":"ol";return f(c,e)})),a=a.replace(/~0/,""),a=c.converter._dispatch("lists.after",a,b,c)}),d.subParser("outdent",function(a){"use strict";return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,"")}),d.subParser("paragraphs",function(a,b,c){"use strict";a=c.converter._dispatch("paragraphs.before",a,b,c),a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");for(var e=a.split(/\n{2,}/g),f=[],g=e.length,h=0;g>h;h++){var i=e[h];i.search(/~(K|G)(\d+)\1/g)>=0?f.push(i):(i=d.subParser("spanGamut")(i,b,c),i=i.replace(/^([ \t]*)/g,"

    "),i+="

    ",f.push(i))}for(g=f.length,h=0;g>h;h++){for(var j="",k=f[h],l=!1;k.search(/~(K|G)(\d+)\1/)>=0;){var m=RegExp.$1,n=RegExp.$2;j="K"===m?c.gHtmlBlocks[n]:l?d.subParser("encodeCode")(c.ghCodeBlocks[n].text):c.ghCodeBlocks[n].codeblock,j=j.replace(/\$/g,"$$$$"),k=k.replace(/(\n\n)?~(K|G)\d+\2(\n\n)?/,j),/^]*>\s*]*>/.test(k)&&(l=!0)}f[h]=k}return a=f.join("\n\n"),a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,""),c.converter._dispatch("paragraphs.after",a,b,c)}),d.subParser("runExtension",function(a,b,c,d){"use strict";if(a.filter)b=a.filter(b,d.converter,c);else if(a.regex){var e=a.regex;!e instanceof RegExp&&(e=new RegExp(e,"g")),b=b.replace(e,a.replace)}return b}),d.subParser("spanGamut",function(a,b,c){"use strict";return a=c.converter._dispatch("spanGamut.before",a,b,c),a=d.subParser("codeSpans")(a,b,c),a=d.subParser("escapeSpecialCharsWithinTagAttributes")(a,b,c),a=d.subParser("encodeBackslashEscapes")(a,b,c),a=d.subParser("images")(a,b,c),a=d.subParser("anchors")(a,b,c),a=d.subParser("autoLinks")(a,b,c),a=d.subParser("encodeAmpsAndAngles")(a,b,c),a=d.subParser("italicsAndBold")(a,b,c),a=d.subParser("strikethrough")(a,b,c),a=a.replace(/ +\n/g,"
    \n"),a=c.converter._dispatch("spanGamut.after",a,b,c)}),d.subParser("strikethrough",function(a,b,c){"use strict";return b.strikethrough&&(a=c.converter._dispatch("strikethrough.before",a,b,c),a=a.replace(/(?:~T){2}([\s\S]+?)(?:~T){2}/g,"$1"),a=c.converter._dispatch("strikethrough.after",a,b,c)),a}),d.subParser("stripBlankLines",function(a){"use strict";return a.replace(/^[ \t]+$/gm,"")}),d.subParser("stripLinkDefinitions",function(a,b,c){"use strict";var e=/^ {0,3}\[(.+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=~0))/gm;return a+="~0",a=a.replace(e,function(a,e,f,g,h,i,j){return e=e.toLowerCase(),c.gUrls[e]=d.subParser("encodeAmpsAndAngles")(f),i?i+j:(j&&(c.gTitles[e]=j.replace(/"|'/g,""")),b.parseImgDimensions&&g&&h&&(c.gDimensions[e]={width:g,height:h}),"")}),a=a.replace(/~0/,"")}),d.subParser("tables",function(a,b,c){"use strict";function e(a){return/^:[ \t]*--*$/.test(a)?' style="text-align:left;"':/^--*[ \t]*:[ \t]*$/.test(a)?' style="text-align:right;"':/^:[ \t]*--*[ \t]*:$/.test(a)?' style="text-align:center;"':""}function f(a,e){var f="";return a=a.trim(),b.tableHeaderId&&(f=' id="'+a.replace(/ /g,"_").toLowerCase()+'"'),a=d.subParser("spanGamut")(a,b,c),""+a+"\n"}function g(a,e){var f=d.subParser("spanGamut")(a,b,c);return""+f+"\n"}function h(a,b){for(var c="\n\n\n",d=a.length,e=0;d>e;++e)c+=a[e];for(c+="\n\n\n",e=0;e\n";for(var f=0;d>f;++f)c+=b[e][f];c+="\n"}return c+="\n
    \n"}if(!b.tables)return a;var i=/^[ \t]{0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|~0)/gm;return a=c.converter._dispatch("tables.before",a,b,c),a=a.replace(i,function(a){var b,c=a.split("\n");for(b=0;bj'adore !

    ", + "format" : "text/html", + "language" : "fr" + }, + "target": "http://example.org/photo1" +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/tools/samples/example6.json b/tests/wpt/web-platform-tests/annotation-model/tools/samples/example6.json new file mode 100644 index 00000000000..9ae0d88eaee --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/tools/samples/example6.json @@ -0,0 +1,7 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno6", + "type":"Annotation", + "bodyValue": "Comment text", + "target": "http://example.org/target1" +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/tools/samples/example7.json b/tests/wpt/web-platform-tests/annotation-model/tools/samples/example7.json new file mode 100644 index 00000000000..9f821d22fb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/tools/samples/example7.json @@ -0,0 +1,11 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno7", + "type":"Annotation", + "body": { + "type": "TextualBody", + "value": "Comment text", + "format": "text/plain" + }, + "target": "http://example.org/target1" +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/tools/samples/example8.json b/tests/wpt/web-platform-tests/annotation-model/tools/samples/example8.json new file mode 100644 index 00000000000..3187af65746 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/tools/samples/example8.json @@ -0,0 +1,6 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno8", + "type": "Annotation", + "target": "http://example.org/ebook1" +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/tools/samples/example9.json b/tests/wpt/web-platform-tests/annotation-model/tools/samples/example9.json new file mode 100644 index 00000000000..8d72da3563f --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/tools/samples/example9.json @@ -0,0 +1,16 @@ +{ + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "http://example.org/anno9", + "type": "Annotation", + "body": [ + "http://example.org/description1", + { + "type": "TextualBody", + "value": "tag1" + } + ], + "target": [ + "http://example.org/image1", + "http://example.org/image2" + ] +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/annotation-model/tools/template_js b/tests/wpt/web-platform-tests/annotation-model/tools/template_js new file mode 100644 index 00000000000..29b76b323f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-model/tools/template_js @@ -0,0 +1,36 @@ + + + +{{TESTTITLE}} + + + + + + + +
    +

    The following assertions are being evaluated:

    +
    + + diff --git a/tests/wpt/web-platform-tests/annotation-model/tools/template b/tests/wpt/web-platform-tests/annotation-model/tools/template_manual similarity index 86% rename from tests/wpt/web-platform-tests/annotation-model/tools/template rename to tests/wpt/web-platform-tests/annotation-model/tools/template_manual index 9806475b025..01bac92a824 100644 --- a/tests/wpt/web-platform-tests/annotation-model/tools/template +++ b/tests/wpt/web-platform-tests/annotation-model/tools/template_manual @@ -5,6 +5,7 @@ + -

    Fill the textarea below with JSON output from your annotation client +

    Fill the textarea below with JSON output from your annotation client implementation that supports the following criteria:

    Specifically, the following assertions will be evaluated:

    - +

    diff --git a/tests/wpt/web-platform-tests/annotation-protocol/.editorconfig b/tests/wpt/web-platform-tests/annotation-protocol/.editorconfig new file mode 100644 index 00000000000..842ce7b6bf1 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-protocol/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + diff --git a/tests/wpt/web-platform-tests/annotation-protocol/CONTRIBUTING.md b/tests/wpt/web-platform-tests/annotation-protocol/CONTRIBUTING.md new file mode 100644 index 00000000000..cc585fd7d11 --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-protocol/CONTRIBUTING.md @@ -0,0 +1,38 @@ +Annotation-Protocol: Guidelines for Contributing Tests +====================================================== + +This document describes the method people should use for authoring tests and +integrating them into the repository. Anyone is welcome to submit new tests to +this collection. If you do, please create the tests following the guidelines +below. Then submit them as a pull request so they can be evaluated + +Structure +--------- + +Tests are organized by client or server, and then by major section of the Annotation +Protocol specification. The folders associated with these are: + +* client - tests a client needs to run +* server - tests to be run against a server + +Within these folders, special files ending with the suffix ".html" provide the source +for the test as a set javascript calls to perform the test. + +* scripts - JavaScript that are included by tests +* tools - supporting scripts and files + +Client Test Cases +----------------- + +@@@TODO@@@ describe the structure of client test cases. + +Server Test Cases +----------------- + +@@@TODO@@@ describe the structure of server test cases. + + +Command Line Tools +------------------ + +### Stand-alone Annotation Server ### diff --git a/tests/wpt/web-platform-tests/annotation-protocol/README.md b/tests/wpt/web-platform-tests/annotation-protocol/README.md new file mode 100644 index 00000000000..d0ec93573fe --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-protocol/README.md @@ -0,0 +1,86 @@ +Annotation-Protocol: Tests for the Web Annotation Protocol +========================================================== + +The [Web Annotation Protocol](https://www.w3.org/TR/annotation-protocol) +specification presents set of messages to allow Annotation clients and servers +to interact seamlessly. + +The purpose of these tests is to help validate that clients send and are +capable of receiving correctly formatted messages, and that servers are +able to receive and respond to correctly structured requests. + +The general approach for this testing is to enable both manual and +automated testing. However, since the specification has no actual user +interface requirements, there is no general automation mechanism that +can be presented for testing clients. Also the server tests need to be +pointed at a server implementation to exercise. However, once provided +the basic information, testing is automated. + +Implementors could take advantage of the plumbing we provide here to +help their implementations talk to the endpoint we provide or exercise +their endpoint with the provided server tests. This assumes knowledge +of the requirements of each test / collection of tests so that the input +data is relevant. Each test or test collection contains information +sufficient for the task. + +With regard to server tests, the browser tests we provide can be +pointed at an endpoint and will exercise that endpoint using well +defined messages. This is done semi-automatically, although some set-up +is required. + +Running Tests +------------- + +In the case of this test collection, we will be initially creating manual +tests. These will automatically determine pass or fail and generate output for +the main WPT window. The plan is to minimize the number of such tests to +ease the burden on the testers while still exercising all the features. + +The workflow for running these tests is something like: + +1. Start up the test driver window and select the annotation-protocol tests - + either client or server - then click "Start". +2. A window pops up that shows a test - the description of which tells the + tester what is required. The window will contain fields into which some + information is provided. +3. In the case of client testing the tester (presumably in another window) brings up their + annotation client and points it at the supplied endpoint. They they perform the + action specified (annotating content in the test window, requesting an annotation from the server, etc.). +4. The server receives the information from the client, evaluates it, and reports the result of testing. + In the event of multi-step messages, the cycle repeats until complete. +5. Repeat steps 2-4 until done. +6. Download the JSON format report of test results, which can then be visually + inspected, reported on using various tools, or passed on to W3C for + evaluation and collection in the Implementation Report via github. + +**Remember that while these tests are written to help exercise implementations, +their other (important) purpose is to increase confidence that there are +interoperable implementations.** So, implementers are our audience, but these +tests are not meant to be a comprehensive collection of tests for an implementor. +The bulk of the tests are manual because there are no UI requirements in the +Recommendation that would make it possible to effectively stimulate every client portably. + +Having said that, because the structure of these "manual" tests is very rigid, +it is possible for an implementer who understands test automation to use an +open source tool such as [Selenium](http://www.seleniumhq.org/) to run these +"manual" tests against their implementation - exercising their implementation +against content they provide to create annotations and feed the data into our +test input field and run the test. + +Capturing and Reporting Results +------------------------------- + +As tests are run against implementations, if the results of testing are +submitted to [test-results](https://github.com/w3c/test-results/) then they will +be automatically included in documents generated by +[wptreport](https://www.github.com/w3c/wptreport). The same tool can be used +locally to view reports about recorded results. + +Automating Test Execution +------------------------- + +Writing Tests +------------- + +If you are interested in writing tests for this environment, see the +associated [CONTRIBUTING](CONTRIBUTING.md) document. diff --git a/tests/wpt/web-platform-tests/annotation-protocol/server/.gitignore b/tests/wpt/web-platform-tests/annotation-protocol/server/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/annotation-protocol/server/server-manual.html b/tests/wpt/web-platform-tests/annotation-protocol/server/server-manual.html new file mode 100644 index 00000000000..3d8d1ba160b --- /dev/null +++ b/tests/wpt/web-platform-tests/annotation-protocol/server/server-manual.html @@ -0,0 +1,404 @@ + + + +Annotation Protocol Must Tests + + + + + + +

    The scripts associated with this test will exercise all of the MUST and SHOULD requirements +for an Annotation Protocol server implementation. In order to do so, the server must have +its CORS settings configured such that your test machine can access the annotations and containers +and such that it can get certain information from the headers. In particular, the container and +annotations within the container +under test must permit access to the Allow, Content-Location, Content-Type, ETag, Link, Location, Prefer, and Vary headers. +Correct CORS access can be achieved with headers like:

    +
    +Access-Control-Allow-Headers: Content-Type, Prefer
    +Access-Control-Allow-Methods: GET,HEAD,OPTIONS,DELETE,PUT
    +Access-Control-Allow-Origin: *
    +Access-Control-Expose-Headers: ETag, Allow, Vary, Link, Content-Type, Location, Content-Location, Prefer
    +
    +

    Provide endpoint and annotation URIs and select "Go" to start testing.

    + +

    +

    + + + + diff --git a/tests/wpt/web-platform-tests/app-uri/appURI_test.html b/tests/wpt/web-platform-tests/app-uri/appURI_test.html index feb35d57e82..722c210b545 100644 --- a/tests/wpt/web-platform-tests/app-uri/appURI_test.html +++ b/tests/wpt/web-platform-tests/app-uri/appURI_test.html @@ -2,8 +2,8 @@ app:URI compliance tests - - + + + + I'm an HTML <title>! + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-dom-01-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-dom-01-f-novalid.html new file mode 100644 index 00000000000..a8b0dc56ac9 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-dom-01-f-novalid.html @@ -0,0 +1,176 @@ + + + + animate-dom-01-f-manual.svg + + + +

    Source SVG: animate-dom-01-f-manual.svg

    + + + + + + + + + + $RCSfile: animate-dom-01-f.svg,v $ + + + + + + + + + + Testing SVGAnimationElement.getStartTime() + + Test running... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Called before a lone interval starts + Called on an animation with no intervals + Called during an interval + Called after a lone interval ends, fill="remove" + Called after a lone interval ends, fill="freeze" + Called with multiple begin values + Called with multiple begin values including "indefinite" + Called with syncbase begin value + + + + + $Revision: 1.11 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-dom-02-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-dom-02-f-novalid.html new file mode 100644 index 00000000000..024044443a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-dom-02-f-novalid.html @@ -0,0 +1,66 @@ + + + + animate-dom-02-f-manual.svg + + + +

    Source SVG: animate-dom-02-f-manual.svg

    + + + + + + + + + + $RCSfile: animate-dom-02-f.svg,v $ + + + + + + + + + + Testing ElementTimeControl method return values + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-02-t-isvalid.html new file mode 100644 index 00000000000..2fa739b9653 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-02-t-isvalid.html @@ -0,0 +1,82 @@ + + + + animate-elem-02-t-manual.svg + + + +

    Source SVG: animate-elem-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-02-t.svg,v $ + + + + + + + + + + + + + + + + + anim.5 + + + + + + + + + anim.6 + + + + + + + + + anim.7 + + + + + + + + + anim.8 + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-03-t-isvalid.html new file mode 100644 index 00000000000..42a8cba6255 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-03-t-isvalid.html @@ -0,0 +1,70 @@ + + + + animate-elem-03-t-manual.svg + + + +

    Source SVG: animate-elem-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + Sample 123 + Sample 123 + Sample 123 + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-04-t-isvalid.html new file mode 100644 index 00000000000..74a11744efa --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-04-t-isvalid.html @@ -0,0 +1,56 @@ + + + + animate-elem-04-t-manual.svg + + + +

    Source SVG: animate-elem-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-04-t.svg,v $ + + + + + + + + + + Test a motion path + 'from'/'to' attribute. + + + 0 sec. + + 3+ sec. + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-05-t-isvalid.html new file mode 100644 index 00000000000..424d9cdff85 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-05-t-isvalid.html @@ -0,0 +1,58 @@ + + + + animate-elem-05-t-manual.svg + + + +

    Source SVG: animate-elem-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-05-t.svg,v $ + + + + + + + + + + Test a motion path + 'values' attribute. + + + 0 sec. + + 3+ + + 6+ + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-06-t-isvalid.html new file mode 100644 index 00000000000..1b6c7becd76 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-06-t-isvalid.html @@ -0,0 +1,56 @@ + + + + animate-elem-06-t-manual.svg + + + +

    Source SVG: animate-elem-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-06-t.svg,v $ + + + + + + + + + + Test a motion path + 'path' attribute. + + + 0 sec. + + 6+ sec. + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-07-t-isvalid.html new file mode 100644 index 00000000000..df308255793 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-07-t-isvalid.html @@ -0,0 +1,58 @@ + + + + animate-elem-07-t-manual.svg + + + +

    Source SVG: animate-elem-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-07-t.svg,v $ + + + + + + + + + + Test a motion path + 'mpath' element. + + + 0 sec. + + 6+ sec. + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-08-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-08-t-isvalid.html new file mode 100644 index 00000000000..7e2891dc8e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-08-t-isvalid.html @@ -0,0 +1,65 @@ + + + + animate-elem-08-t-manual.svg + + + +

    Source SVG: animate-elem-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-08-t.svg,v $ + + + + + + + + + Test rotate='auto' and rotate='auto-reverse' + + + + 0 sec. + + 6+ sec. + + + + rotate='auto' + + + 0 sec. + + 6+ sec. + + + + rotate='auto-reverse' + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-09-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-09-t-isvalid.html new file mode 100644 index 00000000000..fcdb741ff69 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-09-t-isvalid.html @@ -0,0 +1,77 @@ + + + + animate-elem-09-t-manual.svg + + + +

    Source SVG: animate-elem-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-09-t.svg,v $ + + + + + + + + + + + 0-2 sec. + 2-4 sec. + 4-6 sec. + 6+ sec. + + + + + + + + + + + + + 0-2 sec. + 2-4 sec. + 4-6 sec. + 6+ sec. + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-10-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-10-t-isvalid.html new file mode 100644 index 00000000000..ebcbcb510a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-10-t-isvalid.html @@ -0,0 +1,78 @@ + + + + animate-elem-10-t-manual.svg + + + +

    Source SVG: animate-elem-10-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-10-t.svg,v $ + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-11-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-11-t-isvalid.html new file mode 100644 index 00000000000..e357d45e19f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-11-t-isvalid.html @@ -0,0 +1,77 @@ + + + + animate-elem-11-t-manual.svg + + + +

    Source SVG: animate-elem-11-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-11-t.svg,v $ + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-12-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-12-t-isvalid.html new file mode 100644 index 00000000000..f5f459a7612 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-12-t-isvalid.html @@ -0,0 +1,77 @@ + + + + animate-elem-12-t-manual.svg + + + +

    Source SVG: animate-elem-12-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-12-t.svg,v $ + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + at 0 sec. + at 3 sec. + at 6 sec. + 9+ sec. + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-13-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-13-t-isvalid.html new file mode 100644 index 00000000000..22891068bfc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-13-t-isvalid.html @@ -0,0 +1,86 @@ + + + + animate-elem-13-t-manual.svg + + + +

    Source SVG: animate-elem-13-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-13-t.svg,v $ + + + + + + + + + + + + 0-2 sec. + 5+ sec. + + + + + from to + + + + + + from by + + + + + + by + + + + + + to + + + + + + values + + + + + + values + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-14-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-14-t-isvalid.html new file mode 100644 index 00000000000..da196799e35 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-14-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-14-t-manual.svg + + + +

    Source SVG: animate-elem-14-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-14-t.svg,v $ + + + + + + + + + calcMode="discrete" + keyTimes="0;.2;.4;.6" + + + Time (s): + 0 + + 2 + + 4 + + 6 + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-15-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-15-t-isvalid.html new file mode 100644 index 00000000000..047abbefa04 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-15-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-15-t-manual.svg + + + +

    Source SVG: animate-elem-15-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-15-t.svg,v $ + + + + + + + + + calcMode="paced" + keyTimes="0;.25;.5;1" + + + Time (s): + 0 + + 1.5 + + 4 + + 9 + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-17-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-17-t-isvalid.html new file mode 100644 index 00000000000..5148a5cfb68 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-17-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-17-t-manual.svg + + + +

    Source SVG: animate-elem-17-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-17-t.svg,v $ + + + + + + + + + calcMode="spline" + keyTimes="0;.25;.5;1" + + + Time (s): + 0 + + 2 + + 4 + + 8 + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-19-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-19-t-isvalid.html new file mode 100644 index 00000000000..75f05ae3294 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-19-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-19-t-manual.svg + + + +

    Source SVG: animate-elem-19-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-19-t.svg,v $ + + + + + + + + + calcMode="linear" + keyTimes="0;.5;.75;1" + + + Time (s): + 0 + + 4 + + 6 + + 8 + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-20-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-20-t-isvalid.html new file mode 100644 index 00000000000..950c3568c61 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-20-t-isvalid.html @@ -0,0 +1,59 @@ + + + + animate-elem-20-t-manual.svg + + + +

    Source SVG: animate-elem-20-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-20-t.svg,v $ + + + + + + + + + + + + + + + + + Fade in + + + + Fade out + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-21-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-21-t-isvalid.html new file mode 100644 index 00000000000..c4b1f5a5dfb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-21-t-isvalid.html @@ -0,0 +1,67 @@ + + + + animate-elem-21-t-manual.svg + + + +

    Source SVG: animate-elem-21-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-21-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + Fade in + + + + Fade out + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-22-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-22-b-isvalid.html new file mode 100644 index 00000000000..dfea322d405 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-22-b-isvalid.html @@ -0,0 +1,63 @@ + + + + animate-elem-22-b-manual.svg + + + +

    Source SVG: animate-elem-22-b-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-22-b.svg,v $ + + + + + + + + + + + Yellow rect at time 0s + + Yellow rect at time 3s + + Yellow rect at time 9s + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-23-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-23-t-isvalid.html new file mode 100644 index 00000000000..a39fe768900 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-23-t-isvalid.html @@ -0,0 +1,64 @@ + + + + animate-elem-23-t-manual.svg + + + +

    Source SVG: animate-elem-23-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-23-t.svg,v $ + + + + + + + + + + + Color at 3s + + + Color at 6s + + + Color at 9s + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-24-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-24-t-novalid.html new file mode 100644 index 00000000000..922125adb9b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-24-t-novalid.html @@ -0,0 +1,105 @@ + + + + animate-elem-24-t-manual.svg + + + +

    Source SVG: animate-elem-24-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-24-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text from 0s to 3s + Text at 6s + Text at 9s + + + + It's alive! + It's alive! + It's alive! + + + + + + It's alive! + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-25-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-25-t-isvalid.html new file mode 100644 index 00000000000..ffa132331db --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-25-t-isvalid.html @@ -0,0 +1,61 @@ + + + + animate-elem-25-t-manual.svg + + + +

    Source SVG: animate-elem-25-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-25-t.svg,v $ + + + + + + + + + Test animation options for specifying the target attribute/property. + + 0-3 sec. + + at 6 sec. + + + + + 0-6 sec. + + at 9 sec. + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-26-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-26-t-isvalid.html new file mode 100644 index 00000000000..b5474f89128 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-26-t-isvalid.html @@ -0,0 +1,62 @@ + + + + animate-elem-26-t-manual.svg + + + +

    Source SVG: animate-elem-26-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-26-t.svg,v $ + + + + + + + + + + + + + + + + anim. 1 + + + + + + + + + anim. 2 + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-27-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-27-t-isvalid.html new file mode 100644 index 00000000000..2cd182740dd --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-27-t-isvalid.html @@ -0,0 +1,60 @@ + + + + animate-elem-27-t-manual.svg + + + +

    Source SVG: animate-elem-27-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-27-t.svg,v $ + + + + + + + + + Test animation options for specifying the target element. + + 0 to 3 sec. + + at 6 sec. + + + + 0 to 6 sec. + + at 9 sec. + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-28-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-28-t-isvalid.html new file mode 100644 index 00000000000..0dd94c7d199 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-28-t-isvalid.html @@ -0,0 +1,54 @@ + + + + animate-elem-28-t-manual.svg + + + +

    Source SVG: animate-elem-28-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-28-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-29-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-29-b-isvalid.html new file mode 100644 index 00000000000..761f538b25b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-29-b-isvalid.html @@ -0,0 +1,60 @@ + + + + animate-elem-29-b-manual.svg + + + +

    Source SVG: animate-elem-29-b-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-29-b.svg,v $ + + + + + + + + + + + + + + + + + + Fade in + + + + Fade out + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-30-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-30-t-isvalid.html new file mode 100644 index 00000000000..554946432fe --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-30-t-isvalid.html @@ -0,0 +1,146 @@ + + + + animate-elem-30-t-manual.svg + + + +

    Source SVG: animate-elem-30-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-30-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-31-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-31-t-isvalid.html new file mode 100644 index 00000000000..37f3d463e6e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-31-t-isvalid.html @@ -0,0 +1,118 @@ + + + + animate-elem-31-t-manual.svg + + + +

    Source SVG: animate-elem-31-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-31-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + display + visibility + Test of display attribute animation. + Circles with same color should be visible at same time. + + Test running... + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-32-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-32-t-isvalid.html new file mode 100644 index 00000000000..bcd4ca00e60 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-32-t-isvalid.html @@ -0,0 +1,139 @@ + + + + animate-elem-32-t-manual.svg + + + +

    Source SVG: animate-elem-32-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-32-t.svg,v $ + + + + + + + + + + + + + Stroked + Unstroked + Zero width rect + Zero height rect + Zero radius circle + Zero x radius ellipse + Zero y radius ellipse + Zero length line + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-33-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-33-t-isvalid.html new file mode 100644 index 00000000000..b9a460041cd --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-33-t-isvalid.html @@ -0,0 +1,131 @@ + + + + animate-elem-33-t-manual.svg + + + +

    Source SVG: animate-elem-33-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-33-t.svg,v $ + + + + + + + + + + + 0 + 0.8-3.2 + 4 + + + + + + + + + + + + + + + 0 + 2 + 2 + 4 + + + + + + + + + + + + + + + + + + 3 + 2.6 + 0 + 1 + 4 + 1.4 + + + + + + + + + + + + + + + + 3 + 2.6 + 0 + 1 + 4 + 1.4 + + + + + + + + + + + + + + Test of keyPoints and keyTimes. + Number indicates the circle's passing time in seconds. + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-34-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-34-t-isvalid.html new file mode 100644 index 00000000000..dccc5a38c71 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-34-t-isvalid.html @@ -0,0 +1,92 @@ + + + + animate-elem-34-t-manual.svg + + + +

    Source SVG: animate-elem-34-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-34-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Animation on: 'points' and 'fill-rule'. + Digit should match outline at indicated time. + Filled square should follow morphing digit discretely. + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-35-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-35-t-isvalid.html new file mode 100644 index 00000000000..39ef7d68983 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-35-t-isvalid.html @@ -0,0 +1,120 @@ + + + + animate-elem-35-t-manual.svg + + + +

    Source SVG: animate-elem-35-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-35-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Animation on: 'stroke-dasharray', 'stroke-dashoffset', + 'stroke-miterlimit', 'stroke-linecap' and 'stroke-linejoin'. + + + $Revision: 1.8 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-36-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-36-t-isvalid.html new file mode 100644 index 00000000000..0073cff7ae6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-36-t-isvalid.html @@ -0,0 +1,134 @@ + + + + animate-elem-36-t-manual.svg + + + +

    Source SVG: animate-elem-36-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-36-t.svg,v $ + + + + + + + + + <animateTransform> on structure, + hyperlinking and text elements + + + + + + + + + + + + + + + <g> + + + + + + + + + + + <use> + + + + + + + <image> + + + + + + + + + + + + + + + + + + <switch> + + + + + + + + + + + + + + + + <a> + + + + + + + + + + + + + + 123 + + + + <text> + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-37-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-37-t-isvalid.html new file mode 100644 index 00000000000..1f720042bc7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-37-t-isvalid.html @@ -0,0 +1,88 @@ + + + + animate-elem-37-t-manual.svg + + + +

    Source SVG: animate-elem-37-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-37-t.svg,v $ + + + + + + + + + <animateTransform> shape elements + + + + + <path> + + + + + + <rect> + + + + + + <circle> + + + + + + <ellipse> + + + + + + <line> + + + + + + <polyline> + + + + + + <polygon> + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-38-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-38-t-isvalid.html new file mode 100644 index 00000000000..9e9c151298d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-38-t-isvalid.html @@ -0,0 +1,80 @@ + + + + animate-elem-38-t-manual.svg + + + +

    Source SVG: animate-elem-38-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-38-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Animation on: 'viewBox'. Flashing frame should + only appear at the edges of the SVG element. + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-39-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-39-t-isvalid.html new file mode 100644 index 00000000000..44cc438c7e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-39-t-isvalid.html @@ -0,0 +1,114 @@ + + + + animate-elem-39-t-manual.svg + + + +

    Source SVG: animate-elem-39-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-39-t.svg,v $ + + + + + + + + + <animate> on xlink:href + + + <set> + + + + + + 38 + 02 + + + + + <a> + + + + + + + <image> + + + + + Use A + Use B + Use C + + + + + + + <use> + + + + <animate> + + + + + + 09 + 03 + + + + + <a> + + + + + + + <image> + + + + + + + + <use> + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-40-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-40-t-novalid.html new file mode 100644 index 00000000000..0e8682825a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-40-t-novalid.html @@ -0,0 +1,200 @@ + + + + animate-elem-40-t-manual.svg + + + +

    Source SVG: animate-elem-40-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-40-t.svg,v $ + + + + + + + + + <animate> of x/y/width/height + + + + + + + + + + + + + + + + + + + + + + + + + + + + x/y on <use> + + + + + + + + + + + x/y on <image> + + + + + + + + + + + x/y on <rect> + + + + + + + + + + + + x/y on <rect> + + + + + + + + + + + + + + 123 + + + + + + + x/y on <text> + + + + + + + + + + + + + + + + + + 12 + + + + + + + x/y on <text>(2) + + + + + + + + + + + + + + + + + + + + + width/height + on <image> + + + + + + + + + + + + + + + + + + + + + + width/height + on <rect> + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-41-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-41-t-isvalid.html new file mode 100644 index 00000000000..ff2a8c3f759 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-41-t-isvalid.html @@ -0,0 +1,393 @@ + + + + animate-elem-41-t-manual.svg + + + +

    Source SVG: animate-elem-41-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-41-t.svg,v $ + + + + + + + + + graphics + + + fill + fill-rule + stroke + stroke-width + stroke-linecap + stroke-linejoin + stroke-miterlimit + stroke-dashoffset + display + visibility + color + + + + element + <g> + <a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-44-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-44-t-isvalid.html new file mode 100644 index 00000000000..6a58cc71f8d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-44-t-isvalid.html @@ -0,0 +1,72 @@ + + + + animate-elem-44-t-manual.svg + + + +

    Source SVG: animate-elem-44-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-44-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Animation on the 'd' + attribute of path. + + Digit should match outline at indicated time. + Filled circle should follow morphing digit discretely. + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-46-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-46-t-isvalid.html new file mode 100644 index 00000000000..86d81826c64 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-46-t-isvalid.html @@ -0,0 +1,239 @@ + + + + animate-elem-46-t-manual.svg + + + +

    Source SVG: animate-elem-46-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-46-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-anchor + font-size + font-family + font-style + font-weight + + + + <text> + <g> + <a> + + + + + + + A + + A + + A + + + + + + + + + + + + A + + + + + + + + A + + + + + + A + + + + + + + A + A + A + + + + + + + + A + + + + + + + A + + + + + + A + + + + + + + A + A + A + + + + + + + A + + + + + + + A + + + + + + A + + + + + + + A + A + A + + + + + + + A + + + + + + + A + + + + + + A + + + + + + + + A + A + A + + + + + + + + A + + + + + + + A + + + + + + A + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-52-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-52-t-isvalid.html new file mode 100644 index 00000000000..83430f9f9d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-52-t-isvalid.html @@ -0,0 +1,78 @@ + + + + animate-elem-52-t-manual.svg + + + +

    Source SVG: animate-elem-52-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-52-t.svg,v $ + + + + + + + + + A + B + C + D + + + + + click A + + + + + click B+2 + + + + + click C+4 + + + + + never + + + + + + + Test of Eventbase targets. + Note that clicking rect D should give no result. + Clicking a rectangle should change its color at the + time for the click + delay as indicated in each rect. + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-53-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-53-t-isvalid.html new file mode 100644 index 00000000000..1b1bebc7a8b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-53-t-isvalid.html @@ -0,0 +1,88 @@ + + + + animate-elem-53-t-manual.svg + + + +

    Source SVG: animate-elem-53-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-53-t.svg,v $ + + + + + + + + + + + + + + 0s + + 3s + + 6s + + 9s + + + + + + + + + + + + + 0s + + 2.22s + + 6.66s + + 8s + + + + + + + + + + + Animation on: 'points' with 'calc-mode'. + Coloblue and black squares should match at indicated time. + Same coloblue squares (green and blue) should match at all times + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-60-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-60-t-isvalid.html new file mode 100644 index 00000000000..057df82b79c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-60-t-isvalid.html @@ -0,0 +1,157 @@ + + + + animate-elem-60-t-manual.svg + + + +

    Source SVG: animate-elem-60-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-60-t.svg,v $ + + + + + + + + + begin + + + unspecified + offset + event base + sync base + indefinite + repeat() + accessKey() + wallclock() + + + + 0s + 1s + 2s + 3s + 4s + 5s + 6s + 7s + 8s + 0s + 1s + 2s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-61-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-61-t-isvalid.html new file mode 100644 index 00000000000..c1abfb35e28 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-61-t-isvalid.html @@ -0,0 +1,115 @@ + + + + animate-elem-61-t-manual.svg + + + +

    Source SVG: animate-elem-61-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-61-t.svg,v $ + + + + + + + + + multiple begin + + + 2 offsets + 2 sync bases + 2 repeat + 2 event base + 2 accessKeys + misc + + + + 0-1s + 2s-4s + > 5s + + 1-2s + 4-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-62-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-62-t-isvalid.html new file mode 100644 index 00000000000..9154bf0ea95 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-62-t-isvalid.html @@ -0,0 +1,157 @@ + + + + animate-elem-62-t-manual.svg + + + +

    Source SVG: animate-elem-62-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-62-t.svg,v $ + + + + + + + + + end + + + unspecified + offset + event base + sync base + indefinite + repeat() + accessKey() + wallclock() + + + + 0s + 1s + 2s + 3s + 4s + 5s + 6s + 7s + 8s + 0s + 1s + 2s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-63-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-63-t-isvalid.html new file mode 100644 index 00000000000..287450592b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-63-t-isvalid.html @@ -0,0 +1,122 @@ + + + + animate-elem-63-t-manual.svg + + + +

    Source SVG: animate-elem-63-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-63-t.svg,v $ + + + + + + + + + multiple end + + + 2 offsets + 2 sync bases + 2 repeat + 2 event base + 2 accessKeys + misc + + + + 0-1s + 2s-4s + > 5s + + 1-2s + 4-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-64-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-64-t-isvalid.html new file mode 100644 index 00000000000..4a6871f47eb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-64-t-isvalid.html @@ -0,0 +1,100 @@ + + + + animate-elem-64-t-manual.svg + + + +

    Source SVG: animate-elem-64-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-64-t.svg,v $ + + + + + + + + + dur + + + clock value + indefinite + media + + + + > 2s + 0s-2s + + + never + > 0s + + + + never + > 0s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-65-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-65-t-isvalid.html new file mode 100644 index 00000000000..ae4d9d1ab15 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-65-t-isvalid.html @@ -0,0 +1,146 @@ + + + + animate-elem-65-t-manual.svg + + + +

    Source SVG: animate-elem-65-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-65-t.svg,v $ + + + + + + + + + min + + + + + no min / media + invalid min + min < active dur + min > active dur + min < repeat dur + min > repeat dur, remove + min > repeat dur, freeze + + + + > 5s + 0s-5s + + + never + > 0s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-66-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-66-t-isvalid.html new file mode 100644 index 00000000000..35674a7ef22 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-66-t-isvalid.html @@ -0,0 +1,139 @@ + + + + animate-elem-66-t-manual.svg + + + +

    Source SVG: animate-elem-66-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-66-t.svg,v $ + + + + + + + + + max + min & max + + + no max / media + invalid max values + max < active dur + max > active dur + min < max + min = max + min > max (both ignored) + + + > 5s + 0s-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-67-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-67-t-isvalid.html new file mode 100644 index 00000000000..1975b64f51f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-67-t-isvalid.html @@ -0,0 +1,123 @@ + + + + animate-elem-67-t-manual.svg + + + +

    Source SVG: animate-elem-67-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-67-t.svg,v $ + + + + + + + + + restart + + + + + no restart (defaults to always) + restart="always" + restart="whenNotActive" + restart="never" + reference + + + + > 5s + 0s-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-68-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-68-t-isvalid.html new file mode 100644 index 00000000000..927dfe08eea --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-68-t-isvalid.html @@ -0,0 +1,102 @@ + + + + animate-elem-68-t-manual.svg + + + +

    Source SVG: animate-elem-68-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-68-t.svg,v $ + + + + + + + + + repeatCount + + + dur=5s repeatCount unspecified + dur=1s repeatCount=5 + dur=10s repeatCount=0.5 + dur=1s repeatCount=indefinite + end=5s + + + + > 5s + 0s-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-69-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-69-t-isvalid.html new file mode 100644 index 00000000000..7b28226b382 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-69-t-isvalid.html @@ -0,0 +1,113 @@ + + + + animate-elem-69-t-manual.svg + + + +

    Source SVG: animate-elem-69-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-69-t.svg,v $ + + + + + + + + + repeatDur + + + dur=5s repeatDur unspecified + dur=1s repeatDur=5s + dur=0.5s repeatDur=5s + dur=1s repeatDur=indefinite + end=5s + dur=0.7s repeatDur=5s + + + + > 5s + 0s-5s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-70-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-70-t-isvalid.html new file mode 100644 index 00000000000..5754fdf3786 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-70-t-isvalid.html @@ -0,0 +1,105 @@ + + + + animate-elem-70-t-manual.svg + + + +

    Source SVG: animate-elem-70-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-70-t.svg,v $ + + + + + + + + + fill + + + fill unspecified (remove) + fill=remove + fill=freeze (with restart) + fill=freeze (no restart) + + + + never + here + always + here + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-77-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-77-t-novalid.html new file mode 100644 index 00000000000..8cfc4cbd829 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-77-t-novalid.html @@ -0,0 +1,287 @@ + + + + animate-elem-77-t-manual.svg + + + +

    Source SVG: animate-elem-77-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-77-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text + + + transform + text-anchor + font-size + font-family + font-style + font-weight + + + + <text> + <g> + <a> + + + + A + + + + + A + A + + + + + + + + + A + + + + + + A + + + + + A + + + + + + + A + A + + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + A + A + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + A + A + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + + A + A + + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + A + A + + + + + + + + + A + + + + + + + + A + + + + + + + + A + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-78-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-78-t-isvalid.html new file mode 100644 index 00000000000..675d0c74a6c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-78-t-isvalid.html @@ -0,0 +1,423 @@ + + + + animate-elem-78-t-manual.svg + + + +

    Source SVG: animate-elem-78-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-78-t.svg,v $ + + + + + + + + + graphics + + + fill + fill-rule + stroke + stroke-width + stroke-linecap + stroke-linejoin + stroke-miterlimit + stroke-dashoffset + display + visibility + color + + + + 'Basic Shape' + <g> + <a> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-80-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-80-t-isvalid.html new file mode 100644 index 00000000000..f72ab64f5a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-80-t-isvalid.html @@ -0,0 +1,252 @@ + + + + animate-elem-80-t-manual.svg + + + +

    Source SVG: animate-elem-80-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-80-t.svg,v $ + + + + + + + + + <animateTransform> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + type=rotate + + + + + + + + + + + + + + + + + + + type=skewX + + + + + + + + + + + + + + + + + + + + + + type=skewY + + + + + + + + + + + + + + + + + + + + + + + type=scale + (sx and sy) + + + + + + + + + + + + + + + + + + + + + + + + + + + type=rotate + (with cx/cy) + + + + + + + + + + + + + + + + + + + + + + + + + + + type=translate + (tx only) + + + + + + + + + + + + + + + + + + + + + + + + + + + type=translate + (tx and ty) + + + + + + + + + + + + + + + + + + + + + + + type=scale + (sx only) + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-81-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-81-t-isvalid.html new file mode 100644 index 00000000000..0198df2524b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-81-t-isvalid.html @@ -0,0 +1,107 @@ + + + + animate-elem-81-t-manual.svg + + + +

    Source SVG: animate-elem-81-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-81-t.svg,v $ + + + + + + + + + <animateTransform> + + + + + + + + + + + + + + + additive=replace + + + + + + + + + additive=sum + + + + + + + + accumulate=none + additive=replace + + + + + + + + accumulate=sum + additive=replace + + + + + + + + accumulate=none + additive=sum + + + + + + + + accumulate=sum + additive=sum + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-82-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-82-t-isvalid.html new file mode 100644 index 00000000000..bdbff9d35e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-82-t-isvalid.html @@ -0,0 +1,213 @@ + + + + animate-elem-82-t-manual.svg + + + +

    Source SVG: animate-elem-82-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-82-t.svg,v $ + + + + + + + + + <animateTransform> + + + + + + + + + + + + + + + + + + + + + + + + + + same rotation + center + + + + + + + + + + + + + + + + + + + different rotation + centers + + + + + + + + + + + + + + + + + + + paced translation + + + + + + + + + + + + + + + + + + + linear translation + + + + + + + + + + + + + + + + + + + + + paced scale + + + + + + + + + + + + + + + + + + + + linear scale + + + + + + + + + + + + + + + + + + + paced rotation + + + + + + + + + + + + + + + + + + + linear rotation + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-83-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-83-t-isvalid.html new file mode 100644 index 00000000000..ed0bf103caf --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-83-t-isvalid.html @@ -0,0 +1,161 @@ + + + + animate-elem-83-t-manual.svg + + + +

    Source SVG: animate-elem-83-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-83-t.svg,v $ + + + + + + + + + <animate> on <path>'s d attribute + + + + + + + + + + + + + + + + + + + + + + + + #1: from-to animation + + + + + + + + + + + + + + + + #2: to animation + + + + + + + + + + + + + + + + + + + + #3: values animation + + + + + + + + + + + + + + + + #4: from-to animation + compatible H/h, V/v, + L/l segments + + + + + + + + + + + + + + + + #5: from-to animation + compatible C/c + s/S segments + + + + + + + + + + + + + + + + #6: from-to animation + compatible Q/q, T/t + segments + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-84-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-84-t-isvalid.html new file mode 100644 index 00000000000..f451aa14fb7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-84-t-isvalid.html @@ -0,0 +1,70 @@ + + + + animate-elem-84-t-manual.svg + + + +

    Source SVG: animate-elem-84-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-84-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + currentColor + green + inherit + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-85-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-85-t-isvalid.html new file mode 100644 index 00000000000..ccb5a36088d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-85-t-isvalid.html @@ -0,0 +1,83 @@ + + + + animate-elem-85-t-manual.svg + + + +

    Source SVG: animate-elem-85-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-85-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-86-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-86-t-isvalid.html new file mode 100644 index 00000000000..605adfd8900 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-86-t-isvalid.html @@ -0,0 +1,71 @@ + + + + animate-elem-86-t-manual.svg + + + +

    Source SVG: animate-elem-86-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-86-t.svg,v $ + + + + + + + + + fill="freeze" with discrete calcMode + + + + discrete + + + + > 2s + 0s-2s + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-87-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-87-t-isvalid.html new file mode 100644 index 00000000000..6be01ce816c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-87-t-isvalid.html @@ -0,0 +1,63 @@ + + + + animate-elem-87-t-manual.svg + + + +

    Source SVG: animate-elem-87-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-elem-87-t.svg,v $ + + + + + + + + + + Test zero value of a scale transform animation + + + + + + + Reference + + + + + + + <animateTransform type='scale' by='1'/> + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-88-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-88-t-isvalid.html new file mode 100644 index 00000000000..83965435e79 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-88-t-isvalid.html @@ -0,0 +1,52 @@ + + + + animate-elem-88-t-manual.svg + + + +

    Source SVG: animate-elem-88-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-elem-88-t.svg,v $ + + + + + + + + + + Test values attribute list syntax + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-89-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-89-t-isvalid.html new file mode 100644 index 00000000000..07885c3a8c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-89-t-isvalid.html @@ -0,0 +1,94 @@ + + + + animate-elem-89-t-manual.svg + + + +

    Source SVG: animate-elem-89-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-89-t.svg,v $ + + + + + + + + + + + + + 0 sec. + 3 sec. + 6 sec. + 9+ sec. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-90-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-90-b-isvalid.html new file mode 100644 index 00000000000..6141e62c9ca --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-90-b-isvalid.html @@ -0,0 +1,71 @@ + + + + animate-elem-90-b-manual.svg + + + +

    Source SVG: animate-elem-90-b-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-90-b.svg,v $ + + + + + + + + + + + + Color at start + + + Color at 3s + + + Color at 5s + + + + + + + + + + + + CSS not supported + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-91-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-91-t-isvalid.html new file mode 100644 index 00000000000..fe95c822e0a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-91-t-isvalid.html @@ -0,0 +1,186 @@ + + + + animate-elem-91-t-manual.svg + + + +

    Source SVG: animate-elem-91-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-91-t.svg,v $ + + + + + + + + + + Testing <animate to=""> with non-interpolable attributes + + + + 0s-2s + > 2s + + + + (reference) + + + + + + + + + + + + class + + + + + + + + + + + clipPathUnits + + + + + + + + + + + + + in + + + + + + + + + + + + + + + + + + + + + + + preserveAspectRatio + + + + + + + + + + + + + + + + + + + spreadMethod + + + + + + + + + + + + + + + + + + + + + + + xlink:href + + + + + + + + + + + + + + + display + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-92-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-92-t-isvalid.html new file mode 100644 index 00000000000..c785fccd8e4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-elem-92-t-isvalid.html @@ -0,0 +1,103 @@ + + + + animate-elem-92-t-manual.svg + + + +

    Source SVG: animate-elem-92-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-elem-92-t.svg,v $ + + + + + + + + + discrete to-animation + + + without freezing + with freezing + with keyTimes + + + + 0s-2s + > 4s + 2s-4s + + + 0s-2s + > 2s + + + + 0s-2s + > 2s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-events-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-events-01-t-isvalid.html new file mode 100644 index 00000000000..879aa522136 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-events-01-t-isvalid.html @@ -0,0 +1,94 @@ + + + + animate-interact-events-01-t-manual.svg + + + +

    Source SVG: animate-interact-events-01-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-interact-events-01-t.svg,v $ + + + + + + + + + + + + + + + + + Shadow tree event listener chain + + + + Case 1: on mouseover all squares must turn blue + + + + + + + + + Case 2: on mouseover all squares must turn blue + and a black stroke must appear on reference square + + + + + + + + + + + + Case 3: on mouseover all squares must turn blue + and a black stroke must appear on reference square + + + + + + + + + + Case 4: on mouseover all squares must turn blue + and on mousedown a black stroke must appear on reference square + + + + + $Revision: 1.2 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-01-t-isvalid.html new file mode 100644 index 00000000000..0bcb3122237 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-01-t-isvalid.html @@ -0,0 +1,265 @@ + + + + animate-interact-pevents-01-t-manual.svg + + + +

    Source SVG: animate-interact-pevents-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-interact-pevents-01-t.svg,v $ + + + + + + + + + + Test pointer-events on text + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + + + + + + + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + O + + + + + + + + + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + + + + + + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + O + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-02-t-isvalid.html new file mode 100644 index 00000000000..d0790a299a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-02-t-isvalid.html @@ -0,0 +1,109 @@ + + + + animate-interact-pevents-02-t-manual.svg + + + +

    Source SVG: animate-interact-pevents-02-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-interact-pevents-02-t.svg,v $ + + + + + + + + + + + + Testing pointer-events and rendering order + Rectangles should turn RED on mouseover + Ovals should turn RED if Pointer-Events are set to "ALL" + + + + Change "Pointer-Events" of + ovals from "ALL" to "NONE" + + + + + Purple ovals have "Pointer-Events" set to "ALL". + Purple ovals have Pointer-Events set to "NONE". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-03-t-isvalid.html new file mode 100644 index 00000000000..2ed0f2e7b21 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-03-t-isvalid.html @@ -0,0 +1,189 @@ + + + + animate-interact-pevents-03-t-manual.svg + + + +

    Source SVG: animate-interact-pevents-03-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-interact-pevents-03-t.svg,v $ + + + + + + + + + + + Testing pointer-events - pale RED rect should appear on mouseover. + + + 2nd and 3rd columns represent respectively rects with no fill/stroke and transparent fill/stroke + + + + + + + + + + + + + + + + + + + + + + + + + default : + fill and stroke of rects 1 and 3 must trigger + + + + + + + + + + + + + + + + + + + + + + + + visiblePainted : + fill and stroke of rects 1 and 3 must trigger + + + + + + + + + + + + + + + + + + + + + + + + + + + visibleFill : + only fill of rects 1, 2 and 3 must trigger + + + + + + + + + + + + + + + + + + + + + + + + + + + visibleStroke : + only stroke of rects 1, 2 and 3 must trigger + + + + + + + + + + + + + + + + + + + + + + + + + + + visible : + fill and stroke of rects 1, 2 and 3 must trigger + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-04-t-isvalid.html new file mode 100644 index 00000000000..64f956ea2e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-interact-pevents-04-t-isvalid.html @@ -0,0 +1,180 @@ + + + + animate-interact-pevents-04-t-manual.svg + + + +

    Source SVG: animate-interact-pevents-04-t-manual.svg

    + + + + + + + + + + $RCSfile: animate-interact-pevents-04-t.svg,v $ + + + + + + + + + + + Testing pointer-events - pale RED rect should appear on mouseover. + + + 2nd and 3rd columns represent respectively rects with no fill/stroke and transparent fill/stroke + + + + + + + + + + + + + + + + + + + + + + + + + painted : + fill and stroke of rects 1, 3 and 4 must trigger + + + + + + + + + + + + + + + + + + + + + + + + fill : + fill of rects 1 to 4 must trigger + + + + + + + + + + + + + + + + + + + + + + + + stroke : + stroke of rects 1 to 4 must trigger + + + + + + + + + + + + + + + + + + + + + + + + all : + stroke and fill of rects 1 to 4 must trigger + + + + + + + + + + + + + + + + + + + + + + + + none : + nothing is to trigger + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-pservers-grad-01-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-pservers-grad-01-b-novalid.html new file mode 100644 index 00000000000..acdb407362d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-pservers-grad-01-b-novalid.html @@ -0,0 +1,88 @@ + + + + animate-pservers-grad-01-b-manual.svg + + + +

    Source SVG: animate-pservers-grad-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: animate-pservers-grad-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-script-elem-01-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-script-elem-01-b-novalid.html new file mode 100644 index 00000000000..b01dd547594 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-script-elem-01-b-novalid.html @@ -0,0 +1,70 @@ + + + + animate-script-elem-01-b-manual.svg + + + +

    Source SVG: animate-script-elem-01-b-manual.svg

    + + + + + + + + + + $RCSfile: animate-script-elem-01-b.svg,v $ + + + + + + + + + + Test that <script xlink:href=""> is not animatable + + + + + + Test script.href.animVal does not change + Test animating xlink:href="" does not load a script + + + + + + + + + + + $Revision: 1.1 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-struct-dom-01-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-struct-dom-01-b-novalid.html new file mode 100644 index 00000000000..3ca95a754df --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/animate-struct-dom-01-b-novalid.html @@ -0,0 +1,74 @@ + + + + animate-struct-dom-01-b-manual.svg + + + +

    Source SVG: animate-struct-dom-01-b-manual.svg

    + + + + + + + + + + $RCSfile: animate-struct-dom-01-b.svg,v $ + + + + + + + + + + Test getCurrentTime() and setCurrentTime() before timeline begin + + + + + + + + getCurrentTime + setCurrentTime + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prof-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prof-01-f-isvalid.html new file mode 100644 index 00000000000..9fbae273018 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prof-01-f-isvalid.html @@ -0,0 +1,56 @@ + + + + color-prof-01-f-manual.svg + + + +

    Source SVG: color-prof-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prof-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + Basic test of ICC profile with an image. + + + + $Revision: 1.9 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-01-b-isvalid.html new file mode 100644 index 00000000000..a9c4accc828 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-01-b-isvalid.html @@ -0,0 +1,69 @@ + + + + color-prop-01-b-manual.svg + + + +

    Source SVG: color-prop-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fill + stroke + stop-color + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-02-f-isvalid.html new file mode 100644 index 00000000000..42754474770 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-02-f-isvalid.html @@ -0,0 +1,99 @@ + + + + color-prop-02-f-manual.svg + + + +

    Source SVG: color-prop-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-03-t-isvalid.html new file mode 100644 index 00000000000..84c7b282957 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-03-t-isvalid.html @@ -0,0 +1,88 @@ + + + + color-prop-03-t-manual.svg + + + +

    Source SVG: color-prop-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-04-t-isvalid.html new file mode 100644 index 00000000000..68e9644de01 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-04-t-isvalid.html @@ -0,0 +1,84 @@ + + + + color-prop-04-t-manual.svg + + + +

    Source SVG: color-prop-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-04-t.svg,v $ + + + + + + + + + + + + + + + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + Vestibulum pulvinar. Duis laoreet, nunc vitae facilisis + tristique, pede sem iaculis mi, non consectetuer lorem + libero et est. Donec imperdiet purus sed odio. Duis + venenatis tortor eu lectus. Suspendisse sed metus at + metus viverra ultricies. Mauris porttitor, justo a vulputate + + + + + Load + + Save + + + + + + + + File + Edit + + + + Lorem + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-05-t-isvalid.html new file mode 100644 index 00000000000..ce0752f553e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/color-prop-05-t-isvalid.html @@ -0,0 +1,47 @@ + + + + color-prop-05-t-manual.svg + + + +

    Source SVG: color-prop-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: color-prop-05-t.svg,v $ + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/conform-viewers-02-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/conform-viewers-02-f-novalid.html new file mode 100644 index 00000000000..ebde81958d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/conform-viewers-02-f-novalid.html @@ -0,0 +1,64 @@ + + + + conform-viewers-02-f-manual.svg + + + +

    Source SVG: conform-viewers-02-f-manual.svg

    + + + + + + + + + + $RCSfile: conform-viewers-02-f.svg,v $ + + + + + + + + + Test data uri with svgz content + + FAILED + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/conform-viewers-03-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/conform-viewers-03-f-novalid.html new file mode 100644 index 00000000000..0e7115ff9d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/conform-viewers-03-f-novalid.html @@ -0,0 +1,102 @@ + + + + conform-viewers-03-f-manual.svg + + + +

    Source SVG: conform-viewers-03-f-manual.svg

    + + + + + + + + + + $RCSfile: conform-viewers-03-f.svg,v $ + + + + + + + + + + + + + Generated prefix 1: ... + + + Status: No exceptions. + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-coord-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-coord-01-t-isvalid.html new file mode 100644 index 00000000000..806bfe74182 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-coord-01-t-isvalid.html @@ -0,0 +1,69 @@ + + + + coords-coord-01-t-manual.svg + + + +

    Source SVG: coords-coord-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-coord-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-coord-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-coord-02-t-isvalid.html new file mode 100644 index 00000000000..68562378907 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-coord-02-t-isvalid.html @@ -0,0 +1,69 @@ + + + + coords-coord-02-t-manual.svg + + + +

    Source SVG: coords-coord-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-coord-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-01-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-01-f-novalid.html new file mode 100644 index 00000000000..d00af6e2fec --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-01-f-novalid.html @@ -0,0 +1,103 @@ + + + + coords-dom-01-f-manual.svg + + + +

    Source SVG: coords-dom-01-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-dom-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-02-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-02-f-novalid.html new file mode 100644 index 00000000000..af8616b368e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-02-f-novalid.html @@ -0,0 +1,84 @@ + + + + coords-dom-02-f-manual.svg + + + +

    Source SVG: coords-dom-02-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-dom-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-03-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-03-f-novalid.html new file mode 100644 index 00000000000..15d373e1e5a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-03-f-novalid.html @@ -0,0 +1,99 @@ + + + + coords-dom-03-f-manual.svg + + + +

    Source SVG: coords-dom-03-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-dom-03-f.svg,v $ + + + + + + + + + + Test that some methods taking an SVGMatrix take a copy of it + + + + + + SVGTransformList.createSVGTransformFromMatrix() + SVGSVGElement.createSVGTransformFromMatrix() + SVGTransform.setMatrix() + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-04-f-isvalid.html new file mode 100644 index 00000000000..4a722f8f84d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-dom-04-f-isvalid.html @@ -0,0 +1,155 @@ + + + + coords-dom-04-f-manual.svg + + + +

    Source SVG: coords-dom-04-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-dom-04-f.svg,v $ + + + + + + + + + + + + + + + + + Scripting disabled + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-01-b-isvalid.html new file mode 100644 index 00000000000..ca656c65d24 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-01-b-isvalid.html @@ -0,0 +1,226 @@ + + + + coords-trans-01-b-manual.svg + + + +

    Source SVG: coords-trans-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + translate (50, 50) + + + + + rotate(-90) + + + + + skew x (45) + + + + + skew y (45) + + + + + scale (2) + + + + + + + + + + + + + + + + + + + + + + + + + + + scale(25, 95) and translate(2, 2) + + + + + scale(25, 95) then translate(2, 2) + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-02-t-isvalid.html new file mode 100644 index 00000000000..fd4bdad836d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-02-t-isvalid.html @@ -0,0 +1,163 @@ + + + + coords-trans-02-t-manual.svg + + + +

    Source SVG: coords-trans-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + translate (50, 50) + + + + + rotate(-90) + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-03-t-isvalid.html new file mode 100644 index 00000000000..2d27a14c7f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-03-t-isvalid.html @@ -0,0 +1,86 @@ + + + + coords-trans-03-t-manual.svg + + + +

    Source SVG: coords-trans-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + skew x (45) + + + + + skew y (45) + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-04-t-isvalid.html new file mode 100644 index 00000000000..e3ba8cdd745 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-04-t-isvalid.html @@ -0,0 +1,75 @@ + + + + coords-trans-04-t-manual.svg + + + +

    Source SVG: coords-trans-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale (2) + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-05-t-isvalid.html new file mode 100644 index 00000000000..3404a412221 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-05-t-isvalid.html @@ -0,0 +1,75 @@ + + + + coords-trans-05-t-manual.svg + + + +

    Source SVG: coords-trans-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-05-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + scale(25, 95) - translate(2, 2) + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-06-t-isvalid.html new file mode 100644 index 00000000000..5b784d7531c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-06-t-isvalid.html @@ -0,0 +1,69 @@ + + + + coords-trans-06-t-manual.svg + + + +

    Source SVG: coords-trans-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-06-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + scale(25, 95) then translate(2, 2) + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-07-t-isvalid.html new file mode 100644 index 00000000000..183b8c7eb07 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-07-t-isvalid.html @@ -0,0 +1,57 @@ + + + + coords-trans-07-t-manual.svg + + + +

    Source SVG: coords-trans-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-07-t.svg,v $ + + + + + + + + + + + + + + rotate+translate + + + + + + translate+rotate + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-08-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-08-t-isvalid.html new file mode 100644 index 00000000000..5cdbd2c2e72 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-08-t-isvalid.html @@ -0,0 +1,63 @@ + + + + coords-trans-08-t-manual.svg + + + +

    Source SVG: coords-trans-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-08-t.svg,v $ + + + + + + + + + + + + + + + + + skewX(45)+skewY(45) + + + + + + + + + skewY(45)+skewX(45) + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-09-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-09-t-isvalid.html new file mode 100644 index 00000000000..8a38754d8ff --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-09-t-isvalid.html @@ -0,0 +1,89 @@ + + + + coords-trans-09-t-manual.svg + + + +

    Source SVG: coords-trans-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-trans-09-t.svg,v $ + + + + + + + + + + + + + + + matrix(0 0 0 0 0 0) + + + + + + matrix(1 0 0 1 100 100) + + + + + + matrix(1.5 0 0 1.5 70 60) + + + + + + matrix(1 0 0.5 1 30 170) + + + + + + matrix(1 0.5 0 1 100 200) + + + + + + matrix(0 1 -1 0 450 0) + + + + + + matrix(1 0.8 0.8 1 300 220) + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-10-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-10-f-isvalid.html new file mode 100644 index 00000000000..1762d21fd10 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-10-f-isvalid.html @@ -0,0 +1,77 @@ + + + + coords-trans-10-f-manual.svg + + + +

    Source SVG: coords-trans-10-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-10-f.svg,v $ + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + $Revision: 1.9 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-11-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-11-f-isvalid.html new file mode 100644 index 00000000000..6b95f8b9698 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-11-f-isvalid.html @@ -0,0 +1,77 @@ + + + + coords-trans-11-f-manual.svg + + + +

    Source SVG: coords-trans-11-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-11-f.svg,v $ + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + $Revision: 1.8 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-12-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-12-f-isvalid.html new file mode 100644 index 00000000000..ce8f5e4474b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-12-f-isvalid.html @@ -0,0 +1,79 @@ + + + + coords-trans-12-f-manual.svg + + + +

    Source SVG: coords-trans-12-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-12-f.svg,v $ + + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-13-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-13-f-isvalid.html new file mode 100644 index 00000000000..25b9a0fdf15 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-13-f-isvalid.html @@ -0,0 +1,77 @@ + + + + coords-trans-13-f-manual.svg + + + +

    Source SVG: coords-trans-13-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-13-f.svg,v $ + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-14-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-14-f-isvalid.html new file mode 100644 index 00000000000..9b663d02370 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-trans-14-f-isvalid.html @@ -0,0 +1,79 @@ + + + + coords-trans-14-f-manual.svg + + + +

    Source SVG: coords-trans-14-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-trans-14-f.svg,v $ + + + + + + + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + Filler Text + + + + + + + Filler Text + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-01-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-01-f-novalid.html new file mode 100644 index 00000000000..aabfb996191 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-01-f-novalid.html @@ -0,0 +1,83 @@ + + + + coords-transformattr-01-f-manual.svg + + + +

    Source SVG: coords-transformattr-01-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-transformattr-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-02-f-isvalid.html new file mode 100644 index 00000000000..1c2c8f10d3d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-02-f-isvalid.html @@ -0,0 +1,83 @@ + + + + coords-transformattr-02-f-manual.svg + + + +

    Source SVG: coords-transformattr-02-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-transformattr-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-03-f-isvalid.html new file mode 100644 index 00000000000..7e41124a623 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-03-f-isvalid.html @@ -0,0 +1,52 @@ + + + + coords-transformattr-03-f-manual.svg + + + +

    Source SVG: coords-transformattr-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-transformattr-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-04-f-isvalid.html new file mode 100644 index 00000000000..70f5e399509 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-04-f-isvalid.html @@ -0,0 +1,50 @@ + + + + coords-transformattr-04-f-manual.svg + + + +

    Source SVG: coords-transformattr-04-f-manual.svg

    + + + + + + + + + + $RCSfile: coords-transformattr-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-05-f-isvalid.html new file mode 100644 index 00000000000..8f41cb385e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-transformattr-05-f-isvalid.html @@ -0,0 +1,60 @@ + + + + coords-transformattr-05-f-manual.svg + + + +

    Source SVG: coords-transformattr-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-transformattr-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-01-b-isvalid.html new file mode 100644 index 00000000000..f8a492610b4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-01-b-isvalid.html @@ -0,0 +1,150 @@ + + + + coords-units-01-b-manual.svg + + + +

    Source SVG: coords-units-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-units-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Bounding box relative coordinates (percentage and fraction) + + + + + + + Percentage + Fraction + User Space + + + + + + + + + + + + + + + + + + + + + + + + + + Bounding box relative length (percentage and fraction) + + + + + Percent. + Fraction + User Space + + + + + + + + + + + + + + + + + + + + + + + + + + Bounding box relative width/height (percentage and fraction) + + + + + Percentage + Fraction + User Space + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-02-b-isvalid.html new file mode 100644 index 00000000000..7981e2cd043 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-02-b-isvalid.html @@ -0,0 +1,115 @@ + + + + coords-units-02-b-manual.svg + + + +

    Source SVG: coords-units-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-units-02-b.svg,v $ + + + + + + + + + + + + + + + + CSS pixel coordinate to user space conversion + + + + + + + + + + + Percentage coordinates to user space conversion + + + + + + + + + + + + + + CSS width/height to user space conversion + + + + + + + + + + + Percentage width/height to user space conversion + + + + + + + + + + + + + + CSS and percentage length conversion + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-03-b-isvalid.html new file mode 100644 index 00000000000..4a855b4fff4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-units-03-b-isvalid.html @@ -0,0 +1,125 @@ + + + + coords-units-03-b-manual.svg + + + +

    Source SVG: coords-units-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-units-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + Initial viewport and CSS units test + + + + + + 200 + User space units (no specifier) + + + + + + + + 200 px + Pixels (px) + + + + 20 em = 200 px (font-size=10px) + Relative to font size (em) + + + + + + 40 ex + Relative to font x-height (ex) + + + + + + + + 41.67% = 200 px + Percentage (%) + + + + + + 1 in + Inches (in) + + + + 2.54 cm = 1 in + Centimeters (cm) + + + + 25.4 mm = 1 in + Millimeters (mm) + + + + 72pt = 1 in + Points (pt) + + + + 6pc = 1 in + Picas (pc) + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-viewattr-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-viewattr-03-b-isvalid.html new file mode 100644 index 00000000000..84555cacb61 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/coords-viewattr-03-b-isvalid.html @@ -0,0 +1,85 @@ + + + + coords-viewattr-03-b-manual.svg + + + +

    Source SVG: coords-viewattr-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: coords-viewattr-03-b.svg,v $ + + + + + + + + + <svg> 'viewBox' attribute + + + + + + + viewBox="0 0 200 200" + overflow="visible" + + + + + viewBox="0 0 200 200" + overflow="hidden" + + + + + viewBox="0,0,200,200" + overflow="visible" + + + + + viewBox="0,0,200,200" + overflow="hidden" + + + + + viewBox="0,0, 200, 200" + overflow="visible" + + + + + viewBox="0,0, 200, 200" + overflow="hidden" + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/extend-namespace-01-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/extend-namespace-01-f-novalid.html new file mode 100644 index 00000000000..3f879566e6d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/extend-namespace-01-f-novalid.html @@ -0,0 +1,162 @@ + + + + extend-namespace-01-f-manual.svg + + + +

    Source SVG: extend-namespace-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: extend-namespace-01-f.svg,v $ + + + + + + + + + + + + + + + East + 3 + + + North + 4 + + + West + 5 + + + Central + 3.2 + + + South + 6 + + + + Pie chart built from data in a different namespace. + + + + Pie chart is built within this 'g' element + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-background-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-background-01-f-isvalid.html new file mode 100644 index 00000000000..09a735da49d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-background-01-f-isvalid.html @@ -0,0 +1,114 @@ + + + + filters-background-01-f-manual.svg + + + +

    Source SVG: filters-background-01-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-background-01-f.svg,v $ + + + + + + + + + + + + This filter discards the SourceGraphic, if any, and just produces + a result consisting of the BackgroundImage shifted down 125 units + and then blurred. + + + + + + + This filter takes the BackgroundImage, shifts it down 125 units, blurs it, + and then renders the SourceGraphic on top of the shifted/blurred background. + + + + + + + + + + + + + The second adds an empty 'g' element which invokes ShiftBGAndBlur. + + + + + + + + + + + The third invokes ShiftBGAndBlur on the inner group. + + + + + + + + + + The fourth invokes ShiftBGAndBlur on the triangle. + + + + + + + + + + The fifth invokes ShiftBGAndBlur_WithSourceGraphic on the triangle. + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-blend-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-blend-01-b-isvalid.html new file mode 100644 index 00000000000..3ed26e28583 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-blend-01-b-isvalid.html @@ -0,0 +1,88 @@ + + + + filters-blend-01-b-manual.svg + + + +

    Source SVG: filters-blend-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-blend-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Normal + Multiply + Multiply + Multiply + Screen + Darken + Lighten + + + + + $Revision: 1.9 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-color-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-color-01-b-isvalid.html new file mode 100644 index 00000000000..47c5fcc1580 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-color-01-b-isvalid.html @@ -0,0 +1,82 @@ + + + + filters-color-01-b-manual.svg + + + +

    Source SVG: filters-color-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-color-01-b.svg,v $ + + + + + + + + + + Example feColorMatrix - Examples of feColorMatrix operations + Five rectangles filled with a gradient showing the effects of feColorMatrix: an unfiltered rectangle acting as a reference, use of the feColorMatrix matrix option to convert to grayscale, use of the feColorMatrix saturate option, use of the feColorMatrix hueRotate option, and use of the feColorMatrix luminanceToAlpha option. + + + + + + + + + + + + + + + + + + + + + + + + + Unfiltered + + type="matrix" (grayscale matrix) + + type="saturate" values=".4" + + type="hueRotate" values="90" + + type="luminanceToAlpha" + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-color-02-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-color-02-b-novalid.html new file mode 100644 index 00000000000..758ebd36159 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-color-02-b-novalid.html @@ -0,0 +1,80 @@ + + + + filters-color-02-b-manual.svg + + + +

    Source SVG: filters-color-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-color-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reference + Default + + + + $Revision: 1.7 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-02-b-isvalid.html new file mode 100644 index 00000000000..4740a521da2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-02-b-isvalid.html @@ -0,0 +1,181 @@ + + + + filters-composite-02-b-manual.svg + + + +

    Source SVG: filters-composite-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-composite-02-b.svg,v $ + + + + + + + + + + Example feComposite - Examples of feComposite operations + Six pairs of overlapping triangles depicting the six different feComposite operators. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + on first Row : opacity 1.0 + on second row opacity 0.5 + + + + over + + + + + + + + + in + + + + + + + + + out + + + + + + + + atop + + + + + + + + xor + + + + + + + arith- + metic + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-03-f-isvalid.html new file mode 100644 index 00000000000..bdc45335c94 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-03-f-isvalid.html @@ -0,0 +1,78 @@ + + + + filters-composite-03-f-manual.svg + + + +

    Source SVG: filters-composite-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-composite-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-04-f-isvalid.html new file mode 100644 index 00000000000..1309abdc1fc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-04-f-isvalid.html @@ -0,0 +1,68 @@ + + + + filters-composite-04-f-manual.svg + + + +

    Source SVG: filters-composite-04-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-composite-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-05-f-isvalid.html new file mode 100644 index 00000000000..14c9993f70b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-composite-05-f-isvalid.html @@ -0,0 +1,56 @@ + + + + filters-composite-05-f-manual.svg + + + +

    Source SVG: filters-composite-05-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-composite-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-comptran-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-comptran-01-b-isvalid.html new file mode 100644 index 00000000000..683bb6a8fc8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-comptran-01-b-isvalid.html @@ -0,0 +1,97 @@ + + + + filters-comptran-01-b-manual.svg + + + +

    Source SVG: filters-comptran-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-comptran-01-b.svg,v $ + + + + + + + + + + Example feComponentTransfer - Examples of feComponentTransfer operations + Four rectangles filled with a gradient showing the effects of feComponentTransfer: an identity function acting as a reference, use of the feComponentTransfer table option, use of the feComponentTransfer linear option, and use of the feComponentTransfer gamma option. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + type: identity + + type: table + + type:linear slope:.5 intercepts:.25/0/.5 + + type: gamma ampl:2 exponents:5/3/1 + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-01-f-isvalid.html new file mode 100644 index 00000000000..dc327abb143 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-01-f-isvalid.html @@ -0,0 +1,93 @@ + + + + filters-conv-01-f-manual.svg + + + +

    Source SVG: filters-conv-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-conv-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Blur (3x3) + + + + Edge Detection (3x3) + + + + Sharpening (3x3) + + + + Embossing (3x3) + + + + Horizontal blur (3x1) + + + + Vertical blur (1x3) + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-02-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-02-f-novalid.html new file mode 100644 index 00000000000..1f3b835825a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-02-f-novalid.html @@ -0,0 +1,67 @@ + + + + filters-conv-02-f-manual.svg + + + +

    Source SVG: filters-conv-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-conv-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + feConvolveMatrix 'order' attribute + + + without order + + + order="3" + + + order="3 3" + + + $Revision: 1.9 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-03-f-isvalid.html new file mode 100644 index 00000000000..65dd9b4cd28 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-03-f-isvalid.html @@ -0,0 +1,84 @@ + + + + filters-conv-03-f-manual.svg + + + +

    Source SVG: filters-conv-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-conv-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + PASS + + + + + feConvolveMatrix 'in1' DOM + + + + + + + Original image + Animated filter + Scripted filter + + + $Revision: 1.8 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-04-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-04-f-novalid.html new file mode 100644 index 00000000000..2998b7c5060 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-04-f-novalid.html @@ -0,0 +1,85 @@ + + + + filters-conv-04-f-manual.svg + + + +

    Source SVG: filters-conv-04-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-conv-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-05-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-05-f-novalid.html new file mode 100644 index 00000000000..c4bf1c95055 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-conv-05-f-novalid.html @@ -0,0 +1,74 @@ + + + + filters-conv-05-f-manual.svg + + + +

    Source SVG: filters-conv-05-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-conv-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + feConvolveMatrix 'edgeMode' + + + none + + + wrap + + + duplicate + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-diffuse-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-diffuse-01-f-isvalid.html new file mode 100644 index 00000000000..40ca7c3089c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-diffuse-01-f-isvalid.html @@ -0,0 +1,134 @@ + + + + filters-diffuse-01-f-manual.svg + + + +

    Source SVG: filters-diffuse-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-diffuse-01-f.svg,v $ + + + + + + + + + + Filters: feDiffuseLighting + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Various values for surfaceScale: 1, 10 and -10 + + + + + + + Various values for diffuseConstants: 0, 1 and 2 + + + + + + + Various values for lighting color: red, yellow and blue + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-displace-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-displace-01-f-isvalid.html new file mode 100644 index 00000000000..e7bbcbe61bc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-displace-01-f-isvalid.html @@ -0,0 +1,105 @@ + + + + filters-displace-01-f-manual.svg + + + +

    Source SVG: filters-displace-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-displace-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Checkerboard Image + + + + + Displacement Map + (20 deg. rotation) + + + + + + + + Result + (overlayed with 20 deg. + rotated blue rectangle) + + + + + + Checkerboard Image + + + + + + Displacement Map + (spherical distortion) + + + + + Result + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-displace-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-displace-02-f-isvalid.html new file mode 100644 index 00000000000..983cfed06a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-displace-02-f-isvalid.html @@ -0,0 +1,67 @@ + + + + filters-displace-02-f-manual.svg + + + +

    Source SVG: filters-displace-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-displace-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-example-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-example-01-b-isvalid.html new file mode 100644 index 00000000000..68df18f44af --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-example-01-b-isvalid.html @@ -0,0 +1,66 @@ + + + + filters-example-01-b-manual.svg + + + +

    Source SVG: filters-example-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-example-01-b.svg,v $ + + + + + + + + + + + Example filters01.svg - introducing filter effects + An example which combines multiple filter primitives to produce a 3D lighting effect on a graphic consisting of the string "SVG" sitting on top of oval filled in green and surrounded by an oval outlined in green. + + + + + + + + + + + + + + SVG + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-felem-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-felem-01-b-isvalid.html new file mode 100644 index 00000000000..f88e6ee4413 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-felem-01-b-isvalid.html @@ -0,0 +1,68 @@ + + + + filters-felem-01-b-manual.svg + + + +

    Source SVG: filters-felem-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-felem-01-b.svg,v $ + + + + + + + + + + + + + + + + No filter + + + + + Null filter + + + + + Non-existent filter + + + + + Null with small region filter + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-felem-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-felem-02-f-isvalid.html new file mode 100644 index 00000000000..d72286a8563 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-felem-02-f-isvalid.html @@ -0,0 +1,113 @@ + + + + filters-felem-02-f-manual.svg + + + +

    Source SVG: filters-felem-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-felem-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-01-b-isvalid.html new file mode 100644 index 00000000000..97a4aa975cb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-01-b-isvalid.html @@ -0,0 +1,69 @@ + + + + filters-gauss-01-b-manual.svg + + + +

    Source SVG: filters-gauss-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-gauss-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-02-f-isvalid.html new file mode 100644 index 00000000000..b674067c865 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-02-f-isvalid.html @@ -0,0 +1,71 @@ + + + + filters-gauss-02-f-manual.svg + + + +

    Source SVG: filters-gauss-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-gauss-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-03-f-isvalid.html new file mode 100644 index 00000000000..383a29e06aa --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-gauss-03-f-isvalid.html @@ -0,0 +1,57 @@ + + + + filters-gauss-03-f-manual.svg + + + +

    Source SVG: filters-gauss-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-gauss-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-01-b-isvalid.html new file mode 100644 index 00000000000..dbce70d71d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-01-b-isvalid.html @@ -0,0 +1,51 @@ + + + + filters-image-01-b-manual.svg + + + +

    Source SVG: filters-image-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-image-01-b.svg,v $ + + + + + + + + + + + + + + Basic test of feImage filter support. + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-02-b-isvalid.html new file mode 100644 index 00000000000..a8936c78107 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-02-b-isvalid.html @@ -0,0 +1,64 @@ + + + + filters-image-02-b-manual.svg + + + +

    Source SVG: filters-image-02-b-manual.svg

    + + + + + + + + + + $RCSfile: filters-image-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + Animation in filters + 'feImage' + 'image' + + + + $Revision: 1.9 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-03-f-isvalid.html new file mode 100644 index 00000000000..17894f5d0ed --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-03-f-isvalid.html @@ -0,0 +1,164 @@ + + + + filters-image-03-f-manual.svg + + + +

    Source SVG: filters-image-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-image-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-04-f-isvalid.html new file mode 100644 index 00000000000..47e238d578b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-04-f-isvalid.html @@ -0,0 +1,104 @@ + + + + filters-image-04-f-manual.svg + + + +

    Source SVG: filters-image-04-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-image-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + primitiveUnits = "objectBoundingBox" + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-05-f-isvalid.html new file mode 100644 index 00000000000..d20325754ee --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-image-05-f-isvalid.html @@ -0,0 +1,184 @@ + + + + filters-image-05-f-manual.svg + + + +

    Source SVG: filters-image-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-image-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Example PreserveAspectRatio - demonstrate available options + Test preserveAspectRatio on an feImage element. + Raster to fit + + + + Viewport 1 + + Viewport 2 + + + ---------- meet -------------------- + + xMin* + + + + + xMid* + + + + + xMax* + + + + + + ---------- meet ------------------------ + + *YMin + + + + *YMid + + + + *YMax + + + + + ---------- slice ------------------------- + + xMin* + + + + xMid* + + + + xMax* + + + + + ---------- slice --------------------- + + *YMin + + + + + *YMid + + + + + *YMax + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-01-f-isvalid.html new file mode 100644 index 00000000000..b490f3e1558 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-01-f-isvalid.html @@ -0,0 +1,170 @@ + + + + filters-light-01-f-manual.svg + + + +

    Source SVG: filters-light-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-light-01-f.svg,v $ + + + + + + + + + + Filters: feDistantLight, fePointLight, feSpotLight + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Various values for feDistantLight azimuth and elevation + (0, 0) + (45, 0) + (0, 45) + (45, 45) + + + + + + + + Various values for fePointLight's x, y and z + (0, 0, 10) + (50, 0, 10) + (0, 30, 10) + (50, 30, 10) + + + + + + + + + + Various values for feSpotLight's x, y, z, pointsAtX, pointsAtY, pointsAtZ + (25, 0, 25) + (25, 30, 0) + (25, 30, 25) + (25, 0, 0) + np=1 + limitingConeAngle=30 + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-02-f-isvalid.html new file mode 100644 index 00000000000..5ac432761d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-02-f-isvalid.html @@ -0,0 +1,86 @@ + + + + filters-light-02-f-manual.svg + + + +

    Source SVG: filters-light-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-light-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 'feDistantLight' azimuth + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-03-f-isvalid.html new file mode 100644 index 00000000000..a6a9c2b3adc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-03-f-isvalid.html @@ -0,0 +1,106 @@ + + + + filters-light-03-f-manual.svg + + + +

    Source SVG: filters-light-03-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-light-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + primitiveUnits="objectBoundingBox" + + + + + + + + + primitiveUnits="userSpaceOnUse" + + + + + + + + + primitiveUnits unspecified + + + + + + $Revision: 1.10 $ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-04-f-isvalid.html new file mode 100644 index 00000000000..16c15798ee2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-04-f-isvalid.html @@ -0,0 +1,123 @@ + + + + filters-light-04-f-manual.svg + + + +

    Source SVG: filters-light-04-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-light-04-f.svg,v $ + + + + + + + + + + feSpotLight's limitingConeAngle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + 20 + Animated (0..50) + 5 + + -30 + -20 + Animated (0..-50) + -5 + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-05-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-05-f-novalid.html new file mode 100644 index 00000000000..9d2701034ae --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-light-05-f-novalid.html @@ -0,0 +1,207 @@ + + + + filters-light-05-f-manual.svg + + + +

    Source SVG: filters-light-05-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-light-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + feDiffuseLight using feDistantLight source + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + feSpecularLight using feDistantLight source + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + feDiffuseLight and feSpecularLight using feDistantLight + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + + + + + + + 90 deg + 270 deg + 180 deg + 0 deg + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-morph-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-morph-01-f-isvalid.html new file mode 100644 index 00000000000..2f3a162d669 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-morph-01-f-isvalid.html @@ -0,0 +1,89 @@ + + + + filters-morph-01-f-manual.svg + + + +

    Source SVG: filters-morph-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-morph-01-f.svg,v $ + + + + + + + + + Filter Effect: feMorphology + + + + + + + + + + + + + + + + + + + + + + + + + + + + + type=erode radius=1 + + + + type=erode radius=2 + + + + type=dilate radius=1 + + + + type=dilate radius=3 + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-offset-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-offset-01-b-isvalid.html new file mode 100644 index 00000000000..d1129afd242 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-offset-01-b-isvalid.html @@ -0,0 +1,85 @@ + + + + filters-offset-01-b-manual.svg + + + +

    Source SVG: filters-offset-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-offset-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-offset-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-offset-02-b-isvalid.html new file mode 100644 index 00000000000..951b0c5dd55 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-offset-02-b-isvalid.html @@ -0,0 +1,71 @@ + + + + filters-offset-02-b-manual.svg + + + +

    Source SVG: filters-offset-02-b-manual.svg

    + + + + + + + + + + $RCSfile: filters-offset-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-01-b-isvalid.html new file mode 100644 index 00000000000..69726a9e9eb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-01-b-isvalid.html @@ -0,0 +1,151 @@ + + + + filters-overview-01-b-manual.svg + + + +

    Source SVG: filters-overview-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-overview-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SourceAlpha + + =========================================================================================== + + + + + + + + SourceGraphic + + =========================================================================================== + + + + + + + + BackgroundAlpha + + =========================================================================================== + + + + + + + + BackgroundImage + + =========================================================================================== + + + + + + + + FillPaint + + =========================================================================================== + + + + + + + + StrokePaint + + + + Filter input test + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-02-b-isvalid.html new file mode 100644 index 00000000000..b91fc64207a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-02-b-isvalid.html @@ -0,0 +1,160 @@ + + + + filters-overview-02-b-manual.svg + + + +

    Source SVG: filters-overview-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-overview-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SourceAlpha + + =========================================================================================== + + + + + + + + SourceGraphic + + =========================================================================================== + + + + + + + + BackgroundAlpha + + =========================================================================================== + + + + + + + + BackgroundImage + + =========================================================================================== + + + + + + + + + FillPaint + + =========================================================================================== + + + + + + + + + StrokePaint + + + + Filter input test + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-03-b-isvalid.html new file mode 100644 index 00000000000..6ecdc69fe4a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-overview-03-b-isvalid.html @@ -0,0 +1,151 @@ + + + + filters-overview-03-b-manual.svg + + + +

    Source SVG: filters-overview-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-overview-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SourceAlpha + + =========================================================================================== + + + + + + + + SourceGraphic + + =========================================================================================== + + + + + + + + BackgroundAlpha + + =========================================================================================== + + + + + + + + BackgroundImage + + =========================================================================================== + + + + + + + + FillPaint + + =========================================================================================== + + + + + + + + StrokePaint + + + + Filter input test + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-specular-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-specular-01-f-isvalid.html new file mode 100644 index 00000000000..03da4c31b3d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-specular-01-f-isvalid.html @@ -0,0 +1,179 @@ + + + + filters-specular-01-f-manual.svg + + + +

    Source SVG: filters-specular-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-specular-01-f.svg,v $ + + + + + + + + + + Filters: feSpecularLighting + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Various values for surfaceScale: 1, 10 and -10 + + + + + + + + + + + + Various values for specularConstants: 0, 1 and 2 + + + + + + + + + + + + Various values for specularExponents: 1, 2 and 4 + + + + + + + + + + + + Various values for lighting color: red, yellow and blue + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-tile-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-tile-01-b-isvalid.html new file mode 100644 index 00000000000..8f0402a7da7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-tile-01-b-isvalid.html @@ -0,0 +1,63 @@ + + + + filters-tile-01-b-manual.svg + + + +

    Source SVG: filters-tile-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-tile-01-b.svg,v $ + + + + + + + + + feTile filter test: a tiled pattern + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-turb-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-turb-01-f-isvalid.html new file mode 100644 index 00000000000..780459e8756 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-turb-01-f-isvalid.html @@ -0,0 +1,91 @@ + + + + filters-turb-01-f-manual.svg + + + +

    Source SVG: filters-turb-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: filters-turb-01-f.svg,v $ + + + + + + + + + Six rectangular areas showing the effects of various parameter settings for feTurbulence. + + + + + + + + + + + + + + + + + + + + + + + type=turbulence + baseFrequency=0.05 + numOctaves=2 + + type=turbulence + baseFrequency=0.1 + numOctaves=2 + + type=turbulence + baseFrequency=0.05 + numOctaves=8 + + type=fractalNoise + baseFrequency=0.1 + numOctaves=4 + + type=fractalNoise + baseFrequency=0.4 + numOctaves=4 + + type=fractalNoise + baseFrequency=0.1 + numOctaves=1 + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-turb-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-turb-02-f-isvalid.html new file mode 100644 index 00000000000..203f6a79e99 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/filters-turb-02-f-isvalid.html @@ -0,0 +1,125 @@ + + + + filters-turb-02-f-manual.svg + + + +

    Source SVG: filters-turb-02-f-manual.svg

    + + + + + + + + + + $RCSfile: filters-turb-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + feTurbulence seed + + + + -0.8 + + -0.5 + + -0.2 + + 0 + + 0.2 + + 0.5 + + 1.5 + + + + -1 + + -1.5 + + + + -2 + + -2.6 + + + + + $Revision: 1.7 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-01-t-isvalid.html new file mode 100644 index 00000000000..38fd4973631 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-01-t-isvalid.html @@ -0,0 +1,91 @@ + + + + fonts-desc-01-t-manual.svg + + + +

    Source SVG: fonts-desc-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-02-t-isvalid.html new file mode 100644 index 00000000000..7fd43f5c743 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-02-t-isvalid.html @@ -0,0 +1,115 @@ + + + + fonts-desc-02-t-manual.svg + + + +

    Source SVG: fonts-desc-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + + + a + a + + + a + a + a + a + + + a + a + a + a + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-03-t-isvalid.html new file mode 100644 index 00000000000..7a847714a82 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-03-t-isvalid.html @@ -0,0 +1,102 @@ + + + + fonts-desc-03-t-manual.svg + + + +

    Source SVG: fonts-desc-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + + a + a + + a + a + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-04-t-isvalid.html new file mode 100644 index 00000000000..1420e16a2c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-04-t-isvalid.html @@ -0,0 +1,120 @@ + + + + fonts-desc-04-t-manual.svg + + + +

    Source SVG: fonts-desc-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + + + a + a + + + a + a + a + + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-05-t-isvalid.html new file mode 100644 index 00000000000..7799438c3e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-desc-05-t-isvalid.html @@ -0,0 +1,107 @@ + + + + fonts-desc-05-t-manual.svg + + + +

    Source SVG: fonts-desc-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-desc-05-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a + a + a + a + + + a + a + a + + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-01-t-isvalid.html new file mode 100644 index 00000000000..6788ac071e3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-01-t-isvalid.html @@ -0,0 +1,97 @@ + + + + fonts-elem-01-t-manual.svg + + + +

    Source SVG: fonts-elem-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + Basic SVG font element + + + + + Placed Glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + SVG Font + + + AyÖ@ç + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-02-t-isvalid.html new file mode 100644 index 00000000000..191196b0cb9 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-02-t-isvalid.html @@ -0,0 +1,105 @@ + + + + fonts-elem-02-t-manual.svg + + + +

    Source SVG: fonts-elem-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + SVG font element accuracy + + SVG over Glyphs + + + + + + + + + + + + + + + + + + + AyÖ@ç + + Glyphs over SVG + + AyÖ@ç + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-03-b-isvalid.html new file mode 100644 index 00000000000..e8e47d4d238 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-03-b-isvalid.html @@ -0,0 +1,97 @@ + + + + fonts-elem-03-b-manual.svg + + + +

    Source SVG: fonts-elem-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-03-b.svg,v $ + + + + + + + + + + + + + + + + + External SVG font element (xml) + + + + + Placed Glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + SVG Font + + + AyÖ@ç + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-04-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-04-b-isvalid.html new file mode 100644 index 00000000000..543abe3c983 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-04-b-isvalid.html @@ -0,0 +1,97 @@ + + + + fonts-elem-04-b-manual.svg + + + +

    Source SVG: fonts-elem-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-04-b.svg,v $ + + + + + + + + + + + + + External SVG font element (css) + + + + + Placed Glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + SVG Font + + + AyÖ@ç + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-05-t-isvalid.html new file mode 100644 index 00000000000..5eaa8a62e18 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-05-t-isvalid.html @@ -0,0 +1,125 @@ + + + + fonts-elem-05-t-manual.svg + + + +

    Source SVG: fonts-elem-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-05-t.svg,v $ + + + + + + + + + <font> horiz-origin-x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horiz-origin-x unspecified (0) + + + + + 1234 + + + + horiz-origin-x=500 + + + + + 1234 + + + + + horiz-adv-x=1000 but ignored + + + + + 1234 + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-06-t-isvalid.html new file mode 100644 index 00000000000..54c42c57db7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-06-t-isvalid.html @@ -0,0 +1,98 @@ + + + + fonts-elem-06-t-manual.svg + + + +

    Source SVG: fonts-elem-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-06-t.svg,v $ + + + + + + + + + <font> horiz-adv-x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + horiz-adv-x=1000 + + + 12 + + + + horiz-adv-x=2000 + + + 12 + + + + + horiz-adv-x=1000 but ignored + + + 12 + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-07-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-07-b-isvalid.html new file mode 100644 index 00000000000..8bb396fe6a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-elem-07-b-isvalid.html @@ -0,0 +1,108 @@ + + + + fonts-elem-07-b-manual.svg + + + +

    Source SVG: fonts-elem-07-b-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-elem-07-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basic SVG font element + + + + + Placed Glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + SVG Font + + + AyÖ@ç + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-02-t-isvalid.html new file mode 100644 index 00000000000..26fe17a3f3e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-02-t-isvalid.html @@ -0,0 +1,72 @@ + + + + fonts-glyph-02-t-manual.svg + + + +

    Source SVG: fonts-glyph-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-glyph-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ښ ښښښ + + + + خ خخخ + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-03-t-isvalid.html new file mode 100644 index 00000000000..912da902bdf --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-03-t-isvalid.html @@ -0,0 +1,63 @@ + + + + fonts-glyph-03-t-manual.svg + + + +

    Source SVG: fonts-glyph-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-glyph-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + a + + a + + a + + a + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-04-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-04-t-novalid.html new file mode 100644 index 00000000000..d8c09495be3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-glyph-04-t-novalid.html @@ -0,0 +1,58 @@ + + + + fonts-glyph-04-t-manual.svg + + + +

    Source SVG: fonts-glyph-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-glyph-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + ffl + ffl + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-kern-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-kern-01-t-isvalid.html new file mode 100644 index 00000000000..f23ccc5b106 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-kern-01-t-isvalid.html @@ -0,0 +1,253 @@ + + + + fonts-kern-01-t-manual.svg + + + +

    Source SVG: fonts-kern-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: fonts-kern-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <hkern> + + + + + font A + + + u1="1" u2="2" + + + + + + + + + 12 + + + + + + + font B + + + g1="gl_1" g2="gl_2" + + + + 12 + + + + + + + font C + + + u1="1" u2="2" g1="gl_3" g2="gl_4" + + + + + + + + 1234 + + + + + + + font D + + + u1="1,3" u2="2,4" + + + + + + 1234 + + + + + + + font E + + + g1="gl_1,gl_3" g2="gl_2,gl_4" + + + + + + 1234 + + + + + + + font F + + + u1="U+003?" u2="U+0031-34" + + + + + + + + + 1234 + + + + + + + font G + + + u1="1" g2="gl_2" + + + + + + + + + 12 + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-overview-201-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-overview-201-t-novalid.html new file mode 100644 index 00000000000..8cc1f54b525 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/fonts-overview-201-t-novalid.html @@ -0,0 +1,107 @@ + + + + fonts-overview-201-t-manual.svg + + + +

    Source SVG: fonts-overview-201-t-manual.svg

    + + + + + + + + + + + $RCSfile: fonts-overview-201-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + β + β + β + + 1,000 + 10 + 10,000 + varying units-per-em values + + + $Revision: 1.2 $ + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/imp-path-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/imp-path-01-f-isvalid.html new file mode 100644 index 00000000000..905bcb3194c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/imp-path-01-f-isvalid.html @@ -0,0 +1,50 @@ + + + + imp-path-01-f-manual.svg + + + +

    Source SVG: imp-path-01-f-manual.svg

    + + + + + + + + + + $RCSfile: imp-path-01-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-cursor-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-cursor-01-f-isvalid.html new file mode 100644 index 00000000000..2fa936410e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-cursor-01-f-isvalid.html @@ -0,0 +1,113 @@ + + + + interact-cursor-01-f-manual.svg + + + +

    Source SVG: interact-cursor-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-cursor-01-f.svg,v $ + + + + + + + + + + + + + Text Cursor + Pointer Cursor + + + + + + + + + + crosshair + + + + default + + + + pointer + + + + move + + + + text + + + + wait + + + + help + + + + <url> + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-dom-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-dom-01-b-isvalid.html new file mode 100644 index 00000000000..101082a941f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-dom-01-b-isvalid.html @@ -0,0 +1,108 @@ + + + + interact-dom-01-b-manual.svg + + + +

    Source SVG: interact-dom-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-dom-01-b.svg,v $ + + + + + + + + + + + + + + + + + Start Test + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-01-b-isvalid.html new file mode 100644 index 00000000000..64041cfd8b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-01-b-isvalid.html @@ -0,0 +1,94 @@ + + + + interact-events-01-b-manual.svg + + + +

    Source SVG: interact-events-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-events-01-b.svg,v $ + + + + + + + + + + + + + 'onload' event attribute. + + + + + 1: No + + + + 2: Yes + + + + + + 3: Yes + + + + + + 4: Yes + + + + + + 5: No + + + + 6: Yes + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-02-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-02-b-novalid.html new file mode 100644 index 00000000000..e85bd93e7ac --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-02-b-novalid.html @@ -0,0 +1,61 @@ + + + + interact-events-02-b-manual.svg + + + +

    Source SVG: interact-events-02-b-manual.svg

    + + + + + + + + + + $RCSfile: interact-events-02-b.svg,v $ + + + + + + + + + + Testing that SVGLoad does not bubble + + + + + On root <svg> + On an <image> + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-202-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-202-f-isvalid.html new file mode 100644 index 00000000000..378177a13b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-202-f-isvalid.html @@ -0,0 +1,72 @@ + + + + interact-events-202-f-manual.svg + + + +

    Source SVG: interact-events-202-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-events-202-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-203-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-203-t-isvalid.html new file mode 100644 index 00000000000..6aa4683b04f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-events-203-t-isvalid.html @@ -0,0 +1,87 @@ + + + + interact-events-203-t-manual.svg + + + +

    Source SVG: interact-events-203-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-events-203-t.svg,v $ + + + + + + + + + + + + + + + Shadow tree event listener chain + + + + Case 1: on mouseover all squares must turn blue + + + + + + + + Case 2: on mouseover all squares must turn blue + and a black stroke must appear on reference square + + + + + + + + + + Case 3: on mouseover all squares must turn blue + and a black stroke must appear on reference square + + + + + + + + Case 4: on mouseover all squares must turn blue + and on mousedown a black stroke must appear on reference square + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-01-b-isvalid.html new file mode 100644 index 00000000000..02d48a0d86e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-01-b-isvalid.html @@ -0,0 +1,89 @@ + + + + interact-order-01-b-manual.svg + + + +

    Source SVG: interact-order-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-order-01-b.svg,v $ + + + + + + + + + + + + Event bubbling - a + + + + + + + + + + + + Pointer in circle, + + + circle turns pink + + + Pointer in circle, + + + circle turns blue + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-02-b-isvalid.html new file mode 100644 index 00000000000..39eb27681c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-02-b-isvalid.html @@ -0,0 +1,87 @@ + + + + interact-order-02-b-manual.svg + + + +

    Source SVG: interact-order-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-order-02-b.svg,v $ + + + + + + + + + + + + Event bubbling - b + + + + + + + + + + + + + Click on circle, + + + circle turns red + + + Click on circle, + + + hyperlink + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-03-b-isvalid.html new file mode 100644 index 00000000000..85f2b717db5 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-order-03-b-isvalid.html @@ -0,0 +1,86 @@ + + + + interact-order-03-b-manual.svg + + + +

    Source SVG: interact-order-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-order-03-b.svg,v $ + + + + + + + + + + + + Event bubbling - c + + + + + + + + String turns red on click + + + + String hyperlinks to + + + interact-order-03b-targ.svg + + + + All strings are selectable. + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-01-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-01-b-novalid.html new file mode 100644 index 00000000000..851efb65288 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-01-b-novalid.html @@ -0,0 +1,173 @@ + + + + interact-pevents-01-b-manual.svg + + + +

    Source SVG: interact-pevents-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-pevents-01-b.svg,v $ + + + + + + + + + + + + Test pointer-events on text + + + O + O + O + O + O + O + O + O + O + O + + + + + + + + + + O + O + O + O + O + O + O + O + O + O + + + + + + + + + + O + O + O + O + O + O + O + O + O + O + + + + + + + + + + O + O + + O + O + O + + O + + O + O + O + + O + + + + + + + + + + + + Toggle freeze + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-03-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-03-b-novalid.html new file mode 100644 index 00000000000..7e28b1e9d30 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-03-b-novalid.html @@ -0,0 +1,114 @@ + + + + interact-pevents-03-b-manual.svg + + + +

    Source SVG: interact-pevents-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-pevents-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test pointer-events on text + + + + + @ A y Ö ç + + + + @ A y Ö ç + + + + @AyÖç + + + + + + @ A y Ö ç + + + + @AyÖç + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-04-t-isvalid.html new file mode 100644 index 00000000000..10f0395387c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-04-t-isvalid.html @@ -0,0 +1,109 @@ + + + + interact-pevents-04-t-manual.svg + + + +

    Source SVG: interact-pevents-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-pevents-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test pointer-events on text + + + + + @ A y Ö ç + + + + @ A y Ö ç + + + + @AyÖç + + + + + + @ A y Ö ç + + + + @AyÖç + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-05-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-05-b-novalid.html new file mode 100644 index 00000000000..69d39b6492c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-05-b-novalid.html @@ -0,0 +1,102 @@ + + + + interact-pevents-05-b-manual.svg + + + +

    Source SVG: interact-pevents-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-pevents-05-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test pointer-events on text + + @AyÖç + @AyÖç + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-07-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-07-t-novalid.html new file mode 100644 index 00000000000..0ee3f03d941 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-07-t-novalid.html @@ -0,0 +1,107 @@ + + + + interact-pevents-07-t-manual.svg + + + +

    Source SVG: interact-pevents-07-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-pevents-07-t.svg,v $ + + + + + + + + + + + + Testing pointer-events and rendering order + Rectangles should turn RED on mouseover + Ovals should turn RED if Pointer-Events are set to "ALL" + + + + Change "Pointer-Events" of + ovals from "ALL" to "NONE" + + + + + Purple ovals have "Pointer-Events" set to "ALL". + Purple ovals have Pointer-Events set to "NONE". + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-08-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-08-f-novalid.html new file mode 100644 index 00000000000..42126ad1fd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-08-f-novalid.html @@ -0,0 +1,155 @@ + + + + interact-pevents-08-f-manual.svg + + + +

    Source SVG: interact-pevents-08-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-pevents-08-f.svg,v $ + + + + + + + + + + + + Testing pointer-events - pale RED rect should appear on mouseover. + + + 2nd and 3rd columns represent respectively rects with no fill/stroke and transparent fill/stroke + + + + + + + + + + + + + + + + default : + fill and stroke of rects 1 and 3 must trigger + + + + + + + + + + + + + + + visiblePainted : + fill and stroke of rects 1 and 3 must trigger + + + + + + + + + + + + + + + + + + visibleFill : + only fill of rects 1, 2 and 3 must trigger + + + + + + + + + + + + + + + + + + visibleStroke : + only stroke of rects 1, 2 and 3 must trigger + + + + + + + + + + + + + + + + + + visible : + fill and stroke of rects 1, 2 and 3 must trigger + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-09-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-09-f-novalid.html new file mode 100644 index 00000000000..fb8d9a82ba3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-09-f-novalid.html @@ -0,0 +1,146 @@ + + + + interact-pevents-09-f-manual.svg + + + +

    Source SVG: interact-pevents-09-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-pevents-09-f.svg,v $ + + + + + + + + + + + + Testing pointer-events - pale RED rect should appear on mouseover. + + + 2nd and 3rd columns represent respectively rects with no fill/stroke and transparent fill/stroke + + + + + + + + + + + + + + + + painted : + fill and stroke of rects 1, 3 and 4 must trigger + + + + + + + + + + + + + + + fill : + fill of rects 1 to 4 must trigger + + + + + + + + + + + + + + + stroke : + stroke of rects 1 to 4 must trigger + + + + + + + + + + + + + + + all : + stroke and fill of rects 1 to 4 must trigger + + + + + + + + + + + + + + + none : + nothing is to trigger + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-10-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-10-f-isvalid.html new file mode 100644 index 00000000000..9aec374030b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pevents-10-f-isvalid.html @@ -0,0 +1,68 @@ + + + + interact-pevents-10-f-manual.svg + + + +

    Source SVG: interact-pevents-10-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-pevents-10-f.svg,v $ + + + + + + + + + + + + + + + FAIL + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-01-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-01-t-novalid.html new file mode 100644 index 00000000000..5b2da1f4c72 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-01-t-novalid.html @@ -0,0 +1,64 @@ + + + + interact-pointer-01-t-manual.svg + + + +

    Source SVG: interact-pointer-01-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-pointer-01-t.svg,v $ + + + + + + + + + + Test pointer events with zero opacity mask pixels + + + + + + + Move the pointing device over the rectangle. + If it is red, you've already failed. + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-02-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-02-t-novalid.html new file mode 100644 index 00000000000..2a2724caf16 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-02-t-novalid.html @@ -0,0 +1,64 @@ + + + + interact-pointer-02-t-manual.svg + + + +

    Source SVG: interact-pointer-02-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-pointer-02-t.svg,v $ + + + + + + + + + + Test pointer events with shapes that have clip paths + + + + + + + Move the pointing device over the rectangle. + If it is red, you've already failed. + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-03-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-03-t-novalid.html new file mode 100644 index 00000000000..36e1e46d54f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-03-t-novalid.html @@ -0,0 +1,62 @@ + + + + interact-pointer-03-t-manual.svg + + + +

    Source SVG: interact-pointer-03-t-manual.svg

    + + + + + + + + + + $RCSfile: interact-pointer-03-t.svg,v $ + + + + + + + + + + Test pointer-events="painted" with paint server fallback + + + + + + Move the pointing device over the rectangle. + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-04-f-isvalid.html new file mode 100644 index 00000000000..499797d2176 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-pointer-04-f-isvalid.html @@ -0,0 +1,71 @@ + + + + interact-pointer-04-f-manual.svg + + + +

    Source SVG: interact-pointer-04-f-manual.svg

    + + + + + + + + + + $RCSfile: interact-pointer-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-01-t-isvalid.html new file mode 100644 index 00000000000..a4cf8b4f614 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-01-t-isvalid.html @@ -0,0 +1,56 @@ + + + + interact-zoom-01-t-manual.svg + + + +

    Source SVG: interact-zoom-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-zoom-01-t.svg,v $ + + + + + + + + + + Test default value of + zoomAndPan attribute. + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-02-t-isvalid.html new file mode 100644 index 00000000000..29d3fdfd971 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-02-t-isvalid.html @@ -0,0 +1,56 @@ + + + + interact-zoom-02-t-manual.svg + + + +

    Source SVG: interact-zoom-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-zoom-02-t.svg,v $ + + + + + + + + + + Test "magnify" value of + zoomAndPan attribute. + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-03-t-isvalid.html new file mode 100644 index 00000000000..46f531a3210 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/interact-zoom-03-t-isvalid.html @@ -0,0 +1,56 @@ + + + + interact-zoom-03-t-manual.svg + + + +

    Source SVG: interact-zoom-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: interact-zoom-03-t.svg,v $ + + + + + + + + + + + Test "disable" value of + zoomAndPan attribute. + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-01-b-isvalid.html new file mode 100644 index 00000000000..af8c35bea17 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-01-b-isvalid.html @@ -0,0 +1,54 @@ + + + + linking-a-01-b-manual.svg + + + +

    Source SVG: linking-a-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-01-b.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-03-b-isvalid.html new file mode 100644 index 00000000000..c548dd67caa --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-03-b-isvalid.html @@ -0,0 +1,54 @@ + + + + linking-a-03-b-manual.svg + + + +

    Source SVG: linking-a-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-03-b.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-04-t-isvalid.html new file mode 100644 index 00000000000..04352e6cd94 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-04-t-isvalid.html @@ -0,0 +1,65 @@ + + + + linking-a-04-t-manual.svg + + + +

    Source SVG: linking-a-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-04-t.svg,v $ + + + + + + + + + Basic out-bound links and the 'a' element. + + + + + + + + + + + + + + + + + + + + id="internal-circle" + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-05-t-isvalid.html new file mode 100644 index 00000000000..3c0461e5a02 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-05-t-isvalid.html @@ -0,0 +1,71 @@ + + + + linking-a-05-t-manual.svg + + + +

    Source SVG: linking-a-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-05-t.svg,v $ + + + + + + + + + Verify transform attributes in the 'a' element. + + + + + + transform="rotate(20,225,65) + + + + + + + transform="skewX(-30) + + + + + + + + + transform="translate(-10,-20) + + + + id="internal-circle" + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-07-t-isvalid.html new file mode 100644 index 00000000000..8b0288e6957 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-07-t-isvalid.html @@ -0,0 +1,75 @@ + + + + linking-a-07-t-manual.svg + + + +

    Source SVG: linking-a-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-07-t.svg,v $ + + + + + + + + + xlink 'show' attribute on 'a' element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-08-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-08-t-isvalid.html new file mode 100644 index 00000000000..a44ee88567e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-08-t-isvalid.html @@ -0,0 +1,52 @@ + + + + linking-a-08-t-manual.svg + + + +

    Source SVG: linking-a-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-08-t.svg,v $ + + + + + + + + + + + Link inside text + + + Link around text + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-09-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-09-b-novalid.html new file mode 100644 index 00000000000..703f79623c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-09-b-novalid.html @@ -0,0 +1,62 @@ + + + + linking-a-09-b-manual.svg + + + +

    Source SVG: linking-a-09-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-a-09-b.svg,v $ + + + + + + + + + + + A + + link + inside tspan + for testing + + + + A + + link + around tspan + + for testing + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-10-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-10-f-novalid.html new file mode 100644 index 00000000000..17a3a07ef2e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-a-10-f-novalid.html @@ -0,0 +1,77 @@ + + + + linking-a-10-f-manual.svg + + + +

    Source SVG: linking-a-10-f-manual.svg

    + + + + + + + + + + $RCSfile: linking-a-10-f.svg,v $ + + + + + + + + + + + + + + + X + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-frag-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-frag-01-f-isvalid.html new file mode 100644 index 00000000000..f56810732f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-frag-01-f-isvalid.html @@ -0,0 +1,57 @@ + + + + linking-frag-01-f-manual.svg + + + +

    Source SVG: linking-frag-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-frag-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-01-b-isvalid.html new file mode 100644 index 00000000000..0873b286d59 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-01-b-isvalid.html @@ -0,0 +1,91 @@ + + + + linking-uri-01-b-manual.svg + + + +

    Source SVG: linking-uri-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-uri-01-b.svg,v $ + + + + + + + + + Link test of the 'view' element and its attributes, 1 of 2, internal. + + + + + Go to Rectangle + + + Go to Ellipse + + + Go to Circle + + + Go to Polygon + + Click element's line + to link to its view + + + + + + Rectangle + + No view attributes except id. + + + + Ellipse + + viewBox, should fill frame. + + + + Circle + + viewBox & non-uniform + preserveAspectRatio + + + + Polygon + + viewTarget, no + changes to viewport + + + + $Revision: 1.12 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-02-b-isvalid.html new file mode 100644 index 00000000000..88f9962ec20 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-02-b-isvalid.html @@ -0,0 +1,96 @@ + + + + linking-uri-02-b-manual.svg + + + +

    Source SVG: linking-uri-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-uri-02-b.svg,v $ + + + + + + + + + Link test of the 'view' element and its attributes, 2 of 2, external. + + + + + Go to Rectangle + + + Go to Ellipse + + + Go to Circle + + + Go to Polygon + + Click element's line + to link to its view in + linking-uri-01-b. + + + + + + + Rectangle + + No view attributes except id. + + + + + Ellipse + + viewBox, should fill frame. + + + + + Circle + + viewBox & non-uniform + preserveAspectRatio + + + + + Polygon + + viewTarget, no + changes to viewport + + + + $Revision: 1.10 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-03-t-isvalid.html new file mode 100644 index 00000000000..778fa719d3f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/linking-uri-03-t-isvalid.html @@ -0,0 +1,59 @@ + + + + linking-uri-03-t-manual.svg + + + +

    Source SVG: linking-uri-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: linking-uri-03-t.svg,v $ + + + + + + + + + Simple exercise of xlink attributes on the 'a' element. + + + + Click for TOC + Link to local file + linkingToc-t.svg. + + xlink:type="simple" + xlink:show="replace" + xlink:actuate="onRequest" + xlink:href="linkingToc-t.svg" + xlink:role="figure-out-a-role" + xlink:title="TOC of Linking BE tests." + target="_self" + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-filter-01-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-filter-01-f-novalid.html new file mode 100644 index 00000000000..1c143f955fa --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-filter-01-f-novalid.html @@ -0,0 +1,64 @@ + + + + masking-filter-01-f-manual.svg + + + +

    Source SVG: masking-filter-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-filter-01-f.svg,v $ + + + + + + + + + + Testing 'filter' applied to 'mask' + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-intro-01-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-intro-01-f-novalid.html new file mode 100644 index 00000000000..51834cd161f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-intro-01-f-novalid.html @@ -0,0 +1,69 @@ + + + + masking-intro-01-f-manual.svg + + + +

    Source SVG: masking-intro-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-intro-01-f.svg,v $ + + + + + + + + + + masking-mask-04-f.svg + Tests the impact of strokes within clipPath and mask + Testing stroke inclusion for 'clip-path' and 'mask' + + + + + + + + + + With a 'clip-path': + + + + + + + + + + With a 'mask': + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-mask-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-mask-01-b-isvalid.html new file mode 100644 index 00000000000..23590f257b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-mask-01-b-isvalid.html @@ -0,0 +1,98 @@ + + + + masking-mask-01-b-manual.svg + + + +

    Source SVG: masking-mask-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-mask-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + Test for mask support + + + + + + + + + + + + + + Mask with linear gradient from + opacity=1 to opactity=0.5 + + + + + + Mask with uniform opacity of 0.5 + + + Rectangle with uniform opacity of 0.5 + + + + + + + + SVG + Text with mask containing rectangles + of various opacities + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-mask-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-mask-02-f-isvalid.html new file mode 100644 index 00000000000..930e9a91526 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-mask-02-f-isvalid.html @@ -0,0 +1,45 @@ + + + + masking-mask-02-f-manual.svg + + + +

    Source SVG: masking-mask-02-f-manual.svg

    + + + + + + + + + + $RCSfile: masking-mask-02-f.svg,v $ + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-opacity-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-opacity-01-b-isvalid.html new file mode 100644 index 00000000000..be156f600e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-opacity-01-b-isvalid.html @@ -0,0 +1,74 @@ + + + + masking-opacity-01-b-manual.svg + + + +

    Source SVG: masking-opacity-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-opacity-01-b.svg,v $ + + + + + + + + + Test for opacity property on a group. + + + + + + Group opacity: 1 + Blue rectangle opacity: 1 + Green rectangle opacity: 1 + + + + + Group opacity: 0.5 + Blue rectangle opacity: 1 + Green rectangle opacity: 1 + + + + + Group opacity: 1 + Blue rectangle opacity: 0.5 + Green rectangle opacity: 0.5 + + + + + Group opacity: 0.5 + Blue rectangle opacity: 0.5 + Green rectangle opacity: 0.5 + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-01-b-isvalid.html new file mode 100644 index 00000000000..c8a675c9f41 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-01-b-isvalid.html @@ -0,0 +1,69 @@ + + + + masking-path-01-b-manual.svg + + + +

    Source SVG: masking-path-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + Rectangle being clipped + + + + Line of text to be clipped + + Group being clipped + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-02-b-isvalid.html new file mode 100644 index 00000000000..9110dacef2d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-02-b-isvalid.html @@ -0,0 +1,58 @@ + + + + masking-path-02-b-manual.svg + + + +

    Source SVG: masking-path-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-02-b.svg,v $ + + + + + + + + + + + + + + + clipPathUnits=objectBoundingBox + + + + + + clipPathUnits=userSpaceOnUse + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-03-b-isvalid.html new file mode 100644 index 00000000000..55033509f75 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-03-b-isvalid.html @@ -0,0 +1,91 @@ + + + + masking-path-03-b-manual.svg + + + +

    Source SVG: masking-path-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-03-b.svg,v $ + + + + + + + + + + + Test 'overflow'/'clip' on outermost and inner 'svg' elements + + + + + Outer Clip + + + + Outer Clip + + + + Outer Clip + + + + Outer Clip + + + + + + + + + Inner Clip + + + + Inner Clip + + + + Inner Clip + + + + Inner Clip + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-04-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-04-b-isvalid.html new file mode 100644 index 00000000000..ed4bd15a70b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-04-b-isvalid.html @@ -0,0 +1,59 @@ + + + + masking-path-04-b-manual.svg + + + +

    Source SVG: masking-path-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-04-b.svg,v $ + + + + + + + + + + + + Clip Test + + + + + + Clip Test + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-05-f-isvalid.html new file mode 100644 index 00000000000..f792a39f036 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-05-f-isvalid.html @@ -0,0 +1,57 @@ + + + + masking-path-05-f-manual.svg + + + +

    Source SVG: masking-path-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-05-f.svg,v $ + + + + + + + + + + Test for clip-rule property. + + + + + clip-rule=evenodd + + + + + cliprule=nonzero + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-06-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-06-b-isvalid.html new file mode 100644 index 00000000000..d71f8d54235 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-06-b-isvalid.html @@ -0,0 +1,57 @@ + + + + masking-path-06-b-manual.svg + + + +

    Source SVG: masking-path-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-06-b.svg,v $ + + + + + + + + + + 'clip' property on images + + + + + <-- raster image + + + + + SVG image --> + + + + $Revision: 1.8 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-07-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-07-b-isvalid.html new file mode 100644 index 00000000000..0412497f072 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-07-b-isvalid.html @@ -0,0 +1,117 @@ + + + + masking-path-07-b-manual.svg + + + +

    Source SVG: masking-path-07-b-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-07-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test clip unions and intersections + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.11 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-08-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-08-b-isvalid.html new file mode 100644 index 00000000000..05816c0d371 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-08-b-isvalid.html @@ -0,0 +1,125 @@ + + + + masking-path-08-b-manual.svg + + + +

    Source SVG: masking-path-08-b-manual.svg

    + + + + + + + + + + $RCSfile: masking-path-08-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Establishing a new clipping path + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-09-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-09-b-novalid.html new file mode 100644 index 00000000000..d6f44374479 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-09-b-novalid.html @@ -0,0 +1,63 @@ + + + + masking-path-09-b-manual.svg + + + +

    Source SVG: masking-path-09-b-manual.svg

    + + + + + + + + + + $RCSfile: masking-path-09-b.svg,v $ + + + + + + + + + + Test bounding box calculations with clip paths + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-10-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-10-b-isvalid.html new file mode 100644 index 00000000000..085bf66b3d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-10-b-isvalid.html @@ -0,0 +1,123 @@ + + + + masking-path-10-b-manual.svg + + + +

    Source SVG: masking-path-10-b-manual.svg

    + + + + + + + + + + $RCSfile: masking-path-10-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Establishing a new masking path + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-11-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-11-b-isvalid.html new file mode 100644 index 00000000000..40effffb20f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-11-b-isvalid.html @@ -0,0 +1,56 @@ + + + + masking-path-11-b-manual.svg + + + +

    Source SVG: masking-path-11-b-manual.svg

    + + + + + + + + + + $RCSfile: masking-path-11-b.svg,v $ + + + + + + + + + + + + + ABC + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-12-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-12-f-isvalid.html new file mode 100644 index 00000000000..6cf14af1c2e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-12-f-isvalid.html @@ -0,0 +1,73 @@ + + + + masking-path-12-f-manual.svg + + + +

    Source SVG: masking-path-12-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-12-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-13-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-13-f-isvalid.html new file mode 100644 index 00000000000..42955237929 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-13-f-isvalid.html @@ -0,0 +1,50 @@ + + + + masking-path-13-f-manual.svg + + + +

    Source SVG: masking-path-13-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-13-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-14-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-14-f-isvalid.html new file mode 100644 index 00000000000..aeac28c46bc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/masking-path-14-f-isvalid.html @@ -0,0 +1,62 @@ + + + + masking-path-14-f-manual.svg + + + +

    Source SVG: masking-path-14-f-manual.svg

    + + + + + + + + + + + + $RCSfile: masking-path-14-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/metadata-example-01-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/metadata-example-01-t-novalid.html new file mode 100644 index 00000000000..6339d524d94 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/metadata-example-01-t-novalid.html @@ -0,0 +1,147 @@ + + + + metadata-example-01-t-manual.svg + + + +

    Source SVG: metadata-example-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: metadata-example-01-t.svg,v $ + + + + + + + + + + + + + Line drawing of woman in antique attire, + which looks legal or perhaps mystical. + image/svg+xml + Sibyll Trelawney + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://prismstandard.org/vocabularies/1.0/resourcetype.xml#birdsEye + http://prismstandard.org/vocabularies/1.0/resourcetype.xml#illustration + image/svg+xml + Line drawing of woman in antique attire, ... + online: + Sibyll Trelawney + + + http://purl.org/dc/elements/1.1/type + http://purl.org/dc/elements/1.1/format + http://purl.org/dc/elements/1.1/subject + http://purl.org/dc/elements/1.1/type + http://purl.org/dc/elements/1.1/description + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-01-f-isvalid.html new file mode 100644 index 00000000000..b3c1240bfbe --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-01-f-isvalid.html @@ -0,0 +1,94 @@ + + + + painting-control-01-f-manual.svg + + + +

    Source SVG: painting-control-01-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-02-f-isvalid.html new file mode 100644 index 00000000000..a44dfd189cf --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-02-f-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-control-02-f-manual.svg + + + +

    Source SVG: painting-control-02-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-02-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-03-f-isvalid.html new file mode 100644 index 00000000000..9cd40e1238d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-03-f-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-control-03-f-manual.svg + + + +

    Source SVG: painting-control-03-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-03-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-04-f-isvalid.html new file mode 100644 index 00000000000..f4d3faa9c20 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-04-f-isvalid.html @@ -0,0 +1,50 @@ + + + + painting-control-04-f-manual.svg + + + +

    Source SVG: painting-control-04-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-04-f.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-05-f-isvalid.html new file mode 100644 index 00000000000..78e538fd333 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-05-f-isvalid.html @@ -0,0 +1,107 @@ + + + + painting-control-05-f-manual.svg + + + +

    Source SVG: painting-control-05-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-06-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-06-f-isvalid.html new file mode 100644 index 00000000000..1b2a2eaaf01 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-control-06-f-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-control-06-f-manual.svg + + + +

    Source SVG: painting-control-06-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-control-06-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-01-t-isvalid.html new file mode 100644 index 00000000000..eb75daaf03e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-01-t-isvalid.html @@ -0,0 +1,56 @@ + + + + painting-fill-01-t-manual.svg + + + +

    Source SVG: painting-fill-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-01-t.svg,v $ + + + + + + + + + Basic paint: fill properties. + + + + + + + + + + fill="none" + fill="green" + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-02-t-isvalid.html new file mode 100644 index 00000000000..f5221bb921e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-02-t-isvalid.html @@ -0,0 +1,60 @@ + + + + painting-fill-02-t-manual.svg + + + +

    Source SVG: painting-fill-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-02-t.svg,v $ + + + + + + + + + + + Basic paint: fill properties. + fill="currentColor" + + + + + + + + + green + blue + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-03-t-isvalid.html new file mode 100644 index 00000000000..efba8a992b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-03-t-isvalid.html @@ -0,0 +1,54 @@ + + + + painting-fill-03-t-manual.svg + + + +

    Source SVG: painting-fill-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-03-t.svg,v $ + + + + + + + + + Basic paint: fill properties. + + + + + + + + fill-rule="evenodd" + fill-rule="nonzero" + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-04-t-isvalid.html new file mode 100644 index 00000000000..54974d263f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-04-t-isvalid.html @@ -0,0 +1,54 @@ + + + + painting-fill-04-t-manual.svg + + + +

    Source SVG: painting-fill-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-05-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-05-b-isvalid.html new file mode 100644 index 00000000000..e81b09aa955 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-fill-05-b-isvalid.html @@ -0,0 +1,60 @@ + + + + painting-fill-05-b-manual.svg + + + +

    Source SVG: painting-fill-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-fill-05-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-01-f-isvalid.html new file mode 100644 index 00000000000..9ae06cc9fe8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-01-f-isvalid.html @@ -0,0 +1,124 @@ + + + + painting-marker-01-f-manual.svg + + + +

    Source SVG: painting-marker-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basic Markers + + + + + + + + + + + + + + + + + + + + Start, Middle and End + + + + + + + + + + + + + + + + + + + + Automatic Orientation + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-02-f-isvalid.html new file mode 100644 index 00000000000..2aee5884741 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-02-f-isvalid.html @@ -0,0 +1,212 @@ + + + + painting-marker-02-f-manual.svg + + + +

    Source SVG: painting-marker-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-02-f.svg,v $ + + + + + + + + + + + + + + + + + + Marker Rendering Properties + + + + + + + + Fill Property + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stroke Property + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mixed Properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mixed Properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-03-f-isvalid.html new file mode 100644 index 00000000000..0c73e6d0e97 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-03-f-isvalid.html @@ -0,0 +1,75 @@ + + + + painting-marker-03-f-manual.svg + + + +

    Source SVG: painting-marker-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + 'marker' property test + + 'marker' property + + + + + + + + + 'marker-start', 'marker-mid' & 'marker-end' attribute + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-04-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-04-f-novalid.html new file mode 100644 index 00000000000..c250a36dd70 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-04-f-novalid.html @@ -0,0 +1,72 @@ + + + + painting-marker-04-f-manual.svg + + + +

    Source SVG: painting-marker-04-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-04-f.svg,v $ + + + + + + + + + + + + + + + + + + 'marker' attribute test + + 'marker' attribute + + + + + + + + + 'marker-start', 'marker-mid' & 'marker-end' attributes + + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-05-f-isvalid.html new file mode 100644 index 00000000000..0180187137c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-05-f-isvalid.html @@ -0,0 +1,221 @@ + + + + painting-marker-05-f-manual.svg + + + +

    Source SVG: painting-marker-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Test marker overflow + + + default + 'visible' + 'auto' + 'scroll' + 'hidden' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-06-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-06-f-isvalid.html new file mode 100644 index 00000000000..8f273c05c28 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-06-f-isvalid.html @@ -0,0 +1,125 @@ + + + + painting-marker-06-f-manual.svg + + + +

    Source SVG: painting-marker-06-f-manual.svg

    + + + + + + + + + + $RCSfile: painting-marker-06-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basic Markers + + + + + + + + + + + + + + + + + + + + Start, Middle and End + + + + + + + + + + + + + + + + + + + + Automatic Orientation + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-07-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-07-f-isvalid.html new file mode 100644 index 00000000000..c389e9b332a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-07-f-isvalid.html @@ -0,0 +1,58 @@ + + + + painting-marker-07-f-manual.svg + + + +

    Source SVG: painting-marker-07-f-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-marker-07-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-properties-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-properties-01-f-isvalid.html new file mode 100644 index 00000000000..6781359b25f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-marker-properties-01-f-isvalid.html @@ -0,0 +1,80 @@ + + + + painting-marker-properties-01-f-manual.svg + + + +

    Source SVG: painting-marker-properties-01-f-manual.svg

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-render-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-render-01-b-isvalid.html new file mode 100644 index 00000000000..1b336f26106 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-render-01-b-isvalid.html @@ -0,0 +1,128 @@ + + + + painting-render-01-b-manual.svg + + + +

    Source SVG: painting-render-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-render-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basic test of color-interpolation property. + + + + + + + + + + + + + + + + + + + + default (sRGB) + + + + + + + + + + + + + + + + + + + + + sRGB + + + + + + + + + + + + + + + + + + + + + linearRGB + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-render-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-render-02-b-isvalid.html new file mode 100644 index 00000000000..7c38d72e6f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-render-02-b-isvalid.html @@ -0,0 +1,72 @@ + + + + painting-render-02-b-manual.svg + + + +

    Source SVG: painting-render-02-b-manual.svg

    + + + + + + + + + + $RCSfile: painting-render-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + dark + light + dark + light + dark + dark or light + light + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-01-t-isvalid.html new file mode 100644 index 00000000000..b117fc494cb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-01-t-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-stroke-01-t-manual.svg + + + +

    Source SVG: painting-stroke-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-01-t.svg,v $ + + + + + + + + + + + + Basic paint: stroke properties. + + + stroke="none" + stroke="green" + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-02-t-isvalid.html new file mode 100644 index 00000000000..823669d1a99 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-02-t-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-stroke-02-t-manual.svg + + + +

    Source SVG: painting-stroke-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-02-t.svg,v $ + + + + + + + + + + + + Basic paint: stroke properties. + + + stroke-width="20" + stroke-linejoin="round" + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-03-t-isvalid.html new file mode 100644 index 00000000000..39a2f363064 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-03-t-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-stroke-03-t-manual.svg + + + +

    Source SVG: painting-stroke-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-03-t.svg,v $ + + + + + + + + + + + + Basic paint: stroke properties. + + + stroke-linecap="round" + stroke-miterlimit="1" + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-04-t-isvalid.html new file mode 100644 index 00000000000..cf9b06fbc9b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-04-t-isvalid.html @@ -0,0 +1,52 @@ + + + + painting-stroke-04-t-manual.svg + + + +

    Source SVG: painting-stroke-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-04-t.svg,v $ + + + + + + + + + + + + Basic paint: stroke properties. + + + stroke-dasharray="10, 10" + stroke-dashoffset="10" + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-05-t-isvalid.html new file mode 100644 index 00000000000..78ff685cf82 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-05-t-isvalid.html @@ -0,0 +1,73 @@ + + + + painting-stroke-05-t-manual.svg + + + +

    Source SVG: painting-stroke-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-05-t.svg,v $ + + + + + + + + + Rendering thin strokes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-06-t-isvalid.html new file mode 100644 index 00000000000..6c59096b2ac --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-06-t-isvalid.html @@ -0,0 +1,60 @@ + + + + painting-stroke-06-t-manual.svg + + + +

    Source SVG: painting-stroke-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-06-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-07-t-isvalid.html new file mode 100644 index 00000000000..8eecdec1b3e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-07-t-isvalid.html @@ -0,0 +1,54 @@ + + + + painting-stroke-07-t-manual.svg + + + +

    Source SVG: painting-stroke-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-07-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-08-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-08-t-isvalid.html new file mode 100644 index 00000000000..01cbd305152 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-08-t-isvalid.html @@ -0,0 +1,68 @@ + + + + painting-stroke-08-t-manual.svg + + + +

    Source SVG: painting-stroke-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-08-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-09-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-09-t-isvalid.html new file mode 100644 index 00000000000..7f623f8ea6e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-09-t-isvalid.html @@ -0,0 +1,48 @@ + + + + painting-stroke-09-t-manual.svg + + + +

    Source SVG: painting-stroke-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: painting-stroke-09-t.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-10-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-10-t-isvalid.html new file mode 100644 index 00000000000..3900e4f2944 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/painting-stroke-10-t-isvalid.html @@ -0,0 +1,63 @@ + + + + painting-stroke-10-t-manual.svg + + + +

    Source SVG: painting-stroke-10-t-manual.svg

    + + + + + + + + + + $RCSfile: painting-stroke-10-t.svg,v $ + + + + + + + + + + Test stroking of zero length subpaths + + + + + + + + + + + + + Using an 'L' command: + Using a 'c' command: + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-01-t-isvalid.html new file mode 100644 index 00000000000..6c7c7dcfddc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-01-t-isvalid.html @@ -0,0 +1,135 @@ + + + + paths-data-01-t-manual.svg + + + +

    Source SVG: paths-data-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-01-t.svg,v $ + + + + + + + + + + + + Cubic bezier curves drawn with commands: + + + + + + + + + + + M, C, S, m, c, s + + + + + + + + + + + + M, c, c, c, C, z + + + + + + + + + + M, C, Z + + + + + + + + + + + M, C, c, Z + + + + + + + + + + + m, c, s + + + + + + + + + + M, C + + + + + + + + + + + + M, c, s, s, s, z + + + + + + + + + + m, c, z + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-02-t-isvalid.html new file mode 100644 index 00000000000..447cc441e7f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-02-t-isvalid.html @@ -0,0 +1,108 @@ + + + + paths-data-02-t-manual.svg + + + +

    Source SVG: paths-data-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-02-t.svg,v $ + + + + + + + + + Quadric bezier curves drawn with commands: + + + + + M, Q, M, q, z + + + + + + + + + m, q, z, m, q, z + + + + + + + + + M, Q, Z + + + + + + + M, Q, T, Q, z + + + + + + + + + M, Q, Q, z + + + + + + + + M, q, t, t, t, t, z + + + + + + + + + + + M, q, Q, q, Q, z + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-03-f-isvalid.html new file mode 100644 index 00000000000..e3fe48031c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-03-f-isvalid.html @@ -0,0 +1,97 @@ + + + + paths-data-03-f-manual.svg + + + +

    Source SVG: paths-data-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-03-f.svg,v $ + + + + + + + + + Elliptical arc curves drawn with commands: + + + + + M, A, Z + + + + + + + m, a, z + + + + + + + M, a + + + + + + + M, A, a, a, z + + + + + + + + + M, a, Z, m, A, Z, m, a, z + + + + + + + + + + + M, A, A, A, A + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-04-t-isvalid.html new file mode 100644 index 00000000000..5ffd91862ef --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-04-t-isvalid.html @@ -0,0 +1,69 @@ + + + + paths-data-04-t-manual.svg + + + +

    Source SVG: paths-data-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-04-t.svg,v $ + + + + + + + + + + + + + + M, L, L, L, Z, + subpath + M, L, L, L, Z + + + + + + + + stroked + + + + + + + + filled + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-05-t-isvalid.html new file mode 100644 index 00000000000..239171011f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-05-t-isvalid.html @@ -0,0 +1,66 @@ + + + + paths-data-05-t-manual.svg + + + +

    Source SVG: paths-data-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-05-t.svg,v $ + + + + + + + + + + + + + m, l, l, l, z, + subpath + m, l, l, l, z + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-06-t-isvalid.html new file mode 100644 index 00000000000..ee909bb871d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-06-t-isvalid.html @@ -0,0 +1,71 @@ + + + + paths-data-06-t-manual.svg + + + +

    Source SVG: paths-data-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-06-t.svg,v $ + + + + + + + + + + + + + M, H, V, H, + V. H, V, H, + V, Z + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-07-t-isvalid.html new file mode 100644 index 00000000000..8a4ca054dca --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-07-t-isvalid.html @@ -0,0 +1,70 @@ + + + + paths-data-07-t-manual.svg + + + +

    Source SVG: paths-data-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-07-t.svg,v $ + + + + + + + + + + + + + m, h, v, h + v, h, v, h + v, z + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-08-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-08-t-isvalid.html new file mode 100644 index 00000000000..5d2e719802d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-08-t-isvalid.html @@ -0,0 +1,68 @@ + + + + paths-data-08-t-manual.svg + + + +

    Source SVG: paths-data-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-08-t.svg,v $ + + + + + + + + + + + + Lines drawn with commands: + M and Z + + + + + + + + + + stroked + + + + + + + + filled + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-09-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-09-t-isvalid.html new file mode 100644 index 00000000000..f3fc4d15392 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-09-t-isvalid.html @@ -0,0 +1,65 @@ + + + + paths-data-09-t-manual.svg + + + +

    Source SVG: paths-data-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-09-t.svg,v $ + + + + + + + + + + + + Lines drawn with commands: + m and z + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-10-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-10-t-isvalid.html new file mode 100644 index 00000000000..b64ddcd940e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-10-t-isvalid.html @@ -0,0 +1,98 @@ + + + + paths-data-10-t-manual.svg + + + +

    Source SVG: paths-data-10-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-10-t.svg,v $ + + + + + + + + + + open + join=round + cap=butt + M, L + + + + + + open + join=bevel + cap=round + m, l + + + + + + open + join=miter + cap=square + M, L + + + + + + closed + join=round + cap=butt + M, L, Z + + + + + + closed + join=bevel + cap=round + m, l, z + + + + + + closed + join=miter + cap=square + M, L, Z + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-12-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-12-t-isvalid.html new file mode 100644 index 00000000000..20d8f0b96f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-12-t-isvalid.html @@ -0,0 +1,57 @@ + + + + paths-data-12-t-manual.svg + + + +

    Source SVG: paths-data-12-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-12-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-13-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-13-t-isvalid.html new file mode 100644 index 00000000000..9c453482449 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-13-t-isvalid.html @@ -0,0 +1,49 @@ + + + + paths-data-13-t-manual.svg + + + +

    Source SVG: paths-data-13-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-13-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-14-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-14-t-isvalid.html new file mode 100644 index 00000000000..56fa8f97946 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-14-t-isvalid.html @@ -0,0 +1,50 @@ + + + + paths-data-14-t-manual.svg + + + +

    Source SVG: paths-data-14-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-14-t.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-15-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-15-t-isvalid.html new file mode 100644 index 00000000000..2fa718653ae --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-15-t-isvalid.html @@ -0,0 +1,53 @@ + + + + paths-data-15-t-manual.svg + + + +

    Source SVG: paths-data-15-t-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-data-15-t.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-16-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-16-t-isvalid.html new file mode 100644 index 00000000000..6e43196a37c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-16-t-isvalid.html @@ -0,0 +1,56 @@ + + + + paths-data-16-t-manual.svg + + + +

    Source SVG: paths-data-16-t-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-16-t.svg,v $ + + + + + + + + + + Test relative-ness of implicit lineto path commands + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-17-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-17-f-isvalid.html new file mode 100644 index 00000000000..2b83f839bac --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-17-f-isvalid.html @@ -0,0 +1,51 @@ + + + + paths-data-17-f-manual.svg + + + +

    Source SVG: paths-data-17-f-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-17-f.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-18-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-18-f-novalid.html new file mode 100644 index 00000000000..cbf6cf30b1e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-18-f-novalid.html @@ -0,0 +1,86 @@ + + + + paths-data-18-f-manual.svg + + + +

    Source SVG: paths-data-18-f-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-18-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-19-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-19-f-isvalid.html new file mode 100644 index 00000000000..1359839da45 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-19-f-isvalid.html @@ -0,0 +1,94 @@ + + + + paths-data-19-f-manual.svg + + + +

    Source SVG: paths-data-19-f-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-19-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-20-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-20-f-novalid.html new file mode 100644 index 00000000000..654b484e22e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-data-20-f-novalid.html @@ -0,0 +1,77 @@ + + + + paths-data-20-f-manual.svg + + + +

    Source SVG: paths-data-20-f-manual.svg

    + + + + + + + + + + $RCSfile: paths-data-20-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-dom-01-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-dom-01-f-novalid.html new file mode 100644 index 00000000000..8d071607439 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-dom-01-f-novalid.html @@ -0,0 +1,123 @@ + + + + paths-dom-01-f-manual.svg + + + +

    Source SVG: paths-dom-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-dom-01-f.svg,v $ + + + + + + + + + + + + + + + Using startOffset="50": + + + + + The text goes around the rect. + + + + Using startOffset="50" and + pathLength="100": + + + + The text goes around the rect. + + + + + getTotalLength: + -1 + -1 + + getPointAtLength(0): + -1 + -1 + + getPathSegAtLength(0): + + -1n/a + + + -1n/a + + + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-dom-02-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-dom-02-f-novalid.html new file mode 100644 index 00000000000..87b11d6a81f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/paths-dom-02-f-novalid.html @@ -0,0 +1,259 @@ + + + + paths-dom-02-f-manual.svg + + + +

    Source SVG: paths-dom-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: paths-dom-02-f.svg,v $ + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-01-b-isvalid.html new file mode 100644 index 00000000000..b5781089de8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-01-b-isvalid.html @@ -0,0 +1,56 @@ + + + + pservers-grad-01-b-manual.svg + + + +

    Source SVG: pservers-grad-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-01-b.svg,v $ + + + + + + + + + + + + + + + + + + Linear gradient. + + Referencing gradient below. + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-02-b-isvalid.html new file mode 100644 index 00000000000..61707995637 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-02-b-isvalid.html @@ -0,0 +1,56 @@ + + + + pservers-grad-02-b-manual.svg + + + +

    Source SVG: pservers-grad-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-02-b.svg,v $ + + + + + + + + + + + + + + + + + + Radial gradient. + + Referencing gradient below. + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-03-b-isvalid.html new file mode 100644 index 00000000000..88a2a176f54 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-03-b-isvalid.html @@ -0,0 +1,58 @@ + + + + pservers-grad-03-b-manual.svg + + + +

    Source SVG: pservers-grad-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + Pattern fill. + + Referencing pattern fill below. + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-04-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-04-b-isvalid.html new file mode 100644 index 00000000000..97d94f28955 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-04-b-isvalid.html @@ -0,0 +1,67 @@ + + + + pservers-grad-04-b-manual.svg + + + +

    Source SVG: pservers-grad-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-04-b.svg,v $ + + + + + + + + + + + + + + + + + + Multi-color linear gradient. + + + + + + + + + + + + + Multi-color radial gradient. + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-05-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-05-b-isvalid.html new file mode 100644 index 00000000000..1c573bcf358 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-05-b-isvalid.html @@ -0,0 +1,65 @@ + + + + pservers-grad-05-b-manual.svg + + + +

    Source SVG: pservers-grad-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-05-b.svg,v $ + + + + + + + + + Background + + + + + + + + + + + Background + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-06-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-06-b-isvalid.html new file mode 100644 index 00000000000..b4680b4fc4e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-06-b-isvalid.html @@ -0,0 +1,74 @@ + + + + pservers-grad-06-b-manual.svg + + + +

    Source SVG: pservers-grad-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-06-b.svg,v $ + + + + + + + + + + + + + + + + + + scale(0.5) on gradient + + + + + + + + + skewX(45) on gradient + + + + + + + + + + + scale(2), skewX(45) on pattern + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-07-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-07-b-isvalid.html new file mode 100644 index 00000000000..2e55d8d7c22 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-07-b-isvalid.html @@ -0,0 +1,63 @@ + + + + pservers-grad-07-b-manual.svg + + + +

    Source SVG: pservers-grad-07-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-07-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + Linear gradient filled rectangle + + + + + Linear gradient on stroke of rectangle + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-08-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-08-b-isvalid.html new file mode 100644 index 00000000000..561f444ee1f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-08-b-isvalid.html @@ -0,0 +1,79 @@ + + + + pservers-grad-08-b-manual.svg + + + +

    Source SVG: pservers-grad-08-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-08-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gradient on fill + + + + Gradient on stroke + + + + Linear gradient on filled text + Linear gradient on stroke of text + + + + $Revision: 1.13 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-09-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-09-b-isvalid.html new file mode 100644 index 00000000000..b9d5bffeda6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-09-b-isvalid.html @@ -0,0 +1,76 @@ + + + + pservers-grad-09-b-manual.svg + + + +

    Source SVG: pservers-grad-09-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-09-b.svg,v $ + + + + + + + + + Testing gradientUnits attribute + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-10-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-10-b-isvalid.html new file mode 100644 index 00000000000..39f919e74ea --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-10-b-isvalid.html @@ -0,0 +1,72 @@ + + + + pservers-grad-10-b-manual.svg + + + +

    Source SVG: pservers-grad-10-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-10-b.svg,v $ + + + + + + + + + Testing spreadMethod attribute + + + + + + + + + spreadMethod=pad + + + + + + + + + spreadMethod=reflect + + + + + + + + + spreadMethod=repeat + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-11-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-11-b-isvalid.html new file mode 100644 index 00000000000..5056c94b8a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-11-b-isvalid.html @@ -0,0 +1,80 @@ + + + + pservers-grad-11-b-manual.svg + + + +

    Source SVG: pservers-grad-11-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-11-b.svg,v $ + + + + + + + + + + + + + + + + + Radial gradient on fill of rectangle + + + + + + + + + Radial gradient on stroke of rectangle + + + + + + + + Gradient on text fill + Radial gradient on text, black to yellow + + + + + + + + Gradient on text stroke + Radial gradient on stroke of text, black to red + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-12-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-12-b-isvalid.html new file mode 100644 index 00000000000..733082c3f9e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-12-b-isvalid.html @@ -0,0 +1,75 @@ + + + + pservers-grad-12-b-manual.svg + + + +

    Source SVG: pservers-grad-12-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-12-b.svg,v $ + + + + + + + + + Testing gradientUnits attribute + + + + + + + + + Radial gradient with default attributes (from blue to yellow) + Gradient is blue at the object center and lime at the object edges + + + + + + + + + gradientUnits=objectBoundingBox + cx=.2, cy=.2, r=.5, fx=.2 fy=.2 + + + + + + + + + gradientUnits=userSpaceOnUse + Gradient is yellow to blue radial gradient from center to horizontal bounds + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-13-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-13-b-isvalid.html new file mode 100644 index 00000000000..b527b45410e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-13-b-isvalid.html @@ -0,0 +1,166 @@ + + + + pservers-grad-13-b-manual.svg + + + +

    Source SVG: pservers-grad-13-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-13-b.svg,v $ + + + + + + + + + Radial gradient focal point + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-14-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-14-b-isvalid.html new file mode 100644 index 00000000000..3a446a1c7b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-14-b-isvalid.html @@ -0,0 +1,112 @@ + + + + pservers-grad-14-b-manual.svg + + + +

    Source SVG: pservers-grad-14-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-14-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gradient 'spreadMethod' values + + + spreadMethod="pad" + + + spreadMethod="reflect" + + + spreadMethod="repeat" + + + spreadMethod="default" + + + + spreadMethod="pad" + + + spreadMethod="reflect" + + + spreadMethod="repeat" + + + spreadMethod="default" + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-15-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-15-b-isvalid.html new file mode 100644 index 00000000000..e8bc4b10dd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-15-b-isvalid.html @@ -0,0 +1,57 @@ + + + + pservers-grad-15-b-manual.svg + + + +

    Source SVG: pservers-grad-15-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-15-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-16-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-16-b-isvalid.html new file mode 100644 index 00000000000..23222e9e5c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-16-b-isvalid.html @@ -0,0 +1,63 @@ + + + + pservers-grad-16-b-manual.svg + + + +

    Source SVG: pservers-grad-16-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-16-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-17-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-17-b-isvalid.html new file mode 100644 index 00000000000..313a956e67c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-17-b-isvalid.html @@ -0,0 +1,70 @@ + + + + pservers-grad-17-b-manual.svg + + + +

    Source SVG: pservers-grad-17-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-17-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + With fallback + + + + + + + + + + Without fallback + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-18-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-18-b-isvalid.html new file mode 100644 index 00000000000..8681f1fe552 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-18-b-isvalid.html @@ -0,0 +1,74 @@ + + + + pservers-grad-18-b-manual.svg + + + +

    Source SVG: pservers-grad-18-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-18-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-20-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-20-b-isvalid.html new file mode 100644 index 00000000000..6ebc6ff7f5a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-20-b-isvalid.html @@ -0,0 +1,71 @@ + + + + pservers-grad-20-b-manual.svg + + + +

    Source SVG: pservers-grad-20-b-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-20-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + With fallback + + + + + + + + + + Without fallback + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-21-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-21-b-isvalid.html new file mode 100644 index 00000000000..d9a3f015d40 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-21-b-isvalid.html @@ -0,0 +1,133 @@ + + + + pservers-grad-21-b-manual.svg + + + +

    Source SVG: pservers-grad-21-b-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-21-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reference + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-22-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-22-b-isvalid.html new file mode 100644 index 00000000000..48ee6b367c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-22-b-isvalid.html @@ -0,0 +1,88 @@ + + + + pservers-grad-22-b-manual.svg + + + +

    Source SVG: pservers-grad-22-b-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-22-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-23-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-23-f-novalid.html new file mode 100644 index 00000000000..9c1f75b822d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-23-f-novalid.html @@ -0,0 +1,57 @@ + + + + pservers-grad-23-f-manual.svg + + + +

    Source SVG: pservers-grad-23-f-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-grad-23-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-24-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-24-f-isvalid.html new file mode 100644 index 00000000000..62dee44c98b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-24-f-isvalid.html @@ -0,0 +1,60 @@ + + + + pservers-grad-24-f-manual.svg + + + +

    Source SVG: pservers-grad-24-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-24-f.svg,v $ + + + + + + + + + + + + + + + + + There should be no red. + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-stops-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-stops-01-f-isvalid.html new file mode 100644 index 00000000000..c475e31853f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-grad-stops-01-f-isvalid.html @@ -0,0 +1,61 @@ + + + + pservers-grad-stops-01-f-manual.svg + + + +

    Source SVG: pservers-grad-stops-01-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-grad-stops-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-01-b-isvalid.html new file mode 100644 index 00000000000..c8f3e75caf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-01-b-isvalid.html @@ -0,0 +1,82 @@ + + + + pservers-pattern-01-b-manual.svg + + + +

    Source SVG: pservers-pattern-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: pservers-pattern-01-b.svg,v $ + + + + + + + + + + + + + + + + + Pattern created using yellow and green rectangles applied to fill of rectangle + + + + + + + + + + + Pattern of 4 rectangles applied to a stroke of a rectangle. + + + + + + + + Pattern on fill + Pattern consists of orange and green rows + + + + + + + + Pattern on stroke + Pattern consists of maroon and blue columns + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-02-f-isvalid.html new file mode 100644 index 00000000000..34f0a395db7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-02-f-isvalid.html @@ -0,0 +1,52 @@ + + + + pservers-pattern-02-f-manual.svg + + + +

    Source SVG: pservers-pattern-02-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-02-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-03-f-isvalid.html new file mode 100644 index 00000000000..1e8830c8977 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-03-f-isvalid.html @@ -0,0 +1,83 @@ + + + + pservers-pattern-03-f-manual.svg + + + +

    Source SVG: pservers-pattern-03-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-04-f-isvalid.html new file mode 100644 index 00000000000..266e93dd9aa --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-04-f-isvalid.html @@ -0,0 +1,57 @@ + + + + pservers-pattern-04-f-manual.svg + + + +

    Source SVG: pservers-pattern-04-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-05-f-isvalid.html new file mode 100644 index 00000000000..b394cf07abc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-05-f-isvalid.html @@ -0,0 +1,52 @@ + + + + pservers-pattern-05-f-manual.svg + + + +

    Source SVG: pservers-pattern-05-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-06-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-06-f-isvalid.html new file mode 100644 index 00000000000..0fbb2002872 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-06-f-isvalid.html @@ -0,0 +1,52 @@ + + + + pservers-pattern-06-f-manual.svg + + + +

    Source SVG: pservers-pattern-06-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-06-f.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-07-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-07-f-isvalid.html new file mode 100644 index 00000000000..5b710e35f8f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-07-f-isvalid.html @@ -0,0 +1,55 @@ + + + + pservers-pattern-07-f-manual.svg + + + +

    Source SVG: pservers-pattern-07-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-07-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-08-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-08-f-isvalid.html new file mode 100644 index 00000000000..448a0154324 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-08-f-isvalid.html @@ -0,0 +1,55 @@ + + + + pservers-pattern-08-f-manual.svg + + + +

    Source SVG: pservers-pattern-08-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-08-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-09-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-09-f-isvalid.html new file mode 100644 index 00000000000..6fad2330993 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/pservers-pattern-09-f-isvalid.html @@ -0,0 +1,59 @@ + + + + pservers-pattern-09-f-manual.svg + + + +

    Source SVG: pservers-pattern-09-f-manual.svg

    + + + + + + + + + + $RCSfile: pservers-pattern-09-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-01-t-isvalid.html new file mode 100644 index 00000000000..50bd46bcbd3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-01-t-isvalid.html @@ -0,0 +1,56 @@ + + + + render-elems-01-t-manual.svg + + + +

    Source SVG: render-elems-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + Shape fill + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-02-t-isvalid.html new file mode 100644 index 00000000000..8172ed32674 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-02-t-isvalid.html @@ -0,0 +1,56 @@ + + + + render-elems-02-t-manual.svg + + + +

    Source SVG: render-elems-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + Shape stroke + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-06-t-isvalid.html new file mode 100644 index 00000000000..fcbebe48d7c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-06-t-isvalid.html @@ -0,0 +1,64 @@ + + + + render-elems-06-t-manual.svg + + + +

    Source SVG: render-elems-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-06-t.svg,v $ + + + + + + + + + + + + + + + + + + + + Text fill + + G + G + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-07-t-isvalid.html new file mode 100644 index 00000000000..a4a0cf575cf --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-07-t-isvalid.html @@ -0,0 +1,62 @@ + + + + render-elems-07-t-manual.svg + + + +

    Source SVG: render-elems-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-07-t.svg,v $ + + + + + + + + + + + + + + + + + + + + Text stroke + + G + G + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-08-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-08-t-isvalid.html new file mode 100644 index 00000000000..46f409cd5ad --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-elems-08-t-isvalid.html @@ -0,0 +1,64 @@ + + + + render-elems-08-t-manual.svg + + + +

    Source SVG: render-elems-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-elems-08-t.svg,v $ + + + + + + + + + + + + + + + + + + + + Text fill and stroke + + G + G + + + + $Revision: 1.10 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-groups-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-groups-01-b-isvalid.html new file mode 100644 index 00000000000..a81e5c59fad --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-groups-01-b-isvalid.html @@ -0,0 +1,90 @@ + + + + render-groups-01-b-manual.svg + + + +

    Source SVG: render-groups-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: render-groups-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SVG + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-groups-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-groups-03-t-isvalid.html new file mode 100644 index 00000000000..937a76c867e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/render-groups-03-t-isvalid.html @@ -0,0 +1,84 @@ + + + + render-groups-03-t-manual.svg + + + +

    Source SVG: render-groups-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: render-groups-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SVG + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-01-b-isvalid.html new file mode 100644 index 00000000000..aff8a246863 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-01-b-isvalid.html @@ -0,0 +1,81 @@ + + + + script-handle-01-b-manual.svg + + + +

    Source SVG: script-handle-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: script-handle-01-b.svg,v $ + + + + + + + + + + + Event and DOM Access Test + + + + + + + + Click on the blue square + + + + Scripting Test Passed! + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-02-b-isvalid.html new file mode 100644 index 00000000000..7adcbb89595 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-02-b-isvalid.html @@ -0,0 +1,106 @@ + + + + script-handle-02-b-manual.svg + + + +

    Source SVG: script-handle-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: script-handle-02-b.svg,v $ + + + + + + + + + + + + Mouse event handlers test. + + + + + + + + Target + Use the target to trigger events + + + + + + + + + + + + + + + onfocusin + onfocusout + onactivate + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-03-b-isvalid.html new file mode 100644 index 00000000000..9a15d2e59f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-03-b-isvalid.html @@ -0,0 +1,106 @@ + + + + script-handle-03-b-manual.svg + + + +

    Source SVG: script-handle-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: script-handle-03-b.svg,v $ + + + + + + + + + + + + Mouse event handlers test. + + + + + + + + Target + Use the target to trigger events + + + + + + + + + + + + + + + onmousedown + onmouseup + onclick + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-04-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-04-b-isvalid.html new file mode 100644 index 00000000000..7faa657bd90 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-handle-04-b-isvalid.html @@ -0,0 +1,106 @@ + + + + script-handle-04-b-manual.svg + + + +

    Source SVG: script-handle-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: script-handle-04-b.svg,v $ + + + + + + + + + + + + Mouse event handlers test. + + + + + + + + Target + Use the target to trigger events + + + + + + + + + + + + + + + onmouseover + onmousemove + onmouseout + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-specify-01-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-specify-01-f-novalid.html new file mode 100644 index 00000000000..14aa6f6179f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-specify-01-f-novalid.html @@ -0,0 +1,59 @@ + + + + script-specify-01-f-manual.svg + + + +

    Source SVG: script-specify-01-f-manual.svg

    + + + + + + + + + + $RCSfile: script-specify-01-f.svg,v $ + + + + + + + + + + + contentScriptType Test + + + + + Good, script didn't run. + No! This is not ECMAScript! + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-specify-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-specify-02-f-isvalid.html new file mode 100644 index 00000000000..9688f54247d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/script-specify-02-f-isvalid.html @@ -0,0 +1,61 @@ + + + + script-specify-02-f-manual.svg + + + +

    Source SVG: script-specify-02-f-manual.svg

    + + + + + + + + + + $RCSfile: script-specify-02-f.svg,v $ + + + + + + + + + + + Test unknown type attribute value on script element + + + + Good, script didn't run. + No! This is not ECMAScript! + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-circle-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-circle-01-t-isvalid.html new file mode 100644 index 00000000000..ae7ff60659b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-circle-01-t-isvalid.html @@ -0,0 +1,50 @@ + + + + shapes-circle-01-t-manual.svg + + + +

    Source SVG: shapes-circle-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-circle-01-t.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-circle-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-circle-02-t-isvalid.html new file mode 100644 index 00000000000..f4f70d3553d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-circle-02-t-isvalid.html @@ -0,0 +1,60 @@ + + + + shapes-circle-02-t-manual.svg + + + +

    Source SVG: shapes-circle-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-circle-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-01-t-isvalid.html new file mode 100644 index 00000000000..e470800920f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-01-t-isvalid.html @@ -0,0 +1,63 @@ + + + + shapes-ellipse-01-t-manual.svg + + + +

    Source SVG: shapes-ellipse-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-ellipse-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-02-t-isvalid.html new file mode 100644 index 00000000000..ed45b7a46af --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-02-t-isvalid.html @@ -0,0 +1,57 @@ + + + + shapes-ellipse-02-t-manual.svg + + + +

    Source SVG: shapes-ellipse-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-ellipse-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-03-f-isvalid.html new file mode 100644 index 00000000000..96e4e3de980 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-ellipse-03-f-isvalid.html @@ -0,0 +1,58 @@ + + + + shapes-ellipse-03-f-manual.svg + + + +

    Source SVG: shapes-ellipse-03-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-ellipse-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-grammar-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-grammar-01-f-isvalid.html new file mode 100644 index 00000000000..c6aa3cfbd10 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-grammar-01-f-isvalid.html @@ -0,0 +1,63 @@ + + + + shapes-grammar-01-f-manual.svg + + + +

    Source SVG: shapes-grammar-01-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-grammar-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-intro-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-intro-01-t-isvalid.html new file mode 100644 index 00000000000..1d7fc22cf46 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-intro-01-t-isvalid.html @@ -0,0 +1,103 @@ + + + + shapes-intro-01-t-manual.svg + + + +

    Source SVG: shapes-intro-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-intro-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stroked + Unstroked + Zero width rect + Zero height rect + Zero radius circle + Zero x radius ellipse + Zero y radius ellipse + Zero length line + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-intro-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-intro-02-f-isvalid.html new file mode 100644 index 00000000000..3d9765dd94d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-intro-02-f-isvalid.html @@ -0,0 +1,76 @@ + + + + shapes-intro-02-f-manual.svg + + + +

    Source SVG: shapes-intro-02-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-intro-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-line-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-line-01-t-isvalid.html new file mode 100644 index 00000000000..d5707729a3d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-line-01-t-isvalid.html @@ -0,0 +1,72 @@ + + + + shapes-line-01-t-manual.svg + + + +

    Source SVG: shapes-line-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-line-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-line-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-line-02-f-isvalid.html new file mode 100644 index 00000000000..cf6374cf0ee --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-line-02-f-isvalid.html @@ -0,0 +1,48 @@ + + + + shapes-line-02-f-manual.svg + + + +

    Source SVG: shapes-line-02-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-line-02-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-01-t-isvalid.html new file mode 100644 index 00000000000..2de242bedec --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-01-t-isvalid.html @@ -0,0 +1,68 @@ + + + + shapes-polygon-01-t-manual.svg + + + +

    Source SVG: shapes-polygon-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-polygon-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-02-t-isvalid.html new file mode 100644 index 00000000000..d627e415cbb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-02-t-isvalid.html @@ -0,0 +1,73 @@ + + + + shapes-polygon-02-t-manual.svg + + + +

    Source SVG: shapes-polygon-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-polygon-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-03-t-isvalid.html new file mode 100644 index 00000000000..b64ae5eff0e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polygon-03-t-isvalid.html @@ -0,0 +1,52 @@ + + + + shapes-polygon-03-t-manual.svg + + + +

    Source SVG: shapes-polygon-03-t-manual.svg

    + + + + + + + + + + $RCSfile: shapes-polygon-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polyline-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polyline-01-t-isvalid.html new file mode 100644 index 00000000000..3954e8c3a1e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polyline-01-t-isvalid.html @@ -0,0 +1,74 @@ + + + + shapes-polyline-01-t-manual.svg + + + +

    Source SVG: shapes-polyline-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-polyline-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polyline-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polyline-02-t-isvalid.html new file mode 100644 index 00000000000..dda9c7194fd --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-polyline-02-t-isvalid.html @@ -0,0 +1,73 @@ + + + + shapes-polyline-02-t-manual.svg + + + +

    Source SVG: shapes-polyline-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-polyline-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-01-t-isvalid.html new file mode 100644 index 00000000000..5a74947fb7c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-01-t-isvalid.html @@ -0,0 +1,64 @@ + + + + shapes-rect-01-t-manual.svg + + + +

    Source SVG: shapes-rect-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-rect-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-02-t-isvalid.html new file mode 100644 index 00000000000..651458f7652 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-02-t-isvalid.html @@ -0,0 +1,63 @@ + + + + shapes-rect-02-t-manual.svg + + + +

    Source SVG: shapes-rect-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: shapes-rect-02-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-03-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-03-t-novalid.html new file mode 100644 index 00000000000..8cfea5eba81 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-03-t-novalid.html @@ -0,0 +1,127 @@ + + + + shapes-rect-03-t-manual.svg + + + +

    Source SVG: shapes-rect-03-t-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-04-f-isvalid.html new file mode 100644 index 00000000000..30ad9d4bd54 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-04-f-isvalid.html @@ -0,0 +1,53 @@ + + + + shapes-rect-04-f-manual.svg + + + +

    Source SVG: shapes-rect-04-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-05-f-isvalid.html new file mode 100644 index 00000000000..f971231d302 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-05-f-isvalid.html @@ -0,0 +1,59 @@ + + + + shapes-rect-05-f-manual.svg + + + +

    Source SVG: shapes-rect-05-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-06-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-06-f-isvalid.html new file mode 100644 index 00000000000..4fa17abd67e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-06-f-isvalid.html @@ -0,0 +1,57 @@ + + + + shapes-rect-06-f-manual.svg + + + +

    Source SVG: shapes-rect-06-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-06-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-07-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-07-f-isvalid.html new file mode 100644 index 00000000000..d8d11f6476f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/shapes-rect-07-f-isvalid.html @@ -0,0 +1,52 @@ + + + + shapes-rect-07-f-manual.svg + + + +

    Source SVG: shapes-rect-07-f-manual.svg

    + + + + + + + + + + $RCSfile: shapes-rect-07-f.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-01-t-isvalid.html new file mode 100644 index 00000000000..06805920813 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-01-t-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-cond-01-t-manual.svg + + + +

    Source SVG: struct-cond-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-cond-01-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-02-t-isvalid.html new file mode 100644 index 00000000000..e33ec280aa6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-02-t-isvalid.html @@ -0,0 +1,561 @@ + + + + struct-cond-02-t-manual.svg + + + +

    Source SVG: struct-cond-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-cond-02-t.svg,v $ + + + + + + + + + + + + + + Waarom kan hulle nie net doodgewoon Afrikaans praat nie? + Afrikaans + + + ለምንድነው አማርኛ የማይናገሩት፧ + Amharic + + + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + Arabic (SA) + + + Защо те просто не могат да говорят български ? + Bulgarian + + + ওরা েকন বাংলা বলেত পাের না ? + Bengali + + + + Per què no poden simplement parlar en català ? + Catalan + + + Proč prostě nemluví česky ? + Czech + + + Pam dydyn nhw ddim yn siarad Cymraeg ? + Welsh + + + Hvorfor kan de ikke bare tale dansk ? + Danish + + + + Warum sprechen sie nicht einfach Deutsch ? + German (DE) + + + Μα γιατί δεν μπορούν να μιλήσουν Ελληνικά ; + Greek (modern, GR) + + + Why can't they just speak English ? + English (US) + + + ¿Por qué no pueden simplemente hablar en castellano ? + Spanish (ES) + + + Zergatik ezin dute  Euzkeraz bakarrik hitzegin? + Basque + + + خب، چرا فارسى صحبت نمى كنند؟ + Farsi + + + Miksi he eivät yksinkertaisesti puhu suomea ? + Finnish + + + + Pourquoi, tout simplement, ne parlent-ils pas en Français ? + French (FR) + + + Carson nach eil iad a'bruidhinn na Gàidhlige ? + Scots Gaelic + + + બદ્ધા લોકો ગુજરાતી કૅમ નથી બોલતા? + Gujarti (IN) + + + + למה הם פשוט לא מדברים עברית ? + Hebrew (modern) + + + यह लोग हिन्दी क्यों नहीं बोल सकते हैं ? + Hindi + + + Zašto jednostavno ne govore hrvatski ? + Croatian + + + Miért nem beszélnek egyszerűen magyarul ? + Hungarian + + + + Ինչու՞ նրանք չեն խոսում Հայերեն + + Armenian + + + Mengapa mereka tidak bisa bicara bahasa Indonesia ? + Indonesian + + + Hvers vegna geta þeir ekki réttlátur tala Íslenska ? + Icelandic + + + Perchè non possono semplicemente parlare italiano ? + Italian + + + + ᓱᒻᒪᓂᒃᑯᐊ ᐃᓄᒃᑎᑐ ᑐᐃᓐᓇᔭᙱᓚᑦ + Inuktitut + + + なぜ、みんな日本語を話してくれないのか? + Japanese (JP) + + + Kenapa kok ora nganggo  basa Jawa  wae? + Javanese + + + რატომ არ ლაპარაკობენ ისინი ქართულად ? + Georgian + + + Олар неге қазақ тiлiнде сойлемейдi? + Kazakh + + + ಅವರು ಕನ್ನಡ ಮಾತನಾಡಬಹುದಲ್ಲಾ? + Kannada + + + 세계의 모든 사람들이 한국어 를 이해한다면 얼마나 좋을까? + Korean + + + Емне үчүн алар кыргызча сүйлбйт? + Kirghiz + + + Kodėl gi jie nekalba lietuviškai ? + Lithuanian + + + Зошто тие едноставно не говорат македонски ? + Macedonian + + + लोकांना मराठी का बोलता येत नाही? + Marathi + + + Waarom spreken ze niet gewoon Nederlands ? + Dutch + + + Hvorfor kan de ikke bare snakke norsk ? + Norwegian + + + ସେମାନେ ଉଡିଯା ରେ କହିନ୍କି କହିବେ ନହିଁ? + Oriya + + + Dlaczego oni nie mówią po polsku ? + Polish + + + + Porque é que eles não falam simplesmente em Português ? + Portugese (PT) + + + Porque é que eles não falam em Português (do Brasil) ? + Portugese (BR) + + + Porque é que eles não falam simplesmente em Português ? + Portugese + + + De ce ei nu vorbesc moldoveneşte ? + Romanian + + + Почему же они не говорят по-русски ? + Russian + + + ते किं संस्कृतः माम वदन्ति ? + Sanskrit + + + Zašto jednostavno ne govore srpski ? + Serbian + + + අැයි ඔවුන්ට ඉංගරිස කතා ෛනබ ? + Sinhalese + + + + Zakaj vendar ne govorijo slovensko ? + Slovenian + + + Pse nuk duan të flasin vetëm shqip ? + Albanian + + + Varför pratar dom inte bara svenska ? + Swedish + + + அவர்கள் ஏன் தமிழில் பேசக்கூடாது ? + Tamil + + + + తెలుగు లో ఎందుకు మాట్లాడరు? + + Telugu + + + Čaro onho ba zaboni točiki gap namezanand? + Tajik + + + ทำไมเขาถึงไม่พูด ภาษาไทย + Thai + + + Bakit hindi na lang sila magsalita ng Tagalog ? + Tagalog (Filipino) + + + Neden Türkçe konuşamıyorlar? + Turkish + + + Нишләп олар татарча сүләша алмыйлар? + Tatar + + + Чому б їм не розмовляти українською ? + Ukranian + + + ﻦﻴﻫ ﻰﺘﻠﻭﺒ ﻦﻴﻬﻨ ﻦﻭﻴﻜ ﻮﺪﺭﺃ بس ﻮﻩ ﻟﻮﮒ؟ + Urdu (IN) + + + ﻦﻴﻫ ﻰﺘﻠﻭﺒ ﻦﻴﻬﻨ ﻦﻭﻴﻜ ﻮﺪﺭﺃ بس ﻮﻩ ﻟﻮﮒ؟ + Urdu (PK) + + + + Nega ular uzbek tilinda gapirmaidilar? + Uzbek + + + Tại sao họ không thể chỉ nói tiếng Việt ? + Vietnamese + + + פֿאַרװאָס רעדט מען ניט פּשוט ייִדיש ? + Yiddish + + + 他们为什么不说中文 (中国) ? + Chinese (CN) + + + 他們爲什麽不說中文(台灣)? + Chinese (TW) + + + + You have no (matching) language preference set + なぜ、みんな日本語を話してくれないのか? + Why can't they just speak English ? + Pourquoi, tout simplement, ne parlent-ils pas en Français ? + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-03-t-isvalid.html new file mode 100644 index 00000000000..7989905dfce --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-03-t-isvalid.html @@ -0,0 +1,63 @@ + + + + struct-cond-03-t-manual.svg + + + +

    Source SVG: struct-cond-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-cond-03-t.svg,v $ + + + + + + + + + + + + This viewer does more than SVG Tiny + + + + + + + + + + + + + This is not an SVG Tiny Viewer + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-02-f-isvalid.html new file mode 100644 index 00000000000..0a89eae5db1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-02-f-isvalid.html @@ -0,0 +1,55 @@ + + + + struct-cond-overview-02-f-manual.svg + + + +

    Source SVG: struct-cond-overview-02-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-cond-overview-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-03-f-isvalid.html new file mode 100644 index 00000000000..000da4f1676 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-03-f-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-cond-overview-03-f-manual.svg + + + +

    Source SVG: struct-cond-overview-03-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-cond-overview-03-f.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-04-f-isvalid.html new file mode 100644 index 00000000000..e775e8bc324 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-04-f-isvalid.html @@ -0,0 +1,47 @@ + + + + struct-cond-overview-04-f-manual.svg + + + +

    Source SVG: struct-cond-overview-04-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-cond-overview-04-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-05-f-isvalid.html new file mode 100644 index 00000000000..ff93b25160d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-cond-overview-05-f-isvalid.html @@ -0,0 +1,60 @@ + + + + struct-cond-overview-05-f-manual.svg + + + +

    Source SVG: struct-cond-overview-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-cond-overview-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-defs-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-defs-01-t-isvalid.html new file mode 100644 index 00000000000..f93b3a067da --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-defs-01-t-isvalid.html @@ -0,0 +1,51 @@ + + + + struct-defs-01-t-manual.svg + + + +

    Source SVG: struct-defs-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-defs-01-t.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-01-b-isvalid.html new file mode 100644 index 00000000000..cf66db736b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-01-b-isvalid.html @@ -0,0 +1,166 @@ + + + + struct-dom-01-b-manual.svg + + + +

    Source SVG: struct-dom-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-02-b-isvalid.html new file mode 100644 index 00000000000..3dbe6f64524 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-02-b-isvalid.html @@ -0,0 +1,97 @@ + + + + struct-dom-02-b-manual.svg + + + +

    Source SVG: struct-dom-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-02-b.svg,v $ + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-03-b-isvalid.html new file mode 100644 index 00000000000..dba765cf969 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-03-b-isvalid.html @@ -0,0 +1,97 @@ + + + + struct-dom-03-b-manual.svg + + + +

    Source SVG: struct-dom-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-03-b.svg,v $ + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-04-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-04-b-isvalid.html new file mode 100644 index 00000000000..f3e613b2a2c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-04-b-isvalid.html @@ -0,0 +1,116 @@ + + + + struct-dom-04-b-manual.svg + + + +

    Source SVG: struct-dom-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-04-b.svg,v $ + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-05-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-05-b-isvalid.html new file mode 100644 index 00000000000..2ebb11336c4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-05-b-isvalid.html @@ -0,0 +1,114 @@ + + + + struct-dom-05-b-manual.svg + + + +

    Source SVG: struct-dom-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-05-b.svg,v $ + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-06-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-06-b-isvalid.html new file mode 100644 index 00000000000..a763b8476d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-06-b-isvalid.html @@ -0,0 +1,90 @@ + + + + struct-dom-06-b-manual.svg + + + +

    Source SVG: struct-dom-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-06-b.svg,v $ + + + + + + + + + + + + + + + + + + + + Removing DOM Elements is not supported + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-07-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-07-f-novalid.html new file mode 100644 index 00000000000..e3688befe99 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-07-f-novalid.html @@ -0,0 +1,81 @@ + + + + struct-dom-07-f-manual.svg + + + +

    Source SVG: struct-dom-07-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-07-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-08-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-08-f-novalid.html new file mode 100644 index 00000000000..6216a6541b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-08-f-novalid.html @@ -0,0 +1,69 @@ + + + + struct-dom-08-f-manual.svg + + + +

    Source SVG: struct-dom-08-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-08-f.svg,v $ + + + + + + + + + + Test that unsuspendRedraw() doesn't throw + + + + + + $Revision: 1.8 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-11-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-11-f-novalid.html new file mode 100644 index 00000000000..0e9a19b7fd8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-11-f-novalid.html @@ -0,0 +1,153 @@ + + + + struct-dom-11-f-manual.svg + + + +

    Source SVG: struct-dom-11-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-11-f.svg,v $ + + + + + + + + + + Test getIntersectionList and getEnclosureList return value liveness + + + getIntersectionList + + + getEnclosureList + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-12-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-12-b-isvalid.html new file mode 100644 index 00000000000..b5a467e685c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-12-b-isvalid.html @@ -0,0 +1,84 @@ + + + + struct-dom-12-b-manual.svg + + + +

    Source SVG: struct-dom-12-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-12-b.svg,v $ + + + + + + + + + + + + + + + + + Click on the grey rectangle to start + Test for correspondingUseElement + Test for correspondingElement + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-13-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-13-f-novalid.html new file mode 100644 index 00000000000..3d1a44d4f3c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-13-f-novalid.html @@ -0,0 +1,159 @@ + + + + struct-dom-13-f-manual.svg + + + +

    Source SVG: struct-dom-13-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-13-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-14-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-14-f-novalid.html new file mode 100644 index 00000000000..94ef4480ea9 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-14-f-novalid.html @@ -0,0 +1,96 @@ + + + + struct-dom-14-f-manual.svg + + + +

    Source SVG: struct-dom-14-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-14-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-15-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-15-f-novalid.html new file mode 100644 index 00000000000..d84d99c77b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-15-f-novalid.html @@ -0,0 +1,131 @@ + + + + struct-dom-15-f-manual.svg + + + +

    Source SVG: struct-dom-15-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-15-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-16-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-16-f-isvalid.html new file mode 100644 index 00000000000..e16c3a55151 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-16-f-isvalid.html @@ -0,0 +1,117 @@ + + + + struct-dom-16-f-manual.svg + + + +

    Source SVG: struct-dom-16-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-dom-16-f.svg,v $ + + + + + + + + + + FAIL + PASS + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-17-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-17-f-novalid.html new file mode 100644 index 00000000000..f24a537d0db --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-17-f-novalid.html @@ -0,0 +1,95 @@ + + + + struct-dom-17-f-manual.svg + + + +

    Source SVG: struct-dom-17-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-17-f.svg,v $ + + + + + + + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-18-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-18-f-isvalid.html new file mode 100644 index 00000000000..89c29539372 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-18-f-isvalid.html @@ -0,0 +1,130 @@ + + + + struct-dom-18-f-manual.svg + + + +

    Source SVG: struct-dom-18-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-18-f.svg,v $ + + + + + + + + + + + + + + + + + + + Filler text + + FAIL + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-19-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-19-f-novalid.html new file mode 100644 index 00000000000..1dabbecde7f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-19-f-novalid.html @@ -0,0 +1,80 @@ + + + + struct-dom-19-f-manual.svg + + + +

    Source SVG: struct-dom-19-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-19-f.svg,v $ + + + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-20-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-20-f-novalid.html new file mode 100644 index 00000000000..d57ffb8806d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-dom-20-f-novalid.html @@ -0,0 +1,131 @@ + + + + struct-dom-20-f-manual.svg + + + +

    Source SVG: struct-dom-20-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-dom-20-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-01-t-isvalid.html new file mode 100644 index 00000000000..2627fe74e61 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-01-t-isvalid.html @@ -0,0 +1,41 @@ + + + + struct-frag-01-t-manual.svg + + + +

    Source SVG: struct-frag-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-01-t.svg,v $ + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-02-t-isvalid.html new file mode 100644 index 00000000000..3e2a8660bec --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-02-t-isvalid.html @@ -0,0 +1,51 @@ + + + + struct-frag-02-t-manual.svg + + + +

    Source SVG: struct-frag-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-02-t.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-03-t-isvalid.html new file mode 100644 index 00000000000..83a83efbcb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-03-t-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-frag-03-t-manual.svg + + + +

    Source SVG: struct-frag-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-03-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-04-t-isvalid.html new file mode 100644 index 00000000000..b43e0a26150 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-04-t-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-frag-04-t-manual.svg + + + +

    Source SVG: struct-frag-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-04-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-05-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-05-t-novalid.html new file mode 100644 index 00000000000..e9c0a8792bc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-05-t-novalid.html @@ -0,0 +1,56 @@ + + + + struct-frag-05-t-manual.svg + + + +

    Source SVG: struct-frag-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-05-t.svg,v $ + + + + + + + + + + + + + + + Valid + + + Invalid + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-06-t-isvalid.html new file mode 100644 index 00000000000..791a75610bb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-frag-06-t-isvalid.html @@ -0,0 +1,58 @@ + + + + struct-frag-06-t-manual.svg + + + +

    Source SVG: struct-frag-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-frag-06-t.svg,v $ + + + + + + + + + Default entities: amp, lt, gt, apos, quot: + &, <, >, ', " + Character references: + A hexadecimal (&#x41)= A + A decimal (&#65)= A + Entity references: + gray + + + + outlined + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-01-t-isvalid.html new file mode 100644 index 00000000000..e38ea32bd3d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-01-t-isvalid.html @@ -0,0 +1,58 @@ + + + + struct-group-01-t-manual.svg + + + +

    Source SVG: struct-group-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-group-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-02-b-isvalid.html new file mode 100644 index 00000000000..7a74783d8c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-02-b-isvalid.html @@ -0,0 +1,53 @@ + + + + struct-group-02-b-manual.svg + + + +

    Source SVG: struct-group-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-group-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-03-t-isvalid.html new file mode 100644 index 00000000000..d2525331d6c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-group-03-t-isvalid.html @@ -0,0 +1,269 @@ + + + + struct-group-03-t-manual.svg + + + +

    Source SVG: struct-group-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-group-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + color + display + fill + fill-rule + stroke + stroke-dasharray + stroke-dashoffset + stroke-linecap + stroke-linejoin + stroke-miterlimit + stroke-width + visibility + font-family + font-size + font-style + font-weight + text-anchor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A + + + + A + + + + A + + + + A + + + + A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A + + + + A + + + + A + + + + A + + + + A + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-01-t-isvalid.html new file mode 100644 index 00000000000..042f324ff38 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-01-t-isvalid.html @@ -0,0 +1,46 @@ + + + + struct-image-01-t-manual.svg + + + +

    Source SVG: struct-image-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-01-t.svg,v $ + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-02-b-isvalid.html new file mode 100644 index 00000000000..b28ba8b2459 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-02-b-isvalid.html @@ -0,0 +1,69 @@ + + + + struct-image-02-b-manual.svg + + + +

    Source SVG: struct-image-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-03-t-isvalid.html new file mode 100644 index 00000000000..4852a11138e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-03-t-isvalid.html @@ -0,0 +1,52 @@ + + + + struct-image-03-t-manual.svg + + + +

    Source SVG: struct-image-03-t-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-03-t.svg,v $ + + + + + + + + + + + + + + + Gamma correction + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-04-t-isvalid.html new file mode 100644 index 00000000000..0a99c3049a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-04-t-isvalid.html @@ -0,0 +1,46 @@ + + + + struct-image-04-t-manual.svg + + + +

    Source SVG: struct-image-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-04-t.svg,v $ + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-05-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-05-b-isvalid.html new file mode 100644 index 00000000000..6d810c721f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-05-b-isvalid.html @@ -0,0 +1,45 @@ + + + + struct-image-05-b-manual.svg + + + +

    Source SVG: struct-image-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-05-b.svg,v $ + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-06-t-isvalid.html new file mode 100644 index 00000000000..0d7a38a4290 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-06-t-isvalid.html @@ -0,0 +1,83 @@ + + + + struct-image-06-t-manual.svg + + + +

    Source SVG: struct-image-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-06-t.svg,v $ + + + + + + + + + + Example PreserveAspectRatio - demonstrate available options + SVG to fit + + + + Viewport 1 + + + + Viewport 2 + + + + + ---------- meet ---------- + + xMid* + + + + + + ---------- meet ---------- + + *YMid + + + + + + ---------- meet ---------- + + *none + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-07-t-isvalid.html new file mode 100644 index 00000000000..abb9fb42298 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-07-t-isvalid.html @@ -0,0 +1,66 @@ + + + + struct-image-07-t-manual.svg + + + +

    Source SVG: struct-image-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-07-t.svg,v $ + + + + + + + + + + + + no + xml:base + + + + + + xml:base + on image + + + + + + xml:base + on parent + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-08-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-08-t-isvalid.html new file mode 100644 index 00000000000..bd317194935 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-08-t-isvalid.html @@ -0,0 +1,50 @@ + + + + struct-image-08-t-manual.svg + + + +

    Source SVG: struct-image-08-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-08-t.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-09-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-09-t-isvalid.html new file mode 100644 index 00000000000..61b5717c9fb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-09-t-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-image-09-t-manual.svg + + + +

    Source SVG: struct-image-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-09-t.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-10-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-10-t-isvalid.html new file mode 100644 index 00000000000..59d76cead84 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-10-t-isvalid.html @@ -0,0 +1,50 @@ + + + + struct-image-10-t-manual.svg + + + +

    Source SVG: struct-image-10-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-10-t.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-11-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-11-b-isvalid.html new file mode 100644 index 00000000000..baba6dfacee --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-11-b-isvalid.html @@ -0,0 +1,56 @@ + + + + struct-image-11-b-manual.svg + + + +

    Source SVG: struct-image-11-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-11-b.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-12-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-12-b-novalid.html new file mode 100644 index 00000000000..c9201db7cec --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-12-b-novalid.html @@ -0,0 +1,60 @@ + + + + struct-image-12-b-manual.svg + + + +

    Source SVG: struct-image-12-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-12-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-13-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-13-f-isvalid.html new file mode 100644 index 00000000000..fb87740daf8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-13-f-isvalid.html @@ -0,0 +1,111 @@ + + + + struct-image-13-f-manual.svg + + + +

    Source SVG: struct-image-13-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-13-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Greyscale, various bit depths, two with alpha + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Truecolor and indexed, various bit depths, two with alpha + + Non-interlaced images + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-14-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-14-f-isvalid.html new file mode 100644 index 00000000000..ee6ef116c1c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-14-f-isvalid.html @@ -0,0 +1,111 @@ + + + + struct-image-14-f-manual.svg + + + +

    Source SVG: struct-image-14-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-14-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Greyscale, various bit depths, two with alpha + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Truecolor and indexed, various bit depths, two with alpha + + Interlaced images + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-15-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-15-f-isvalid.html new file mode 100644 index 00000000000..29b21469dbd --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-15-f-isvalid.html @@ -0,0 +1,120 @@ + + + + struct-image-15-f-manual.svg + + + +

    Source SVG: struct-image-15-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-15-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Background color, with alpha + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Background color, with transparency + + Handling bKGd and tRNs + + + + + + $Revision: 1.2 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-16-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-16-f-isvalid.html new file mode 100644 index 00000000000..f80990ee5bf --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-16-f-isvalid.html @@ -0,0 +1,49 @@ + + + + struct-image-16-f-manual.svg + + + +

    Source SVG: struct-image-16-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-image-16-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-17-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-17-b-isvalid.html new file mode 100644 index 00000000000..cd70a27a11b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-17-b-isvalid.html @@ -0,0 +1,46 @@ + + + + struct-image-17-b-manual.svg + + + +

    Source SVG: struct-image-17-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-17-b.svg,v $ + + + + + + + + + Test that SVG images in <image> are not scripted or animated + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-18-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-18-f-isvalid.html new file mode 100644 index 00000000000..8f7d163ce69 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-18-f-isvalid.html @@ -0,0 +1,52 @@ + + + + struct-image-18-f-manual.svg + + + +

    Source SVG: struct-image-18-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-18-f.svg,v $ + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-19-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-19-f-isvalid.html new file mode 100644 index 00000000000..c6ff4c82c4d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-image-19-f-isvalid.html @@ -0,0 +1,53 @@ + + + + struct-image-19-f-manual.svg + + + +

    Source SVG: struct-image-19-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-image-19-f.svg,v $ + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-01-f-isvalid.html new file mode 100644 index 00000000000..24f927f9da9 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-01-f-isvalid.html @@ -0,0 +1,114 @@ + + + + struct-svg-01-f-manual.svg + + + +

    Source SVG: struct-svg-01-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-svg-01-f.svg,v $ + + + + + + + + + + + + Initial value of the 'svg' tag's 'width' attribute: + + + Initial value of the 'svg' tag's 'height' attribute: + + + Initial value of the 'svg' tag's 'x' attribute: + + + Initial value of the 'svg' tag's 'y' attribute: + + + FAIL + + + + + + $Revision: 1.4 $ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-02-f-isvalid.html new file mode 100644 index 00000000000..b5a4b3f49f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-02-f-isvalid.html @@ -0,0 +1,134 @@ + + + + struct-svg-02-f-manual.svg + + + +

    Source SVG: struct-svg-02-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-svg-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-03-f-isvalid.html new file mode 100644 index 00000000000..edb9af23d6c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-svg-03-f-isvalid.html @@ -0,0 +1,60 @@ + + + + struct-svg-03-f-manual.svg + + + +

    Source SVG: struct-svg-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-svg-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-symbol-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-symbol-01-b-isvalid.html new file mode 100644 index 00000000000..e52bc5632f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-symbol-01-b-isvalid.html @@ -0,0 +1,60 @@ + + + + struct-symbol-01-b-manual.svg + + + +

    Source SVG: struct-symbol-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-symbol-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-01-t-isvalid.html new file mode 100644 index 00000000000..da3389e6de2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-01-t-isvalid.html @@ -0,0 +1,99 @@ + + + + struct-use-01-t-manual.svg + + + +

    Source SVG: struct-use-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-01-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text + + + + + + + <rect> + <circle> + <ellipse> + <line> + <polyline> + <polygon> + <path> + <image> + <text> + + + <g> + <use> + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-03-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-03-t-isvalid.html new file mode 100644 index 00000000000..2f917b3309d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-03-t-isvalid.html @@ -0,0 +1,61 @@ + + + + struct-use-03-t-manual.svg + + + +

    Source SVG: struct-use-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-03-t.svg,v $ + + + + + + + + + + + + + Reference + + <use> + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-04-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-04-b-isvalid.html new file mode 100644 index 00000000000..a3c60058cd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-04-b-isvalid.html @@ -0,0 +1,54 @@ + + + + struct-use-04-b-manual.svg + + + +

    Source SVG: struct-use-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-04-b.svg,v $ + + + + + + + + + + + + + + + + + + External references on <use> + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-05-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-05-b-isvalid.html new file mode 100644 index 00000000000..e5ade488fcf --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-05-b-isvalid.html @@ -0,0 +1,70 @@ + + + + struct-use-05-b-manual.svg + + + +

    Source SVG: struct-use-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-05-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + External references and computed values + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-06-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-06-b-isvalid.html new file mode 100644 index 00000000000..613ed6fcfb8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-06-b-isvalid.html @@ -0,0 +1,51 @@ + + + + struct-use-06-b-manual.svg + + + +

    Source SVG: struct-use-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-06-b.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-07-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-07-b-isvalid.html new file mode 100644 index 00000000000..84d9a1cd54d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-07-b-isvalid.html @@ -0,0 +1,56 @@ + + + + struct-use-07-b-manual.svg + + + +

    Source SVG: struct-use-07-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-07-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-08-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-08-b-isvalid.html new file mode 100644 index 00000000000..0e42e2b1b7d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-08-b-isvalid.html @@ -0,0 +1,57 @@ + + + + struct-use-08-b-manual.svg + + + +

    Source SVG: struct-use-08-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-08-b.svg,v $ + + + + + + + + + + + + 'use' referencing 'svg' element + + + + + + 'use' referencing 'image' element + + + This text should be visible. + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-09-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-09-b-isvalid.html new file mode 100644 index 00000000000..70b079a1c12 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-09-b-isvalid.html @@ -0,0 +1,67 @@ + + + + struct-use-09-b-manual.svg + + + +

    Source SVG: struct-use-09-b-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-09-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-10-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-10-f-isvalid.html new file mode 100644 index 00000000000..f2da4cd7ece --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-10-f-isvalid.html @@ -0,0 +1,121 @@ + + + + struct-use-10-f-manual.svg + + + +

    Source SVG: struct-use-10-f-manual.svg

    + + + + + + + + + + + + $RCSfile: struct-use-10-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + CSS selectors and use element + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-11-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-11-f-novalid.html new file mode 100644 index 00000000000..ad303ba7c29 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-11-f-novalid.html @@ -0,0 +1,137 @@ + + + + struct-use-11-f-manual.svg + + + +

    Source SVG: struct-use-11-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-11-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-12-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-12-f-novalid.html new file mode 100644 index 00000000000..bddac061e44 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-12-f-novalid.html @@ -0,0 +1,86 @@ + + + + struct-use-12-f-manual.svg + + + +

    Source SVG: struct-use-12-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-12-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-13-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-13-f-novalid.html new file mode 100644 index 00000000000..7bd9b978ceb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-13-f-novalid.html @@ -0,0 +1,65 @@ + + + + struct-use-13-f-manual.svg + + + +

    Source SVG: struct-use-13-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-13-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-14-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-14-f-isvalid.html new file mode 100644 index 00000000000..6812e604282 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-14-f-isvalid.html @@ -0,0 +1,63 @@ + + + + struct-use-14-f-manual.svg + + + +

    Source SVG: struct-use-14-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-14-f.svg,v $ + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-15-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-15-f-isvalid.html new file mode 100644 index 00000000000..2dd2cea81a7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/struct-use-15-f-isvalid.html @@ -0,0 +1,66 @@ + + + + struct-use-15-f-manual.svg + + + +

    Source SVG: struct-use-15-f-manual.svg

    + + + + + + + + + + $RCSfile: struct-use-15-f.svg,v $ + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-class-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-class-01-f-isvalid.html new file mode 100644 index 00000000000..923205d9150 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-class-01-f-isvalid.html @@ -0,0 +1,62 @@ + + + + styling-class-01-f-manual.svg + + + +

    Source SVG: styling-class-01-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-class-01-f.svg,v $ + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-01-b-isvalid.html new file mode 100644 index 00000000000..e5e0ab36043 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-01-b-isvalid.html @@ -0,0 +1,82 @@ + + + + styling-css-01-b-manual.svg + + + +

    Source SVG: styling-css-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + element selectors: + + + + + + + + + + + + + + + class selectors: + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-02-b-isvalid.html new file mode 100644 index 00000000000..6845ede211d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-02-b-isvalid.html @@ -0,0 +1,78 @@ + + + + styling-css-02-b-manual.svg + + + +

    Source SVG: styling-css-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-02-b.svg,v $ + + + + + + + + + + + + + + + + id selectors: + + + + + + + + + + + + + + attribute selectors: + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-03-b-isvalid.html new file mode 100644 index 00000000000..2bc98ea6ce5 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-03-b-isvalid.html @@ -0,0 +1,84 @@ + + + + styling-css-03-b-manual.svg + + + +

    Source SVG: styling-css-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-03-b.svg,v $ + + + + + + + + + + + + + + + ancestor selectors and child selectors: + + + + + + + + + + + + + + + ancestor, immediate-sibling and first-child selectors: + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-04-f-isvalid.html new file mode 100644 index 00000000000..e9aeb2e1632 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-04-f-isvalid.html @@ -0,0 +1,141 @@ + + + + styling-css-04-f-manual.svg + + + +

    Source SVG: styling-css-04-f-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-04-f.svg,v $ + + + + + + + + + + CSS selector test + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A + B + C + D + E + F + 1 + 2 + 3 + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-05-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-05-b-isvalid.html new file mode 100644 index 00000000000..9b831845f6a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-05-b-isvalid.html @@ -0,0 +1,60 @@ + + + + styling-css-05-b-manual.svg + + + +

    Source SVG: styling-css-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-05-b.svg,v $ + + + + + + + + + + + + + + + + Good morning! + + Bon avant-midi! + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-06-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-06-b-isvalid.html new file mode 100644 index 00000000000..2767329013e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-06-b-isvalid.html @@ -0,0 +1,165 @@ + + + + styling-css-06-b-manual.svg + + + +

    Source SVG: styling-css-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-css-06-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Visited + + + Unvisited + + + Hover me + + And me, too! + Select me + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-07-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-07-f-isvalid.html new file mode 100644 index 00000000000..e08d2febdfa --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-07-f-isvalid.html @@ -0,0 +1,50 @@ + + + + styling-css-07-f-manual.svg + + + +

    Source SVG: styling-css-07-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-css-07-f.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-08-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-08-f-isvalid.html new file mode 100644 index 00000000000..ab31884c8a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-08-f-isvalid.html @@ -0,0 +1,104 @@ + + + + styling-css-08-f-manual.svg + + + +

    Source SVG: styling-css-08-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-css-08-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-09-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-09-f-isvalid.html new file mode 100644 index 00000000000..f7e053ef682 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-09-f-isvalid.html @@ -0,0 +1,70 @@ + + + + styling-css-09-f-manual.svg + + + +

    Source SVG: styling-css-09-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-css-09-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-10-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-10-f-isvalid.html new file mode 100644 index 00000000000..1f2f2ff2ab1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-css-10-f-isvalid.html @@ -0,0 +1,59 @@ + + + + styling-css-10-f-manual.svg + + + +

    Source SVG: styling-css-10-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-css-10-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-elem-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-elem-01-b-isvalid.html new file mode 100644 index 00000000000..6d59038b16b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-elem-01-b-isvalid.html @@ -0,0 +1,56 @@ + + + + styling-elem-01-b-manual.svg + + + +

    Source SVG: styling-elem-01-b-manual.svg

    + + + + + + + + + + $RCSfile: styling-elem-01-b.svg,v $ + + + + + + + + + + Test that <style type=""> is honored + + + + No type="" attribute + Rubbish type="" attribute + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-inherit-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-inherit-01-b-isvalid.html new file mode 100644 index 00000000000..a3709ae7081 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-inherit-01-b-isvalid.html @@ -0,0 +1,61 @@ + + + + styling-inherit-01-b-manual.svg + + + +

    Source SVG: styling-inherit-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-inherit-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-01-t-isvalid.html new file mode 100644 index 00000000000..329792c63f0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-01-t-isvalid.html @@ -0,0 +1,48 @@ + + + + styling-pres-01-t-manual.svg + + + +

    Source SVG: styling-pres-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: styling-pres-01-t.svg,v $ + + + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-02-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-02-f-novalid.html new file mode 100644 index 00000000000..35fa750d414 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-02-f-novalid.html @@ -0,0 +1,185 @@ + + + + styling-pres-02-f-manual.svg + + + +

    Source SVG: styling-pres-02-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-pres-02-f.svg,v $ + + + + + + + + + Testing inapplicable presentation attributes + + + + + + + + + abc + + + + + + + + fill on image + + + stop-opacity on tspan + + + font-size on rect + + + font-style on circle + + + stop-color on text + + + font-variant on ellipse + + + letter-spacing on polyline + + + flood-color on tref + + + flood-opacity on textPath + + + clr-intp-filters on altGlyph + + + display on linearGradient + + + fill-rule on stop + + + visibility on radialGradient + + + lighting-color on clipPath + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-03-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-03-f-isvalid.html new file mode 100644 index 00000000000..117eb41ad59 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-03-f-isvalid.html @@ -0,0 +1,48 @@ + + + + styling-pres-03-f-manual.svg + + + +

    Source SVG: styling-pres-03-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-pres-03-f.svg,v $ + + + + + + + + + + + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-04-f-isvalid.html new file mode 100644 index 00000000000..6ddcdb289ef --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-04-f-isvalid.html @@ -0,0 +1,93 @@ + + + + styling-pres-04-f-manual.svg + + + +

    Source SVG: styling-pres-04-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-pres-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-05-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-05-f-isvalid.html new file mode 100644 index 00000000000..226dc0db47c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/styling-pres-05-f-isvalid.html @@ -0,0 +1,66 @@ + + + + styling-pres-05-f-manual.svg + + + +

    Source SVG: styling-pres-05-f-manual.svg

    + + + + + + + + + + $RCSfile: styling-pres-05-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/svgdom-over-01-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/svgdom-over-01-f-novalid.html new file mode 100644 index 00000000000..71108691bd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/svgdom-over-01-f-novalid.html @@ -0,0 +1,190 @@ + + + + svgdom-over-01-f-manual.svg + + + +

    Source SVG: svgdom-over-01-f-manual.svg

    + + + + + + + + + + $RCSfile: svgdom-over-01-f.svg,v $ + + + + + + + + + + + + + + + + sometext + + + + + + + + + + + $Revision: 1.9 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-01-b-isvalid.html new file mode 100644 index 00000000000..edfd5a317f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-01-b-isvalid.html @@ -0,0 +1,67 @@ + + + + text-align-01-b-manual.svg + + + +

    Source SVG: text-align-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-01-b.svg,v $ + + + + + + + + + Test 'text-anchor' (horizontal) + + + + + text-anchor:none + + + + + text-anchor:start + + + + + text-anchor:middle + + + + + text-anchor:end + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-02-b-isvalid.html new file mode 100644 index 00000000000..098c04096f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-02-b-isvalid.html @@ -0,0 +1,56 @@ + + + + text-align-02-b-manual.svg + + + +

    Source SVG: text-align-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-02-b.svg,v $ + + + + + + + + + Test 'baseline-shift' (horizontal) + + + Normalbaseline-shift:7text + + + Normalbaseline-shift:-70%text + + + Normalsubsupertext + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-03-b-isvalid.html new file mode 100644 index 00000000000..c6e84fa2f6b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-03-b-isvalid.html @@ -0,0 +1,53 @@ + + + + text-align-03-b-manual.svg + + + +

    Source SVG: text-align-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-03-b.svg,v $ + + + + + + + + + Test of 'text-anchor' + + + + + + Begin with "end", switch to "middle" in a tspan, and "start" ends it. + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-04-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-04-b-isvalid.html new file mode 100644 index 00000000000..80cb910d30c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-04-b-isvalid.html @@ -0,0 +1,72 @@ + + + + text-align-04-b-manual.svg + + + +

    Source SVG: text-align-04-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-04-b.svg,v $ + + + + + + + + + + + + + + Test of 'text-anchor' + + end text tref + + + + Tspan, tref, toap + + + + + start text pink tspan + + + middle text bold tspan + + + + + + Text-anchor: end text on path + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-05-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-05-b-isvalid.html new file mode 100644 index 00000000000..98fba0d2917 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-05-b-isvalid.html @@ -0,0 +1,61 @@ + + + + text-align-05-b-manual.svg + + + +

    Source SVG: text-align-05-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-05-b.svg,v $ + + + + + + + + + Test 'text-anchor' (vertical) + + + + + start + + + + middle + + + + end + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-06-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-06-b-isvalid.html new file mode 100644 index 00000000000..3ceb6a540df --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-06-b-isvalid.html @@ -0,0 +1,62 @@ + + + + text-align-06-b-manual.svg + + + +

    Source SVG: text-align-06-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-06-b.svg,v $ + + + + + + + + + Test 'baseline-shift' (vertic.) + + + + + te7xt + + + te-70%xt + + + tesubxt + + + tesuperxt + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-07-t-isvalid.html new file mode 100644 index 00000000000..865da7e53a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-07-t-isvalid.html @@ -0,0 +1,69 @@ + + + + text-align-07-t-manual.svg + + + +

    Source SVG: text-align-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-07-t.svg,v $ + + + + + + + + + + + + a犜णa犜णa犜ण + + + + hanging base line + + + + alphabetic base line + + + + ideographic base line + + + + + $Revision: 1.9 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-08-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-08-b-isvalid.html new file mode 100644 index 00000000000..d94599332e5 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-align-08-b-isvalid.html @@ -0,0 +1,73 @@ + + + + text-align-08-b-manual.svg + + + +

    Source SVG: text-align-08-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-align-08-b.svg,v $ + + + + + + + + + + + + + + + + + + + + a犜णa犜णa犜ण + + + + + + + + $Revision: 1.10 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-01-b-isvalid.html new file mode 100644 index 00000000000..f339b216b4d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-01-b-isvalid.html @@ -0,0 +1,100 @@ + + + + text-altglyph-01-b-manual.svg + + + +

    Source SVG: text-altglyph-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-altglyph-01-b.svg,v $ + + + + + + + + + + Test 'altGlyph' facilities + and many-to-many chars to glyphs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +H +A +P +P +Y + + + SAD + + SASSY + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-02-b-isvalid.html new file mode 100644 index 00000000000..01a47f922e8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-02-b-isvalid.html @@ -0,0 +1,323 @@ + + + + text-altglyph-02-b-manual.svg + + + +

    Source SVG: text-altglyph-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-altglyph-02-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actual + Expected + Actual + Expected + + + + + + + + + abcde + + + abcde + + + abcde + + + abcde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + + + + + abde + + + abde + + + abde + + + abde + + + abde + + + abde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + + + a + b + + + + + + abcde + + + abcde + + + abcde + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + abcde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + abde + + + acde + + + acde + + + acde + + abcde + + + + + + + + + + + + $Revision: 1.10 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-03-b-isvalid.html new file mode 100644 index 00000000000..595f8a13452 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-altglyph-03-b-isvalid.html @@ -0,0 +1,348 @@ + + + + text-altglyph-03-b-manual.svg + + + +

    Source SVG: text-altglyph-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-altglyph-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Actual + Expected + Actual + Expected + + + + + + + + + abcde + + + abcde + + + abcde + + + abcde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + + + bcde + + + bcde + + + bcde + + + bcde + + + + + + + abde + + + abde + + + abde + + + abde + + + abde + + + abde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + + + a + b + + + + + + abcde + + + abcde + + + abcde + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + abcde + + + abcde + + + abcde + + + abcde + + bcde + + + + + abcde + + + abcde + + + abcde + + + abcde + + + abcde + + abde + + + acde + + + acde + + + acde + + abcde + + + + + + + + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-bidi-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-bidi-01-t-isvalid.html new file mode 100644 index 00000000000..ecd3a129314 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-bidi-01-t-isvalid.html @@ -0,0 +1,49 @@ + + + + text-bidi-01-t-manual.svg + + + +

    Source SVG: text-bidi-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-bidi-01-t.svg,v $ + + + + + + + + + مفتاح معايير الويب + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-deco-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-deco-01-b-isvalid.html new file mode 100644 index 00000000000..d42609eb215 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-deco-01-b-isvalid.html @@ -0,0 +1,60 @@ + + + + text-deco-01-b-manual.svg + + + +

    Source SVG: text-deco-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-deco-01-b.svg,v $ + + + + + + + + + + Normal text + Text with line-through + Underlined text + + + One + word + has + different + underlining + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-01-f-isvalid.html new file mode 100644 index 00000000000..198307a9091 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-01-f-isvalid.html @@ -0,0 +1,161 @@ + + + + text-dom-01-f-manual.svg + + + +

    Source SVG: text-dom-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-dom-01-f.svg,v $ + + + + + + + + + + + + This is a test of the interface SVGTextContentElement. + + .getCharNumAtPosition() result: + .getComputedTextLength() result: + .getEndPositionOfChar(11) result ('e'): + .getExtentOfChar(11) result ('e'): + .getNumberOfChars() result: + .getRotationOfChar(5) result: + .getStartPositionOfChar(11) result: + .getSubStringLength(22,9) result ('interface'): + .selectSubString(18,3) result: the word 'the' should be selected + .textLength.baseVal.value result: + .textLength.animVal.value result: + .lengthAdjust.baseVal and .lengthAdjust.animVal result: + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-02-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-02-f-novalid.html new file mode 100644 index 00000000000..da0d7228b3c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-02-f-novalid.html @@ -0,0 +1,110 @@ + + + + text-dom-02-f-manual.svg + + + +

    Source SVG: text-dom-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-dom-02-f.svg,v $ + + + + + + + + + Test that SVGTextContentElement methods work on UTF-16 code units + Methods independent of layout + + + + + + + + a𐀀b + + + getNumberOfChars + + + getSubStringLength + + + + + $Revision: 1.10 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-03-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-03-f-novalid.html new file mode 100644 index 00000000000..d9ce2ca0749 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-03-f-novalid.html @@ -0,0 +1,113 @@ + + + + text-dom-03-f-manual.svg + + + +

    Source SVG: text-dom-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-dom-03-f.svg,v $ + + + + + + + + + Test that getSubStringLength() handles out-of-range arguments + + + + + + + + + ababa + + + charnum < 0 + + + nchars < 0 + + + charnum = 0, nchars = length + + + charnum = 0, nchars = length + 10 + + + charnum = 1, nchars = -1 + + + + + $Revision: 1.9 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-04-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-04-f-isvalid.html new file mode 100644 index 00000000000..76ac4659814 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-04-f-isvalid.html @@ -0,0 +1,149 @@ + + + + text-dom-04-f-manual.svg + + + +

    Source SVG: text-dom-04-f-manual.svg

    + + + + + + + + + + $RCSfile: text-dom-04-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abca𝍒cb + + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-05-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-05-f-novalid.html new file mode 100644 index 00000000000..af843569ba6 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-dom-05-f-novalid.html @@ -0,0 +1,157 @@ + + + + text-dom-05-f-manual.svg + + + +

    Source SVG: text-dom-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-dom-05-f.svg,v $ + + + + + + + + + Test that SVGTextContentElement methods work on UTF-16 code units + Methods that rely on layout + + + + + + + + a𐀀b + + + getStartPositionOfChar + + + getEndPositionOfChar + + + getExtentOfChar + + + getRotationOfChar + + + getCharNumAtPosition + + + + + $Revision: 1.6 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-01-t-isvalid.html new file mode 100644 index 00000000000..1f228b76764 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-01-t-isvalid.html @@ -0,0 +1,55 @@ + + + + text-fonts-01-t-manual.svg + + + +

    Source SVG: text-fonts-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-01-t.svg,v $ + + + + + + + + + + A serifed face 画像 + A sans-serif face 画像 + A mono (iW) face 画像 + + A serifed face 画像 + A sans-serif face 画像 + A mono (iW) face 画像 + + This must be displayed + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-02-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-02-t-isvalid.html new file mode 100644 index 00000000000..9a94bf4e81e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-02-t-isvalid.html @@ -0,0 +1,63 @@ + + + + text-fonts-02-t-manual.svg + + + +

    Source SVG: text-fonts-02-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-02-t.svg,v $ + + + + + + + + + + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + This is bold + This is normal + + Blue is bolder + + + Blue is lighter + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-03-t-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-03-t-novalid.html new file mode 100644 index 00000000000..8417477271a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-03-t-novalid.html @@ -0,0 +1,73 @@ + + + + text-fonts-03-t-manual.svg + + + +

    Source SVG: text-fonts-03-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-03-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + font-family = "Haettenschweiler" + ABC + + font-family = "Charlesworth" + ABC + + font-family = "Invalid Name" + ABC + + font-family = not specified + ABC + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-04-t-isvalid.html new file mode 100644 index 00000000000..488e07f81b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-04-t-isvalid.html @@ -0,0 +1,59 @@ + + + + text-fonts-04-t-manual.svg + + + +

    Source SVG: text-fonts-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-04-t.svg,v $ + + + + + + + + + + + font-family = "Haettenschweiler" + ABC + + font-family = "Charlesworth" + ABC + + font-family = "Invalid Name" + ABC + + font-family = not specified + ABC + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-05-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-05-f-novalid.html new file mode 100644 index 00000000000..0f008ed9a4f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-05-f-novalid.html @@ -0,0 +1,51 @@ + + + + text-fonts-05-f-manual.svg + + + +

    Source SVG: text-fonts-05-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-05-f.svg,v $ + + + + + + + + + + FillerText + FillerText + FillerText + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-202-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-202-t-isvalid.html new file mode 100644 index 00000000000..acf7ebb1beb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-202-t-isvalid.html @@ -0,0 +1,74 @@ + + + + text-fonts-202-t-manual.svg + + + +

    Source SVG: text-fonts-202-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-202-t.svg,v $ + + + + + + + + + + + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + This is bold + This is normal + + Blue is bolder + + + Blue is lighter + + + ZalamanderCaps is an OpenType font + by Tim Ahrens of Just Another Foundry + + + + + + $Revision: 1.4 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-203-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-203-t-isvalid.html new file mode 100644 index 00000000000..8c0743cad3d --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-203-t-isvalid.html @@ -0,0 +1,119 @@ + + + + text-fonts-203-t-manual.svg + + + +

    Source SVG: text-fonts-203-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-203-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + This is bold + This is normal + + Blue is bolder + + + Blue is lighter + + + ZalamanderCaps is an OpenType font + by Tim Ahrens of Just Another Foundry + + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-204-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-204-t-isvalid.html new file mode 100644 index 00000000000..7a4b1d63ead --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-fonts-204-t-isvalid.html @@ -0,0 +1,111 @@ + + + + text-fonts-204-t-manual.svg + + + +

    Source SVG: text-fonts-204-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-fonts-204-t.svg,v $ + + + + + + + + + + + + + + 100 + 200 + 300 + 400 + 500 + 600 + 700 + 800 + 900 + This is bold + This is normal + + Blue is bolder + + + Blue is lighter + + + ZalamanderCaps is an OpenType font + by Tim Ahrens of Just Another Foundry + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-01-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-01-t-isvalid.html new file mode 100644 index 00000000000..7951c2c2d90 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-01-t-isvalid.html @@ -0,0 +1,64 @@ + + + + text-intro-01-t-manual.svg + + + +

    Source SVG: text-intro-01-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-01-t.svg,v $ + + + + + + + + + + + + + + + Test left-to-right text. + + Polish: Mogę jeść szkło, i mi ... + Russian: Я могу есть стекло, ... + Greek: Μπορώ να φάω ... + Hebrew: אני יכול לאכול זכוכית ... + Yiddish: איך קען עסן גלאָז און ... + + + Chinese:我能吞下玻璃而不伤身体。 + + + Japanese: 私はガラスを食べます。 + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-02-b-isvalid.html new file mode 100644 index 00000000000..8a789427bd0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-02-b-isvalid.html @@ -0,0 +1,56 @@ + + + + text-intro-02-b-manual.svg + + + +

    Source SVG: text-intro-02-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-02-b.svg,v $ + + + + + + + + + unicode-bidi="bidi-override" direction="ltr". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + unicode-bidi="bidi-override" direction="rtl". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + unicode-bidi="normal" direction="rtl". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + + + $Revision: 1.10 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-03-b-isvalid.html new file mode 100644 index 00000000000..d219e403932 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-03-b-isvalid.html @@ -0,0 +1,52 @@ + + + + text-intro-03-b-manual.svg + + + +

    Source SVG: text-intro-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-03-b.svg,v $ + + + + + + + + + + Text "我能吞下玻璃而不伤身体。" in Chinese + Japanese: 私はガラスを食べられます。それは私を傷つけません。 + Japanese: 私はガラスを食べられます。それは私を傷つけません。 + xt "我能吞 + se: 私は + se: 私は + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-04-t-isvalid.html new file mode 100644 index 00000000000..4131a17e108 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-04-t-isvalid.html @@ -0,0 +1,55 @@ + + + + text-intro-04-t-manual.svg + + + +

    Source SVG: text-intro-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-04-t.svg,v $ + + + + + + + + + Test horizontal text. + + Polish: Mogę jeść szkło, i mi nie szkodzi. + Russian: Я могу есть стекло, это мне не вредит. + Greek: Μπορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα. + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + Yiddish: איך קען עסן גלאָז און עס טוט מיר נישט װײ. + Chinese:我能吞下玻璃而不伤身体。 + Japanese: 私はガラスを食べられます。それは私を傷つけません。 + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-05-t-isvalid.html new file mode 100644 index 00000000000..fcd2a965cdc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-05-t-isvalid.html @@ -0,0 +1,54 @@ + + + + text-intro-05-t-manual.svg + + + +

    Source SVG: text-intro-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-05-t.svg,v $ + + + + + + + + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-06-t-isvalid.html new file mode 100644 index 00000000000..48b50d8d42c --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-06-t-isvalid.html @@ -0,0 +1,56 @@ + + + + text-intro-06-t-manual.svg + + + +

    Source SVG: text-intro-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-06-t.svg,v $ + + + + + + + + + + + + + آلات + ثلاثة + + + + $Revision: 1.10 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-07-t-isvalid.html new file mode 100644 index 00000000000..55d3a817649 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-07-t-isvalid.html @@ -0,0 +1,52 @@ + + + + text-intro-07-t-manual.svg + + + +

    Source SVG: text-intro-07-t-manual.svg

    + + + + + + + + + + $RCSfile: text-intro-07-t.svg,v $ + + + + + + + + + + + + + آلات + ثلاثة + + + + + $Revision: 1.2 $ + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-09-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-09-b-isvalid.html new file mode 100644 index 00000000000..d6c6f8d325a --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-09-b-isvalid.html @@ -0,0 +1,67 @@ + + + + text-intro-09-b-manual.svg + + + +

    Source SVG: text-intro-09-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-09-b.svg,v $ + + + + + + + + + + + + + + + unicode-bidi="bidi-override" direction="ltr". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + unicode-bidi="bidi-override" direction="rtl". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + unicode-bidi="normal" direction="rtl". + + Text "אני יכול לאכול זכוכית וזה לא מזיק לי" is in Hebrew + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-10-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-10-f-isvalid.html new file mode 100644 index 00000000000..783afff2b22 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-10-f-isvalid.html @@ -0,0 +1,56 @@ + + + + text-intro-10-f-manual.svg + + + +

    Source SVG: text-intro-10-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-10-f.svg,v $ + + + + + + + + + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + لماذا لا يتكلمون اللّغة العربية فحسب؟ + + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-11-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-11-t-isvalid.html new file mode 100644 index 00000000000..0e94a24dcf5 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-11-t-isvalid.html @@ -0,0 +1,57 @@ + + + + text-intro-11-t-manual.svg + + + +

    Source SVG: text-intro-11-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-11-t.svg,v $ + + + + + + + + + + + + + + + آلات + آلات + آلات + ثلاثة + ثلاثة + ثلاثة + + + + $Revision: 1.2 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-12-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-12-t-isvalid.html new file mode 100644 index 00000000000..a2d65e1893b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-intro-12-t-isvalid.html @@ -0,0 +1,56 @@ + + + + text-intro-12-t-manual.svg + + + +

    Source SVG: text-intro-12-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-intro-12-t.svg,v $ + + + + + + + + + + + + + آلات + ثلاثة + + + + $Revision: 1.3 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-path-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-path-01-b-isvalid.html new file mode 100644 index 00000000000..e5f9b605e87 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-path-01-b-isvalid.html @@ -0,0 +1,76 @@ + + + + text-path-01-b-manual.svg + + + +

    Source SVG: text-path-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-path-01-b.svg,v $ + + + + + + + + + + + + + + + + + Text on a path + + + + + + + + Text on a path + + + + 'tspan' subelement inside + the 'textPath' element. + + + + + The Text on path + + + 'startOffset' attribute of the + 'textPath' element. + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-path-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-path-02-b-isvalid.html new file mode 100644 index 00000000000..48dea56fb8e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-path-02-b-isvalid.html @@ -0,0 +1,81 @@ + + + + text-path-02-b-manual.svg + + + +

    Source SVG: text-path-02-b-manual.svg

    + + + + + + + + + + $RCSfile: text-path-02-b.svg,v $ + + + + + + + + + + + + + + + + + Positive offset Negative offset + + + + + + Positive offset Negative offset + + + + + + + Positive offset Negative offset + + + + + + Positive offset Negative offset + + + + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-spacing-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-spacing-01-b-isvalid.html new file mode 100644 index 00000000000..d9e3826cda2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-spacing-01-b-isvalid.html @@ -0,0 +1,52 @@ + + + + text-spacing-01-b-manual.svg + + + +

    Source SVG: text-spacing-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-spacing-01-b.svg,v $ + + + + + + + + + + letter-spacing:0 + letter-spacing:-1 + letter-spacing:.3 + ws:0 - Two Words + ws:-3 - Two Words + ws:3 - Two Words + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-01-b-isvalid.html new file mode 100644 index 00000000000..800a0e65744 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-01-b-isvalid.html @@ -0,0 +1,147 @@ + + + + text-text-01-b-manual.svg + + + +

    Source SVG: text-text-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-01-b.svg,v $ + + + + + + + + + Basic test of 'textLength' + and 'lengthAdjust' attributes. + + + + + Line to Stretch + this is a line to squeeze + + + + + + + + + + + + + + + + + + textLength: default + lengthAdjust: default + textLength: default + lengthAdjust: default + + + + + + + Line to Stretch + this is a line to squeeze + + + + + + + + + + + + + textLength: 25% longer + lengthAdjust: default + textLength: 15% shorter + lengthAdjust: default + + + + + + + Line to Stretch + this is a line to squeeze + + + + + + + + + + + + + textLength: 25% longer + lengthAdjust: spacing + textLength: 15% shorter + lengthAdjust: spacing + + + + + + + Line to Stretch + this is a line to squeeze + + + + + + + + + + + + + textLength: 25% longer + lengthAdjust: sAG + textLength: 20% shorter + lengthAdjust: sAG + + + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-03-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-03-b-isvalid.html new file mode 100644 index 00000000000..d7b3d08a9a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-03-b-isvalid.html @@ -0,0 +1,78 @@ + + + + text-text-03-b-manual.svg + + + +

    Source SVG: text-text-03-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-03-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Plain + Italic + Bold + Underline + Line through + Bold, italic and underlined + + + + Each line of text which flows in a + rectangular box has to be broken + into separated lines. + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-04-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-04-t-isvalid.html new file mode 100644 index 00000000000..ab06f0f36f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-04-t-isvalid.html @@ -0,0 +1,183 @@ + + + + text-text-04-t-manual.svg + + + +

    Source SVG: text-text-04-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-04-t.svg,v $ + + + + + + + + + + + + + + + + + + + + Reference + + + + + + 1234 + + + + + + + x all + + + + + + 1234 + + + + x more + + + + + + + 1234 + + + + x fewer + + + + + + 1234 + + + + y all + + + + + 1234 + + + + y more + + + + + 1234 + + + + y fewer + + + + + 1234 + + + + + x/y all + + + + + + 1234 + + + + x/y more + + + + + + + 1234 + + + + x/y fewer + + + + + + 1234 + + + + x all y fewer + + + + + + 1234 + + + + x fewer y all + + + + + + 1234 + + + + + + $Revision: 1.12 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-05-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-05-t-isvalid.html new file mode 100644 index 00000000000..9dd6b49b8d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-05-t-isvalid.html @@ -0,0 +1,157 @@ + + + + text-text-05-t-manual.svg + + + +

    Source SVG: text-text-05-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-05-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.x 1.y + 4.x 1.y + 2.x 1.y + 1.x 4.y + 4.x 4.y + 2.x 4.y + 1.x 2.y + 4.x 2.y + 2.x 2.y + + + + text-anchor + start + + + + + + 1234 + + + + + + + 1234 + + + + + 1234 + + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + 1234 + + + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-06-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-06-t-isvalid.html new file mode 100644 index 00000000000..823cbb68db8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-06-t-isvalid.html @@ -0,0 +1,108 @@ + + + + text-text-06-t-manual.svg + + + +

    Source SVG: text-text-06-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-06-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x positioning + y positioning + x/y positioning + + + + + + + + + + fi1234 + + + + + + + + + + fi1234 + + + + + + + + + + fi1234 + + + + + + $Revision: 1.9 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-07-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-07-t-isvalid.html new file mode 100644 index 00000000000..70414a516b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-07-t-isvalid.html @@ -0,0 +1,47 @@ + + + + text-text-07-t-manual.svg + + + +

    Source SVG: text-text-07-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-07-t.svg,v $ + + + + + + + + + Multi X Y + ROTATE + Both Together + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-08-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-08-b-isvalid.html new file mode 100644 index 00000000000..a0735eae159 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-08-b-isvalid.html @@ -0,0 +1,48 @@ + + + + text-text-08-b-manual.svg + + + +

    Source SVG: text-text-08-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-08-b.svg,v $ + + + + + + + + + Normal Text + Fill opacity + Stroke opacity + Opacity + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-09-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-09-t-isvalid.html new file mode 100644 index 00000000000..1512cb330a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-09-t-isvalid.html @@ -0,0 +1,47 @@ + + + + text-text-09-t-manual.svg + + + +

    Source SVG: text-text-09-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-09-t.svg,v $ + + + + + + + + + Multi X Y + ROTATE + Both Together + + + $Revision: 1.7 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-10-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-10-t-isvalid.html new file mode 100644 index 00000000000..399223c58a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-10-t-isvalid.html @@ -0,0 +1,68 @@ + + + + text-text-10-t-manual.svg + + + +

    Source SVG: text-text-10-t-manual.svg

    + + + + + + + + + + $RCSfile: text-text-10-t.svg,v $ + + + + + + + + + + Rotated 90 degrees + Rotated -90 degrees + Rotated 180 degrees + Unrotated text + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-11-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-11-t-isvalid.html new file mode 100644 index 00000000000..341dfc052a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-11-t-isvalid.html @@ -0,0 +1,72 @@ + + + + text-text-11-t-manual.svg + + + +

    Source SVG: text-text-11-t-manual.svg

    + + + + + + + + + + $RCSfile: text-text-11-t.svg,v $ + + + + + + + + + + + + Rotated 90 degrees + Rotated -90 degrees + Rotated 180 degrees + Unrotated text + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + Rotated by 10 degrees + + + + + $Revision: 1.3 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-12-t-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-12-t-isvalid.html new file mode 100644 index 00000000000..d28fd0745dc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-text-12-t-isvalid.html @@ -0,0 +1,167 @@ + + + + text-text-12-t-manual.svg + + + +

    Source SVG: text-text-12-t-manual.svg

    + + + + + + + + + + + + $RCSfile: text-text-12-t.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.x 1.y + 4.x 1.y + 2.x 1.y + 1.x 4.y + 4.x 4.y + 2.x 4.y + 1.x 2.y + 4.x 2.y + 2.x 2.y + + + + + + + 1234 + + + + + + + 1234 + + + + + 1234 + + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + 1234 + + + + + + + + + 1234 + + + + + + + 1234 + + + + + + text-anchor + middle + + + + + + text-anchor + end + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tref-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tref-01-b-isvalid.html new file mode 100644 index 00000000000..2681a1d57da --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tref-01-b-isvalid.html @@ -0,0 +1,58 @@ + + + + text-tref-01-b-manual.svg + + + +

    Source SVG: text-tref-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tref-01-b.svg,v $ + + + + + + + + + + Test 'tref' element with an external referenced string. + + + + + + 'tref' to a string in another file + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-01-b-isvalid.html new file mode 100644 index 00000000000..8c01db91737 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-01-b-isvalid.html @@ -0,0 +1,55 @@ + + + + text-tselect-01-b-manual.svg + + + +

    Source SVG: text-tselect-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tselect-01-b.svg,v $ + + + + + + + + + Test single line and multiline text selection. + + Here is a stand-alone 'text' element. + Here is a second 'text' element just below. + Because these are four separate 'text' elements, + text selection should not go across lines here. + + However, these lines of text are achieved by using + one 'tspan' per line, all contained within the same + 'text' element, so you should be able to select all + four lines at the same time. + + + $Revision: 1.8 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-02-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-02-f-novalid.html new file mode 100644 index 00000000000..bee4bf91dd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-02-f-novalid.html @@ -0,0 +1,94 @@ + + + + text-tselect-02-f-manual.svg + + + +

    Source SVG: text-tselect-02-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tselect-02-f.svg,v $ + + + + + + + + + + + + + + StartIndex: 0 NumChars: 0 + + + abc אבג 123 דהו def + + + + + startIndex++ + + + startIndex-- + + + numChars++ + + + numChars-- + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-03-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-03-f-novalid.html new file mode 100644 index 00000000000..6ce8758c73f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tselect-03-f-novalid.html @@ -0,0 +1,105 @@ + + + + text-tselect-03-f-manual.svg + + + +

    Source SVG: text-tselect-03-f-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tselect-03-f.svg,v $ + + + + + + + + + + + + + + + + + + + + StartIndex: 0 NumChars: 0 + + + abc אבג 123 דהו def + + + + + startIndex++ + + + startIndex-- + + + numChars++ + + + numChars-- + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tspan-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tspan-01-b-isvalid.html new file mode 100644 index 00000000000..c583e13e671 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tspan-01-b-isvalid.html @@ -0,0 +1,100 @@ + + + + text-tspan-01-b-manual.svg + + + +

    Source SVG: text-tspan-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: text-tspan-01-b.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Basics of tspan: changing visual properties and positioning. + + + + You are not a banana. + + + Text: "You are not a banana." + 'tspan' changes visual attributes of "not", + to green, bold. + + + + + But youare a peach! + + + Text: "But you are a peach!" + Using dx,dy, 'tspan' raises "are", + 'tspan' lowers "a peach!" + + + + + Cute and + fuzzy. + + + Text: "Cute and fuzzy." + 'tspan' char-by-char placement of "Cute and", + 'tspan' char-by-char "fuzzy", below it. + + + + $Revision: 1.10 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tspan-02-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tspan-02-b-isvalid.html new file mode 100644 index 00000000000..3c48f013531 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/text-tspan-02-b-isvalid.html @@ -0,0 +1,110 @@ + + + + text-tspan-02-b-manual.svg + + + +

    Source SVG: text-tspan-02-b-manual.svg

    + + + + + + + + + + $RCSfile: text-tspan-02-b.svg,v $ + + + + + + + + + + + Not all characters in the + text have a specified rotation + + + + + Not + + + all characters + + + in + + + the + + + + + text + + + have a + + + + specified + + + rotation + + + + +5 15 25 + + +-10 -20 -30 + + + -40 -40 -40 -40 -40 -40 -40 -40 -40 -40 + + +70 60 + + +40 30 20 + + +-40 -40 -40 -40 -40 -40 -40 -40 -40 + + + -10 -10 -10 -10 -10 -10 -10 -10 + + +-10 + + + 55 55 55 55 55 55 55 55 + + + + + + $Revision: 1.11 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-basic-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-basic-01-f-isvalid.html new file mode 100644 index 00000000000..0051cc3f958 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-basic-01-f-isvalid.html @@ -0,0 +1,64 @@ + + + + types-basic-01-f-manual.svg + + + +

    Source SVG: types-basic-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-basic-01-f.svg,v $ + + + + + + + + + + + + + + + + + + + + Different forms of the <number> type + + + 50 + 5e1 + .5e2 + + + + + $Revision: 1.5 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-basic-02-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-basic-02-f-isvalid.html new file mode 100644 index 00000000000..341db7a1de8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-basic-02-f-isvalid.html @@ -0,0 +1,75 @@ + + + + types-basic-02-f-manual.svg + + + +

    Source SVG: types-basic-02-f-manual.svg

    + + + + + + + + + + $RCSfile: types-basic-02-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-01-b-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-01-b-isvalid.html new file mode 100644 index 00000000000..35ccad21130 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-01-b-isvalid.html @@ -0,0 +1,75 @@ + + + + types-dom-01-b-manual.svg + + + +

    Source SVG: types-dom-01-b-manual.svg

    + + + + + + + + + + + + $RCSfile: types-dom-01-b.svg,v $ + + + + + + + + + + + + Rotated Text for testing SVGLocatable + Some other text with id 'otherText' + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-02-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-02-f-novalid.html new file mode 100644 index 00000000000..9072bacb932 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-02-f-novalid.html @@ -0,0 +1,134 @@ + + + + types-dom-02-f-manual.svg + + + +

    Source SVG: types-dom-02-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-02-f.svg,v $ + + + + + + + + + + animVal != baseVal: + + + + SVGAnimatedNumberList + + SVGAnimatedLength + + SVGAnimatedLengthList + + SVGAnimatedAngle + + SVGAnimatedRect + + SVGAnimatedTransformList + + SVGAnimatedPreserveAspectRatio + + + + abc + + + + + + + + + + $Revision: 1.8 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-03-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-03-b-novalid.html new file mode 100644 index 00000000000..03623bf3256 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-03-b-novalid.html @@ -0,0 +1,69 @@ + + + + types-dom-03-b-manual.svg + + + +

    Source SVG: types-dom-03-b-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-03-b.svg,v $ + + + + + + + + + + Test that getBBox() works before SVGLoad + + + Abc + + + + + $Revision: 1.7 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-04-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-04-b-novalid.html new file mode 100644 index 00000000000..123399b0ae7 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-04-b-novalid.html @@ -0,0 +1,226 @@ + + + + types-dom-04-b-manual.svg + + + +

    Source SVG: types-dom-04-b-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-04-b.svg,v $ + + + + + + + + + + Testing liveness of SVG DOM objects + + + + SVGAnimatedNumberList + + SVGAnimatedLength + + SVGAnimatedLengthList + + SVGAnimatedAngle + + SVGAnimatedRect + + SVGAnimatedTransformList + + SVGAnimatedPreserveAspectRatio + + SVGAnimatedBoolean + + SVGAnimatedString + + SVGAnimatedEnumeration + + SVGAnimatedInteger + + SVGAnimatedNumber + + + + abc + + + + + + + + + + + + + $Revision: 1.7 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-05-b-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-05-b-novalid.html new file mode 100644 index 00000000000..22a540f71b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-05-b-novalid.html @@ -0,0 +1,109 @@ + + + + types-dom-05-b-manual.svg + + + +

    Source SVG: types-dom-05-b-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-05-b.svg,v $ + + + + + + + + + + Test side effects of assigning to valueAsString + + + + + + + Valid string on SVGLength + Invalid string on SVGLength + Valid string on SVGAngle + Invalid string on SVGAngle + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-06-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-06-f-isvalid.html new file mode 100644 index 00000000000..983ce09fa89 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-06-f-isvalid.html @@ -0,0 +1,119 @@ + + + + types-dom-06-f-manual.svg + + + +

    Source SVG: types-dom-06-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-06-f.svg,v $ + + + + + + + + + + + + + + SVGStringList DOM + + + + + + + + + + + + + + + + + $Revision: 1.6 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-07-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-07-f-novalid.html new file mode 100644 index 00000000000..e5edef0d70b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-07-f-novalid.html @@ -0,0 +1,135 @@ + + + + types-dom-07-f-manual.svg + + + +

    Source SVG: types-dom-07-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-07-f.svg,v $ + + + + + + + + + + animVal is read only: + + + + SVGAnimatedNumberList + + SVGAnimatedLength + + SVGAnimatedLengthList + + SVGAnimatedAngle + + SVGAnimatedRect + + SVGAnimatedTransformList + + SVGAnimatedPreserveAspectRatio + + + + abc + + + + + + + + + + $Revision: 1.2 $ + + + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-08-f-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-08-f-novalid.html new file mode 100644 index 00000000000..2f46c1cbebc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-08-f-novalid.html @@ -0,0 +1,181 @@ + + + + types-dom-08-f-manual.svg + + + +

    Source SVG: types-dom-08-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-08-f.svg,v $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SVGLocatable.getBBox() - basic test + + + + failed + + + + + + + $Revision: 1.1 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html new file mode 100644 index 00000000000..a4ec2b6a648 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html @@ -0,0 +1,82 @@ + + + + types-dom-svgfittoviewbox-01-f-manual.svg + + + +

    Source SVG: types-dom-svgfittoviewbox-01-f-manual.svg

    + + + + + + + + + + + + $RCSfile: types-dom-svgfittoviewbox-01-f.svg,v $ + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svglengthlist-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svglengthlist-01-f-isvalid.html new file mode 100644 index 00000000000..1b0470c23fe --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svglengthlist-01-f-isvalid.html @@ -0,0 +1,105 @@ + + + + types-dom-svglengthlist-01-f-manual.svg + + + +

    Source SVG: types-dom-svglengthlist-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-svglengthlist-01-f.svg,v $ + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgnumberlist-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgnumberlist-01-f-isvalid.html new file mode 100644 index 00000000000..7dbda069fc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgnumberlist-01-f-isvalid.html @@ -0,0 +1,105 @@ + + + + types-dom-svgnumberlist-01-f-manual.svg + + + +

    Source SVG: types-dom-svgnumberlist-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-svgnumberlist-01-f.svg,v $ + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgstringlist-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgstringlist-01-f-isvalid.html new file mode 100644 index 00000000000..f1ad11693eb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgstringlist-01-f-isvalid.html @@ -0,0 +1,104 @@ + + + + types-dom-svgstringlist-01-f-manual.svg + + + +

    Source SVG: types-dom-svgstringlist-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-svgstringlist-01-f.svg,v $ + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.4 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgtransformable-01-f-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgtransformable-01-f-isvalid.html new file mode 100644 index 00000000000..c9ba4eb8425 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html-svg/types-dom-svgtransformable-01-f-isvalid.html @@ -0,0 +1,81 @@ + + + + types-dom-svgtransformable-01-f-manual.svg + + + +

    Source SVG: types-dom-svgtransformable-01-f-manual.svg

    + + + + + + + + + + $RCSfile: types-dom-svgtransformable-01-f.svg,v $ + + + + + + + + + + + FAIL + PASS + + + + + $Revision: 1.5 $ + + + + + + DRAFT + + + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/a/href/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/a/href/port-999999-novalid.html new file mode 100644 index 00000000000..8fcc801efba --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/a/href/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid href: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/area/href/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/area/href/port-999999-novalid.html new file mode 100644 index 00000000000..13106ac2279 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/area/href/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid href: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/audio/src/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/audio/src/port-999999-novalid.html new file mode 100644 index 00000000000..76b70598e17 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/audio/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/port-999999-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/port-999999-novalid.html similarity index 62% rename from tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/port-999999-isvalid.html rename to tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/port-999999-novalid.html index 391b88094ba..95393fab21c 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/port-999999-isvalid.html +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/base/href/port-999999-novalid.html @@ -1,4 +1,4 @@ -valid href: port-999999 +invalid href: port-999999 diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/blockquote/cite/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/blockquote/cite/port-999999-novalid.html new file mode 100644 index 00000000000..1797e6467cb --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/blockquote/cite/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid cite: port-999999 +
    diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/button/formaction/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/button/formaction/port-999999-novalid.html new file mode 100644 index 00000000000..8a997594d1b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/button/formaction/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid formaction: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/del/cite/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/del/cite/port-999999-novalid.html new file mode 100644 index 00000000000..a654a888c15 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/del/cite/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid cite: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/embed/src/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/embed/src/port-999999-novalid.html new file mode 100644 index 00000000000..21fb6e26f28 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/embed/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/form/action/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/form/action/port-999999-novalid.html new file mode 100644 index 00000000000..fe4932f5f69 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/form/action/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid action: port-999999 +
    diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-999999-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-999999-novalid.html similarity index 64% rename from tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-999999-isvalid.html rename to tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-999999-novalid.html index bd27dd49f1b..d05e591ed81 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-999999-isvalid.html +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/html/manifest/port-999999-novalid.html @@ -1,5 +1,5 @@ -valid manifest: port-999999 +invalid manifest: port-999999 diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/src/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/src/port-999999-novalid.html new file mode 100644 index 00000000000..4f2290d2a50 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/iframe/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/img/src/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/img/src/port-999999-novalid.html new file mode 100644 index 00000000000..0c7d01801d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/img/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-formaction/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-formaction/port-999999-novalid.html new file mode 100644 index 00000000000..a01365d7277 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-formaction/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid formaction: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-src/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-src/port-999999-novalid.html new file mode 100644 index 00000000000..7c5b961f4c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-image-src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-submit-formaction/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-submit-formaction/port-999999-novalid.html new file mode 100644 index 00000000000..56fed6806c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-submit-formaction/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid formaction: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-url-value/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-url-value/port-999999-novalid.html new file mode 100644 index 00000000000..9ea67f37828 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/input/type-url-value/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid value attribute: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/ins/cite/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/ins/cite/port-999999-novalid.html new file mode 100644 index 00000000000..006149af2f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/ins/cite/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid cite: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/link/href/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/link/href/port-999999-novalid.html new file mode 100644 index 00000000000..4b7e189c426 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/link/href/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid href: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/object/data/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/object/data/port-999999-novalid.html new file mode 100644 index 00000000000..7cc877269c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/object/data/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid data: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/q/cite/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/q/cite/port-999999-novalid.html new file mode 100644 index 00000000000..2f0ddf31561 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/q/cite/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid cite: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/script/src/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/script/src/port-999999-novalid.html new file mode 100644 index 00000000000..e9fc4b917bc --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/script/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/source/src/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/source/src/port-999999-novalid.html new file mode 100644 index 00000000000..c635f3b667e --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/source/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/track/src/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/track/src/port-999999-novalid.html new file mode 100644 index 00000000000..963a3310125 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/track/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/poster/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/poster/port-999999-novalid.html new file mode 100644 index 00000000000..9ceec19628f --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/poster/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid poster: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/src/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/src/port-999999-novalid.html new file mode 100644 index 00000000000..e877d815b97 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/elements/video/src/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid src: port-999999 + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemid/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemid/port-999999-novalid.html new file mode 100644 index 00000000000..6c1f14fbad3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemid/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid itemid: port-999999 +
    diff --git a/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemtype/port-999999-novalid.html b/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemtype/port-999999-novalid.html new file mode 100644 index 00000000000..ceb94815df3 --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/html/microdata/itemtype/port-999999-novalid.html @@ -0,0 +1,4 @@ + + +invalid itemtype: port-999999 +
    diff --git a/tests/wpt/web-platform-tests/conformance-checkers/messages.json b/tests/wpt/web-platform-tests/conformance-checkers/messages.json index 62cf37b56c1..70841a3f4f8 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/messages.json +++ b/tests/wpt/web-platform-tests/conformance-checkers/messages.json @@ -80,6 +80,7 @@ "html/elements/a/href/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/a/href/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/a/href/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/a/href/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Port number must be less than 65536.", "html/elements/a/href/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/a/href/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/a/href/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201chref\u201d on element \u201ca\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -149,6 +150,7 @@ "html/elements/area/href/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/area/href/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/area/href/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/area/href/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Port number must be less than 65536.", "html/elements/area/href/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/area/href/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/area/href/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201chref\u201d on element \u201carea\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -218,6 +220,7 @@ "html/elements/audio/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/audio/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/audio/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/audio/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Port number must be less than 65536.", "html/elements/audio/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/audio/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/audio/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201caudio\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -283,6 +286,7 @@ "html/elements/base/href/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/base/href/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/base/href/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/base/href/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Port number must be less than 65536.", "html/elements/base/href/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/base/href/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/base/href/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201chref\u201d on element \u201cbase\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -348,6 +352,7 @@ "html/elements/blockquote/cite/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/blockquote/cite/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/blockquote/cite/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/blockquote/cite/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Port number must be less than 65536.", "html/elements/blockquote/cite/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/blockquote/cite/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/blockquote/cite/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201ccite\u201d on element \u201cblockquote\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -416,6 +421,7 @@ "html/elements/button/formaction/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/button/formaction/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/button/formaction/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/button/formaction/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Port number must be less than 65536.", "html/elements/button/formaction/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/button/formaction/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/button/formaction/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cformaction\u201d on element \u201cbutton\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -483,6 +489,7 @@ "html/elements/del/cite/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/del/cite/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/del/cite/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/del/cite/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Port number must be less than 65536.", "html/elements/del/cite/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/del/cite/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/del/cite/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201ccite\u201d on element \u201cdel\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -645,6 +652,7 @@ "html/elements/embed/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/embed/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/embed/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/embed/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Port number must be less than 65536.", "html/elements/embed/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/embed/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/embed/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cembed\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -715,6 +723,7 @@ "html/elements/form/action/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/form/action/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/form/action/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/form/action/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Port number must be less than 65536.", "html/elements/form/action/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/form/action/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/form/action/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201caction\u201d on element \u201cform\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -790,6 +799,7 @@ "html/elements/html/manifest/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/html/manifest/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/html/manifest/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/html/manifest/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Port number must be less than 65536.", "html/elements/html/manifest/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/html/manifest/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/html/manifest/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cmanifest\u201d on element \u201chtml\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -858,6 +868,7 @@ "html/elements/iframe/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/iframe/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/iframe/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/iframe/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Port number must be less than 65536.", "html/elements/iframe/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/iframe/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/iframe/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201ciframe\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -925,6 +936,7 @@ "html/elements/img/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/img/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/img/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/img/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Port number must be less than 65536.", "html/elements/img/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/img/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/img/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cimg\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -996,6 +1008,7 @@ "html/elements/input/type-image-formaction/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-image-formaction/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/input/type-image-formaction/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/input/type-image-formaction/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Port number must be less than 65536.", "html/elements/input/type-image-formaction/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-image-formaction/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/input/type-image-formaction/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1062,6 +1075,7 @@ "html/elements/input/type-image-src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-image-src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/input/type-image-src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/input/type-image-src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Port number must be less than 65536.", "html/elements/input/type-image-src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-image-src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/input/type-image-src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1128,6 +1142,7 @@ "html/elements/input/type-submit-formaction/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-submit-formaction/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/input/type-submit-formaction/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/input/type-submit-formaction/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Port number must be less than 65536.", "html/elements/input/type-submit-formaction/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/input/type-submit-formaction/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/input/type-submit-formaction/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cformaction\u201d on element \u201cinput\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1200,6 +1215,7 @@ "html/elements/input/type-url-value/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Tab, new line or carriage return found.", "html/elements/input/type-url-value/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Illegal character in path segment: space is not allowed.", "html/elements/input/type-url-value/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/input/type-url-value/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Port number must be less than 65536.", "html/elements/input/type-url-value/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Tab, new line or carriage return found.", "html/elements/input/type-url-value/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/input/type-url-value/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cvalue\u201d on element \u201cinput\u201d: Bad absolute URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1266,6 +1282,7 @@ "html/elements/ins/cite/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/ins/cite/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/ins/cite/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/ins/cite/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Port number must be less than 65536.", "html/elements/ins/cite/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/ins/cite/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/ins/cite/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201ccite\u201d on element \u201cins\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1433,6 +1450,7 @@ "html/elements/link/href/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/link/href/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/link/href/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/link/href/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Port number must be less than 65536.", "html/elements/link/href/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/link/href/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/link/href/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201chref\u201d on element \u201clink\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1501,6 +1519,7 @@ "html/elements/object/data/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/object/data/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/object/data/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/object/data/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Port number must be less than 65536.", "html/elements/object/data/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/object/data/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/object/data/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cdata\u201d on element \u201cobject\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1769,6 +1788,7 @@ "html/elements/q/cite/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/q/cite/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/q/cite/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/q/cite/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Port number must be less than 65536.", "html/elements/q/cite/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/q/cite/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/q/cite/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201ccite\u201d on element \u201cq\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1840,6 +1860,7 @@ "html/elements/script/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/script/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/script/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/script/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Port number must be less than 65536.", "html/elements/script/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/script/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/script/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cscript\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1907,6 +1928,7 @@ "html/elements/source/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/source/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/source/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/source/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Port number must be less than 65536.", "html/elements/source/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/source/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/source/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201csource\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -1988,6 +2010,7 @@ "html/elements/track/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/track/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/track/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/track/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Port number must be less than 65536.", "html/elements/track/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/track/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/track/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201ctrack\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -2057,6 +2080,7 @@ "html/elements/video/poster/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/video/poster/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/video/poster/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/video/poster/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Port number must be less than 65536.", "html/elements/video/poster/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/video/poster/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/video/poster/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201cposter\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -2121,6 +2145,7 @@ "html/elements/video/src/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/video/src/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/elements/video/src/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/elements/video/src/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Port number must be less than 65536.", "html/elements/video/src/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Tab, new line or carriage return found.", "html/elements/video/src/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/elements/video/src/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201csrc\u201d on element \u201cvideo\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -2209,6 +2234,7 @@ "html/microdata/itemid/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Tab, new line or carriage return found.", "html/microdata/itemid/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Illegal character in path segment: space is not allowed.", "html/microdata/itemid/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/microdata/itemid/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Port number must be less than 65536.", "html/microdata/itemid/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Tab, new line or carriage return found.", "html/microdata/itemid/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/microdata/itemid/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201citemid\u201d on element \u201cdiv\u201d: Bad URL: Illegal character in port: \u201c:\u201d is not allowed.", @@ -2282,6 +2308,7 @@ "html/microdata/itemtype/path-tab-novalid.html": "Bad value \u201chttp://example.com/foo\tbar\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: The string \u201cbar\u201d is not an absolute URL.", "html/microdata/itemtype/path-trailing-space-novalid.html": "Bad value \u201chttp://f:21/b ?\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: The string \u201c?\u201d is not an absolute URL.", "html/microdata/itemtype/path-u0091-novalid.html": "Forbidden code point U+0091.", + "html/microdata/itemtype/port-999999-novalid.html": "Bad value \u201chttp://f:999999/c\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Port number must be less than 65536.", "html/microdata/itemtype/port-cr-novalid.html": "Bad value \u201chttp://f:\n/c\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: The string \u201c/c\u201d is not an absolute URL.", "html/microdata/itemtype/port-leading-colon-bracket-colon-novalid.html": "Bad value \u201chttp://2001::1]:80\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Illegal character in port: \u201c:\u201d is not allowed.", "html/microdata/itemtype/port-leading-colon-novalid.html": "Bad value \u201chttp://2001::1\u201d for attribute \u201citemtype\u201d on element \u201cdiv\u201d: Bad absolute URL: Illegal character in port: \u201c:\u201d is not allowed.", diff --git a/tests/wpt/web-platform-tests/conformance-checkers/tools/build-svg-tests.py b/tests/wpt/web-platform-tests/conformance-checkers/tools/build-svg-tests.py new file mode 100644 index 00000000000..c212e78896b --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/tools/build-svg-tests.py @@ -0,0 +1,315 @@ +#!/usr/bin/env python2.7 + +# Copyright (c) 2016 PowerMapper Software +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +"""build_svg_tests.py. + +This script builds a set of SVG-in-HTML test files for the Nu Html Checker +based on the SVG 1.1 Second Edition Test Suite +http://www.w3.org/Graphics/SVG/Test/20110816/archives/W3C_SVG_11_TestSuite.tar.gz + +""" + +import logging +import os +import sys, getopt +import urllib2 + +# some files in the SVG 1.1 test suite don't validate against the SVG 1.1 DTD +# but are valid against the HTML 5 spec + +valid_svg_files = dict([ + # these entries manually added after cross checking behaviour with spec + + # VNU warns about text not in Unicode Normalization Form C, but it's not an error + ('struct-cond-02-t-manual.svg', 'Source text is not in Unicode Normalization Form C'), + # FiLl, fill and FILL are all valid in case-insensitive HTML (but SVG DTD is case-sensitive) + ('styling-css-10-f-manual.svg', 'Attribute FiLl not allowed on SVG element circle at this point') +]) + +# some files in the SVG 1.1 test suite don't validate against the SVG 1.1 DTD +# and some files are marked as version='SVG 1.2'. +# this is used to toggle between -isvalid.html and -novalid.html output + +invalid_svg_files = dict([ + # 'DTD Invalid' entries are produced by calling validate_svg_dtd (see below) + ('animate-dom-01-f-manual.svg', 'DTD Invalid'), + ('animate-dom-02-f-manual.svg', 'DTD Invalid'), + ('animate-elem-24-t-manual.svg', 'DTD Invalid'), + ('animate-elem-77-t-manual.svg', 'DTD Invalid'), + ('animate-pservers-grad-01-b-manual.svg', 'DTD Invalid'), + ('animate-script-elem-01-b-manual.svg', 'DTD Invalid'), + ('animate-struct-dom-01-b-manual.svg', 'DTD Invalid'), + ('conform-viewers-03-f-manual.svg', 'DTD Invalid'), + ('coords-dom-01-f-manual.svg', 'DTD Invalid'), + ('coords-dom-02-f-manual.svg', 'DTD Invalid'), + ('coords-dom-03-f-manual.svg', 'DTD Invalid'), + ('extend-namespace-01-f-manual.svg', 'DTD Invalid'), + ('filters-color-02-b-manual.svg', 'DTD Invalid'), + ('filters-conv-02-f-manual.svg', 'DTD Invalid'), + ('filters-conv-04-f-manual.svg', 'DTD Invalid'), + ('filters-conv-05-f-manual.svg', 'DTD Invalid'), + ('filters-light-05-f-manual.svg', 'DTD Invalid'), + ('fonts-glyph-04-t-manual.svg', 'DTD Invalid'), + ('interact-events-02-b-manual.svg', 'DTD Invalid'), + ('interact-pevents-01-b-manual.svg', 'DTD Invalid'), + ('interact-pevents-03-b-manual.svg', 'DTD Invalid'), + ('interact-pevents-05-b-manual.svg', 'DTD Invalid'), + ('interact-pevents-07-t-manual.svg', 'DTD Invalid'), + ('interact-pevents-08-f-manual.svg', 'DTD Invalid'), + ('interact-pevents-09-f-manual.svg', 'DTD Invalid'), + ('interact-pointer-01-t-manual.svg', 'DTD Invalid'), + ('interact-pointer-02-t-manual.svg', 'DTD Invalid'), + ('interact-pointer-03-t-manual.svg', 'DTD Invalid'), + ('linking-a-09-b-manual.svg', 'DTD Invalid'), + ('linking-a-10-f-manual.svg', 'DTD Invalid'), + ('masking-filter-01-f-manual.svg', 'DTD Invalid'), + ('masking-intro-01-f-manual.svg', 'DTD Invalid'), + ('masking-path-09-b-manual.svg', 'DTD Invalid'), + ('painting-marker-04-f-manual.svg', 'DTD Invalid'), + ('paths-data-18-f-manual.svg', 'DTD Invalid'), + ('paths-data-20-f-manual.svg', 'DTD Invalid'), + ('paths-dom-01-f-manual.svg', 'DTD Invalid'), + ('paths-dom-02-f-manual.svg', 'DTD Invalid'), + ('pservers-grad-23-f-manual.svg', 'DTD Invalid'), + ('render-elems-03-t-manual.svg', 'DTD Invalid'), + ('shapes-rect-03-t-manual.svg', 'DTD Invalid'), + ('struct-cond-02-t-manual.svg', 'DTD Invalid'), + ('struct-dom-07-f-manual.svg', 'DTD Invalid'), + ('struct-dom-08-f-manual.svg', 'DTD Invalid'), + ('struct-dom-11-f-manual.svg', 'DTD Invalid'), + ('struct-dom-13-f-manual.svg', 'DTD Invalid'), + ('struct-dom-14-f-manual.svg', 'DTD Invalid'), + ('struct-dom-15-f-manual.svg', 'DTD Invalid'), + ('struct-dom-17-f-manual.svg', 'DTD Invalid'), + ('struct-dom-19-f-manual.svg', 'DTD Invalid'), + ('struct-dom-20-f-manual.svg', 'DTD Invalid'), + ('struct-frag-05-t-manual.svg', 'DTD Invalid'), + ('struct-image-12-b-manual.svg', 'DTD Invalid'), + ('struct-use-11-f-manual.svg', 'DTD Invalid'), + ('struct-use-12-f-manual.svg', 'DTD Invalid'), + ('struct-use-13-f-manual.svg', 'DTD Invalid'), + ('styling-css-10-f-manual.svg', 'DTD Invalid'), + ('styling-pres-02-f-manual.svg', 'DTD Invalid'), + ('svgdom-over-01-f-manual.svg', 'DTD Invalid'), + ('text-dom-02-f-manual.svg', 'DTD Invalid'), + ('text-dom-03-f-manual.svg', 'DTD Invalid'), + ('text-dom-05-f-manual.svg', 'DTD Invalid'), + ('text-fonts-03-t-manual.svg', 'DTD Invalid'), + ('text-fonts-05-f-manual.svg', 'DTD Invalid'), + ('text-tref-02-b-manual.svg', 'DTD Invalid'), + ('text-tselect-02-f-manual.svg', 'DTD Invalid'), + ('text-tselect-03-f-manual.svg', 'DTD Invalid'), + ('types-dom-02-f-manual.svg', 'DTD Invalid'), + ('types-dom-03-b-manual.svg', 'DTD Invalid'), + ('types-dom-04-b-manual.svg', 'DTD Invalid'), + ('types-dom-05-b-manual.svg', 'DTD Invalid'), + ('types-dom-07-f-manual.svg', 'DTD Invalid'), + ('types-dom-08-f-manual.svg', 'DTD Invalid'), + + # these entries manually added after cross checking behaviour with spec + # note there are some confusing differences between w:iri-ref (used in HTML for img/@src) + # and xsd:anyURI (used in SVG for image/@xlink:href) + ('animate-elem-40-t-manual.svg', 'Spaces in data: URI - not allowed by URL Standard or RFC 2397.'), + ('conform-viewers-02-f-manual.svg', 'Newlines in data: URI - not allowed by URL Standard or RFC 2397.'), + ('coords-transformattr-01-f-manual.svg', 'Numeric character reference expanded to carriage return - not allowed in HTML5 - see 8.1.4'), + ('fonts-overview-201-t-manual.svg', 'Unsupported SVG version specified - specifies SVG 1.2'), + ('script-specify-01-f-manual.svg', 'Attribute contentscripttype not allowed on element svg at this point - not allowed in HTML5 - see 4.8.18 SVG'), + ('types-dom-04-b-manual.svg', 'Attribute externalresourcesrequired not allowed on element svg at this point - not allowed in HTML5 - see 4.8.18 SVG'), + ('metadata-example-01-t-manual.svg', 'Element rdf:rdf not allowed as child of element metadata in this context - namespaced XML not allowed in HTML5') +]) + +# TODO Github Issue #216 MathML and SVG uses xsd:anyURI, HTML URLs use URL Standard +# TODO Github Issue #217 NU has script/@type optional for HTML, but not SVG-in-HTML + +def build_html_testfiles(svgdirectory,htmldirectory): + """Builds HTML test files from SVG test suite folder.""" + + logging.debug('build_html_testfiles: IN') + + testfiles = [] + + for filename in os.listdir(svgdirectory): + #logging.debug(filename) + if filename.endswith(".svg"): + htmlpathname = build_html_test_file(filename, svgdirectory, htmldirectory) + if htmlpathname: + testfiles.append(htmlpathname) + pass + pass + + indexpathname = "index-isvalid.html" + build_html_index_file(indexpathname, testfiles) + + +def build_html_index_file(indexpathname, testfiles): + """Builds HTML test index.""" + + htmlfile = open(indexpathname, "w") + + htmlfile.write("\n") + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.write(" SVG in HTML Test Index\n") + htmlfile.write(" \n") + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.write("

    SVG in HTML Test Index

    \n") + + for filename in testfiles: + if filename.find("-isvalid") > 0: + htmlfile.write("

    %s

    \n" % (filename, filename)) + + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.close() + + +def build_html_test_file(filename, svgdirectory, htmldirectory): + """Builds HTML test file by wrapping input SVG in boilerplate HTML.""" + + svgpathname = svgdirectory + "/" + filename + + # valid_svg_file overrides invalid_svg_files (may invalid in case-sensitive XML but valid in case-insensitive HTML) + if invalid_svg_files.has_key(filename) and not valid_svg_files.has_key(filename): + htmlpathname = htmldirectory + "/" + filename.replace( "-manual.svg", "-novalid.html") + else: + htmlpathname = htmldirectory + "/" + filename.replace( "-manual.svg", "-isvalid.html") + + logging.debug(svgpathname) + logging.debug(htmlpathname) + + # read SVG data + svgfile = open(svgpathname, "r") + svg = svgfile.read() + svgfile.close() + + # but remove from file (not valid in HTML or SVG DTD) + svg = svg.replace('', '') + svgbefore = svg.split("")[1]; + svg = svgbefore + svgafter + + # ignore files with SVG DOCTYPE and !ENTITY declarations (unsupported in HTML) + if svg.find( "\n") + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.write(" %s\n" % os.path.basename(svgpathname) ) + htmlfile.write(" \n") + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.write("

    Source SVG: %s

    \n" % os.path.basename(svgpathname) ) + + # insert SVG without any XML processing to avoid unexpected transformations on + # encoding and entity refs, but remove from file (not valid in HTML) + htmlfile.write(svgbefore) + htmlfile.write(svgafter) + + htmlfile.write("\n") + + htmlfile.write("\n") + htmlfile.close() + + return htmlpathname + +def create_dir_if_missing(directory): + """Create the given directory if it doesn't exist""" + + d = os.path.dirname(directory) + if not os.path.exists(directory): + os.makedirs(directory) + + +def validate_svg_dtd(filename,svg): + """Prints legacy DTD markup validation status to stdout in a format suitable for pasting into invalid_svg_files dict above.""" + + # setup multipart/form-data POST body + body = '' + body = body + '--AaB03x\r\n' + body = body + 'Content-Disposition: form-data; name="fieldname"\r\n' + body = body + '\r\n' + body = body + 'value\r\n' + body = body + '--AaB03x\r\n' + body = body + 'Content-Disposition: form-data; name="uploaded_file"; filename="test.svg"\r\n' + body = body + 'Content-Type: image/svg+xml\r\n' + body = body + '\r\n' + body = body + svg + body = body + '\r\n' + body = body + '--AaB03x--\r\n' + + # send request to W3 DTD validator for SVG 1.1 validation + headers = { "Content-type" : "multipart/form-data; boundary=AaB03x", "Content-length" : len(body) } + request = urllib2.Request("http://validator.w3.org/check?charset=utf-8&doctype=SVG+1.1&output=json", data=body, headers=headers) + response = urllib2.urlopen(request, timeout=60) + + status = response.info().getheader('X-W3C-Validator-Status') + logging.debug(status) + + if status == "Valid": + return True + + print " ('%s', 'DTD %s')," % (filename, status) + return False + + +def main(): + + #logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') + logging.debug('main: IN') + + svgdirectory = "../../svg/import" + htmldirectory = "../html-svg" + + try: + opts, args = getopt.getopt(sys.argv[1:],"",["svgdir=","outdir="]) + except getopt.GetoptError: + print 'build-svg-tests.py --svgdir --outdir ' + sys.exit(2) + + for opt, arg in opts: + print opt, arg + if opt in ("-s", "--svgdir"): + svgdirectory = arg + elif opt in ("-o", "--outdir"): + htmldirectory = arg + + + create_dir_if_missing(htmldirectory) + build_html_testfiles(svgdirectory, htmldirectory) + + +main() \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/conformance-checkers/tools/index-isvalid.html b/tests/wpt/web-platform-tests/conformance-checkers/tools/index-isvalid.html new file mode 100644 index 00000000000..5f3e02fc0ba --- /dev/null +++ b/tests/wpt/web-platform-tests/conformance-checkers/tools/index-isvalid.html @@ -0,0 +1,451 @@ + + + + SVG in HTML Test Index + + + +

    SVG in HTML Test Index

    +

    ../html-svg/animate-elem-02-t-isvalid.html

    +

    ../html-svg/animate-elem-03-t-isvalid.html

    +

    ../html-svg/animate-elem-04-t-isvalid.html

    +

    ../html-svg/animate-elem-05-t-isvalid.html

    +

    ../html-svg/animate-elem-06-t-isvalid.html

    +

    ../html-svg/animate-elem-07-t-isvalid.html

    +

    ../html-svg/animate-elem-08-t-isvalid.html

    +

    ../html-svg/animate-elem-09-t-isvalid.html

    +

    ../html-svg/animate-elem-10-t-isvalid.html

    +

    ../html-svg/animate-elem-11-t-isvalid.html

    +

    ../html-svg/animate-elem-12-t-isvalid.html

    +

    ../html-svg/animate-elem-13-t-isvalid.html

    +

    ../html-svg/animate-elem-14-t-isvalid.html

    +

    ../html-svg/animate-elem-15-t-isvalid.html

    +

    ../html-svg/animate-elem-17-t-isvalid.html

    +

    ../html-svg/animate-elem-19-t-isvalid.html

    +

    ../html-svg/animate-elem-20-t-isvalid.html

    +

    ../html-svg/animate-elem-21-t-isvalid.html

    +

    ../html-svg/animate-elem-22-b-isvalid.html

    +

    ../html-svg/animate-elem-23-t-isvalid.html

    +

    ../html-svg/animate-elem-25-t-isvalid.html

    +

    ../html-svg/animate-elem-26-t-isvalid.html

    +

    ../html-svg/animate-elem-27-t-isvalid.html

    +

    ../html-svg/animate-elem-28-t-isvalid.html

    +

    ../html-svg/animate-elem-29-b-isvalid.html

    +

    ../html-svg/animate-elem-30-t-isvalid.html

    +

    ../html-svg/animate-elem-31-t-isvalid.html

    +

    ../html-svg/animate-elem-32-t-isvalid.html

    +

    ../html-svg/animate-elem-33-t-isvalid.html

    +

    ../html-svg/animate-elem-34-t-isvalid.html

    +

    ../html-svg/animate-elem-35-t-isvalid.html

    +

    ../html-svg/animate-elem-36-t-isvalid.html

    +

    ../html-svg/animate-elem-37-t-isvalid.html

    +

    ../html-svg/animate-elem-38-t-isvalid.html

    +

    ../html-svg/animate-elem-39-t-isvalid.html

    +

    ../html-svg/animate-elem-41-t-isvalid.html

    +

    ../html-svg/animate-elem-44-t-isvalid.html

    +

    ../html-svg/animate-elem-46-t-isvalid.html

    +

    ../html-svg/animate-elem-52-t-isvalid.html

    +

    ../html-svg/animate-elem-53-t-isvalid.html

    +

    ../html-svg/animate-elem-60-t-isvalid.html

    +

    ../html-svg/animate-elem-61-t-isvalid.html

    +

    ../html-svg/animate-elem-62-t-isvalid.html

    +

    ../html-svg/animate-elem-63-t-isvalid.html

    +

    ../html-svg/animate-elem-64-t-isvalid.html

    +

    ../html-svg/animate-elem-65-t-isvalid.html

    +

    ../html-svg/animate-elem-66-t-isvalid.html

    +

    ../html-svg/animate-elem-67-t-isvalid.html

    +

    ../html-svg/animate-elem-68-t-isvalid.html

    +

    ../html-svg/animate-elem-69-t-isvalid.html

    +

    ../html-svg/animate-elem-70-t-isvalid.html

    +

    ../html-svg/animate-elem-78-t-isvalid.html

    +

    ../html-svg/animate-elem-80-t-isvalid.html

    +

    ../html-svg/animate-elem-81-t-isvalid.html

    +

    ../html-svg/animate-elem-82-t-isvalid.html

    +

    ../html-svg/animate-elem-83-t-isvalid.html

    +

    ../html-svg/animate-elem-84-t-isvalid.html

    +

    ../html-svg/animate-elem-85-t-isvalid.html

    +

    ../html-svg/animate-elem-86-t-isvalid.html

    +

    ../html-svg/animate-elem-87-t-isvalid.html

    +

    ../html-svg/animate-elem-88-t-isvalid.html

    +

    ../html-svg/animate-elem-89-t-isvalid.html

    +

    ../html-svg/animate-elem-90-b-isvalid.html

    +

    ../html-svg/animate-elem-91-t-isvalid.html

    +

    ../html-svg/animate-elem-92-t-isvalid.html

    +

    ../html-svg/animate-interact-events-01-t-isvalid.html

    +

    ../html-svg/animate-interact-pevents-01-t-isvalid.html

    +

    ../html-svg/animate-interact-pevents-02-t-isvalid.html

    +

    ../html-svg/animate-interact-pevents-03-t-isvalid.html

    +

    ../html-svg/animate-interact-pevents-04-t-isvalid.html

    +

    ../html-svg/color-prof-01-f-isvalid.html

    +

    ../html-svg/color-prop-01-b-isvalid.html

    +

    ../html-svg/color-prop-02-f-isvalid.html

    +

    ../html-svg/color-prop-03-t-isvalid.html

    +

    ../html-svg/color-prop-04-t-isvalid.html

    +

    ../html-svg/color-prop-05-t-isvalid.html

    +

    ../html-svg/coords-coord-01-t-isvalid.html

    +

    ../html-svg/coords-coord-02-t-isvalid.html

    +

    ../html-svg/coords-dom-04-f-isvalid.html

    +

    ../html-svg/coords-trans-01-b-isvalid.html

    +

    ../html-svg/coords-trans-02-t-isvalid.html

    +

    ../html-svg/coords-trans-03-t-isvalid.html

    +

    ../html-svg/coords-trans-04-t-isvalid.html

    +

    ../html-svg/coords-trans-05-t-isvalid.html

    +

    ../html-svg/coords-trans-06-t-isvalid.html

    +

    ../html-svg/coords-trans-07-t-isvalid.html

    +

    ../html-svg/coords-trans-08-t-isvalid.html

    +

    ../html-svg/coords-trans-09-t-isvalid.html

    +

    ../html-svg/coords-trans-10-f-isvalid.html

    +

    ../html-svg/coords-trans-11-f-isvalid.html

    +

    ../html-svg/coords-trans-12-f-isvalid.html

    +

    ../html-svg/coords-trans-13-f-isvalid.html

    +

    ../html-svg/coords-trans-14-f-isvalid.html

    +

    ../html-svg/coords-transformattr-02-f-isvalid.html

    +

    ../html-svg/coords-transformattr-03-f-isvalid.html

    +

    ../html-svg/coords-transformattr-04-f-isvalid.html

    +

    ../html-svg/coords-transformattr-05-f-isvalid.html

    +

    ../html-svg/coords-units-01-b-isvalid.html

    +

    ../html-svg/coords-units-02-b-isvalid.html

    +

    ../html-svg/coords-units-03-b-isvalid.html

    +

    ../html-svg/coords-viewattr-03-b-isvalid.html

    +

    ../html-svg/filters-background-01-f-isvalid.html

    +

    ../html-svg/filters-blend-01-b-isvalid.html

    +

    ../html-svg/filters-color-01-b-isvalid.html

    +

    ../html-svg/filters-composite-02-b-isvalid.html

    +

    ../html-svg/filters-composite-03-f-isvalid.html

    +

    ../html-svg/filters-composite-04-f-isvalid.html

    +

    ../html-svg/filters-composite-05-f-isvalid.html

    +

    ../html-svg/filters-comptran-01-b-isvalid.html

    +

    ../html-svg/filters-conv-01-f-isvalid.html

    +

    ../html-svg/filters-conv-03-f-isvalid.html

    +

    ../html-svg/filters-diffuse-01-f-isvalid.html

    +

    ../html-svg/filters-displace-01-f-isvalid.html

    +

    ../html-svg/filters-displace-02-f-isvalid.html

    +

    ../html-svg/filters-example-01-b-isvalid.html

    +

    ../html-svg/filters-felem-01-b-isvalid.html

    +

    ../html-svg/filters-felem-02-f-isvalid.html

    +

    ../html-svg/filters-gauss-01-b-isvalid.html

    +

    ../html-svg/filters-gauss-02-f-isvalid.html

    +

    ../html-svg/filters-gauss-03-f-isvalid.html

    +

    ../html-svg/filters-image-01-b-isvalid.html

    +

    ../html-svg/filters-image-02-b-isvalid.html

    +

    ../html-svg/filters-image-03-f-isvalid.html

    +

    ../html-svg/filters-image-04-f-isvalid.html

    +

    ../html-svg/filters-image-05-f-isvalid.html

    +

    ../html-svg/filters-light-01-f-isvalid.html

    +

    ../html-svg/filters-light-02-f-isvalid.html

    +

    ../html-svg/filters-light-03-f-isvalid.html

    +

    ../html-svg/filters-light-04-f-isvalid.html

    +

    ../html-svg/filters-morph-01-f-isvalid.html

    +

    ../html-svg/filters-offset-01-b-isvalid.html

    +

    ../html-svg/filters-offset-02-b-isvalid.html

    +

    ../html-svg/filters-overview-01-b-isvalid.html

    +

    ../html-svg/filters-overview-02-b-isvalid.html

    +

    ../html-svg/filters-overview-03-b-isvalid.html

    +

    ../html-svg/filters-specular-01-f-isvalid.html

    +

    ../html-svg/filters-tile-01-b-isvalid.html

    +

    ../html-svg/filters-turb-01-f-isvalid.html

    +

    ../html-svg/filters-turb-02-f-isvalid.html

    +

    ../html-svg/fonts-desc-01-t-isvalid.html

    +

    ../html-svg/fonts-desc-02-t-isvalid.html

    +

    ../html-svg/fonts-desc-03-t-isvalid.html

    +

    ../html-svg/fonts-desc-04-t-isvalid.html

    +

    ../html-svg/fonts-desc-05-t-isvalid.html

    +

    ../html-svg/fonts-elem-01-t-isvalid.html

    +

    ../html-svg/fonts-elem-02-t-isvalid.html

    +

    ../html-svg/fonts-elem-03-b-isvalid.html

    +

    ../html-svg/fonts-elem-04-b-isvalid.html

    +

    ../html-svg/fonts-elem-05-t-isvalid.html

    +

    ../html-svg/fonts-elem-06-t-isvalid.html

    +

    ../html-svg/fonts-elem-07-b-isvalid.html

    +

    ../html-svg/fonts-glyph-02-t-isvalid.html

    +

    ../html-svg/fonts-glyph-03-t-isvalid.html

    +

    ../html-svg/fonts-kern-01-t-isvalid.html

    +

    ../html-svg/imp-path-01-f-isvalid.html

    +

    ../html-svg/interact-cursor-01-f-isvalid.html

    +

    ../html-svg/interact-dom-01-b-isvalid.html

    +

    ../html-svg/interact-events-01-b-isvalid.html

    +

    ../html-svg/interact-events-202-f-isvalid.html

    +

    ../html-svg/interact-events-203-t-isvalid.html

    +

    ../html-svg/interact-order-01-b-isvalid.html

    +

    ../html-svg/interact-order-02-b-isvalid.html

    +

    ../html-svg/interact-order-03-b-isvalid.html

    +

    ../html-svg/interact-pevents-04-t-isvalid.html

    +

    ../html-svg/interact-pevents-10-f-isvalid.html

    +

    ../html-svg/interact-pointer-04-f-isvalid.html

    +

    ../html-svg/interact-zoom-01-t-isvalid.html

    +

    ../html-svg/interact-zoom-02-t-isvalid.html

    +

    ../html-svg/interact-zoom-03-t-isvalid.html

    +

    ../html-svg/linking-a-01-b-isvalid.html

    +

    ../html-svg/linking-a-03-b-isvalid.html

    +

    ../html-svg/linking-a-04-t-isvalid.html

    +

    ../html-svg/linking-a-05-t-isvalid.html

    +

    ../html-svg/linking-a-07-t-isvalid.html

    +

    ../html-svg/linking-a-08-t-isvalid.html

    +

    ../html-svg/linking-frag-01-f-isvalid.html

    +

    ../html-svg/linking-uri-01-b-isvalid.html

    +

    ../html-svg/linking-uri-02-b-isvalid.html

    +

    ../html-svg/linking-uri-03-t-isvalid.html

    +

    ../html-svg/masking-mask-01-b-isvalid.html

    +

    ../html-svg/masking-mask-02-f-isvalid.html

    +

    ../html-svg/masking-opacity-01-b-isvalid.html

    +

    ../html-svg/masking-path-01-b-isvalid.html

    +

    ../html-svg/masking-path-02-b-isvalid.html

    +

    ../html-svg/masking-path-03-b-isvalid.html

    +

    ../html-svg/masking-path-04-b-isvalid.html

    +

    ../html-svg/masking-path-05-f-isvalid.html

    +

    ../html-svg/masking-path-06-b-isvalid.html

    +

    ../html-svg/masking-path-07-b-isvalid.html

    +

    ../html-svg/masking-path-08-b-isvalid.html

    +

    ../html-svg/masking-path-10-b-isvalid.html

    +

    ../html-svg/masking-path-11-b-isvalid.html

    +

    ../html-svg/masking-path-12-f-isvalid.html

    +

    ../html-svg/masking-path-13-f-isvalid.html

    +

    ../html-svg/masking-path-14-f-isvalid.html

    +

    ../html-svg/painting-control-01-f-isvalid.html

    +

    ../html-svg/painting-control-02-f-isvalid.html

    +

    ../html-svg/painting-control-03-f-isvalid.html

    +

    ../html-svg/painting-control-04-f-isvalid.html

    +

    ../html-svg/painting-control-05-f-isvalid.html

    +

    ../html-svg/painting-control-06-f-isvalid.html

    +

    ../html-svg/painting-fill-01-t-isvalid.html

    +

    ../html-svg/painting-fill-02-t-isvalid.html

    +

    ../html-svg/painting-fill-03-t-isvalid.html

    +

    ../html-svg/painting-fill-04-t-isvalid.html

    +

    ../html-svg/painting-fill-05-b-isvalid.html

    +

    ../html-svg/painting-marker-01-f-isvalid.html

    +

    ../html-svg/painting-marker-02-f-isvalid.html

    +

    ../html-svg/painting-marker-03-f-isvalid.html

    +

    ../html-svg/painting-marker-05-f-isvalid.html

    +

    ../html-svg/painting-marker-06-f-isvalid.html

    +

    ../html-svg/painting-marker-07-f-isvalid.html

    +

    ../html-svg/painting-marker-properties-01-f-isvalid.html

    +

    ../html-svg/painting-render-01-b-isvalid.html

    +

    ../html-svg/painting-render-02-b-isvalid.html

    +

    ../html-svg/painting-stroke-01-t-isvalid.html

    +

    ../html-svg/painting-stroke-02-t-isvalid.html

    +

    ../html-svg/painting-stroke-03-t-isvalid.html

    +

    ../html-svg/painting-stroke-04-t-isvalid.html

    +

    ../html-svg/painting-stroke-05-t-isvalid.html

    +

    ../html-svg/painting-stroke-06-t-isvalid.html

    +

    ../html-svg/painting-stroke-07-t-isvalid.html

    +

    ../html-svg/painting-stroke-08-t-isvalid.html

    +

    ../html-svg/painting-stroke-09-t-isvalid.html

    +

    ../html-svg/painting-stroke-10-t-isvalid.html

    +

    ../html-svg/paths-data-01-t-isvalid.html

    +

    ../html-svg/paths-data-02-t-isvalid.html

    +

    ../html-svg/paths-data-03-f-isvalid.html

    +

    ../html-svg/paths-data-04-t-isvalid.html

    +

    ../html-svg/paths-data-05-t-isvalid.html

    +

    ../html-svg/paths-data-06-t-isvalid.html

    +

    ../html-svg/paths-data-07-t-isvalid.html

    +

    ../html-svg/paths-data-08-t-isvalid.html

    +

    ../html-svg/paths-data-09-t-isvalid.html

    +

    ../html-svg/paths-data-10-t-isvalid.html

    +

    ../html-svg/paths-data-12-t-isvalid.html

    +

    ../html-svg/paths-data-13-t-isvalid.html

    +

    ../html-svg/paths-data-14-t-isvalid.html

    +

    ../html-svg/paths-data-15-t-isvalid.html

    +

    ../html-svg/paths-data-16-t-isvalid.html

    +

    ../html-svg/paths-data-17-f-isvalid.html

    +

    ../html-svg/paths-data-19-f-isvalid.html

    +

    ../html-svg/pservers-grad-01-b-isvalid.html

    +

    ../html-svg/pservers-grad-02-b-isvalid.html

    +

    ../html-svg/pservers-grad-03-b-isvalid.html

    +

    ../html-svg/pservers-grad-04-b-isvalid.html

    +

    ../html-svg/pservers-grad-05-b-isvalid.html

    +

    ../html-svg/pservers-grad-06-b-isvalid.html

    +

    ../html-svg/pservers-grad-07-b-isvalid.html

    +

    ../html-svg/pservers-grad-08-b-isvalid.html

    +

    ../html-svg/pservers-grad-09-b-isvalid.html

    +

    ../html-svg/pservers-grad-10-b-isvalid.html

    +

    ../html-svg/pservers-grad-11-b-isvalid.html

    +

    ../html-svg/pservers-grad-12-b-isvalid.html

    +

    ../html-svg/pservers-grad-13-b-isvalid.html

    +

    ../html-svg/pservers-grad-14-b-isvalid.html

    +

    ../html-svg/pservers-grad-15-b-isvalid.html

    +

    ../html-svg/pservers-grad-16-b-isvalid.html

    +

    ../html-svg/pservers-grad-17-b-isvalid.html

    +

    ../html-svg/pservers-grad-18-b-isvalid.html

    +

    ../html-svg/pservers-grad-20-b-isvalid.html

    +

    ../html-svg/pservers-grad-21-b-isvalid.html

    +

    ../html-svg/pservers-grad-22-b-isvalid.html

    +

    ../html-svg/pservers-grad-24-f-isvalid.html

    +

    ../html-svg/pservers-grad-stops-01-f-isvalid.html

    +

    ../html-svg/pservers-pattern-01-b-isvalid.html

    +

    ../html-svg/pservers-pattern-02-f-isvalid.html

    +

    ../html-svg/pservers-pattern-03-f-isvalid.html

    +

    ../html-svg/pservers-pattern-04-f-isvalid.html

    +

    ../html-svg/pservers-pattern-05-f-isvalid.html

    +

    ../html-svg/pservers-pattern-06-f-isvalid.html

    +

    ../html-svg/pservers-pattern-07-f-isvalid.html

    +

    ../html-svg/pservers-pattern-08-f-isvalid.html

    +

    ../html-svg/pservers-pattern-09-f-isvalid.html

    +

    ../html-svg/render-elems-01-t-isvalid.html

    +

    ../html-svg/render-elems-02-t-isvalid.html

    +

    ../html-svg/render-elems-06-t-isvalid.html

    +

    ../html-svg/render-elems-07-t-isvalid.html

    +

    ../html-svg/render-elems-08-t-isvalid.html

    +

    ../html-svg/render-groups-01-b-isvalid.html

    +

    ../html-svg/render-groups-03-t-isvalid.html

    +

    ../html-svg/script-handle-01-b-isvalid.html

    +

    ../html-svg/script-handle-02-b-isvalid.html

    +

    ../html-svg/script-handle-03-b-isvalid.html

    +

    ../html-svg/script-handle-04-b-isvalid.html

    +

    ../html-svg/script-specify-02-f-isvalid.html

    +

    ../html-svg/shapes-circle-01-t-isvalid.html

    +

    ../html-svg/shapes-circle-02-t-isvalid.html

    +

    ../html-svg/shapes-ellipse-01-t-isvalid.html

    +

    ../html-svg/shapes-ellipse-02-t-isvalid.html

    +

    ../html-svg/shapes-ellipse-03-f-isvalid.html

    +

    ../html-svg/shapes-grammar-01-f-isvalid.html

    +

    ../html-svg/shapes-intro-01-t-isvalid.html

    +

    ../html-svg/shapes-intro-02-f-isvalid.html

    +

    ../html-svg/shapes-line-01-t-isvalid.html

    +

    ../html-svg/shapes-line-02-f-isvalid.html

    +

    ../html-svg/shapes-polygon-01-t-isvalid.html

    +

    ../html-svg/shapes-polygon-02-t-isvalid.html

    +

    ../html-svg/shapes-polygon-03-t-isvalid.html

    +

    ../html-svg/shapes-polyline-01-t-isvalid.html

    +

    ../html-svg/shapes-polyline-02-t-isvalid.html

    +

    ../html-svg/shapes-rect-01-t-isvalid.html

    +

    ../html-svg/shapes-rect-02-t-isvalid.html

    +

    ../html-svg/shapes-rect-04-f-isvalid.html

    +

    ../html-svg/shapes-rect-05-f-isvalid.html

    +

    ../html-svg/shapes-rect-06-f-isvalid.html

    +

    ../html-svg/shapes-rect-07-f-isvalid.html

    +

    ../html-svg/struct-cond-01-t-isvalid.html

    +

    ../html-svg/struct-cond-02-t-isvalid.html

    +

    ../html-svg/struct-cond-03-t-isvalid.html

    +

    ../html-svg/struct-cond-overview-02-f-isvalid.html

    +

    ../html-svg/struct-cond-overview-03-f-isvalid.html

    +

    ../html-svg/struct-cond-overview-04-f-isvalid.html

    +

    ../html-svg/struct-cond-overview-05-f-isvalid.html

    +

    ../html-svg/struct-defs-01-t-isvalid.html

    +

    ../html-svg/struct-dom-01-b-isvalid.html

    +

    ../html-svg/struct-dom-02-b-isvalid.html

    +

    ../html-svg/struct-dom-03-b-isvalid.html

    +

    ../html-svg/struct-dom-04-b-isvalid.html

    +

    ../html-svg/struct-dom-05-b-isvalid.html

    +

    ../html-svg/struct-dom-06-b-isvalid.html

    +

    ../html-svg/struct-dom-12-b-isvalid.html

    +

    ../html-svg/struct-dom-16-f-isvalid.html

    +

    ../html-svg/struct-dom-18-f-isvalid.html

    +

    ../html-svg/struct-frag-01-t-isvalid.html

    +

    ../html-svg/struct-frag-02-t-isvalid.html

    +

    ../html-svg/struct-frag-03-t-isvalid.html

    +

    ../html-svg/struct-frag-04-t-isvalid.html

    +

    ../html-svg/struct-frag-06-t-isvalid.html

    +

    ../html-svg/struct-group-01-t-isvalid.html

    +

    ../html-svg/struct-group-02-b-isvalid.html

    +

    ../html-svg/struct-group-03-t-isvalid.html

    +

    ../html-svg/struct-image-01-t-isvalid.html

    +

    ../html-svg/struct-image-02-b-isvalid.html

    +

    ../html-svg/struct-image-03-t-isvalid.html

    +

    ../html-svg/struct-image-04-t-isvalid.html

    +

    ../html-svg/struct-image-05-b-isvalid.html

    +

    ../html-svg/struct-image-06-t-isvalid.html

    +

    ../html-svg/struct-image-07-t-isvalid.html

    +

    ../html-svg/struct-image-08-t-isvalid.html

    +

    ../html-svg/struct-image-09-t-isvalid.html

    +

    ../html-svg/struct-image-10-t-isvalid.html

    +

    ../html-svg/struct-image-11-b-isvalid.html

    +

    ../html-svg/struct-image-13-f-isvalid.html

    +

    ../html-svg/struct-image-14-f-isvalid.html

    +

    ../html-svg/struct-image-15-f-isvalid.html

    +

    ../html-svg/struct-image-16-f-isvalid.html

    +

    ../html-svg/struct-image-17-b-isvalid.html

    +

    ../html-svg/struct-image-18-f-isvalid.html

    +

    ../html-svg/struct-image-19-f-isvalid.html

    +

    ../html-svg/struct-svg-01-f-isvalid.html

    +

    ../html-svg/struct-svg-02-f-isvalid.html

    +

    ../html-svg/struct-svg-03-f-isvalid.html

    +

    ../html-svg/struct-symbol-01-b-isvalid.html

    +

    ../html-svg/struct-use-01-t-isvalid.html

    +

    ../html-svg/struct-use-03-t-isvalid.html

    +

    ../html-svg/struct-use-04-b-isvalid.html

    +

    ../html-svg/struct-use-05-b-isvalid.html

    +

    ../html-svg/struct-use-06-b-isvalid.html

    +

    ../html-svg/struct-use-07-b-isvalid.html

    +

    ../html-svg/struct-use-08-b-isvalid.html

    +

    ../html-svg/struct-use-09-b-isvalid.html

    +

    ../html-svg/struct-use-10-f-isvalid.html

    +

    ../html-svg/struct-use-14-f-isvalid.html

    +

    ../html-svg/struct-use-15-f-isvalid.html

    +

    ../html-svg/styling-class-01-f-isvalid.html

    +

    ../html-svg/styling-css-01-b-isvalid.html

    +

    ../html-svg/styling-css-02-b-isvalid.html

    +

    ../html-svg/styling-css-03-b-isvalid.html

    +

    ../html-svg/styling-css-04-f-isvalid.html

    +

    ../html-svg/styling-css-05-b-isvalid.html

    +

    ../html-svg/styling-css-06-b-isvalid.html

    +

    ../html-svg/styling-css-07-f-isvalid.html

    +

    ../html-svg/styling-css-08-f-isvalid.html

    +

    ../html-svg/styling-css-09-f-isvalid.html

    +

    ../html-svg/styling-css-10-f-isvalid.html

    +

    ../html-svg/styling-elem-01-b-isvalid.html

    +

    ../html-svg/styling-inherit-01-b-isvalid.html

    +

    ../html-svg/styling-pres-01-t-isvalid.html

    +

    ../html-svg/styling-pres-03-f-isvalid.html

    +

    ../html-svg/styling-pres-04-f-isvalid.html

    +

    ../html-svg/styling-pres-05-f-isvalid.html

    +

    ../html-svg/text-align-01-b-isvalid.html

    +

    ../html-svg/text-align-02-b-isvalid.html

    +

    ../html-svg/text-align-03-b-isvalid.html

    +

    ../html-svg/text-align-04-b-isvalid.html

    +

    ../html-svg/text-align-05-b-isvalid.html

    +

    ../html-svg/text-align-06-b-isvalid.html

    +

    ../html-svg/text-align-07-t-isvalid.html

    +

    ../html-svg/text-align-08-b-isvalid.html

    +

    ../html-svg/text-altglyph-01-b-isvalid.html

    +

    ../html-svg/text-altglyph-02-b-isvalid.html

    +

    ../html-svg/text-altglyph-03-b-isvalid.html

    +

    ../html-svg/text-bidi-01-t-isvalid.html

    +

    ../html-svg/text-deco-01-b-isvalid.html

    +

    ../html-svg/text-dom-01-f-isvalid.html

    +

    ../html-svg/text-dom-04-f-isvalid.html

    +

    ../html-svg/text-fonts-01-t-isvalid.html

    +

    ../html-svg/text-fonts-02-t-isvalid.html

    +

    ../html-svg/text-fonts-04-t-isvalid.html

    +

    ../html-svg/text-fonts-202-t-isvalid.html

    +

    ../html-svg/text-fonts-203-t-isvalid.html

    +

    ../html-svg/text-fonts-204-t-isvalid.html

    +

    ../html-svg/text-intro-01-t-isvalid.html

    +

    ../html-svg/text-intro-02-b-isvalid.html

    +

    ../html-svg/text-intro-03-b-isvalid.html

    +

    ../html-svg/text-intro-04-t-isvalid.html

    +

    ../html-svg/text-intro-05-t-isvalid.html

    +

    ../html-svg/text-intro-06-t-isvalid.html

    +

    ../html-svg/text-intro-07-t-isvalid.html

    +

    ../html-svg/text-intro-09-b-isvalid.html

    +

    ../html-svg/text-intro-10-f-isvalid.html

    +

    ../html-svg/text-intro-11-t-isvalid.html

    +

    ../html-svg/text-intro-12-t-isvalid.html

    +

    ../html-svg/text-path-01-b-isvalid.html

    +

    ../html-svg/text-path-02-b-isvalid.html

    +

    ../html-svg/text-spacing-01-b-isvalid.html

    +

    ../html-svg/text-text-01-b-isvalid.html

    +

    ../html-svg/text-text-03-b-isvalid.html

    +

    ../html-svg/text-text-04-t-isvalid.html

    +

    ../html-svg/text-text-05-t-isvalid.html

    +

    ../html-svg/text-text-06-t-isvalid.html

    +

    ../html-svg/text-text-07-t-isvalid.html

    +

    ../html-svg/text-text-08-b-isvalid.html

    +

    ../html-svg/text-text-09-t-isvalid.html

    +

    ../html-svg/text-text-10-t-isvalid.html

    +

    ../html-svg/text-text-11-t-isvalid.html

    +

    ../html-svg/text-text-12-t-isvalid.html

    +

    ../html-svg/text-tref-01-b-isvalid.html

    +

    ../html-svg/text-tselect-01-b-isvalid.html

    +

    ../html-svg/text-tspan-01-b-isvalid.html

    +

    ../html-svg/text-tspan-02-b-isvalid.html

    +

    ../html-svg/types-basic-01-f-isvalid.html

    +

    ../html-svg/types-basic-02-f-isvalid.html

    +

    ../html-svg/types-dom-01-b-isvalid.html

    +

    ../html-svg/types-dom-06-f-isvalid.html

    +

    ../html-svg/types-dom-svgfittoviewbox-01-f-isvalid.html

    +

    ../html-svg/types-dom-svglengthlist-01-f-isvalid.html

    +

    ../html-svg/types-dom-svgnumberlist-01-f-isvalid.html

    +

    ../html-svg/types-dom-svgstringlist-01-f-isvalid.html

    +

    ../html-svg/types-dom-svgtransformable-01-f-isvalid.html

    + + diff --git a/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py b/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py index ce3eef7d868..f97d428abe9 100644 --- a/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py +++ b/tests/wpt/web-platform-tests/conformance-checkers/tools/url.py @@ -29,6 +29,7 @@ invalid = { "host-newline": "http://example.\norg", "host-cr": "http://example.\rorg", "host-square-brackets-port-contains-colon": "http://[1::2]:3:4", + "port-999999": "http://f:999999/c", "port-single-letter": "http://f:b/c", "port-multiple-letters": "http://f:fifty-two/c", "port-leading-colon": "http://2001::1", diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html index 683558e2958..159338c6db0 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/stylehash-default-src.sub.html @@ -2,8 +2,8 @@ stylehash allowed from default-src - - + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html index fdde9e760b2..f68d3c384db 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib/connect-src-beacon-blocked.sub.html @@ -22,9 +22,9 @@ connect-src 'self' http://{{host}}:{{ports[http][0]}}; script-src 'self' 'unsafe } else { try { var es = navigator.sendBeacon("http://www1.{{host}}:{{ports[http][0]}}/security/contentSecurityPolicy/echo-report.php"); - log("Fail"); + log("Pass"); } catch (e) { - log("Pass"); + log("Fail"); } var report = document.createElement("script"); report.src = "../support/checkReport.sub.js?reportExists=true&reportField=violated-directive&reportValue=connect-src%20'self'"; diff --git a/tests/wpt/web-platform-tests/cors/resources/cors-makeheader.py b/tests/wpt/web-platform-tests/cors/resources/cors-makeheader.py index 408e12d3f5b..eab35eedfc9 100644 --- a/tests/wpt/web-platform-tests/cors/resources/cors-makeheader.py +++ b/tests/wpt/web-platform-tests/cors/resources/cors-makeheader.py @@ -28,7 +28,11 @@ def main(request, response): if 'methods' in request.GET: response.headers.set("Access-Control-Allow-Methods", request.GET.first('methods')) - code = request.GET.first('code', None) + code_raw = request.GET.first('code', None) + if code_raw: + code = int(code_raw) + else: + code = None if request.method == 'OPTIONS': #Override the response code if we're in a preflight and it's asked if 'preflight' in request.GET: @@ -61,4 +65,3 @@ def main(request, response): return (code, "StatusText"), [], body else: return body - diff --git a/tests/wpt/web-platform-tests/custom-elements/custom-elements-registry/define.html b/tests/wpt/web-platform-tests/custom-elements/custom-element-registry/define.html similarity index 83% rename from tests/wpt/web-platform-tests/custom-elements/custom-elements-registry/define.html rename to tests/wpt/web-platform-tests/custom-elements/custom-element-registry/define.html index 670c963001b..fedb687416e 100644 --- a/tests/wpt/web-platform-tests/custom-elements/custom-elements-registry/define.html +++ b/tests/wpt/web-platform-tests/custom-elements/custom-element-registry/define.html @@ -110,7 +110,7 @@ }, `Element names: defining an element named ${name} should throw a SyntaxError`); }); - // 3. If this CustomElementsRegistry contains an entry with name name, + // 3. If this CustomElementRegistry contains an entry with name name, // then throw a NotSupportedError and abort these steps. test(() => { customElements.define('test-define-dup-name', class {}); @@ -119,7 +119,7 @@ }); }, 'If the name is already defined, should throw a NotSupportedError'); - // 4. If this CustomElementsRegistry contains an entry with constructor constructor, + // 5. If this CustomElementRegistry contains an entry with constructor constructor, // then throw a NotSupportedError and abort these steps. test(() => { class TestDupConstructor {}; @@ -129,7 +129,7 @@ }); }, 'If the constructor is already defined, should throw a NotSupportedError'); - // 7.1. If extends is a valid custom element name, + // 9.1. If extends is a valid custom element name, // then throw a NotSupportedError. validCustomElementNames.forEach(name => { test(() => { @@ -139,7 +139,7 @@ }, `If extends is ${name}, should throw a NotSupportedError`); }); - // 7.2. If the element interface for extends and the HTML namespace is HTMLUnknownElement + // 9.2. If the element interface for extends and the HTML namespace is HTMLUnknownElement // (e.g., if extends does not indicate an element definition in this specification), // then throw a NotSupportedError. [ @@ -159,19 +159,7 @@ }, `If extends is ${name}, should throw a NotSupportedError`); }); - // 8. Let observedAttributesIterable be Get(constructor, "observedAttributes"). - // Rethrow any exceptions. - test(() => { - class C { - static get observedAttributes() { throw_rethrown_error(); } - attributeChangedCallback() {} - } - assert_rethrown(() => { - customElements.define('test-define-observedattributes-rethrow', C); - }); - }, 'If constructor.observedAttributes throws, should rethrow'); - - // 10. Let prototype be Get(constructor, "prototype"). Rethrow any exceptions. + // 12.1. Let prototype be Get(constructor, "prototype"). Rethrow any exceptions. function assert_rethrown(func, description) { assert_throws({ name: 'rethrown' }, func, description); } @@ -190,7 +178,8 @@ customElements.define('test-define-constructor-prototype-rethrow', BadConstructor); }); }, 'If constructor.prototype throws, should rethrow'); - // 11. If Type(prototype) is not Object, + + // 12.2. If Type(prototype) is not Object, // then throw a TypeError exception. test(() => { const c = (function () { }).bind({}); // prototype is undefined. @@ -206,18 +195,18 @@ }); }, 'If Type(constructor.prototype) is string, should throw a TypeError'); - // 12. Let connectedCallback be Get(prototype, "connectedCallback"). Rethrow any exceptions. - // 13. If connectedCallback is not undefined, and IsCallable(connectedCallback) is false, - // then throw a TypeError exception. - // 14. Let disconnectedCallback be Get(prototype, "disconnectedCallback"). Rethrow any exceptions. - // 15. If disconnectedCallback is not undefined, and IsCallable(disconnectedCallback) is false, - // then throw a TypeError exception. - // 16. Let attributeChangedCallback be Get(prototype, "attributeChangedCallback"). Rethrow any exceptions. - // 17. If attributeChangedCallback is not undefined, and IsCallable(attributeChangedCallback) is false, - // then throw a TypeError exception. + // 12.3. Let lifecycleCallbacks be a map with the four keys "connectedCallback", + // "disconnectedCallback", "adoptedCallback", and "attributeChangedCallback", + // each of which belongs to an entry whose value is null. + // 12.4. For each of the four keys callbackName in lifecycleCallbacks: + // 12.4.1. Let callbackValue be Get(prototype, callbackName). Rethrow any exceptions. + // 12.4.2. If callbackValue is not undefined, then set the value of the entry in + // lifecycleCallbacks with key callbackName to the result of converting callbackValue + // to the Web IDL Function callback type. Rethrow any exceptions from the conversion. [ 'connectedCallback', 'disconnectedCallback', + 'adoptedCallback', 'attributeChangedCallback', ].forEach(name => { test(() => { diff --git a/tests/wpt/web-platform-tests/custom-elements/htmlconstructor/newtarget.html b/tests/wpt/web-platform-tests/custom-elements/htmlconstructor/newtarget.html new file mode 100644 index 00000000000..04b4c498649 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/htmlconstructor/newtarget.html @@ -0,0 +1,124 @@ + +Custom Elements: [HTMLConstructor] derives prototype from NewTarget + + + + + + + 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 new file mode 100644 index 00000000000..0dfbd6363b2 --- /dev/null +++ b/tests/wpt/web-platform-tests/custom-elements/resources/custom-elements-helpers.js @@ -0,0 +1,22 @@ +function create_window_in_test(t, srcdoc) { + let p = new Promise((resolve) => { + let f = document.createElement('iframe'); + f.srcdoc = srcdoc ? srcdoc : ''; + f.onload = (event) => { + let w = f.contentWindow; + t.add_cleanup(() => f.parentNode && f.remove()); + resolve(w); + }; + document.body.appendChild(f); + }); + return p; +} + +function test_with_window(f, name, srcdoc) { + promise_test((t) => { + return create_window_in_test(t, srcdoc) + .then((w) => { + f(w); + }); + }, name); +} diff --git a/tests/wpt/web-platform-tests/docs/test-format-guidelines.md b/tests/wpt/web-platform-tests/docs/test-format-guidelines.md index 430702ba769..d3e75db1133 100644 --- a/tests/wpt/web-platform-tests/docs/test-format-guidelines.md +++ b/tests/wpt/web-platform-tests/docs/test-format-guidelines.md @@ -193,19 +193,40 @@ with extension `.worker.js` that imports `testharness.js`. The test can then use all the usual APIs, and can be run from the path to the JavaScript file with the `.js` removed. -For example, one could write a test for the `Blob` constructor by -creating a `FileAPI/Blob-constructor.worker.js` as follows: +For example, one could write a test for the `FileReaderSync` API by +creating a `FileAPI/FileReaderSync.worker.js` as follows: importScripts("/resources/testharness.js"); + test(function () { + var blob = new Blob(["Hello"]); + var fr = new FileReaderSync(); + assert_equals(fr.readAsText(blob), "Hello"); + }, "FileReaderSync#readAsText."); + done(); + +This test could then be run from `FileAPI/FileReaderSync.worker`. + +### Multi-global tests + +Tests for features that exist in multiple global scopes can be written in a way +that they are automatically run in a window scope as well as a dedicated worker +scope. +In this case, the test is a JavaScript file with extension `.any.js`. +The test can then use all the usual APIs, and can be run from the path to the +JavaScript file with the `.js` replaced by `.worker` or `.html`. + +For example, one could write a test for the `Blob` constructor by +creating a `FileAPI/Blob-constructor.any.js` as follows: + test(function () { var blob = new Blob(); assert_equals(blob.size, 0); assert_equals(blob.type, ""); assert_false(blob.isClosed); }, "The Blob constructor."); - done(); -This test could then be run from `FileAPI/Blob-constructor.worker`. +This test could then be run from `FileAPI/Blob-constructor.any.worker` as well +as `FileAPI/Blob-constructor.any.html`. ### Tests Involving Multiple Origins diff --git a/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-once.html b/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-once.html new file mode 100644 index 00000000000..ae750702c79 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-once.html @@ -0,0 +1,81 @@ + + +AddEventListenerOptions.once + + + + +
    + diff --git a/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html b/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html index 28f7faf349e..85abdff2fe7 100644 --- a/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html +++ b/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html @@ -13,7 +13,7 @@ booleans.forEach(function(bubbles) { e.initEvent("type", bubbles, cancelable) // Step 3. - // Can't test the stop propagation flag and stop immediate propagation flag. + // Stop (immediate) propagation flag is tested later assert_equals(e.defaultPrevented, false, "defaultPrevented") // Step 4. assert_equals(e.isTrusted, false, "isTrusted") @@ -78,31 +78,28 @@ async_test(function() { this.done() }, "Calling initEvent must not have an effect during dispatching.") -async_test(function() { +test(function() { var e = document.createEvent("Event") - e.initEvent("type", false, false) e.stopPropagation() - - var target = document.createElement("div") - target.addEventListener("type", this.step_func(function() { - assert_unreached("") - }), false) - assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true") - assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true") - e.initEvent("type", false, false) - var called = false var target = document.createElement("div") - target.addEventListener("type", this.step_func(function() { - called = true - }), false) - assert_false(called) - assert_equals(target.dispatchEvent(e), true, "dispatchEvent must return true") - assert_true(called) - - this.done() + var called = false + target.addEventListener("type", function() { called = true }, false) + assert_true(target.dispatchEvent(e), "dispatchEvent must return true") + assert_true(called, "Listener must be called") }, "Calling initEvent must unset the stop propagation flag.") +test(function() { + var e = document.createEvent("Event") + e.stopImmediatePropagation() + e.initEvent("type", false, false) + var target = document.createElement("div") + var called = false + target.addEventListener("type", function() { called = true }, false) + assert_true(target.dispatchEvent(e), "dispatchEvent must return true") + assert_true(called, "Listener must be called") +}, "Calling initEvent must unset the stop immediate propagation flag.") + async_test(function() { var e = document.createEvent("Event") e.initEvent("type", false, false) diff --git a/tests/wpt/web-platform-tests/dom/events/Event-propagation.html b/tests/wpt/web-platform-tests/dom/events/Event-propagation.html index c57c7e9b255..6fc9701012b 100644 --- a/tests/wpt/web-platform-tests/dom/events/Event-propagation.html +++ b/tests/wpt/web-platform-tests/dom/events/Event-propagation.html @@ -13,10 +13,11 @@ function testPropagationFlag(ev, expected, desc) { var callback = function() { called = true }; document.head.addEventListener("foo", callback); document.head.dispatchEvent(ev); - // Gecko resets the flags after dispatching; it will happily dispatch + assert_equals(called, expected, "Propagation flag"); + // dispatchEvent resets the propagation flags so it will happily dispatch // the event the second time around. document.head.dispatchEvent(ev); - assert_equals(called, expected, "Propagation flag"); + assert_equals(called, true, "Propagation flag after first dispatch"); document.head.removeEventListener("foo", callback); }, desc); } diff --git a/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent.html b/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent.html index 354441aa03e..1a8bf3de915 100644 --- a/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent.html +++ b/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent.html @@ -17,13 +17,13 @@ test(function() { assert_throws(new TypeError(), function() { document.dispatchEvent(null) }) }, "Calling dispatchEvent(null).") -aliases.forEach(function(alias) { +for (var alias in aliases) { test(function() { - var e = document.createEvent(alias[0]) + var e = document.createEvent(alias) assert_equals(e.type, "", "Event type should be empty string before initialization") assert_throws("InvalidStateError", function() { document.dispatchEvent(e) }) - }, "If the event's initialized flag is not set, an InvalidStateError must be thrown (" + alias [0] + ").") -}) + }, "If the event's initialized flag is not set, an InvalidStateError must be thrown (" + alias + ").") +} var dispatch_dispatch = async_test("If the event's dispatch flag is set, an InvalidStateError must be thrown.") dispatch_dispatch.step(function() { diff --git a/tests/wpt/web-platform-tests/dom/historical.html b/tests/wpt/web-platform-tests/dom/historical.html index 58881affccc..cec30930864 100644 --- a/tests/wpt/web-platform-tests/dom/historical.html +++ b/tests/wpt/web-platform-tests/dom/historical.html @@ -10,7 +10,6 @@ function isInterfaceNuked(name) { }, "Historical DOM features must be removed: " + name) } var nukedInterfaces = [ - "CDATASection", "DOMConfiguration", "DOMError", "DOMErrorHandler", @@ -39,7 +38,6 @@ function isNukedFromDocument(name) { }, "Historical DOM features must be removed: " + name) } var documentNuked = [ - "createCDATASection", "createEntityReference", "xmlEncoding", "xmlStandalone", diff --git a/tests/wpt/web-platform-tests/dom/interfaces.html b/tests/wpt/web-platform-tests/dom/interfaces.html index 407bff8a1b5..529c44cbd4d 100644 --- a/tests/wpt/web-platform-tests/dom/interfaces.html +++ b/tests/wpt/web-platform-tests/dom/interfaces.html @@ -159,7 +159,7 @@ interface HTMLCollection { [Constructor(MutationCallback callback)] interface MutationObserver { - void observe(Node target, MutationObserverInit options); + void observe(Node target, optional MutationObserverInit options); void disconnect(); sequence takeRecords(); }; @@ -196,7 +196,7 @@ interface Node : EventTarget { const unsigned short ELEMENT_NODE = 1; const unsigned short ATTRIBUTE_NODE = 2; // historical const unsigned short TEXT_NODE = 3; - const unsigned short CDATA_SECTION_NODE = 4; // historical + const unsigned short CDATA_SECTION_NODE = 4; const unsigned short ENTITY_REFERENCE_NODE = 5; // historical const unsigned short ENTITY_NODE = 6; // historical const unsigned short PROCESSING_INSTRUCTION_NODE = 7; @@ -272,6 +272,7 @@ interface Document : Node { [NewObject] Element createElementNS(DOMString? namespace, DOMString qualifiedName, optional ElementCreationOptions options); [NewObject] DocumentFragment createDocumentFragment(); [NewObject] Text createTextNode(DOMString data); + [NewObject] CDATASection createCDATASection(DOMString data); [NewObject] Comment createComment(DOMString data); [NewObject] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data); @@ -395,15 +396,12 @@ interface NamedNodeMap { [Exposed=Window] -interface Attr { +interface Attr : Node { readonly attribute DOMString? namespaceURI; readonly attribute DOMString? prefix; readonly attribute DOMString localName; readonly attribute DOMString name; - readonly attribute DOMString nodeName; // historical alias of .name attribute DOMString value; - [TreatNullAs=EmptyString] attribute DOMString nodeValue; // historical alias of .value - [TreatNullAs=EmptyString] attribute DOMString textContent; // historical alias of .value readonly attribute Element? ownerElement; @@ -429,6 +427,10 @@ interface Text : CharacterData { readonly attribute DOMString wholeText; }; +[Exposed=Window] +interface CDATASection : Text { +}; + [Exposed=Window] interface ProcessingInstruction : CharacterData { readonly attribute DOMString target; @@ -527,7 +529,7 @@ callback interface NodeFilter { const unsigned long SHOW_ELEMENT = 0x1; const unsigned long SHOW_ATTRIBUTE = 0x2; // historical const unsigned long SHOW_TEXT = 0x4; - const unsigned long SHOW_CDATA_SECTION = 0x8; // historical + const unsigned long SHOW_CDATA_SECTION = 0x8; const unsigned long SHOW_ENTITY_REFERENCE = 0x10; // historical const unsigned long SHOW_ENTITY = 0x20; // historical const unsigned long SHOW_PROCESSING_INSTRUCTION = 0x40; @@ -545,14 +547,13 @@ interface DOMTokenList { readonly attribute unsigned long length; getter DOMString? item(unsigned long index); boolean contains(DOMString token); - void add(DOMString... tokens); - void remove(DOMString... tokens); - boolean toggle(DOMString token, optional boolean force); - void replace(DOMString token, DOMString newToken); + [CEReactions] void add(DOMString... tokens); + [CEReactions] void remove(DOMString... tokens); + [CEReactions] boolean toggle(DOMString token, optional boolean force); + [CEReactions] void replace(DOMString token, DOMString newToken); boolean supports(DOMString token); - attribute DOMString value; - stringifier; -// iterable; + [CEReactions] stringifier attribute DOMString value; + // iterable; }; + + + diff --git a/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html b/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html index d64bf3640d7..f4b63587126 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html +++ b/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html @@ -15,6 +15,17 @@ var htmlNamespace = "http://www.w3.org/1999/xhtml" var svgNamespace = "http://www.w3.org/2000/svg" var mathMLNamespace = "http://www.w3.org/1998/Math/MathML" +// Make DocumentTypes distinct +function my_format_value(val) { + if (val instanceof DocumentType) { + return "DocumentType node "; + } + return format_value(val); +} + test(function() { var tests = createElementNS_tests.map(function(t) { return [t[0], t[1], null, t[2]] @@ -44,17 +55,17 @@ test(function() { [null, null, document.implementation.createDocumentType("foo", "", ""), null], [null, null, document.doctype, null], // This causes a horrible WebKit bug (now fixed in trunk). [null, null, function() { - var foo = document.implementation.createDocumentType("foo", "", ""); + var foo = document.implementation.createDocumentType("bar", "", ""); document.implementation.createDocument(null, null, foo); return foo; }(), null], // DOCTYPE already associated with a document. [null, null, function() { var bar = document.implementation.createDocument(null, null, null); - return bar.implementation.createDocumentType("bar", "", ""); + return bar.implementation.createDocumentType("baz", "", ""); }(), null], // DOCTYPE created by a different implementation. [null, null, function() { var bar = document.implementation.createDocument(null, null, null); - var magic = bar.implementation.createDocumentType("bar", "", ""); + var magic = bar.implementation.createDocumentType("quz", "", ""); bar.implementation.createDocument(null, null, magic); return magic; }(), null], // DOCTYPE created by a different implementation and already associated with a document. @@ -116,7 +127,7 @@ test(function() { } assert_equals(doc.childNodes.length, !omitRootElement + !!doctype) } - }, "createDocument test " + i + ": " + t.map(function(el) { return format_value(el) })) + }, "createDocument test: " + t.map(my_format_value)) if (expected === null) { test(function() { @@ -130,7 +141,7 @@ test(function() { assert_equals(doc.documentURI, "about:blank") assert_equals(doc.createElement("DIV").localName, "DIV"); }, "createDocument test " + i + ": metadata for " + - [namespace, qualifiedName, doctype].map(function(el) { return format_value(el) })) + [namespace, qualifiedName, doctype].map(my_format_value)) test(function() { var doc = document.implementation.createDocument(namespace, qualifiedName, doctype) @@ -138,7 +149,7 @@ test(function() { assert_equals(doc.charset, "UTF-8", "charset"); assert_equals(doc.inputEncoding, "UTF-8", "inputEncoding"); }, "createDocument test " + i + ": characterSet aliases for " + - [namespace, qualifiedName, doctype].map(function(el) { return format_value(el) })) + [namespace, qualifiedName, doctype].map(my_format_value)) } }) }) diff --git a/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-hasFeature.html b/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-hasFeature.html index 2912051e731..637565a60f4 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-hasFeature.html +++ b/tests/wpt/web-platform-tests/dom/nodes/DOMImplementation-hasFeature.html @@ -8,6 +8,12 @@ diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js b/tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js index 3d206062d3a..edbac646d5a 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js +++ b/tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js @@ -162,17 +162,17 @@ function test_getElementsByTagName(context, element) { test(function() { var t = element.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "test:aÇ")) this.add_cleanup(function() {element.removeChild(t)}) - assert_array_equals(context.getElementsByTagName("AÇ"), [t], "All uppercase input") - assert_array_equals(context.getElementsByTagName("aÇ"), [t], "Ascii lowercase input") - assert_array_equals(context.getElementsByTagName("aç"), [], "All lowercase input") + assert_array_equals(context.getElementsByTagName("TEST:AÇ"), [t], "All uppercase input") + assert_array_equals(context.getElementsByTagName("test:aÇ"), [t], "Ascii lowercase input") + assert_array_equals(context.getElementsByTagName("test:aç"), [], "All lowercase input") }, "Element in HTML namespace, prefix, non-ascii characters in name") test(function() { - var t = element.appendChild(document.createElementNS("test", "test:AÇ")) + var t = element.appendChild(document.createElementNS("test", "TEST:AÇ")) this.add_cleanup(function() {element.removeChild(t)}) - assert_array_equals(context.getElementsByTagName("AÇ"), [t], "All uppercase input") - assert_array_equals(context.getElementsByTagName("aÇ"), [], "Ascii lowercase input") - assert_array_equals(context.getElementsByTagName("aç"), [], "All lowercase input") + assert_array_equals(context.getElementsByTagName("TEST:AÇ"), [t], "All uppercase input") + assert_array_equals(context.getElementsByTagName("test:aÇ"), [], "Ascii lowercase input") + assert_array_equals(context.getElementsByTagName("test:aç"), [], "All lowercase input") }, "Element in non-HTML namespace, prefix, non-ascii characters in name") test(function() { diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.html b/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.html index a13c407e8d3..75005a09e2e 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.html +++ b/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.html @@ -18,7 +18,6 @@ test(function() { [null, null, null], [null, "", "INVALID_CHARACTER_ERR"], [undefined, null, null], - [undefined, undefined, null], [undefined, "", "INVALID_CHARACTER_ERR"], ["http://example.com/", null, null], ["http://example.com/", "", "INVALID_CHARACTER_ERR"], @@ -56,7 +55,7 @@ test(function() { assert_equals(element.nodeName, qualified) assert_equals(element.namespaceURI, namespace === undefined ? null : namespace) } - }, "createElementNS test " + i + ": " + t.map(function(el) { return format_value(el) })) + }, "createElementNS test: " + t.map(format_value)) }) }) diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.js b/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.js index 84888777730..e5d3047ad66 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.js +++ b/tests/wpt/web-platform-tests/dom/nodes/Document-createElementNS.js @@ -9,7 +9,6 @@ var createElementNS_tests = [ [null, "1foo", "INVALID_CHARACTER_ERR"], [null, "f1oo", null], [null, "foo1", null], - [null, "1foo", "INVALID_CHARACTER_ERR"], [null, "\u0300foo", "INVALID_CHARACTER_ERR"], [null, "}foo", "INVALID_CHARACTER_ERR"], [null, "f}oo", "INVALID_CHARACTER_ERR"], @@ -66,7 +65,6 @@ var createElementNS_tests = [ ["http://example.com/", "ns0:test", null], ["http://example.com/", "a.b:c", null], ["http://example.com/", "a-b:c", null], - ["http://example.com/", "a-b:c", null], ["http://example.com/", "xml", null], ["http://example.com/", "xmlns", "NAMESPACE_ERR"], ["http://example.com/", "XMLNS", null], diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml b/tests/wpt/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml index 2ae90748c2f..309a29ae772 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml +++ b/tests/wpt/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml @@ -71,17 +71,17 @@ test(function() { test(function() { var t = document.body.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "test:aÇ")) this.add_cleanup(function() {document.body.removeChild(t)}) - assert_array_equals(document.getElementsByTagName("AÇ"), [], "All uppercase input") - assert_array_equals(document.getElementsByTagName("aÇ"), [t], "Ascii lowercase input") - assert_array_equals(document.getElementsByTagName("aç"), [], "All lowercase input") + assert_array_equals(document.getElementsByTagName("TEST:AÇ"), [], "All uppercase input") + assert_array_equals(document.getElementsByTagName("test:aÇ"), [t], "Ascii lowercase input") + assert_array_equals(document.getElementsByTagName("test:aç"), [], "All lowercase input") }, "Element in HTML namespace, prefix, non-ascii characters in name") test(function() { - var t = document.body.appendChild(document.createElementNS("test", "test:AÇ")) + var t = document.body.appendChild(document.createElementNS("test", "TEST:AÇ")) this.add_cleanup(function() {document.body.removeChild(t)}) - assert_array_equals(document.getElementsByTagName("AÇ"), [t], "All uppercase input") - assert_array_equals(document.getElementsByTagName("aÇ"), [], "Ascii lowercase input") - assert_array_equals(document.getElementsByTagName("aç"), [], "All lowercase input") + assert_array_equals(document.getElementsByTagName("TEST:AÇ"), [t], "All uppercase input") + assert_array_equals(document.getElementsByTagName("test:aÇ"), [], "Ascii lowercase input") + assert_array_equals(document.getElementsByTagName("test:aç"), [], "All lowercase input") }, "Element in non-HTML namespace, prefix, non-ascii characters in name") test(function() { diff --git a/tests/wpt/web-platform-tests/dom/nodes/Node-childNodes.html b/tests/wpt/web-platform-tests/dom/nodes/Node-childNodes.html index d08dd2e1fa5..8bd1f250e47 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Node-childNodes.html +++ b/tests/wpt/web-platform-tests/dom/nodes/Node-childNodes.html @@ -45,4 +45,53 @@ test(function() { test(function() { check_parent_node(new Document()); }, "Node.childNodes on a Document."); + +test(function() { + var node = document.createElement("div"); + var kid1 = document.createElement("p"); + var kid2 = document.createTextNode("hey"); + var kid3 = document.createElement("span"); + node.appendChild(kid1); + node.appendChild(kid2); + node.appendChild(kid3); + + var list = node.childNodes; + assert_array_equals([...list], [kid1, kid2, kid3]); + + var keys = list.keys(); + assert_false(keys instanceof Array); + keys = [...keys]; + assert_array_equals(keys, [0, 1, 2]); + + var values = list.values(); + assert_false(values instanceof Array); + values = [...values]; + assert_array_equals(values, [kid1, kid2, kid3]); + + var entries = list.entries(); + assert_false(entries instanceof Array); + entries = [...entries]; + assert_equals(entries.length, keys.length); + assert_equals(entries.length, values.length); + for (var i = 0; i < entries.length; ++i) { + assert_array_equals(entries[i], [keys[i], values[i]]); + } + + var cur = 0; + var thisObj = {}; + list.forEach(function(value, key, listObj) { + assert_equals(listObj, list); + assert_equals(this, thisObj); + assert_equals(value, values[cur]); + assert_equals(key, keys[cur]); + cur++; + }, thisObj); + assert_equals(cur, entries.length); + + assert_equals(list[Symbol.iterator], Array.prototype[Symbol.iterator]); + assert_equals(list.keys, Array.prototype.keys); + assert_equals(list.values, Array.prototype.values); + assert_equals(list.entries, Array.prototype.entries); + assert_equals(list.forEach, Array.prototype.forEach); +}, "Iterator behavior of Node.childNodes"); diff --git a/tests/wpt/web-platform-tests/dom/nodes/Node-properties.html b/tests/wpt/web-platform-tests/dom/nodes/Node-properties.html index 83723ae1ed3..10f92e7d7e8 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/Node-properties.html +++ b/tests/wpt/web-platform-tests/dom/nodes/Node-properties.html @@ -226,7 +226,7 @@ var expected = { textContent: "do re mi fa so la ti", // Element - namespaceURI: "http://www.w3.org/1999/xhtml", + namespaceURI: null, prefix: null, localName: "igiveuponcreativenames", tagName: "igiveuponcreativenames", @@ -246,7 +246,7 @@ var expected = { textContent: "", // Element - namespaceURI: "http://www.w3.org/1999/xhtml", + namespaceURI: null, prefix: null, localName: "everyone-hates-hyphenated-element-names", tagName: "everyone-hates-hyphenated-element-names", diff --git a/tests/wpt/web-platform-tests/dom/nodes/attributes.html b/tests/wpt/web-platform-tests/dom/nodes/attributes.html index 0f324ba42a1..8d983350df9 100644 --- a/tests/wpt/web-platform-tests/dom/nodes/attributes.html +++ b/tests/wpt/web-platform-tests/dom/nodes/attributes.html @@ -20,23 +20,6 @@ var XML = "http://www.w3.org/XML/1998/namespace" var XMLNS = "http://www.w3.org/2000/xmlns/" -// AttrExodus -test(function() { - document.body.setAttribute("abc", "pass") - var attr = document.body.attributes[0] - assert_true(attr instanceof Attr, "should be an Attr") - assert_false(attr instanceof Node, "should not be a Node") - var removed_members = [ - "appendChild", - "insertBefore", - "childNodes", - ] - removed_members.forEach(function(m) { - assert_false(m in attr, m + " should not be supported") - }) - assert_equals(attr.value, "pass") -}, "AttrExodus") - // setAttribute exhaustive tests // Step 1 test(function() { diff --git a/tests/wpt/web-platform-tests/dom/ranges/Range-mutations.html b/tests/wpt/web-platform-tests/dom/ranges/Range-mutations.html index ade44bb989b..ef99ca2ef04 100644 --- a/tests/wpt/web-platform-tests/dom/ranges/Range-mutations.html +++ b/tests/wpt/web-platform-tests/dom/ranges/Range-mutations.html @@ -86,12 +86,14 @@ function doTests(sourceTests, descFn, testFn) { ]); tests.push([ descFn(params) + ", with selected " + describeRange(params[len - 4], params[len - 3], params[len - 2], params[len - 1]), - function(params) { return function() { - var evaledParams = params.map(eval); + function(params) { return function(selectedRange) { + var evaledParams = params.slice(0, len - 4).map(eval); for (var i = 0; i < evaledParams.length; i++) { assert_true(typeof evaledParams[i] != "undefined", "Test bug: " + params[i] + " is undefined"); } + // Override input range with the one that was actually selected when computing the expected result. + evaledParams = evaledParams.concat([selectedRange.startContainer, selectedRange.startOffset, selectedRange.endContainer, selectedRange.endOffset]); return testFn.apply(null, evaledParams); } }(params), true, @@ -133,26 +135,16 @@ function doTest(callback, useSelection, startContainer, startOffset, endContaine getSelection().removeAllRanges(); getSelection().addRange(range); - assert_equals(getSelection().rangeCount, 1, - "Sanity check: selection must have exactly one range after adding the range"); - assert_equals(getSelection().getRangeAt(0), range, - "Sanity check: selection's range must initially be the same as the range we added"); - assert_equals(range.startContainer, startContainer, - "Sanity check: range's startContainer must initially be the one we set"); - assert_equals(range.endContainer, endContainer, - "Sanity check: range's endContainer must initially be the one we set"); - assert_equals(range.startOffset, startOffset, - "Sanity check: range's startOffset must initially be the one we set"); - assert_equals(range.endOffset, endOffset, - "Sanity check: range's endOffset must initially be the one we set"); + // Some browsers refuse to add a range unless it results in an actual visible selection. + if (!getSelection().rangeCount) + return; + + // Override range with the one that was actually selected as it differs in some browsers. + range = getSelection().getRangeAt(0); } - var expected = callback(); + var expected = callback(range); - if (useSelection) { - assert_equals(getSelection().getRangeAt(0), range, - "The range we added must not be removed from the selection"); - } assert_equals(range.startContainer, expected[0], "Wrong start container"); assert_equals(range.startOffset, expected[1], diff --git a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html index fc53b22c3a1..1446f40f68d 100644 --- a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html +++ b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html @@ -1,7 +1,7 @@ TreeWalker: acceptNode-filter diff --git a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-basic.html b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-basic.html index 21ab6d62f53..d1147637b13 100644 --- a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-basic.html +++ b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-basic.html @@ -1,7 +1,7 @@ TreeWalker: Basic test diff --git a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-currentNode.html b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-currentNode.html index c512051aef5..8a09940b1e7 100644 --- a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-currentNode.html +++ b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-currentNode.html @@ -1,7 +1,7 @@ TreeWalker: currentNode diff --git a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject.html b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject.html index 513476f3d13..236ab803c59 100644 --- a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject.html +++ b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject.html @@ -1,7 +1,7 @@ TreeWalker: previousNodeLastChildReject diff --git a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html index d582bf16d6e..17da4d56971 100644 --- a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html +++ b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html @@ -1,7 +1,7 @@ TreeWalker: previousSiblingLastChildSkip diff --git a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-reject.html b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-reject.html index f5b2e8ea833..273b33236f9 100644 --- a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-reject.html +++ b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-reject.html @@ -1,7 +1,7 @@ TreeWalker: traversal-reject diff --git a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most.html b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most.html index a0c16fd08df..567ef665569 100644 --- a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most.html +++ b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most.html @@ -1,7 +1,7 @@ TreeWalker: traversal-skip-most diff --git a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-skip.html b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-skip.html index 4032bde13b2..0e3b81a274f 100644 --- a/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-skip.html +++ b/tests/wpt/web-platform-tests/dom/traversal/TreeWalker-traversal-skip.html @@ -1,7 +1,7 @@ TreeWalker: traversal-skip diff --git a/tests/wpt/web-platform-tests/domparsing/DOMParser-parseFromString-xml-doctype.html b/tests/wpt/web-platform-tests/domparsing/DOMParser-parseFromString-xml-doctype.html new file mode 100644 index 00000000000..cd655acf930 --- /dev/null +++ b/tests/wpt/web-platform-tests/domparsing/DOMParser-parseFromString-xml-doctype.html @@ -0,0 +1,27 @@ + + +HTML entities for various XHTML Doctype variants + + + +
    + diff --git a/tests/wpt/web-platform-tests/domparsing/innerhtml-02.html b/tests/wpt/web-platform-tests/domparsing/innerhtml-02.html new file mode 100644 index 00000000000..e80c886b6c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/domparsing/innerhtml-02.html @@ -0,0 +1,126 @@ + +innerHTML in HTML + + + + +
    + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/domparsing/insert_adjacent_html.xhtml b/tests/wpt/web-platform-tests/domparsing/insert_adjacent_html-xhtml.xhtml similarity index 100% rename from tests/wpt/web-platform-tests/domparsing/insert_adjacent_html.xhtml rename to tests/wpt/web-platform-tests/domparsing/insert_adjacent_html-xhtml.xhtml diff --git a/tests/wpt/web-platform-tests/domparsing/style_attribute_html.html b/tests/wpt/web-platform-tests/domparsing/style_attribute_html.html new file mode 100644 index 00000000000..f7f057d2d86 --- /dev/null +++ b/tests/wpt/web-platform-tests/domparsing/style_attribute_html.html @@ -0,0 +1,52 @@ + + +Style attribute in HTML + + + diff --git a/tests/wpt/web-platform-tests/editing/README b/tests/wpt/web-platform-tests/editing/README index 3d95bec1485..945ce83a00b 100644 --- a/tests/wpt/web-platform-tests/editing/README +++ b/tests/wpt/web-platform-tests/editing/README @@ -1,9 +1,14 @@ -This suite tests conformance to the editing spec written long ago by Aryeh -Gregor. Nobody actually implements the spec, but the tests are still useful -for regression testing. The files in data/ were generated from a JavaScript -implementation of the specification using a complex procedure that can't -actually be replicated right now as-is. Editing them manually is possible, but -they're not really meant to be human-readable. If anyone is interested, it -would be possible for Aryeh to get the test generation procedure working again. -Or you could look into the repository history and figure out how to do it -yourself, if you're brave. +Most of this directory tests conformance to the editing spec written long ago +by Aryeh Gregor. Nobody actually implements the spec, but the tests are still +useful for regression testing. The files in data/ were generated from a +JavaScript implementation of the specification using a complex procedure that +can't actually be replicated right now as-is. Editing them manually is +possible, but they're not really meant to be human-readable. If anyone is +interested, it would be possible for Aryeh to get the test generation procedure +working again. Or you could look into the repository history and figure out +how to do it yourself, if you're brave. + +There is also a directory other/ that contains additional editor-related tests. +They aren't necessarily based on any specification, but try to specify sensible +behavior, and are meant to be helpful with regression testing for existing +implementations and finding bugs in new implementations. diff --git a/tests/wpt/web-platform-tests/editing/data/delete.js b/tests/wpt/web-platform-tests/editing/data/delete.js index 0ee5805d49f..bfea9283142 100644 --- a/tests/wpt/web-platform-tests/editing/data/delete.js +++ b/tests/wpt/web-platform-tests/editing/data/delete.js @@ -73,7 +73,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["delete",""]], "

    foo{}bar

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"delete":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"delete":[false,false,"",false,false,""]}], ["

    foo

    []bar

    ", [["defaultparagraphseparator","p"],["delete",""]], "

    foo{}bar

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/formatblock.js b/tests/wpt/web-platform-tests/editing/data/formatblock.js index c478dba243b..39c20e2680a 100644 --- a/tests/wpt/web-platform-tests/editing/data/formatblock.js +++ b/tests/wpt/web-platform-tests/editing/data/formatblock.js @@ -3,7 +3,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["formatblock","
    "]], "
    foo[]bar

    extra

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"formatblock":[false,false,"",false,false,"div"]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"formatblock":[false,false,"",false,false,"div"]}], ["foo[]bar

    extra", [["defaultparagraphseparator","p"],["formatblock","

    "]], "
    foo[]bar

    extra

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js index abfc488aeee..66cf6cf3378 100644 --- a/tests/wpt/web-platform-tests/editing/data/forwarddelete.js +++ b/tests/wpt/web-platform-tests/editing/data/forwarddelete.js @@ -88,7 +88,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["forwarddelete",""]], "

    foo{}bar

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"forwarddelete":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"forwarddelete":[false,false,"",false,false,""]}], ["

    foo[]

    bar

    ", [["defaultparagraphseparator","p"],["forwarddelete",""]], "

    foo{}bar

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/inserthorizontalrule.js b/tests/wpt/web-platform-tests/editing/data/inserthorizontalrule.js index f79ae5058a3..6f0cdba33c1 100644 --- a/tests/wpt/web-platform-tests/editing/data/inserthorizontalrule.js +++ b/tests/wpt/web-platform-tests/editing/data/inserthorizontalrule.js @@ -103,7 +103,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["inserthorizontalrule",""]], "

    foo


    {}

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"inserthorizontalrule":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"inserthorizontalrule":[false,false,"",false,false,""]}], ["

    foo

    [bar]

    baz", [["defaultparagraphseparator","p"],["inserthorizontalrule",""]], "

    foo


    {}

    baz

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/inserthtml.js b/tests/wpt/web-platform-tests/editing/data/inserthtml.js index f790fc2e857..78581bf533d 100644 --- a/tests/wpt/web-platform-tests/editing/data/inserthtml.js +++ b/tests/wpt/web-platform-tests/editing/data/inserthtml.js @@ -138,7 +138,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["inserthtml","

    abc"]], "

    foo

    abc

    {}

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"inserthtml":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"inserthtml":[false,false,"",false,false,""]}], ["

    foo[bar]baz", [["defaultparagraphseparator","p"],["inserthtml","

    abc"]], "

    foo

    abc

    {}

    baz

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/insertimage.js b/tests/wpt/web-platform-tests/editing/data/insertimage.js index 4478cd12a27..d1874e65212 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertimage.js +++ b/tests/wpt/web-platform-tests/editing/data/insertimage.js @@ -128,7 +128,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertimage","/img/lion.svg"]], "

    foo

    {}

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertimage":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertimage":[false,false,"",false,false,""]}], ["

    foo

    {

    bar

    }

    baz

    ", [["defaultparagraphseparator","p"],["insertimage","/img/lion.svg"]], "

    foo

    {}

    baz

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/insertlinebreak.js b/tests/wpt/web-platform-tests/editing/data/insertlinebreak.js index 635ddd14dc4..2793cbb1c5f 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertlinebreak.js +++ b/tests/wpt/web-platform-tests/editing/data/insertlinebreak.js @@ -333,7 +333,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertlinebreak",""]], "

    foo
    {}quz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertlinebreak":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertlinebreak":[false,false,"",false,false,""]}], ["

    foo[bar

    baz]quz

    ", [["defaultparagraphseparator","p"],["insertlinebreak",""]], "

    foo
    {}quz

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js b/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js index cf9d148771b..76bda2d4bab 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js +++ b/tests/wpt/web-platform-tests/editing/data/insertorderedlist.js @@ -73,7 +73,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertorderedlist",""]], "

    foo

    1. [bar]

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertorderedlist":[false,false,"",false,true,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertorderedlist":[false,false,"",false,true,""]}], ["

    foo

    [bar]

    baz", [["defaultparagraphseparator","p"],["insertorderedlist",""]], "

    foo

    1. [bar]

    baz

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/insertparagraph.js b/tests/wpt/web-platform-tests/editing/data/insertparagraph.js index fb55da65dc2..a9a3be4e703 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertparagraph.js +++ b/tests/wpt/web-platform-tests/editing/data/insertparagraph.js @@ -3,7 +3,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertparagraph",""]], "
    foo
    {}baz
    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertparagraph":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertparagraph":[false,false,"",false,false,""]}], ["foo[bar]baz", [["defaultparagraphseparator","p"],["insertparagraph",""]], "

    foo

    {}baz

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/inserttext.js b/tests/wpt/web-platform-tests/editing/data/inserttext.js index 02f1c7966a8..8d4e31c17a2 100644 --- a/tests/wpt/web-platform-tests/editing/data/inserttext.js +++ b/tests/wpt/web-platform-tests/editing/data/inserttext.js @@ -23,7 +23,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["inserttext","\n"]], "
    foo
    {}bar
    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"inserttext":[false,false,"",false,false,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"inserttext":[false,false,"",false,false,""]}], ["foo[]bar", [["defaultparagraphseparator","p"],["inserttext","\n"]], "

    foo

    {}bar

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js b/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js index 763ac62b505..ad4a7236fae 100644 --- a/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js +++ b/tests/wpt/web-platform-tests/editing/data/insertunorderedlist.js @@ -73,7 +73,7 @@ var browserTests = [ [["defaultparagraphseparator","div"],["insertunorderedlist",""]], "

    foo

    • [bar]

    baz

    ", [true,true], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"],"insertunorderedlist":[false,false,"",false,true,""]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"],"insertunorderedlist":[false,false,"",false,true,""]}], ["

    foo

    [bar]

    baz", [["defaultparagraphseparator","p"],["insertunorderedlist",""]], "

    foo

    • [bar]

    baz

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/justifycenter.js b/tests/wpt/web-platform-tests/editing/data/justifycenter.js index 82049f1bb16..76491ee44c5 100644 --- a/tests/wpt/web-platform-tests/editing/data/justifycenter.js +++ b/tests/wpt/web-platform-tests/editing/data/justifycenter.js @@ -3,7 +3,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["justifycenter",""]], "
    foo[]bar

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"justifycenter":[false,false,"left",false,true,"center"]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"justifycenter":[false,false,"left",false,true,"center"]}], ["foo[]bar

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["justifycenter",""]], "

    foo[]bar

    extra

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/justifyfull.js b/tests/wpt/web-platform-tests/editing/data/justifyfull.js index d52cbae570e..c8beca840cf 100644 --- a/tests/wpt/web-platform-tests/editing/data/justifyfull.js +++ b/tests/wpt/web-platform-tests/editing/data/justifyfull.js @@ -3,7 +3,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["justifyfull",""]], "
    foo[]bar

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"justifyfull":[false,false,"left",false,true,"justify"]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"justifyfull":[false,false,"left",false,true,"justify"]}], ["foo[]bar

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["justifyfull",""]], "

    foo[]bar

    extra

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/justifyleft.js b/tests/wpt/web-platform-tests/editing/data/justifyleft.js index 74a2bb09629..c08033744be 100644 --- a/tests/wpt/web-platform-tests/editing/data/justifyleft.js +++ b/tests/wpt/web-platform-tests/editing/data/justifyleft.js @@ -53,7 +53,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["justifyleft",""]], "

    [foo]

    bar

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"justifyleft":[false,false,"center",false,true,"left"]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"justifyleft":[false,false,"center",false,true,"left"]}], ["

    [foo]

    bar

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["justifyleft",""]], "

    [foo]

    bar

    extra

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/justifyright.js b/tests/wpt/web-platform-tests/editing/data/justifyright.js index fdb8f4a1d00..595f7376eee 100644 --- a/tests/wpt/web-platform-tests/editing/data/justifyright.js +++ b/tests/wpt/web-platform-tests/editing/data/justifyright.js @@ -3,7 +3,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["justifyright",""]], "
    foo[]bar

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"justifyright":[false,false,"left",false,true,"right"]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"justifyright":[false,false,"left",false,true,"right"]}], ["foo[]bar

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["justifyright",""]], "

    foo[]bar

    extra

    ", diff --git a/tests/wpt/web-platform-tests/editing/data/misc.js b/tests/wpt/web-platform-tests/editing/data/misc.js index aab6d5f0aa8..490b595377a 100644 --- a/tests/wpt/web-platform-tests/editing/data/misc.js +++ b/tests/wpt/web-platform-tests/editing/data/misc.js @@ -3,7 +3,7 @@ var browserTests = [ [["defaultparagraphseparator",""]], "foo[bar]baz", [false], - {"defaultparagraphseparator":[false,false,"p",false,false,"div"]}], + {"defaultparagraphseparator":[false,false,"div",false,false,"div"]}], ["foo[bar]baz", [["defaultparagraphseparator","div"]], "foo[bar]baz", diff --git a/tests/wpt/web-platform-tests/editing/data/outdent.js b/tests/wpt/web-platform-tests/editing/data/outdent.js index 548a150c937..18d48d0cb98 100644 --- a/tests/wpt/web-platform-tests/editing/data/outdent.js +++ b/tests/wpt/web-platform-tests/editing/data/outdent.js @@ -83,7 +83,7 @@ var browserTests = [ [["stylewithcss","true"],["defaultparagraphseparator","div"],["outdent",""]], "

    foo[bar]

    baz

    extra

    ", [true,true,true], - {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"p",false,false,"div"],"outdent":[false,false,"",false,false,""]}], + {"stylewithcss":[false,false,"",false,true,""],"defaultparagraphseparator":[false,false,"div",false,false,"div"],"outdent":[false,false,"",false,false,""]}], ["

    foo[bar]

    baz

    extra", [["stylewithcss","false"],["defaultparagraphseparator","div"],["outdent",""]], "

    foo[bar]

    baz

    extra

    ", diff --git a/tests/wpt/web-platform-tests/editing/event.html b/tests/wpt/web-platform-tests/editing/event.html index 74f8d1fff90..16d640be218 100644 --- a/tests/wpt/web-platform-tests/editing/event.html +++ b/tests/wpt/web-platform-tests/editing/event.html @@ -97,13 +97,6 @@ var tests = [ }, target: function() { return div.firstChild }, finalTarget: function() { return div.lastChild }, - beforeInputAction: function() { - getSelection().removeAllRanges(); - var range = document.createRange(); - range.setStart(div.querySelector("div + div").firstChild, 0); - range.setEnd(div.querySelector("div + div").firstChild, 3); - getSelection().addRange(range); - }, command: "bold", value: "", }, @@ -168,121 +161,62 @@ Object.keys(commandTests).forEach(function(command) { }); tests.forEach(function(obj) { - [true, false].forEach(function(cancel) { - // Kill all event handlers first - var newDiv = div.cloneNode(false); - div.parentNode.insertBefore(newDiv, div); - div.parentNode.removeChild(div); - div = newDiv; + // Kill all event handlers first + var newDiv = div.cloneNode(false); + div.parentNode.insertBefore(newDiv, div); + div.parentNode.removeChild(div); + div = newDiv; - div.innerHTML = obj.html; + div.innerHTML = obj.html; - var originalContents = div.cloneNode(true); + var originalContents = div.cloneNode(true); - getSelection().removeAllRanges(); - var range = document.createRange(); - obj.initRange(range); - getSelection().addRange(range); + getSelection().removeAllRanges(); + var range = document.createRange(); + obj.initRange(range); + getSelection().addRange(range); - var target = obj.target(); - var finalTarget = "finalTarget" in obj ? obj.finalTarget() : target; - var command = obj.command; - var value = obj.value; + var target = obj.target(); + var finalTarget = "finalTarget" in obj ? obj.finalTarget() : target; + var command = obj.command; + var value = obj.value; - var beforeInputEvents = []; - var inputEvents = []; - div.addEventListener("beforeinput", function(e) { - var copied = copyEvent(e); - copied.inputEventsLength = inputEvents.length; - beforeInputEvents.push(copied); - if (cancel) { - e.preventDefault(); - } - if ("beforeInputAction" in obj) { - obj.beforeInputAction(); - } - }); - div.addEventListener("input", function(e) { inputEvents.push(copyEvent(e)) }); + var inputEvents = []; + div.addEventListener("input", function(e) { inputEvents.push(copyEvent(e)) }); - // Uncomment this code instead of the execCommand() to make all the - // tests pass, as a sanity check - //var e = new Event("beforeinput", {bubbles: true, cancelable: true}); - //e.command = command; - //e.value = value; - //var ret = target ? target.dispatchEvent(e) : false; - //if (ret) { - // var e = new Event("input", {bubbles: true}); - // e.command = command; - // e.value = value; - // finalTarget.dispatchEvent(e); - //} + var exception = null; + try { + document.execCommand(command, false, value); + } catch(e) { + exception = e; + } - var exception = null; - try { - document.execCommand(command, false, value); - } catch(e) { - exception = e; - } + test(function() { + assert_equals(exception, null, "Unexpected exception"); + }, obj.name + ": execCommand() must not throw"); - test(function() { - assert_equals(exception, null, "Unexpected exception"); - }, obj.name + ": execCommand() must not throw, " - + (cancel ? "canceled" : "uncanceled")); - - test(function() { - assert_equals(beforeInputEvents.length, target ? 1 : 0, - "number of beforeinput events fired"); - if (beforeInputEvents.length == 0) { - assert_equals(inputEvents.length, 0, "number of input events fired"); - return; - } - var e = beforeInputEvents[0]; - assert_equals(e.inputEventsLength, 0, "number of input events fired"); - assert_equals(e.type, "beforeinput", "event.type"); - assert_equals(e.target, target, "event.target"); - assert_equals(e.currentTarget, div, "event.currentTarget"); - assert_equals(e.eventPhase, Event.BUBBLING_PHASE, "event.eventPhase"); - assert_equals(e.bubbles, true, "event.bubbles"); - assert_equals(e.cancelable, true, "event.cancelable"); - assert_equals(e.defaultPrevented, false, "event.defaultPrevented"); - assert_equals(e.command, command, "e.command"); - assert_equals(e.value, value, "e.value"); - assert_own_property(window, "EditingBeforeInputEvent", - "window.EditingBeforeInputEvent must exist"); - assert_equals(Object.getPrototypeOf(e.original), - EditingBeforeInputEvent.prototype, - "event prototype"); + test(function() { + assert_equals(inputEvents.length, target ? 1 : 0, + "number of input events fired"); + if (!target) { assert_true(originalContents.isEqualNode(div), - "div contents not yet changed"); - assert_equals(e.isTrusted, true, "event.isTrusted"); - }, obj.name + ": beforeinput event, " + (cancel ? "canceled" : "uncanceled")); - - test(function() { - assert_equals(inputEvents.length, target && !cancel ? 1 : 0, - "number of input events fired"); - if (!target || cancel) { - assert_true(originalContents.isEqualNode(div), - "div contents must not be changed"); - return; - } - var e = inputEvents[0]; - assert_equals(e.type, "input", "event.type"); - assert_equals(e.target, finalTarget, "event.target"); - assert_equals(e.currentTarget, div, "event.currentTarget"); - assert_equals(e.eventPhase, Event.BUBBLING_PHASE, "event.eventPhase"); - assert_equals(e.bubbles, true, "event.bubbles"); - assert_equals(e.cancelable, false, "event.cancelable"); - assert_equals(e.defaultPrevented, false, "event.defaultPrevented"); - assert_equals(e.command, command, "e.command"); - assert_equals(e.value, value, "e.value"); - assert_own_property(window, "EditingInputEvent", - "window.EditingInputEvent must exist"); - assert_equals(Object.getPrototypeOf(e.original), - EditingInputEvent.prototype, - "event prototype"); - assert_equals(e.isTrusted, true, "event.isTrusted"); - }, obj.name + ": input event, " + (cancel ? "canceled" : "uncanceled")); - }); + "div contents must not be changed"); + return; + } + var e = inputEvents[0]; + assert_equals(e.type, "input", "event.type"); + assert_equals(e.target, finalTarget, "event.target"); + assert_equals(e.currentTarget, div, "event.currentTarget"); + assert_equals(e.eventPhase, Event.BUBBLING_PHASE, "event.eventPhase"); + assert_equals(e.bubbles, true, "event.bubbles"); + assert_equals(e.cancelable, false, "event.cancelable"); + assert_equals(e.defaultPrevented, false, "event.defaultPrevented"); + assert_own_property(window, "InputEvent", + "window.InputEvent must exist"); + assert_equals(Object.getPrototypeOf(e.original), InputEvent.prototype, + "event prototype"); + assert_equals(e.isTrusted, true, "event.isTrusted"); + }, obj.name + ": input event"); }); // Thanks, Gecko. diff --git a/tests/wpt/web-platform-tests/editing/include/implementation.js b/tests/wpt/web-platform-tests/editing/include/implementation.js index b64e9306005..44a7afd82d2 100644 --- a/tests/wpt/web-platform-tests/editing/include/implementation.js +++ b/tests/wpt/web-platform-tests/editing/include/implementation.js @@ -4,7 +4,7 @@ var htmlNamespace = "http://www.w3.org/1999/xhtml"; var cssStylingFlag = false; -var defaultSingleLineContainerName = "p"; +var defaultSingleLineContainerName = "div"; // This is bad :( var globalRange = null; diff --git a/tests/wpt/web-platform-tests/editing/include/tests.js b/tests/wpt/web-platform-tests/editing/include/tests.js index a2a96d979f0..740cbce6854 100644 --- a/tests/wpt/web-platform-tests/editing/include/tests.js +++ b/tests/wpt/web-platform-tests/editing/include/tests.js @@ -4639,7 +4639,7 @@ var defaultValues = { inserthtml: "abcd", insertimage: "/img/lion.svg", inserttext: "a", - defaultparagraphseparator: "p", + defaultparagraphseparator: "div", stylewithcss: "true", usecss: "true", }; diff --git a/tests/wpt/web-platform-tests/editing/other/delete.html b/tests/wpt/web-platform-tests/editing/other/delete.html new file mode 100644 index 00000000000..b9bd1437e37 --- /dev/null +++ b/tests/wpt/web-platform-tests/editing/other/delete.html @@ -0,0 +1,149 @@ + + +Deletion tests + + +
    + diff --git a/tests/wpt/web-platform-tests/encrypted-media/EncryptedMediaExtensions.idl b/tests/wpt/web-platform-tests/encrypted-media/EncryptedMediaExtensions.idl new file mode 100644 index 00000000000..107dffeba86 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/EncryptedMediaExtensions.idl @@ -0,0 +1,118 @@ +// Encrypted Media Extensions WebIDL +// +// NOTE: Please update the link below to the specification version from +// which this IDL was extracted. +// +// https://www.w3.org/TR/2016/WD-encrypted-media-20160610/ +// + +partial interface Navigator { + Promise requestMediaKeySystemAccess (DOMString keySystem, sequence supportedConfigurations); +}; + +enum MediaKeysRequirement { + "required", + "optional", + "not-allowed" +}; + +dictionary MediaKeySystemConfiguration { + DOMString label = ""; + sequence initDataTypes = []; + sequence audioCapabilities = []; + sequence videoCapabilities = []; + MediaKeysRequirement distinctiveIdentifier = "optional"; + MediaKeysRequirement persistentState = "optional"; + sequence sessionTypes; +}; + +dictionary MediaKeySystemMediaCapability { + DOMString contentType = ""; + DOMString robustness = ""; +}; + +interface MediaKeySystemAccess { + readonly attribute DOMString keySystem; + MediaKeySystemConfiguration getConfiguration (); + Promise createMediaKeys (); +}; + +enum MediaKeySessionType { + "temporary", + "persistent-usage-record", + "persistent-license" +}; + +interface MediaKeys { + MediaKeySession createSession (optional MediaKeySessionType sessionType = "temporary"); + Promise setServerCertificate (BufferSource serverCertificate); +}; + +interface MediaKeySession : EventTarget { + readonly attribute DOMString sessionId; + readonly attribute unrestricted double expiration; + readonly attribute Promise closed; + readonly attribute MediaKeyStatusMap keyStatuses; + attribute EventHandler onkeystatuseschange; + attribute EventHandler onmessage; + Promise generateRequest (DOMString initDataType, BufferSource initData); + Promise load (DOMString sessionId); + Promise update (BufferSource response); + Promise close (); + Promise remove (); +}; + +interface MediaKeyStatusMap { + iterable; + readonly attribute unsigned long size; + boolean has (BufferSource keyId); + any get (BufferSource keyId); +}; + +enum MediaKeyStatus { + "usable", + "expired", + "released", + "output-restricted", + "output-downscaled", + "status-pending", + "internal-error" +}; + +enum MediaKeyMessageType { + "license-request", + "license-renewal", + "license-release", + "individualization-request" +}; + +[ Constructor (DOMString type, optional MediaKeyMessageEventInit eventInitDict)] +interface MediaKeyMessageEvent : Event { + readonly attribute MediaKeyMessageType messageType; + readonly attribute ArrayBuffer message; +}; + +dictionary MediaKeyMessageEventInit : EventInit { + MediaKeyMessageType messageType = "license-request"; + ArrayBuffer message; +}; + +// partial interface HTMLMediaElement : EventTarget { +partial interface HTMLMediaElement { + readonly attribute MediaKeys? mediaKeys; + attribute EventHandler onencrypted; + attribute EventHandler onwaitingforkey; + Promise setMediaKeys (MediaKeys? mediaKeys); +}; + +[ Constructor (DOMString type, optional MediaEncryptedEventInit eventInitDict)] +interface MediaEncryptedEvent : Event { + readonly attribute DOMString initDataType; + readonly attribute ArrayBuffer? initData; +}; + +dictionary MediaEncryptedEventInit : EventInit { + DOMString initDataType = ""; + ArrayBuffer? initData = null; +}; + diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-async-creation-with-gc.html b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-creation-with-gc.html similarity index 77% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-async-creation-with-gc.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-creation-with-gc.html index e171b0dcad7..4dd705f9f4c 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-async-creation-with-gc.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-creation-with-gc.html @@ -4,8 +4,11 @@ Test asynchronous creation of MediaKeys and MediaKeySession while running garbage collection - - +
    @@ -18,11 +21,9 @@ var initDataType; var initData; var mediaKeySession; - getSupportedInitDataType().then(function(type) { - initDataType = type; + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { mediaKeySession = mediaKeys.createSession(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-async-setcert-with-gc.html b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-setcert-with-gc.html similarity index 79% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-async-setcert-with-gc.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-setcert-with-gc.html index 7a963807b65..4da562894d6 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-async-setcert-with-gc.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-setcert-with-gc.html @@ -4,8 +4,11 @@ Test asynchronous setServerCertificate while running garbage collection - - +
    @@ -15,7 +18,7 @@ promise_test(function(test) { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { var cert = new Uint8Array(200); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeys-with-session.html b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys-with-session.html similarity index 91% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeys-with-session.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys-with-session.html index 95395bf7adf..a892b969c49 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeys-with-session.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys-with-session.html @@ -4,8 +4,11 @@ Test MediaKeys lifetime when adding a session - - +
    @@ -32,12 +35,9 @@ } // Create a MediaKeys object with a session. - getSupportedInitDataType().then(function(type) { - initDataType = type; + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - assert_equals(access.keySystem, 'org.w3.clearkey'); return access.createMediaKeys(); }).then(function(result) { mediaKeys = result; diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys.html similarity index 87% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeys.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys.html index 0274c46a40b..b8e79ac8bbb 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys.html @@ -4,8 +4,11 @@ Test MediaKeys lifetime - - +
    @@ -13,7 +16,7 @@ async_test(function(test) { // Create a MediaKeys object and free immediately. - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { return access.createMediaKeys(); }).then(function(result) { // Do nothing with the created object @@ -31,7 +34,7 @@ async_test(function(test) { var mediaKeys; - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { return access.createMediaKeys(); }).then(function(result) { mediaKeys = result; diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-reference.html b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-reference.html similarity index 94% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-reference.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-reference.html index 41bbcc54ac8..4b8ad1b46dd 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-reference.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-reference.html @@ -4,8 +4,11 @@ Test MediaKeySession lifetime without release() - - +
    @@ -32,12 +35,9 @@ return window.internals.activeDOMObjectCount(document) - startingActiveDOMObjectCount; } - getSupportedInitDataType().then(function(type) { - initDataType = type; + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - assert_equals(access.keySystem, 'org.w3.clearkey'); return access.createMediaKeys(); }).then(function(result) { mediaKeys = result; diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release-noreference.html b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release-noreference.html similarity index 94% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release-noreference.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release-noreference.html index f3241422c14..a962844a39a 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release-noreference.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release-noreference.html @@ -4,8 +4,11 @@ Test MediaKeySession lifetime after release() without references - - +
    @@ -31,11 +34,10 @@ var mediaKeys; var mediaKeySession1; var mediaKeySession2; - getSupportedInitDataType().then(function(type) { - initDataType = type; + + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { return access.createMediaKeys(); }).then(function(result) { mediaKeys = result; diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release.html b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release.html similarity index 93% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release.html index 24d0e88f015..6265267615e 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-mediakeysession-release.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release.html @@ -4,8 +4,11 @@ MediaKeySession lifetime after release() - - +
    @@ -31,11 +34,9 @@ } // Create 2 sessions. - getSupportedInitDataType().then(function(type) { - initDataType = type; + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { return access.createMediaKeys(); }).then(function(result) { mediaKeys = result; diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-multiple-mediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-multiple-mediakeys.html similarity index 94% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-multiple-mediakeys.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-multiple-mediakeys.html index 3681fbcae95..42638a0695b 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-multiple-mediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-multiple-mediakeys.html @@ -4,8 +4,11 @@ Test multiple MediaKeys lifetimes - - +
    @@ -25,9 +28,7 @@ // with the new MediaKeys object. function createMediaKeys() { - return getSupportedInitDataType().then(function(type) { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { return mediaKeys; diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-reload.html b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-reload.html similarity index 92% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-reload.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-reload.html index c8877fe1936..b2f8ffb1f54 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-lifetime-reload.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-reload.html @@ -4,8 +4,11 @@ Reloading during encrypted media playback - - + @@ -14,6 +17,7 @@ async_test(function(test) { var video = document.getElementById('testVideo'); + var content = 'webm/test-encrypted.webm'; var mediaKeySession = null; var hasSessionUpdateSucceeded = false; var encryptedEventCount = 0; @@ -81,12 +85,12 @@ location.reload(); } - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { waitForEventAndRunStep('encrypted', video, onEncrypted, test); waitForEventAndRunStep('playing', video, onPlaying, test); - video.src = '../content/test-encrypted.webm'; + video.src = content; return video.setMediaKeys(mediaKeys); }).then(function(result) { video.play(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-clear-key-invalid-license.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-clear-key-invalid-license.html index f347e1b9745..4061c4fd512 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-clear-key-invalid-license.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-clear-key-invalid-license.html @@ -4,8 +4,8 @@ Invalid Clear Key License. - - + +
    @@ -27,11 +27,9 @@ }); } - getSupportedInitDataType().then(function(type) { - initDataType = type; + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { var keySession = mediaKeys.createSession(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-clearkey-update-non-ascii-input.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-clearkey-update-non-ascii-input.html index 9eed42393dd..f9d00f904ab 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-clearkey-update-non-ascii-input.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-clearkey-update-non-ascii-input.html @@ -4,8 +4,8 @@ Test Clear Key handling of non-ASCII responses for update(). - - + +
    @@ -16,6 +16,7 @@ async_test(function(test) { var initDataType; + var initData; var mediaKeySession; function processMessage(event) @@ -34,15 +35,14 @@ }); } - getSupportedInitDataType().then(function(type) { - initDataType = type; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; + initData = getInitData(initDataType); return access.createMediaKeys(); }).then(function(mediaKeys) { mediaKeySession = mediaKeys.createSession(); waitForEventAndRunStep('message', mediaKeySession, processMessage, test); - return mediaKeySession.generateRequest(initDataType, getInitData(initDataType)); + return mediaKeySession.generateRequest(initDataType, initData); }); }, 'Clear Key update() with non-ASCII response.'); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html index 056a8a3daba..26bc02328d5 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-sessions.html @@ -4,8 +4,8 @@ Verify MediaKeySession.keyStatuses with multiple sessions - - + +
    @@ -89,11 +89,9 @@ test.done(); } - getSupportedInitDataType().then(function(type) { - initDataType = type; + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { mediaKeySession1 = mediaKeys.createSession(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html index df30026c6ec..514109d04fc 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses-multiple-updates.html @@ -4,8 +4,8 @@ Verify MediaKeySession.keyStatuses with multiple updates - - + +
    @@ -61,11 +61,9 @@ } } - getSupportedInitDataType().then(function(type) { - initDataType = type; + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { mediaKeySession = mediaKeys.createSession(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-onencrypted.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-onencrypted.html index 64699de6033..01d140454a4 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-onencrypted.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-onencrypted.html @@ -4,8 +4,8 @@ onencrypted - - + + @@ -19,6 +19,7 @@ async_test(function(test) { var video = document.getElementById('testVideo'); + var content = 'webm/test-encrypted.webm'; var onEncrypted = function(event) { @@ -33,7 +34,7 @@ }; waitForEventAndRunStep('encrypted', video, onEncrypted, test); - video.src = '../content/test-encrypted.webm'; + video.src = content; }, 'encrypted fired on encrypted media file.'); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html index ac9d197584d..4d0acda5b5a 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-encrypted-and-clear-sources.html @@ -4,8 +4,8 @@ Multiple playbacks alternating between encrypted and clear sources. - - + + @@ -18,6 +18,10 @@ var encryptedEventCount = 0; var playbackCount = 0; + // Content to be played. These files must be the same format. + var encryptedContent = 'webm/test-encrypted.webm'; + var unencryptedContent = 'webm/test.webm'; + var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); @@ -93,18 +97,20 @@ } function startPlayback() { + // Alternate between encrypted and unencrypted files. if (playbackCount % 2) { - video.src = '../content/test-vp8-vorbis-webvtt.webm'; + // Unencrypted files don't require MediaKeys. + video.src = unencryptedContent; video.play(); return; } - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(encryptedContent)).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { return video.setMediaKeys(mediaKeys); }).then(function(result) { - video.src = '../content/test-encrypted.webm'; + video.src = encryptedContent; assert_false(video.mediaKeys === null, "video.mediaKeys is null."); video.play(); }).catch(function(error) { diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-multiple-sessions.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-multiple-sessions.html index bddc4a2fc49..2a4adc340dd 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-multiple-sessions.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-multiple-sessions.html @@ -4,8 +4,8 @@ Clear Key Playback with Multiple Sessions - - + + @@ -14,6 +14,7 @@ async_test(function(test) { var video = document.getElementById('testVideo'); + var content = 'webm/test-encrypted-different-av-keys.webm'; var audioMediaKeySession = null; var videoMediaKeySession = null; var audioInitDataType = null; @@ -121,12 +122,12 @@ test.done(); } - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { waitForEventAndRunStep('encrypted', video, onEncrypted, test); waitForEventAndRunStep('playing', video, onPlaying, test); - video.src = '../content/test-encrypted-different-av-keys.webm'; + video.src = content; return video.setMediaKeys(mediaKeys); }).then(function(result) { video.play(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-requestmediakeysystemaccess.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-requestmediakeysystemaccess.html index 9c85fca7577..68002d2a808 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-requestmediakeysystemaccess.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-requestmediakeysystemaccess.html @@ -4,8 +4,8 @@ Test navigator.requestMediaKeySystemAccess() - - + +
    diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html index 9158dcc4fbc..dc2c1d53324 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-reset-src-after-setmediakeys.html @@ -4,8 +4,8 @@ Reset src after setMediaKeys() - - + + @@ -18,6 +18,10 @@ var video = document.getElementById('testVideo'); assert_not_equals(video, null); + // Content to be played. These files must be the same format. + var content = 'webm/test-encrypted.webm'; + var alternateContent = 'webm/test-encrypted-different-av-keys.webm'; + var onEncrypted = function(event) { ++encryptedEventIndex; @@ -28,7 +32,7 @@ // for the video stream each time .src is set. if (encryptedEventIndex == 2) { // Finished first video; set src to a different video. - video.src = '../content/test-encrypted-different-av-keys.webm'; + video.src = alternateContent; } else if (encryptedEventIndex == 4) { // Finished second video. test.done(); @@ -36,7 +40,7 @@ }; // Create a MediaKeys object and assign it to video. - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]) + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)) .then(function(access) { assert_equals(access.keySystem, 'org.w3.clearkey'); return access.createMediaKeys(); @@ -50,7 +54,7 @@ // Set src to a video. waitForEventAndRunStep('encrypted', video, onEncrypted, test); - video.src = '../content/test-encrypted.webm'; + video.src = content; }).catch(function(error) { forceTestFailureFromPromise(test, error); }); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-session-closed-event.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-session-closed-event.html index fdabb2571d9..6f817f7b3e5 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-session-closed-event.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-session-closed-event.html @@ -4,8 +4,8 @@ Test MediaKeySession closed event - - + +
    @@ -15,11 +15,10 @@ var initDataType; var initData; var mediaKeySession; - getSupportedInitDataType().then(function(type) { - initDataType = type; + + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { mediaKeySession = mediaKeys.createSession(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html index 33abeb1ba00..2106c937781 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-playback.html @@ -4,8 +4,8 @@ setMediaKeys() again after playback - - + + @@ -17,7 +17,7 @@ var keyId = stringToUint8Array('0123456789012345'); var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - var content = '../content/test-encrypted.webm'; + var content = 'webm/test-encrypted.webm'; var duration = 0.2; return createMediaKeys(keyId, rawKey).then(function(mediaKeys) { diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html index 176a5eaaeaf..ed7f2370271 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-again-after-resetting-src.html @@ -4,8 +4,8 @@ setMediaKeys() again after resetting src - - + + @@ -17,7 +17,7 @@ var keyId = stringToUint8Array('0123456789012345'); var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - var content = '../content/test-encrypted.webm'; + var content = 'webm/test-encrypted.webm'; var duration = 0.2; return createMediaKeys(keyId, rawKey).then(function(mediaKeys) { diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html index a0a286b04cb..62c63652969 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-at-same-time.html @@ -4,8 +4,8 @@ Set MediaKeys multiple times in parallel - - + + @@ -56,6 +56,7 @@ promise_test(function(test) { var video = document.getElementById('video'); + var content = 'webm/test-encrypted.webm'; var access; var mediaKeys1; var mediaKeys2; @@ -65,10 +66,10 @@ // Start a video now so that it is waiting for MediaKeys // in order to continue. - video.src = '../content/test-encrypted.webm'; + video.src = content; video.play(); return wait_for_encrypted_event(video).then(function() { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)); }).then(function(result) { access = result; return access.createMediaKeys(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html index 644d3baac85..bea28d0e176 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html @@ -4,8 +4,8 @@ setMediaKeys() multiple times with different MediaKeys. - - + + @@ -14,13 +14,14 @@ promise_test(function(test) { var video = document.getElementById('video'); + var content = 'webm/test-encrypted.webm'; var keySystemAccess; var mediaKeys1; var mediaKeys2; assert_equals(video.mediaKeys, null); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { keySystemAccess = access; // Create a mediaKeys. return keySystemAccess.createMediaKeys(); @@ -49,7 +50,7 @@ }).then(function() { assert_true(video.mediaKeys === mediaKeys1); // Load the media element to create the WebMediaPlayer. - video.src = '../content/test-encrypted.webm'; + video.src = content; // Set mediaKeys2 on video (switching MediaKeys) not // supported after WebMediaPlayer is created. return video.setMediaKeys(mediaKeys2); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html index 1ef71016431..93af8cceb7c 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html @@ -4,8 +4,8 @@ setMediaKeys() multiple times with the same MediaKeys. - - + + @@ -14,11 +14,12 @@ promise_test(function(test) { var video = document.getElementById('video'); + var content = 'webm/test-encrypted.webm'; var mediaKeys; assert_equals(video.mediaKeys, null); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { return access.createMediaKeys(); }).then(function(result) { mediaKeys = result; @@ -33,7 +34,7 @@ }).then(function() { assert_true(video.mediaKeys === mediaKeys); // Load the media element to create the WebMediaPlayer. - video.src = '../content/test-encrypted.webm'; + video.src = content; // Set mediaKeys again on video should still return a // resolved promise. return video.setMediaKeys(mediaKeys); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-to-multiple-video-elements.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-to-multiple-video-elements.html index b51d44a99ca..38c11ee74ef 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-to-multiple-video-elements.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys-to-multiple-video-elements.html @@ -4,8 +4,8 @@ setMediaKeys() on multiple video elements. - - + + @@ -18,7 +18,7 @@ var video2 = document.getElementById('video2'); var mediaKeys; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { return access.createMediaKeys(); }).then(function(result) { mediaKeys = result; diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys.html index 66dae88bfb4..5374c9a65c4 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-setmediakeys.html @@ -4,8 +4,8 @@ setMediaKeys - - + + @@ -34,7 +34,7 @@ assert_equals(error.name, 'TypeError'); // Create a MediaKeys object and assign it to video. - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()); }).then(function(access) { assert_equals(access.keySystem, 'org.w3.clearkey'); return access.createMediaKeys(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-syntax.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-syntax.html index 0e314bc1602..13240922fe3 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-syntax.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-syntax.html @@ -4,8 +4,8 @@ Test EME syntax - - + +
    diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-unique-origin.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-unique-origin.html index 822c7edcda6..83bd6b50d16 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-unique-origin.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-unique-origin.html @@ -3,8 +3,8 @@ Unique origin is unable to create MediaKeys - - + +
    @@ -36,7 +36,13 @@ var script = 'data:text/html,' + ' - - + +
    @@ -16,6 +16,7 @@ async_test(function(test) { var initDataType; + var initData; var mediaKeySession; function repeat(pattern, count) { @@ -54,15 +55,14 @@ }); } - getSupportedInitDataType().then(function(type) { - initDataType = type; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; + initData = getInitData(initDataType); return access.createMediaKeys(); }).then(function(mediaKeys) { mediaKeySession = mediaKeys.createSession(); waitForEventAndRunStep('message', mediaKeySession, processMessage, test); - return mediaKeySession.generateRequest(initDataType, getInitData(initDataType)); + return mediaKeySession.generateRequest(initDataType, initData); }); }, 'update() with response longer than 64Kb characters.'); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-utils.js b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-utils.js index f23104857ed..5fbcdf689a5 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-utils.js +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-utils.js @@ -19,23 +19,8 @@ function consoleWrite(text) function isInitDataTypeSupported(initDataType) { return navigator.requestMediaKeySystemAccess( - "org.w3.clearkey", [{ initDataTypes : [initDataType] }]) - .then(function() { return(true); }, function() { return(false); }); -} - -// Returns a promise that is fulfilled with an initDataType that is supported, -// rejected if none are supported. -function getSupportedInitDataType() -{ - var configuration = [{ initDataTypes : [ 'webm', 'cenc', 'keyids' ] }]; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', configuration) - .then(function(access) { - var initDataTypes = access.getConfiguration().initDataTypes; - assert_greater_than(initDataTypes.length, 0); - return Promise.resolve(initDataTypes[0]); - }, function(error) { - return Promise.reject('No supported initDataType.'); - }); + "org.w3.clearkey", getSimpleConfigurationForInitDataType(initDataType)) + .then(function() { return true; }, function() { return false; }); } function getInitData(initDataType) @@ -49,7 +34,7 @@ function getInitData(initDataType) if (initDataType == 'cenc') { return new Uint8Array([ - 0x00, 0x00, 0x00, 0x00, // size = 0 + 0x00, 0x00, 0x00, 0x34, // size = 52 0x70, 0x73, 0x73, 0x68, // 'pssh' 0x01, // version = 1 0x00, 0x00, 0x00, // flags @@ -73,6 +58,54 @@ function getInitData(initDataType) throw 'initDataType ' + initDataType + ' not supported.'; } +// Returns an array of audioCapabilities that includes entries for a set of +// codecs that should cover all user agents. +function getPossibleAudioCapabilities() +{ + return [ + { contentType: 'audio/mp4; codecs="mp4a.40.2"' }, + { contentType: 'audio/webm; codecs="opus"' }, + ]; +} + +// Returns a trivial MediaKeySystemConfiguration that should be accepted, +// possibly as a subset of the specified capabilities, by all user agents. +function getSimpleConfiguration() +{ + return [ { + initDataTypes : [ 'webm', 'cenc', 'keyids' ], + audioCapabilities: getPossibleAudioCapabilities() + } ]; +} + +// Returns a MediaKeySystemConfiguration for |initDataType| that should be +// accepted, possibly as a subset of the specified capabilities, by all +// user agents. +function getSimpleConfigurationForInitDataType(initDataType) +{ + return [ { + initDataTypes: [ initDataType ], + audioCapabilities: getPossibleAudioCapabilities() + } ]; +} + +// Returns a MediaKeySystemConfiguration for |mediaFile| that specifies +// both audio and video capabilities for the specified file.. +function getConfigurationForFile(mediaFile) +{ + if (mediaFile.toLowerCase().endsWith('webm')) { + return [ { + initDataTypes: [ 'webm' ], + audioCapabilities: [ { contentType: 'audio/webm; codecs="opus"' } ], + videoCapabilities: [ { contentType: 'video/webm; codecs="vp8"' } ] + } ]; + } + + // NOTE: Supporting other mediaFormats is not currently implemented as + // Chromium only tests with WebM files. + throw 'mediaFile ' + mediaFile + ' not supported.'; +} + function waitForEventAndRunStep(eventName, element, func, stepTest) { var eventCallback = function(event) { @@ -130,23 +163,23 @@ function dumpKeyStatuses(keyStatuses) { consoleWrite("for (var entry of keyStatuses)"); for (var entry of keyStatuses) { - consoleWrite(arrayBufferAsString(entry[0]) + ", " + entry[1]); + consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]); } - consoleWrite("for (var key of keyStatuses.keys())"); - for (var key of keyStatuses.keys()) { - consoleWrite(arrayBufferAsString(key)); + consoleWrite("for (var keyId of keyStatuses.keys())"); + for (var keyId of keyStatuses.keys()) { + consoleWrite(arrayBufferAsString(keyId)); } - consoleWrite("for (var value of keyStatuses.values())"); - for (var value of keyStatuses.values()) { - consoleWrite(value); + consoleWrite("for (var status of keyStatuses.values())"); + for (var status of keyStatuses.values()) { + consoleWrite(status); } consoleWrite("for (var entry of keyStatuses.entries())"); for (var entry of keyStatuses.entries()) { - consoleWrite(arrayBufferAsString(entry[0]) + ", " + entry[1]); + consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]); } consoleWrite("keyStatuses.forEach()"); - keyStatuses.forEach(function(value, key, map) { - consoleWrite(arrayBufferAsString(key) + ", " + value); + keyStatuses.forEach(function(status, keyId) { + consoleWrite(arrayBufferAsString(keyId) + ": " + status); }); } @@ -270,7 +303,7 @@ function createMediaKeys(keyId, key) var request = stringToUint8Array(createKeyIDs(keyId)); var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, key))); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfigurationForInitDataType('keyids')).then(function(access) { return access.createMediaKeys(); }).then(function(result) { mediaKeys = result; diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-waiting-for-a-key.html b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-waiting-for-a-key.html index e6c1559a0d3..3469b159ad0 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-waiting-for-a-key.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-waiting-for-a-key.html @@ -4,8 +4,8 @@ Waiting for a key. - - + + @@ -21,6 +21,7 @@ promise_test(function(test) { var video = document.getElementById('testVideo'); + var content = 'webm/test-encrypted.webm'; var initData; var initDataType; var mediaKeySession; @@ -44,14 +45,14 @@ var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { debugMessage = 'createMediaKeys()'; return access.createMediaKeys(); }).then(function(mediaKeys) { debugMessage = 'setMediaKeys()'; return video.setMediaKeys(mediaKeys); }).then(function() { - video.src = '../content/test-encrypted.webm'; + video.src = content; video.play(); debugMessage = 'wait_for_encrypted_event()'; return wait_for_encrypted_event(video); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-check-init-data-type.html b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-check-init-data-type.html similarity index 85% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-check-init-data-type.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-check-init-data-type.html index 00d2d4b537c..f71cf48a825 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-check-init-data-type.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-check-init-data-type.html @@ -4,8 +4,11 @@ Test support of different initDataTypes. - - +
    @@ -17,8 +20,7 @@ if (!result) return Promise.resolve('Not supported'); - var options = [ { initDataTypes: [initDataType] } ]; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', options) + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfigurationForInitDataType(initDataType)) .then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-events.html b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-events.html similarity index 86% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-events.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-events.html index eec702aa674..a2a70f169c5 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-events.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-events.html @@ -4,8 +4,11 @@ Verify v2 events - - +
    @@ -45,11 +48,9 @@ test.done(); } - getSupportedInitDataType().then(function(type) { - initDataType = type; + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { return access.createMediaKeys(); }).then(test.step_func(function(mediaKeys) { mediaKeySession = mediaKeys.createSession(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-generate-request-disallowed-input.html similarity index 91% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-generate-request-disallowed-input.html index 66eb0f7c5ea..53e5c95b78a 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-generate-request-disallowed-input.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-generate-request-disallowed-input.html @@ -4,8 +4,11 @@ Test handling of invalid initData for generateRequest(). - - +
    @@ -21,7 +24,7 @@ if (!result) return Promise.resolve('Not supported'); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfigurationForInitDataType(initDataType)).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { var mediaKeySession = mediaKeys.createSession(); @@ -67,13 +70,13 @@ 0x00, 0x00, 0x00, 0x00 // datasize ]); return test_session('cenc', initData); - }, 'generateRequest() with invalid pssh data.'); + }, 'generateRequest() with invalid pssh box size.'); promise_test(function() { // Invalid data as type = 'psss'. var initData = new Uint8Array([ - 0x00, 0x00, 0x00, 0x00, // size = 0 + 0x00, 0x00, 0x00, 0x20, // size = 32 0x70, 0x73, 0x73, 0x73, // 'psss' 0x00, // version = 0 0x00, 0x00, 0x00, // flags diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses.html b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses.html similarity index 63% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses.html index 096cc03981a..043bc132241 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-keystatuses.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses.html @@ -4,8 +4,11 @@ Verify MediaKeySession.keyStatuses - - +
    @@ -15,6 +18,7 @@ var mediaKeySession; var initDataType; var initData; + var closed = false; // Even though key ids are uint8, using printable values so that // they can be verified easily. @@ -40,7 +44,7 @@ }); } - function processKeyStatusesChange(event) + function checkKeyStatusFor2Keys() { // Two keys added, so both should show up in |keyStatuses|. assert_equals(mediaKeySession.keyStatuses.size, 2); @@ -48,8 +52,8 @@ // Check |keyStatuses| for 2 entries. var result = []; - for (var entry of mediaKeySession.keyStatuses) { - result.push({ key: arrayBufferAsString(entry[0]), value: entry[1] }); + for (let [keyId, status] of mediaKeySession.keyStatuses) { + result.push({ key: arrayBufferAsString(keyId), value: status }); } assert_object_equals(result, [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}], @@ -84,28 +88,74 @@ // forEach() should return both entries. result = []; - mediaKeySession.keyStatuses.forEach(function(value, key, map) { - result.push({ key: arrayBufferAsString(key), value: value }); + mediaKeySession.keyStatuses.forEach(function(status, keyId) { + result.push({ key: arrayBufferAsString(keyId), value: status }); }); assert_object_equals(result, [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}], 'keyStatuses.forEach() fails'); + // has() and get() should return the expected values. assert_true(mediaKeySession.keyStatuses.has(key1)); assert_true(mediaKeySession.keyStatuses.has(key2)); - assert_false(mediaKeySession.keyStatuses.has(stringToUint8Array('123456'))); assert_equals(mediaKeySession.keyStatuses.get(key1), 'usable'); assert_equals(mediaKeySession.keyStatuses.get(key2), 'usable'); - assert_equals(mediaKeySession.keyStatuses.get(stringToUint8Array('123456')), undefined); - test.done(); + // Try some invalid keyIds. + var invalid1 = key1.subarray(0, key1.length - 1); + assert_false(mediaKeySession.keyStatuses.has(invalid1)); + assert_equals(mediaKeySession.keyStatuses.get(invalid1), undefined); + + var invalid2 = key1.subarray(1); + assert_false(mediaKeySession.keyStatuses.has(invalid2)); + assert_equals(mediaKeySession.keyStatuses.get(invalid2), undefined); + + var invalid3 = new Uint8Array(key1); + invalid3[0] += 1; + assert_false(mediaKeySession.keyStatuses.has(invalid3)); + assert_equals(mediaKeySession.keyStatuses.get(invalid3), undefined); + + var invalid4 = new Uint8Array(key1); + invalid4[invalid4.length - 1] -= 1; + assert_false(mediaKeySession.keyStatuses.has(invalid4)); + assert_equals(mediaKeySession.keyStatuses.get(invalid4), undefined); + + var invalid5 = new Uint8Array(key1.length + 1); + invalid5.set(key1, 1); // First element will be 0. + assert_false(mediaKeySession.keyStatuses.has(invalid5)); + assert_equals(mediaKeySession.keyStatuses.get(invalid5), undefined); + + var invalid6 = new Uint8Array(key1.length + 1); + invalid6.set(key1, 0); // Last element will be 0. + assert_false(mediaKeySession.keyStatuses.has(invalid6)); + assert_equals(mediaKeySession.keyStatuses.get(invalid6), undefined); } - getSupportedInitDataType().then(function(type) { - initDataType = type; + function processKeyStatusesChange(event) + { + if ( !closed ) + { + // The first keystatuseschange (caused by update()) + // should include both keys. + checkKeyStatusFor2Keys(); + + mediaKeySession.close().catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + closed = true; + } + else + { + // The second keystatuseschange (caused by close()) + // should not have any keys. + assert_equals(mediaKeySession.keyStatuses.size, 0); + test.done(); + } + } + + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; initData = getInitData(initDataType); - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { mediaKeySession = mediaKeys.createSession(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-not-callable-after-createsession.html b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-not-callable-after-createsession.html similarity index 86% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-not-callable-after-createsession.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-not-callable-after-createsession.html index 416cc091159..9b92c69053f 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-not-callable-after-createsession.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-not-callable-after-createsession.html @@ -4,8 +4,11 @@ Test MediaKeySession not callable immediately after CreateSession(). - - +
    @@ -15,7 +18,7 @@ promise_test(function() { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { var mediaKeySession = mediaKeys.createSession(); @@ -31,7 +34,7 @@ promise_test(function() { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { var mediaKeySession = mediaKeys.createSession(); @@ -46,7 +49,7 @@ promise_test(function() { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { var mediaKeySession = mediaKeys.createSession(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-setmediakeys-after-src.html b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-after-src.html similarity index 91% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-setmediakeys-after-src.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-after-src.html index 51b7fc9acaa..2a8cac48661 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-setmediakeys-after-src.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-after-src.html @@ -4,8 +4,11 @@ Clear Key Playback - - + @@ -14,6 +17,7 @@ async_test(function(test) { var video = document.getElementById('testVideo'); + var content = 'webm/test-encrypted.webm'; var isUpdatePromiseResolved = false; var encryptedEventCount = 0; @@ -72,14 +76,14 @@ test.done(); } - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { waitForEventAndRunStep('encrypted', video, onEncrypted, test); waitForEventAndRunStep('playing', video, onPlaying, test); - video.src = '../content/test-encrypted.webm'; + video.src = content; return video.setMediaKeys(mediaKeys); }).then(function(result) { video.play(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-setmediakeys-before-src.html b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-before-src.html similarity index 91% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-setmediakeys-before-src.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-before-src.html index ffa97e6fe23..84100570c22 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-setmediakeys-before-src.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-before-src.html @@ -4,8 +4,11 @@ Clear Key Playback - - + @@ -14,6 +17,7 @@ async_test(function(test) { var video = document.getElementById('testVideo'); + var content = 'webm/test-encrypted.webm'; var isUpdatePromiseResolved = false; var encryptedEventCount = 0; @@ -72,7 +76,7 @@ test.done(); } - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { @@ -81,7 +85,7 @@ return video.setMediaKeys(mediaKeys); }).then(function(result) { - video.src = '../content/test-encrypted.webm'; + video.src = content; video.play(); }).catch(function(error) { forceTestFailureFromPromise(test, error); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-two-videos.html b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-two-videos.html similarity index 90% rename from tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-two-videos.html rename to tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-two-videos.html index 44483c035ab..0bdc7757ba0 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/Google/encrypted-media-playback-two-videos.html +++ b/tests/wpt/web-platform-tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-two-videos.html @@ -4,8 +4,11 @@ Clear Key Play Two Videos At Same Time - - + @@ -18,19 +21,20 @@ var keyId = stringToUint8Array('0123456789012345'); var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); + var content = 'webm/test-encrypted.webm'; promise_test(function(test) { var promises = [ - play_video_as_promise(document.getElementById('testVideo'), '../content/test-encrypted.webm'), - play_video_as_promise(document.getElementById('secondVideo'), '../content/test-encrypted.webm') + play_video_as_promise(document.getElementById('testVideo'), content), + play_video_as_promise(document.getElementById('secondVideo'), content) ]; return Promise.all(promises); }, 'Play two videos at the same time.'); function play_video_as_promise(video, content) { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { + return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { return access.createMediaKeys(); }).then(function(mediaKeys) { return video.setMediaKeys(mediaKeys); diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/test-encrypted-different-av-keys.webm b/tests/wpt/web-platform-tests/encrypted-media/Google/webm/test-encrypted-different-av-keys.webm similarity index 100% rename from tests/wpt/web-platform-tests/encrypted-media/Google/test-encrypted-different-av-keys.webm rename to tests/wpt/web-platform-tests/encrypted-media/Google/webm/test-encrypted-different-av-keys.webm diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/test-encrypted.webm b/tests/wpt/web-platform-tests/encrypted-media/Google/webm/test-encrypted.webm similarity index 100% rename from tests/wpt/web-platform-tests/encrypted-media/Google/test-encrypted.webm rename to tests/wpt/web-platform-tests/encrypted-media/Google/webm/test-encrypted.webm diff --git a/tests/wpt/web-platform-tests/encrypted-media/Google/webm/test.webm b/tests/wpt/web-platform-tests/encrypted-media/Google/webm/test.webm new file mode 100644 index 0000000000000000000000000000000000000000..6c2138d4ecaed9d4ac496949767ba201eb5775ee GIT binary patch literal 219448 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
    oIr+eT{qL*grb7YtB92Dqiz@)_)X;CIoc1zOQ_V zb$ZV9=lmLduRjD{zTM^?0t@|mazFTEU$Z{#ZsU%jUN~;`@BCJPm0uL&+Fi@t%tbd< zx5GKad(aE;@#->nSKtOH{>=8t_y&CTd+C|+1HNUxH@w-s*W3|y2^@V60n`21fIJ^N z?;{^q*I%IH`A6UD(?{te)rU>}>^N=o)2h|8sYY(*B(pkQyJ6bc*lTS~JrYMqAxox2 z?J9HI$pF7S{76vcb%`j-`2ByNBUC$qFSMujtE6wR?b9!F6aM9@+T?z}ZiQb`V{4>( zzPeCxF2e0n@NoOIy*}NpbgY~AmV{3M+S%-Ntex=A_|6rweIv$tY3ETzoX76oe@t_b z4r7wU4ved`r>j6F+|}pTELe>cZG#&uw)_d8b_o(r|3olp#rq#pE>nweGdsxi z(J6xDNus{cV@+nYV!tz;e)Hz*Imh0BDTw{l^2)3bkt@}I#<2MAAqW?r9wKnTLXGU8 znCJwKH+cCrW0|_fh|jf#MZ*w*mMNzA&!6_-`P0x||DYY3R{p>h;^BYvXSoiMx<}o6 zxQK+9KeSNK&)|`q=)r#aG;Jca-y{4#S~Ql0NfRZcbBO2NEvQNkox=FBvpB2dFIU?? z1)D_cc-%MRRXGK!BofyoXytF+hvd?WWNCiYAAEV^w|1q-#)O8Q2SRyif z!I67pB)*~mZG!?0{ZeSROD=g5%3o;vY_a>hoaVE(wR|spp%E659Xc^gPI@nT?};G} z*Q759q-~stIBY~8n}VOh!Q4kIy$MdqTX%bux7|_XN;P~P@*rd(gd76+bB>9!f8|#v zjq7Lb7`ADRvH)|2-NLOh@a!W$H_+U1NLy-;n|MG20+BH5Sq1Ck8(gMr2+W9u_Kmcf zitZp)75xk8k;U=(XS2)lJA7#neUJUr8u;guJTXF|HD=UrF+s8s;D* zP&v8N6`9F~zKO}Yq@oDuRCv-U?Qhz-k!tq0kY?@<^iUk;0K{lKg|k$Cn4Mix=votM z9}qNL4V=?}qg&5Y1-h-p+oI>VJ&lqycvV47bg!ZDz5iL?prSIfB^mk_6H$gIK3M5m zqjjX-7lmzL7>r~8l>RjBH1ql=uOIv4JaD@kB-Rd{!CD&S=wbIk!?F6W zi%!TGcQ&mz4ngBot`k-L19&zW^PegeZ%w;k4`wj`ZqEF6g;1o@{^k6(oT_N;z`_CL zrt>>Qxn(f>1QE&we#sO!i7@&shV!&GG2Xn;Nc9*g-u3N3P&?%vAB6QQfU{$=)0GWl z7wbcIYFKP<_we@%K^%ms6%Pj(UNy|hc>OVNIM zh6vO70r&@jm?ZDRcFePTjMniBL&^=+Y$!e?)r

    Evm+4-eD=P%>wrQ1WtsB`j`No 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 z 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 U=%fGTkBh&Isr4TQV;lW{0B#z&TL1t6 literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-check-initdata-type.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-check-initdata-type.html new file mode 100644 index 00000000000..d580a8cc3cd --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-check-initdata-type.html @@ -0,0 +1,33 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4 + + + + + + + + + + + + + + + + + + +

    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-events.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-events.html new file mode 100644 index 00000000000..6b0f72fa1c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-events.html @@ -0,0 +1,44 @@ + + + + + + Encrypted Media Extensions: Events with Clear Key + + + + + + + + + + + + + + + + + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.html new file mode 100644 index 00000000000..7ee374211db --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-generate-request-disallowed-input.html @@ -0,0 +1,33 @@ + + + + + + Encrypted Media Extensions: Test handling of invalid initData for generateRequest() + + + + + + + + + + + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html new file mode 100644 index 00000000000..ccb0d5ca678 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html @@ -0,0 +1,52 @@ + + + + + + Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, Clear Key + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-keystatuses.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-keystatuses.html new file mode 100644 index 00000000000..127c06dca50 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-keystatuses.html @@ -0,0 +1,51 @@ + + + + + + Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, Clear Key + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.html new file mode 100644 index 00000000000..f9d7eb06de3 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.html @@ -0,0 +1,52 @@ + + + + + Encrypted Media Extensions: persistent-license, playback, destroy license with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html new file mode 100644 index 00000000000..99aba6386c9 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html @@ -0,0 +1,52 @@ + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with Clear Key, mp4, event sequence + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license.html new file mode 100644 index 00000000000..e118e69dda8 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-license.html @@ -0,0 +1,52 @@ + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html new file mode 100644 index 00000000000..e673d82ca05 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Successful Playback, persistent-usage-record session with Clear Key, mp4, event sequence + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html new file mode 100644 index 00000000000..64ce9b87171 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Successful Playback, persistent-usage-record session with Clear Key, mp4, event sequence + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.html new file mode 100644 index 00000000000..bb0e59a44dc --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: persistent-license, playback, retrieve, playback and destroy with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html new file mode 100644 index 00000000000..7d8fe57ffb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html @@ -0,0 +1,53 @@ + + + + + Encrypted Media Extensions: persistent-license playback, retrieve and playback with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html new file mode 100644 index 00000000000..165b1faa30b --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: persistent-usage-record, playback and retrieve record in new window, Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events.html new file mode 100644 index 00000000000..422b8bd6e97 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-events.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Successful playback, Temporary session with Clear Key, mp4, validating events + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html new file mode 100644 index 00000000000..6c37eb267ac --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, multiple keys in sequence + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html new file mode 100644 index 00000000000..fe3f96dbf41 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, multiple keys for audio/video + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.html new file mode 100644 index 00000000000..a4052fe2763 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.html new file mode 100644 index 00000000000..2e0e0e65753 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.html new file mode 100644 index 00000000000..1cf3f122c14 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.html new file mode 100644 index 00000000000..f8c17b91e5c --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html new file mode 100644 index 00000000000..99e5ef3465c --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html @@ -0,0 +1,55 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, two videos + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html new file mode 100644 index 00000000000..119350f808a --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, play, wait for key, continue play + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary.html new file mode 100644 index 00000000000..d6ff85c37fd --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-mp4-playback-temporary.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html b/tests/wpt/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html new file mode 100644 index 00000000000..452c252735b --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/clearkey-not-callable-after-createsession.html @@ -0,0 +1,36 @@ + + + + + + Encrypted Media Extensions: Test MediaKeySession not callable immediately after CreateSession(). + + + + + + + + + + + + + + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 b/tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..526998d6ac9d2933c5163c1521b3b88aeff84cd5 GIT binary patch literal 166614 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%0Dmc^QVGI6W+fEt$ErLE3z_S1y)SB7Q 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�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ℜQBb=Rui_-y7k1v6~ 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%0Dn9fZ<9=s!_ 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

    l!&zPdha<-hlC?7>>eJ}`Oh)D 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 XAmOJ8=H7d-pH}(4FW>|JN%{VN!%M|R literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4 b/tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..77e869f80845ba89138d7cb1f145f4d2c29262fa GIT binary patch literal 90594 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

    I*C&FPs5B z>Qc{qQ~c;yTJIOLzftgN*N*b+bao=WIJ?T{PPs53pb@_>udy?@c1HBDBGwBU-qf?qkJnRe+@ zs^Tavq|T}*qFiUW9u$PeZy@fIU@SQw;0_Py$Z$u zG2m1t=Mhx}!j$EB4OH0U1^SwUtBi8OBa}Z@Ie^l2WHSJd(58bJeI0|)?gbo9-+z1xU(iXqLZjMC99a+79%@K zRB?OG&s^fYOXo5CV$LpjnG2nPG6Gd(zzj?J z)W$61t3TUlx2Q)J_S!EfE3)+fwwzDhKTv>+k&kSm;P9c$Im%Cch%q!Xd%XiPrMFPm zXW6iS!o`1~gZJz14y^b<97EMUI^UZtP>_!md-H&l10ppW;k}2dDl#Hy(gmZG)L-YWC6KBB-(Pmg!$k$C(X${BkGQMGN_yu3emKlTqnUxMP0GI<-CE(f?(ZCQW;q5Sd-t zuH9lKZfOSglHDZ2M~&srK+#*FS%D4&duj^;bMgH@fiyn)pqo=X3U}Hm1T#a}%F!`= z<{fUy3II?#dqa^>e;h4M(Jn#Arq4aPrQ6?RI92-`P}r<(R#3Q~p1mL~y(23!FP!lt=e+or;4%z-Crqc8Z@BW?}HX(Zn_- z0{No%(TpO@WwKIPIIEofrYXJPD>v;uiMYqMiGlzC2I6JR5v=~6*{4Vb8rBnUC7vlq zov!c3RN(#DE4f$n^ltR+$yO$AR)T8zDv)rjpqDM@P165DzeLxkrJ zM)^P~L`7|@e1#;!>41p1EdV}Ct?+$Nep#||5O)jDBge5Yz&o7%Mme`DYcCOC@H z>blin6<#5HP+qPSVmjUcYP=<<0K&VD6MCh})8`mgEiJ8?gm6(~OcUvX9XD_X+nIHl z4Piuw>_DfP6e-aL4k_}C#IG!!f_ddGpO6Y9u%&owm?|WM1kdj6-^{QJu6Nv-H>Og~ zkVX_xkiZZM1CO`2i0l>V)xR&NgCNICl*=JP6$Eq1uUWox}Gnx$e zSNV>n=~`(smdb#$Oe3Tw9z$_?+isbU>j38`;szyTHx^#0C-^ENO7=8md-EQA1@;1v z=RW04n6RS@zz$&L>{}k~ z*I;xmnhviow|%cN{Vd$Ant?gzroW6O0)@A(7wF%w?m^Bst!V=LB1BVne!#;8qlJaD z8{H**fV7F%yfCwod~@8jZo~koajI#AdXFrgH!L}(Z;)(z=vyi>{d6Vcx)%yjHKAhK{e%iiA6ri`kLdFAsatULD^Wd| zzwwm~*c#5?lIt9PB0`NUKTqYmcV7b-@zIzkK+Q2I`^z&)pjDfKlk+ zvGTKcgat4@bIxY)CaD_X7YhL7=G?*%b%{+VwgX1fh4N2lw0Z{+a6SV%Mp>|^DQ0U0 zrck&}4J0Z8q4NFMSG?O5W{&CYLh5G5RX$$_D_ssO1*{y4qI}9GkLXLR)bckPh!xP2 zYaSS&%9NKzhf-(t^)#=6CntK5*NOW2Z4%sa+(;J)&L6jcA0{O<5ni;xp6SQudz^U{ ztKQUyz5BtSsd;tYe8~uN25fSMsIJe>{&%judxS6KLnNd^$T(nLSozK$ac_x0WCw9V z716fz9XQ*FInMHK?hR69?y3+$bQu??TQmlY8RD1t#6tAd=odOS%tFC+ZifpqtQ>Bj zUO607KbxGY;rp$UiOy%~jb~^?i#u3=f}zr7`iyu`zP#DpiVT(yjg*hJgWCHr#E~GC z8oY;VT7;1jn;y2C=TE5P!1x5~ud-HEg;0rrbriPuOpj9l1A#?X8%cFUWhcbGW!1fV zg={Qt>NDE42f{U(F3P;v&pii}EW`s^F%U*!NRlOOXd_`F=BX~y=%17N>-mQmFACu| zSJXZ?!5NtAzLQ|w1AY3fwxAywu62$NgS|pUI%JrWKv6_ss7sp0;)<;AvVP6SB%nuL z9*>x|JUHJ-QCceBQN`w=zA6ZkqDj-#yv$)Pb)}k;`jK|wj+0RI>snEpFErr9zNcQ( zzoEV0Gv*@U5giN;>R7D(UdVv5Ub367*$VVMGYb*D-ZN4V*fmVf-@9#OL#XppBXp|> zi1TO@C4)1jMOqEAodMa&pxZ~f?Vs$#=}KwJGe+6^E|y{C_aB9?QMe!AqBu)+K&3Yl z#%C$uD84wdwU0|-h=MDo2>T5a03o!elDev1Dc^@+0GfK$Jb=mRbuK-xQ_%<|I^H7+ z>N(=mJC4@aSP!#+pDv8Xe%W9;-7Wc~W>4QQoF&gYcaa%7m}A(0{rLIC+1?4;ZHqS;2$tlt7GB?^;$QvM!5QW&1d{CLXEK`J# za01G53p|zF*s)vL?(j;-*)d*p>JLS7aj8VN000JTW$lP_qzI79!)I#X--*};Z!>mu zI~j8EZj)5_2F5$LjoG{sxZt~BT-1qWOxy_Y)t)vut~axgz>YVRx;{&(oD^;yM+j9> ztI(DHWPe!A6S~@19V)2&y3=iLdiL`}<55G_98w@q4R&P2HLmqWC57FPS565!iW7et*+Wt{A(k6t)1CrX98ew@G zbXH=Pe8cImIg%vQ$NVn|!SzPBEP_ln*oWv`y(g1LMtDa-KMby6oZFEZb3>7bYtwV| z&O+-TG;tM;HIaFxa@V{15C(w5Fz@lJPB57v+w;CcI|y6qLTY`6OvvMp$#+C;dY{If zFs>Lg zI&0ZjQDqTU7o4(>x>^7TqwF83k#?|wI9$D&2&_W4Pe&-^o&x*2rdbGir^`HW)bgaT?Z4%dF6?$pizT8EqQQ(#ZYey34=9 zfFxF7JB(T!_M%BbO&$oExBwOg2w)`f^4bT5+V>h^8__oa&2NSzxhi-Pqb^KbzQC9X zxM4@JCYwiVJf_FwRYP8iz|pOVMGUDH8+f2=Y{xB1!5xar2-xKx`D_GJ(cULQ3fV7) zIZ)k8ck2ubgs*dR?=dV9+rRqdKGd?&bqF;pQx}Tfm3BmsabE?0Hw|!SWt_F>cZzv=CooL0OJ(>kV4FrVME3k)`g@ zYb!!C1pfzZ#3u_(k=5?0S0)l@!z|KtSzo1>mKF65$8V~cn|dgIzu#kT_XZw6ICI!< z;Y^;ZK1y;Fr>5sF2@3Q`U$v_$)z#hEYjy9`ZxS;OHZAv2pv_g|@=D$`2;G)cyzzio*1j># z28%+D7`(`PXW7fAFBIwIu*FsYfzV5cmy7#z==x;&0#Wg-Y_7}mX=DGhLtzX_u8~kD zvP%-rNXj??cat79@#UO|vTyJ;^JOAoovq37dbaCdTdyuxEAR3vQ-p*CTH?1LNsftHWz?E;(V4*1 zoK@UrV#rZ=N!)j>RpC1Z6ZuT-8$M_jBDoSYC*>WyjOlUI*%1^_X){|D)ir74h@$Fp zJ{4 z;@_gur@F~Q+>P4nb%0CACBf2kEV;(NC=!-K!BKmMl6Yia1DMg%w=9wFz7ZlQlyE_~ zTn0ndFoe?0nK&ObsNKw_S`2TQMXvxwo?3*e7QaTwuZuc;ot?Qzxg`2xFl5IqD6V7QBA}pK$nS`o29PMoPj3DLj&p+@q6f@_+fHba|)U-z%_Yg^n;?CCreGjB>xWCh5al)Pt=0m z-`JU{d|N20*-oS%?T7O0;*0j`1jB4dD~JXxAVH(z$}g(m*)x-mypvgr>#Ud0KbiYe zucM3%@?$40j2wR8lQimDmV{=cuQ7?Y+XRVFBFZw;B`(>lZOTL^LiLs0$=*(dKw7to zGxDWHj-0-bT@17|En4$P)4Yo4u%(BBNQ8B#GJBb2^fWdETS+>#z=W#3fk~5Ua)Big zo^?GgZC%X_8@Y#>pyymtVzOcfS47df5KWM+D2~N@RsD<`_~T%^)eD-^$dcRT02nKT z-Qt_XTylP%F90v1O{*9cS7!dShj>#3`>8J9RjZJq!2D!$?o3Kuj`#t?NP$`A=MMbx zPf?1h{zD1DvXA;X*JFOcS@=~XYP)nti=v_WZ`=$z1MawDh9{WB_Md|rkls6Bu-WX@ zvjNv&lP;`1UEBWGFd2ejQ0-}y;8iU)4eWB5sJBoXWl7FfL=GE#`WR_OR^%Oo>iL~U zeUWY5!6&%6d+P`Zot7(-<=}FHMEbZ29t%bo_#0)lf}EcN#TumipjlnV8Chx<7@A7I z9W_)HUu!rT1-9XIjAsii+E0EvRN(Kr!dk=l*Hw~lvn4EocMGZY@Q&~+TXWB|Q_PUK z*Jr{Bj_4S4SK5BWfWSn&0he2}MjKL~=+raM2UpHn-;_ey)fU4t>e@0POlQfQ%4Yn! zKV_KvETC5Q)Pa%0VCaCOygxqq5tMpVI3bH~jF!tlG-cqXXo&TvuH`-2=AM$VsNpO~ z+Khaz=svf{$l{++^uY5L;Xlhv^-fHy;UQd{j?L83?JxF(DRo6KJ4E?RzZ~nuw`z3S zG#XFprgi+m(dq#4=R9IpE$_MJNQC`@Q>rXbvzICUOBBEC1GcX-3fv)L$25o6o)vyC z%|g&*oxNkpSEI)Q9t>$@1obs2#DC|D<@i!ADwFx^8JK!0)6`&S+_1n+Cz5S+q=UrfZboabel=m1#>bP(xQ zKL*Mq)uO?Z%s*nnXqqzqJJGAhxb{eeL%EE$pD*~T3x{>_m011za(J`dJCqQQyZhj6 ze|krV9Me6^D~q)C8xd+kA9V)k(X6#d?H7$gZ>PCbnmQbca%aapGBXr!M~K5rc%ZkC z;_ad&UZift#_Xi-u!M%By*($N$or%Kd^h%SglqW;8i;#r`jPnfBo$sEG}Izo+PDmA zPlOn*IIl`DRoXf9QQX|!Pc;h~lCXK!Sqt_^xHCb}TEYZV#9V*16bT z@-x%Rx8Dg!%i&_)4r+*4&(>cIH)t~mc{^XR?ZEcv<9Yjv@%YEWRu|BSL;5!Pi+QSK zNY6AxjWDxnEmw;?QJ8@i0qTUf>Wd73f`A4ko;osNdOyyu(8l#x%EnW^axC4C0Vh-c zpr&;xL2aJ*W9j|Wh_T#R3+Fz#P6PV^Ss0)y0wmA=&v?%r%LBxB?XsmeUYQ;^|JJ}a z^}MX}4%|uuxO(ct5oQ0+-elm}r790FO+V1*hwan31q*BFrM1u~MET~X`Vvo6L7NNJ z6dKw@+`hV>N_GrHh{zmb$e71HK5|>ARy5jzNENDe!|i7Qt%rL zrTtDQz}#t{cJ7k2af-x#>~lFWvK_WXQO{G+A+pp<*hp5Ys+om=O0%2}QvXLpu9jay ze+4!2H4E000lcE!PZZKPA51v3k`2@^Aab1n1lRi9(>eKHCWX^rd;~%q^CjMyn=&U4 ziqO7+&Ah-#8v2(meM-c3Jyk6z4K#)wp>U*W57uyMY3AC)!l8P*&Bu&jv<-U8|1k1A0p=guLc2c&Y=K~ zK6UJ8HM?E)vZh5)kBW+~jN+PHBQSI4wMmIKkm?9>3y&H_EmcVVm|;miN4llVZ_vi) zL|dg8kMv@@87{~9$QU6%X6y=MUY(%9Ap($y>_E({;Kx+8JIvIa@qW(7M+)~mwxlKqo($fRQ(SwzUxCr!z z;gCkIFdM;q{&=s5lGOXVALyhsAaWP>Wt4R#{vZzUll{Qm3tz|Z_@s2whrHP|;gtSCuZ}iKUau>Gk}%C8QumRb z!AlpyD0mD#RI^|f(Ux`$iLtc1{Jp`=jKV74YGWO=X6S(HZMc3Sax0Rzi1!hT&hjvk zOcqgy!u_yaH-Qra`S>MJdQZyno|*V6)+1MTzEd{XEEr>~4M|eB*)@HAP_J?s@zMpI zeVN3Tyovf+8f=El&hK>ScN<9- zD5Vu~Lu0ihY3=BN2Y=B$(PG6J7o)C&Cl+v#2u+t4tDx)%+q7n$H4 zckNd$9S1d#NX>ABh8aN(LIi*OsRF3qgZ2k}$qDfgbR=_*Yg?^ep+|l*5Xt?1NSj%R z^B4Ohwm+GTT-kWw9y}N%VxJVsl>#oE9w)E;Z-O?%YL12JKYxWrKUuuuMFrLN%u*>o zNj_bZ1#sbZfBvu=;#v5E!&T$rm_zZ2_4P8CVUe3TOA_|WXl^dArixu7JJ}Lc_9Vap zvdRZ2LEqglBcQIvG5EruH}AgF4rNNeUy*0bbW}~Vs8q4)k=Z7~zKoh0!#$RQ|54Qa z^{nFPv#olzcVuno`M_(}>r{ONIjt#k4`(2Td1LW_z*ewo8g|(x zHhnt+eKn(%N2VBLCE(ah%WJG29L?g-ny})*?=8&_oYU<106Y&9Tdo(u4{fdL2m6L{ zSB9?Pt`R}8Ynd6!vmp8s27cKX1&=5J@MO?2eq5>1eXvX08*$*zb1uh+(i_k|KxHzu zFFE1sPfcHsd{=kCb+gO8C}d-?qG(L}^3R%2RmnCq^;=tb^SB<0`u88?LO&c*oxeyfrj zTX%)%fWlyqyx=O61sw*q{M(~oJ7iP0)q6OCXEvAKc#)YVirYOnZ+R&5qTLdnCF{6- z3jO9E-ttz0b4=S539xML2>{5aFBA$ly4qw!y!eSr-rSC&XLCYbGsxp%E{bUY`&hC1OPv)0ZTA zlla-Fd0oUyef3g*J4E9K>Myy45moIFQgQfk7eKFAa3J7su|goJ68(#A?pAQWH)p}K zbBe5qt=ozUKM3rW(18{MiT95XF7?M94>V_OKWmF>(juGZNrUY&{FD7+HJc@~dWJ#Sra`6;R{?kXS(|^A8%Q zoF(Yjb8Uh zjug+UMdSc|Xj{iUKIn0Py1D)S$SflkMYCLQW+)mm7I#oMC6$2Q*F^c*E|EZb#_VJN zp(`VaJ?_%Tt=Gw4L_~gsBjHCpzrWgF9;n9*D#_tRBV)r2w464Rc|LfPSkD5d2y+EU zrDfwp;VK{9tjeEQwMs|_b7$Cv7F?rxuL3!Ywl#`Oj+*<&txRsXOYLQ% z)HLXC%H>YR{|0`TS|x?MYAZ+VmuwilF*yud=Q&*CO0App%i^SjpjQIl$JO?XgN`<# zN_Nr24JJIp(sz%MxxRn@T)%rixfc{pj`gaDtqDzO_8PGIcTXL4gRxyuyAeD6FtF(o zVD*69odedv&pz>l{x?m9nL@3D>))&oEi%W^!Q?ItS6zSmJTxA0VP3h%jA9?bIZQq# z6peHNEE2GVN4tVz%Kt;Hrpo1NT z6j?<6pIr2_h>GhMDCw9z&?>zXIeq3#DzOXc=2moY-OvJyB#rN;31~jW0UQz^crR!H z$Oxg6A3bVgxP5Wb-b+my!x_hAq1VGOUiQIpFa+EE#s@1=#whz5r^3ED-0)s2h9D8^ zyvHC2hODKip8k(S#3lk-;WqTqpn`6zZ*6F$Bt3X&L30gpzV~%sz2dvRKipSmZCKWL z-8%jG^NAohUKwu0Ck`=XKzX;^+*h|gm&L|V=WZybmdmH~eNqegxtZ0)6b3$iYGnkL zX9tQ+Aq;eCk+q4aKu1N747)hVoVP)h8Wx?@wRQWo1PZt?(o<@M`dNC1m_=J1N9{lB zB+5_Avx^ZH5Yt;M^tB1h2f~^flZs89iWco2Ld^E+JHBJ9x=sDH00IJ=wR3PV2Lb{@ zvNN|d1+@R&Kmg0zU7d~oTaM-W-*ONjD!_f<|GEI3|J{&W%}rhZ_wN5}M(1MTXbM;X z$i>VGuwNiFKmY`W@<>iBa8|HXrcM>tFbQDY11!gLF}837wEws6f19xY*8Z=>b}_O7 zRCEObHZij|0kl9!fUp392k3ABwEthnfA;}D^?-K6)!EG+aB%;-BOtIw28bXaqJY!_q67#$Aen%S089oB!FxxoS+IXK|h%)Slx?Wu3WfBVn3 z5x$M`ZNzV*e;euBaNkD$HlX&||NK6bZ*P7Z_1nweM*H^Kx6!|C|80zKdwv`9+fLuc z`gX*(vA_L)$A|N6%kO^NZ)bcP@7p=w#{V|Xw+a5&;D_HP{I>VEiN0<0ZQ}o*NxrTA z-B0>$nQxPQoB7-1-3D60BoC*;^=U`u_P_buF39H zoh_!RY@@~3kHQqaN7z8nSl6<+pfs%!BGC`Z1eV;h0Jih6=Yp;wA^Vv!Xh8_-W%(l_ZJYls!9)nMJhQ^$mL|D& z(L`m8PJ8D_7e;YG3JZd_Bc1>6L!mM_A2~_b$KIdQJg0Vv)5zAtKs3WSJbOIwU+)`) z!-j=4d?acqugrsVT5#r}h!4wJ0w01~qom0;@7|h|$!l7yUF4?A=%E#estMI>I%ijm z`9ZP}ZYNdD8JjF$5-9oe*A{An4o72V4?qa>dh|9M;7%6Oqx^|OPZ@LliRJ6f#3p{K z0l`qoB>BSyNgXi|b=l|!YMrHJt#BlW+~MJzf9uoUusgDpGmcr5tTvZ0Q>|y=e^;@j zPJ*Dsb9z?oX(kdP*x}R?DrK2s$!yAusR!~;`^oZq@-cKCn;eWy%yXqvjI0qw9f_B4 zhtbvlDDqq9mKAb=CiF0*%EMV497bWo>-br?7lLaj&u-p?$1gA3a3&2ZjCB{LWN;_? zbV7<6AfK&U=sOO=>`R;kUY*rYuf2K(2`Z@QvT?Zx_{RK3l~P_lVUTvFJ?5wj<21Sb z5;BXoiy7WPqJlhxB-9FOrLH1oo9ZF6M18_KIy`r~2clDgpu6F3CeI~r(!hl;>pqW{ zoB(>?g6cYJ@JT%9J{QLtl77PJblx#$7X8}fq-h4oULA=b=B7G@d7fd(UeeyrP8*2G%dh9@#mU=bc^HUZ*u*`?8ELjU%VR+iGASrcE%LjO#;3ez&kvTnjCXONT(uv<#m9 zTCzTZbd)6XK}cuRYBRcD%fyZTdKX7#{>Mi7+CiYvPqf*~%DN`Cyj9xn>hJP;&E`gfV%o$gc3W=Ui9Eq7&OmaiB1OwArA zt@4|z8N1O;E6OQ|?@*_b)B7_%4~l6cQgs}daVX>aT8f`{pI3?s4Oxby7H}ak9&z83 z+UjI7n?Jg>4r#>fD#0|EkS7cum-XL1QnZ1EfECqAeM)pn#zOIqCk_}yY3`S*aEi30 z;n7D2P})2_`}5e=I0lwFVfpeDJLu+$*coA&cm=3l1Of^4t=TVh5msMy_K7JPkc$)S zLx^^s45IN`W=~H0gr=VT=C9LsDu)Zrp214y#0u=?uUA1J)B?@OA@Ug!c-n2c@Hr*! z79OmIQzQTt~H)3r#@H+a>JX~;x$5amw`L;rQ9?j3FN_NX^~UbjmNO00{p&`HiO&tnDg zFBK$Q%nNr|mQpCOG|Xw21iuV z5KaZn5d9w1P}dN zVZF^3=6TU38<=uRH%}_E<0{THLp)>4hl_x-D?JgeAFAU`4)B3b3|Hd7+~=%tES*Zp z0vwn5&b|57q_)K?Iaq1mJ`u1~#Vzv&2(5U9tdl(RHl)%Humy0yS?Lce!Ni5wj8NWP z6#rYfkqJkqnbt7`z8yH2-jVfD}Nl6GxX+LuozX57W4S$ zlnqKY6HI)UPuQjU_Q=ebyS?~-uwLDDgnqtmQ=kEZ`S>nDG~Sg=vzvkh=)1TFA?AIT z#hZ8({4HKb1TcKADpz|4C`Q_t2>VP?4az)HndO8LCFHTPcmBHVSSmDr{epqM4=)jO z-eW(QbXO;;N2mGIb)sda`d2~+UY*Q6wCRuk-sJuEuU~K!MYG!19h0{LQ&nkxmW=25 zC4eH65J7IEvh3%j#G8)Gj^Xh3LMl+PV@eq#9J{jf7!93;-%~RvVUKc%njj3A$;`(Q z(O@ceo0J5`3`F~uy@s-WU%cE40Y9HKa=d@`9zQgK#6ot5CREQp~=)%t4zv%s^&AHd!MvZ03S z7l%Eq5-V^1zKk=PBIhN{QfM?+h&DRo%I^-sCSC>xsa&5G=2%;vn)N#Ij%kf?68P7^ zbv=a5nSoElMg1nsbJv#a3fSZbHg-q!vT#O4xABOJQMbi4h#J2*CD#ke=6)C8kAm%v zH&MWyhc~jshJ{0N{}=9m&&KGcWB)gw!b^aZMPGSMfnk7XHJ=JEUt6Jm%6xy4Qb#Um zu5_<{Yhwsp4(ZTOs28r{*p^!xv>+ zh?OjD3Hz1#o}18|qO~emX}XZXdc}iLWp_Ni4Qp+&!-GNUne9_`gW!a@5L%r>V$#-> zeL){1yVyc#V85SAOJM2=DJTZJQZNwc?9i;`V9LB{Eh_N7x?MUWy4h350fcOjQ77Uk7f<1Iw^k z;r!K?=HcMnGeBAKWk{jt>HToT(p;){v>}%i-Z&8bfMPM9V#5$rt-AISusbzald))$ zRD?V|P0-!pVbhuF;D+Cc*6}T>y#?9a0Hp_7EH_%Dw2A3Efjt)G`&fGnet3oKAU&Y* zS`Aj*Tj^_$YYsy9Y@^Il`2^DE$Vq`2eim?f+>P8vVL)J@@OzfQ4v=%B^}5dbGI=4r zb?g!XFMwrx^!Y^iW44#>ck(LSa{bZxIf!Oh-xJ$>hhzD^D8ka(VSj|v-N1v6zV|uq zC8*6*yCIvUzL+3vw-87~)$)7ggG2RG@?vmSQRUd3c7PJ# zyhu|{-hPr^;v>z6U#!0!nxY%;%wQl z#aGH?YkB4M1fLKdb_9U$dTYk5K09V_d8-=rqdNGRQBgK9)yhGubd$Xnw(t5IZOzLA zM-Hv8T3zORQBH1~=t8#*=>Rw7LwjsNAVEi0f&|Tj3&HtHrm3!b_6|X2nUg|GNxEbA z?jPSj$zQ_?|MFKT z{zLI>y{f)E(!6>@v?Lq{P2e$qUi2BaT-NeP0xPz`fOWnw_Z*X<_VJo|zyA`31^zme z&K@|@J_tAF1uV)7OX+1f&=Ge$?x$2|T>T*_n%>izcMDATB_vAiL0QuA8!3j{8Q{N~ z-S)(ID_;geVwfYX(5qN^%n>A=LGnbvgMlWjLoU`Ft5fFKF2Vbv=@(sheH!Cnb>AKl^f>BImc~TqMnZhp#w6>Rn+abfi zf8mb)m1@{*v-L+>U=*$EbWz9h*8$&c@7{!UQ#E66?ua;PQNy>g_O!dCY5nDN-uBoxr4^ZXYhCUDIH8z!jTxI>`CJqO5Wd8)<;^7()~M;E`I0yWI`! z4{t9kObhvZNnm1?D0N>qF%<~<9Ej52g__c${aeU9>M}Ub&+3Q5xZLZ=hPsk#-ux^2 zy0fpY!WB@;-gULoFq%c_JmQ?mG0$n?gUg*us*niIbp!qZY`|aHLJz3G==;mLUUm^J zX>)rU!*o-uF>EewGv(T+P)84wPhvJx*LSR+rsQ=R=pG>LM*ZU3Z_}j`rvi*0$~?c^ zy#wb^Ja9_mafI`58_Ts*BlA6fLIyUXLe~GtW#`Ml=^ed4L)nxz8#%eCPt49u)yL*PMoG-<=%Iqb>;YE*VMkoek2cvAGLl>d zICNjh2h+ZoBs{@%b3$1^tjM6cJ~th)(iniE{oT-m7?%iN{?x}O7SCCG4EI^Wb5e~J zHjPl*TL%(rP&~w{-BcPHNdM;W`kR;VGdr!7Kpw;7AA~^mqn3HXAm5GF3DHg)HQUy* z$+;qUu=yVW57`_m-J4}XAGaZL+?Z|rQS*@5BMy%?dOS4+JhkGM;PVZz!IYKYdM~aC zx5tv#MS0@zM~g}~4}qw1N%0?TkO=UTiN<0^w$ucy0u|lQW+o=hqW-~3MPB#JJ5u7MMIinqMUesyR{@Q9v08VK#2>Rt4gT>((oE)Q;A`Jw3 zTM^tGLKb{}eYMrl@smxKDjy*Pq`U3a8f^E=qllfisq(1~BioM~+@!2m<{AIM6o!6< z$<`+*?|@}JgvW-VgtHpfUZo6%d1dd^xe_plp_(bm83wC?84n6T%ZSv!Iz(c*y@etZ z_0w#XS8@)g9++a_RkIsM_>pI}BD(Z0v)3;J@TTQ`tf9cu5UXt`(M;~8vIrWFS9BPAlu)uQ-U$0Y z)AslRX?F|LaIwt!Nq@*~j_9V4`yx&wtO(ky5xRV*ud?RHe@*j={3vrJri13QpdM<7 zA}ql=7wcO8GM=%DXKD!_;7W#ofq_9T8@pTN6H^XY##UR6>xZI0uDcoxOK~Pw^c8OI6iCQOt3CF zMm|Zoo7`(h%2tP8wO^=P2b$cnn~mZDp4jrs8SbkB)XpKo0fU9)sf4-`3m_H-#Tb85 zua)>M!P>@cYb(YJ%VAa;1z0pG?k}vDF2#^CUhN*FEX^A!hX9-*3mW`;U5dmCBXsrpX-*Rw~z{e^#2 z1!BY#H^6M`MF5RDWsA<|Z|$V}mB337&b3Pa&WO!TC}w9k+vCPW@PBQcnHfsjMRCKgQI|8wbADiv;yQ|2+Dh5-&z{wYg7KA z=#!!vEazX0Jg|m-k)9e*Kxs6R^9&PhqPtOJNK$O`jgjKxCON=vI--K8zdZ2g>w?2E zS$&Vb*wRM^h^L$sV_v-?WjW?q1<`DX?$*i4!SC5+vxTu2;75`6!*zd7(Ch5x!RB{8 zHR}oy)!~fWt4ux67W3T1`36$`0xzgajCCl@sk$-#(23 z6!61Z&0&z3IZvM$xTazo!bA(Za#6 z$YTvtN!={BFVdg)Te;Irj|}xl4k{j(V@7Bj9Lrn*$9l6=SfwWcW-BKhW4k*Rps{wF zT`jqo)sjp{cO*W@C242H7$54>gA11|s+%Kaaizh~v$ubWh|>+B*`B)Ok`<7*(84nw zvaazt!_Uz(m@-qQhub7QWqdz~@M{$DxPT||63pPbe!nrJh?YMM?Egx%6>CY3$i6I- zHwWO@nOiuqw6l)33Z(D4~ZX3 zyPNoJIER)awoK-H>%_GTGUYNb`1mZmCn?j?LzWC+0^8FZJ{xu1Z$~MaV(i4Qu#pZ5 zBgzrTA;ik8H(5pQ2(aZO-DU>TvS=!CQi-sobG9xq58G(hFxLyUhFa0DgWM5VpRW1y zbJ9ufFxUkB$Gm>Bx~oLm=Q~3j_V&<`v*X8ePt*>5-l)b*zndxG&yDCKnQ|O z2h;)Y9v+2E^msuSW)XlX*~94jo)%gh2^a|_6M$g>!_0}X{FV@8YWB6<49XL11M-jJ zT{POZsGwy*87lm_T#BVkD37(5TzJpQX7uV%6zU@rusZ zKrEhlz(xM9_I15wJBhu*OcAvHZkvSsUSJ$aouBHO)9G%mAm8J8JnK(qsE(=RE6^U6 z1hQTiiLMhWy&x+}hE=p@u8GEa{gP_N_}aqWXGAA1k|EAQb4aqz^L}u#;hi#jceO>& zjISp1#J@tDzA!1h_aHt3r4U7N(#E;#c79(g*?=h$4>YUVL4NL>gu|$zJ<%gapLXy# zx5arkRnvC2ozXeny=nCLO6+CnuG1L!?h-tUgR!~BghT=a>>V`ge#UgS+P_)`rdT)3 z6=K?`_*=!wznJgzCG`Hn|Jg+KT56#P`tJ@ofTa^muAW zGMw!TsOyN{lMX-y>IwY&=sNTJQ~AWi`)h|3i81Lqlj#b0(psWP&iEnOEqHUd4DNIc zU!iX_Z6TNBMI^%1zbXqd8>@WZ_sOAS^9y(g#^EdVS40@59yst815J!)&YwN<1Qkp+ zF%X}at|8%9JwP2OUW*~?G|R&GqYWyN{krkvKPE0imGQvBC|MXid5x86dsAJ$nuz;$ zGwrfer0Y7Wv+VmmF_bXa{uRoBN?Z{9bc>~Sn{P4sK^#wUe*h>wpct!oN%h7q;L+RNhrfnk zSJ)d9nKojas+mUeJYsZw%#TK){BydtQ|18XK5#s+I5Z)<_UoTyzb!NvjXbiWV$JVU z!?HI+GW8uDSqqBoy1o{{g|8dEQ(VgI;mtKik;e>Nu@{hL_Cm1Pfro!!8&t{kw)&49 z{egVP)^)l8uO6hzrWToXsu+JT_uu7&xX+0l*D2&n@)!kI%*Ti(O5g&>?db!imYI3E zCqoD}D(Sk#=epRsAqU2^j}#<;yN*$)y_~T3ug3 z4&1DOZ+C}-fic9lY}#0M!%X@crT)iSDfO5XZMRuw+m$l*C&XMvFPma^Yv?;c&WPL! zjPn}ICJlnXHNK?RZ#p)AW$42vH|H-nJE8nS6Bd?gikwFAiG>F)7*bhI&WB^u6zKX6XWxt(&WqPabWI)b4!+yz06s!2h*jSkfa^Nuc06#i&NYDXNWnj!_nAB9#A z{4?iESs^jr!-)cC?W)&OP9~Ak!41rZ>b^15b^7 z`=vbLa7di2r23z2_Ei^W87E6CU`ZeCStsob z8q;PYY}tQ|Ise)di$Es5Pzytpfc7Di@qDTnS#~Bw1(Hu(i-L5~(pBvR*@g#UDrp{ZLqOY{kC5(CNxCEUCrm)rh^a~TR~i>`Dd z6&+|Oqn$EdY7+m|9Gs2WA zLe8&(uDI>Pq6>`jm_q+w5;(^G5cXOiJ-z{IuR#SviSw@O%sMuCh${T6T_9OUkUL>) zhA{M@uEeK<(7kleENtL;VQJDy1FoQ^R8x`~-R3Of|%Km0a2~oJs67a>Py!lJZH&NK_7H>&i4Gsn&(dqqS6GuM4xJ!o0o~b&@!eEx$Ow z=sC^&ZQ!@#dAsni$eW~X^CP8%)868?&ikasIb~$&6t%-{tO|=MO1rb-I2NIvi~Z@g zVBQRxjA4Iv{Z7_MRt5zn;B-0avQ-`h9*H?y8~iiJNem=H3y+(#YQ2k)SHD*ug9HJJ z0?rF0+r9S_T{uNYNEZR9Nyx3+^;UBssuzNMj@jhU2)y^)v<8>jV6)4vMOhxSnW^JL zR?t@iNckSSU#pE|%tERHdwZ2%tG}rHK-Uo^6`!jSN}_N`ymU-{rRWtu2m_vxrkGNnAXK6G%% zl0a8?JexaD-Gs$q#67gzdr&hY$k%((<8s-cvHRKM@1IS^y-S9s-u!Vq{+q`N8dg8L z4mU~=M#jtyf4Efui%UvkGpIflK%JhllUQN1Z5}D&0U`~ZGadZppkxIa#F_^Sv9j5x z)6DW5d)h+|tw$M>wp+L~55oaTd1H6j`R*k>^PmuR^JcA}J&BmF$nuu2ToOr>M*Pb; z_tb-kC<_NC3C(rREJkF}3YYWMsY8as)EDqot=G8InS8v$CV99(l+G06J-Rd;9ybxJ z*FZsQr?GTd`s)=V^AgYD$oV0p=@_IxgbJ03l;Wv?ABRi#mpaeZ9YaQeSegQ&&+Lq< zqC|4b`Nwbz@y4$Op!ekIWz39`;b_^-73M4yy|o4cVZkfaghs*nv08f2v1c)7Hpf{;H_Z9o96r4-nCE{^ zE$ttr2|E4e@pqKpJ9ZU>OWUm)C*BROW=2;ck>*sKkZ7ISc(PfwysyqzSX57eO22$a z`geS2f48c3`dvR$6LDvSop(NomY8Q&1G8Ltl&unh?`s&U5`iL8XO&SVDiba3!ht7kO0~3)50M%vaKjaxw5}=$j@V-G;K9cE1 z?@9BIQnSXcS>1>(<|IKs4rMGoHMI8X710EBrG;({D}n)i6ktZ9#(vyU)It0_PrtVJ z^xK{wmh5K#84I@#Tb39IPn1o~$Qry+T-5dD!keLCrrvc!AVdRQ2U>$H0AzYsO-mkD z^tXEPn20YpH|{rw^V8}K#DYAcU-6S`R zs*PK0tT!)7W1O5@xd`nh{8ZE&=fXNM;{urKeNGlNo9gio6=HTCJd&*EyVm>S#_gZy zv=)$A(2hc7D}N_|%ZP=dIS~Y!H1FGx7Q*RlenaQjq7h_0TgLc{b>8(SD4cN3LGE1= zn;I;a8qhXnZ@)Im@8U&z96cT1ela#l8hIY$c#5t71_U)T(2v-YLmwR}(Nn>zNh7Q| z7HoFw34dA`9;DtDBs4)-tFkxY@OLA$Ko0Xj5@(`iln3M)q^)_P3*(`c)?6A$#gf%6 z-Pb$CNkykliYVMs|Dgu&gugshuBT`QLDX?^q4BhMNVVK+e!r^jpY~n32~MOVBi&H@ zA`9y!Os||5!8Ym+iuMSL(qFkM&S9&MbUrT`@?Q2g){!WGHxdjCC7?r=lIhnO{%di; zgAy=-HEH2W+ka3Su~eIPIN#!E+i3_wszT_@FkyQLH+<$kDnR;}s?uIY6s3IfFDy?R zBR!r{eFCAn%=$EvL60*vOu7EW7%kK3)HqPZ1s{TRlPUYDNJG(iui@4+BbkDt4UrB#4VDF-DEij5#&4CMm*WWUvUw}1*h631 zn`$*JvK#f{)oXV7X2Y!pu}>Tj;LrFHq*+j-bm93CWOT@dps76u%R<|ONzr`D=eNHm z8T*HWejDHNH4Pi$Rm~PkkP4i#kki9TeSwFa&pE~^g_M~%=q`bU5>F81$@!YLJ~}3= zcLFnV_-ATJQjwAFF5tTQ_<=m7uKD|Obn*){kfjY7It(^wW;TIu2EJ*7&W`i!!PKWDgJ$({UahQc`td&&*gl8o!M-c0;A!^2yE zwssN+cB;oL?0qs@Pdq}O0hOLgS~0urLm*IKHM6C)nV z$R0$+nXhFHiF$ly8$hI5OCW(NqUd9Y^MCtL|GwVHb7}A0sX2PSSa)SVD=9l#J$uit1{`CogwkteQhU?&)g0;Q=a? z@wagVuW99OCgmTA!x^bH#ig^JPh3cVzEch4<;FPQZZFQQTDVXp!w&yl9$EMptKR@Z zFEs#}j2eU@uW5O_;#;)^zgq3c2v^#e84A|d^$@4hcBkbANozyFOyi&n&7pPVa9T?w z56!zW^7J;>&{wt9Vtp~?#s35xT zg%>*%dSBNX$jlj%0*m(p!2=wl%kVvt|0st0K^bDV>>EPS_fYAxbkTaTSUs!Pq5&0> z{s>?SL;7=!8us)glYlZJvAt(R9>oHGiKny7;m@jOhuR*I-0TCNBduOAVix)pR)Zefz?&(!Px#?(1V>9b7m-IRpSN5>IvZP5QxYmK5W^z(za@d?fJ3 zgF}%!!iT1>o?B&AS|?!%-jms5T86vS_Mj=#%{jA#oy^Y=UgXe0R$VC5F*TAGc-!=4 zK~?FzRFc0W{fHu2e(ulfdGr{xur7mis78u&=WT!TAnTmNU7 z@@6QoR=qtS$ivc_m^(El-}bx!mvro^jS5xL*62_0;Er5cpikyEicKcrGFYco6I7WW zhAo=eU1z%K!`Zg1JXTgJs1=HGe*H!2gnbF=*FCvD4w9QHKd+v;Qi8fR!+kk{zJUu% z15RD`KIn^weKi1$1VOll4WGR?r~=|vv$qL~o=m(4Nx4_#7N0~W9`_*#dCVo&Kjt;K zwtB?kiYN;awhws}xWK@3Yh22t$g6r0Y3hgnI5dViNncK5kzp>m2WxG-p3hV0RGt>x z!ULe2$~~>?9b)Ze=Y)zPrPA>8q;{I0iE`xF zZ`^Ne9Rkpnh_-(32FDS)d91S+fi2yIxfyRKm~D=l{1}yAH2DaOzi)K9$2l;91{>ec z000KwW!Ce6eDyR1g*)EX#8(84=BkQEpN*-h@Z0O;NRlv>V$1A{XXlK#|0nmy$EP2! zdz)vt%(uUh^!ABWr&z1KhkxAYnR$$Rs`;>*eC!S=@6FFK*+FxD@~W0Lw=QsYupHzJ zJJ*fx^r8@FG$RGvov#A`x0qH#2L;zG=v#@S6Aqk<^8T7}zO)D}4Rp;h#kDeh$jZ>z zuxEP0ugp1rEz+inM!_lA;VYcc9_u|1puPv6b0kPwtbjH9+v(I0h?x<1%Wexz!SHf^ zMiw&K1~F@(yvWMl+8(&{Z~ZO7K`j?;D%*(~pOm@+ZPZWD?DcR|q2WSa6qT&oa2@RxvhB{E6C5u{NNXgi`)h~6(x`x9>OF1-4Ed* z%OgROCX9OR?|af`1ED4FGR!TVLBZ`rejfnw%?*(60bW88s`U-+(Jefy14ADgTdCC6 z(7{Fz2Z8VEl%?t|X*EKo50}!*C3K{LKUVNG9>>wgt@kW=S&Pn`e0|I0(>?Bb(}^5OI)O` zp%~eQcnOT!=;@xD+`3uxGtPpJ25suR-NoZL|-nqZ=AaJz&C0mZ+iiHY%2Oo>E?|ZNQ4Gvcc~GS+D6`Bk57t)mA+rG zXHsYC4~i)a&Xi&sgtH{fd&#K|E0mwNsZPm|gaW0hM`tiI@pEu4_`n}N6Y7ZROz5_= zCL%>oPfv4`9syu=B*8b^3W?us;R~$obKoE#Y8KqoU^SSCm9vVUZTSPlk1gOY)6;7(~}(=E2^<{7J?8 zNL?kxuIC#C4tf^Lu^AT+uMVML+gbRC-Y*Rd3VJ_!9tRkqyEDieq=Z+}dIEX+D0cIw zlIf79LrH%kvt5jWFF%iKJcs)bb~tn{uDvAvN9AfBWrdF5jp3o$$>n8a9iD5LjvOMI z*XC_C9Kx=8Z!kV__7M(7#~)+w@c)xgeDDA{-6?`~+M)YPCckXyFvig z7Ia^-6VUDrS>sV!eXAVFMYp&k?zem_OR;2*)vK7lG2`aZ*0D7}GSoyr7Oh;)4u~u> z0|qF(t}Ql9VAew^jd%t|lVVnQSHy>S_Q&Z%&p#?j|7?yIbP`MCit}L8b`J0rc?nQyISOXiXxN$u2uA4vkAF;0yQyFd^>!r` ztJyUn_mCPZMIEItBLN^sJh0yHC2u&C;p~8hAe*%Ds%*EH+7?mTt~M5Z?|P2+V2yDx z!>X*BXrBDs+%6RtSTBpNAvF>x1us#*6GDqFFx|LsNQ_LG4`wh={jwL}#gDVYg9h7p zLr@5GRvc(D3gr~e-dK`3Ay)$AJz%j~RO7KWu4hPce;5qoYfKh^yOriHp`R7L7~$Ge zZ^1RL6RmE0%$%RqSc14&WqmHCbxiQ=GAHKv>>GH1u6@R1k%7yFieL~9IN;b!W-&Ws<@Nypm z8;N615w6$RSfxgp)^I)K8M=Ynp}?6y&sVGSh8d~3Y#_0mte*n(|x7Iy2PEKxv z4xOuFuo3YMBit?(e+TUk;$~}y=32)>9VUjusn*UQ0{zPibUCPDk;xtY-rp!r`>V{U z6O78(D?GC+@(uB?>LcFPd>YL@p4z$XBm&N>8$6$fQ$SyqC<{ik&BJey2t>zHojQBA zCnspe@G)yej;1s31fROK-tp<+V-Qi1CgbZY0MwwcmT{6+nlgN>jmNpCDef0 z*vZ+C5NdSPYCw+*Qgf@}_0zPiLxS%?`T7fOJcx86ESWAWb-sMb(M^nMf*lZ##NgVz zN@rGlf3S&Mf^M-z?rJc`_lJ;Lt^A1J!nL*Js8dyH?Y0iS!z3`T8vIxT48k^engF0T`8r&20obYX8YZrsm#r6@huLz-aAE~t3KaJJRV>c*`QWGJ{V1X* zhX@@7^%l_>I2Ne??`}K6`|_2Duof6Z2eb=rq9=Ya_R}dQbc5>BL`g&gsOlZly&(OQ zli|+VNR+2F`v+_7YLjrgQ+L{}-SdKT!`jSLZ?X@AJ~9!nuf^#uOwt(WC~3U2Eyrnd zY3o$QLrIs6M3C#+F)icq0(Xaa&WxFDHSD9^>+|ZffiOW;`5_>pU0v9*A4^0Gey}|X zbmnnnKsaE!CglY2dJJ@*Ub1p18 zp#P=9oZ7-g9>#jjYZ-m;R8;pB){HB^g4eY-CSA#Go?<;k=O-a*#&`Xl(7+pJuGCfQ zgpq)bF8v4Q`K-sC51>XNV)b!?bu$KU)%j#QNDTi6RG``Ua&$H0X5P--s=iOH;bYi7 z81GP^B!Zh~Fu!;>m_@hY!a$>-Zb`T(Q1*A4V|ymNMHHr-6o?Kfckrp4ZJA`n|QmMk@52LSQ^efx$&O6P?nR&+H5i@nm6OncSPAJ{YpPB~m$L zgh5u01CY2@sd7PfY^?!Er=aGwUC}|7rFCCTR)T!8yQBthAazLCURhVaE;a-0U za(3a45bD|cHqP(x;VMwK>E%sETi4nF1>bA^`w5Q6y#rPw_z z+O<~elMc5p!2vPd9IMmG`&I3S&~ePNyRbGUQnQe8H9lf~wxII350VUViu6C3`Kc%r zUmDxI3-mp%)xlBlp!M_<4K^v%6@HAygZou?c)l74zRDZs<9Yo2Rvw@YRI&BftsRZ- zBsRA42<_2Zz!KiZQ7^`pLE#e7_OvK@P&9K}ko7Y0R8g&r_sgXLl4C zIwGz&{QN#yUIRdK#fC%Mf++_~sIeNgMV`r@T_$}nMy=foa0Y)F%SMbFiF3HRRd*1? z?YR8nyD=}6ANfxSn$4I)@KlP&7syG{XRv-@7OogR^N0;W=57ptOo3BkgSpLxvQsY+ z7Zm)bn=r72CM<2_;4*pi(8*9XMm;1;5j;|BZ zJ*cD$yH1(lKti#Za6@>2YQB%zXvn2ZSv7&3Y;l%THXh`zDQ>-c0&x+wKm4I>N+ueV zdW3W>Eq?HU*?#LHW&jcZ{itSVyi;Mr0Z3r&zWx+apM{r~nEBF8o%XqYR8YFfPd&Hd z^EoMUrGRBSODV7zvMTIqrL<%Bv4wz?Sbg}HiDwgyZlL>MDaRpdz#HGb7H6QbjAt1w zj_(J2s&AtYf{2CWPpbT-j51mx?=hf|Ta#3pM$pU>PC{x*(TAi8G69%AEc5bUoBrH8 zkLj}8jguI2+|9|GLV={Q9l@HuFSchsjX#)QHN%A}tb#h1!L4i1mu*c^I=G@JD(5yy zqvS>9T-yeqR0FPbc(Yyc+0WUZz7Jy-q7|Yb1iFyxB*jmC+qRN?dVwA?1Q87CN423e zq}O8tsHjd9kDOHd4q@@7z#|_y9o@BrdSTyQE{XfD5xmZKAAVU%wIQJbo=yfopFjCP zeCqhk3id1W`yfU^?NQ0mp%WbXB}>{NnfnLGc>{k<{{yKAt8W4S5N<@e zxo}ce!XP)Q9Tb!Yfkv%I0+8GfA;TT{>Vl7dY2}1`)nnUJreS9zFW_ljd=VW?lA{#b ztt0f(m;UeGs9}eQyq_wdT90+ghym-i1mN20-{_M0@B2DJUxVa%R^Q70P3WDh;1f9KjI z%82$3D0OR^^Jg=T*4y8DVHEdh`jfn4K|%P7?bhm_0%l;NH7iB{!dY11;FH>+1I>LK zD|YMy;@sD1_tte8B;?1FXwJu*c*dkZ)kVyfj*g&(J9Mt8{$gqcB3yMzpLchVoBJ!WIr>#z;Em)6q}?9cf)*O9P|P}UR_NU zQ;OiN1*)Bx=Nqy;@GfDrQAe3%=!{^Mi!J{BUIYjP?F(63FnLCp%y|3^KQ{59kssy- z6%SjxO{Woi^s3hEcAh{9kg4^Ujp$^%e_AJ!km6%2Kia91`s)i5k8{KC*J{r}C_zt2 zgz6OHjO|NWE)9onDkZA;7S0h*LSTv2PiL@TiSvN}D@`p5Jqh-$%% zDADv)R*z6}rlL1|n@(>k^Z8nn%(|SW!DNi>=GpsaaQ1X+JaHUz!qq`GrY0ySy86*lo z_~RlxdvmqXW;86MvK((RWf73O!g>s*XrsLL&{|h^KtM0>d+B~!P)Mrz0Exe-c0i-p zdOos)I&@dJx`WxUJxQ*8LP1e@B9KRQcK`qeZ)GMw<}?oAFjR6%ae12WL(aKkk%rsE ze}rqZDjn)haIFOF8_%!bTAb>+|Hbt_Hgt#x+X!jcH`Ui^)_`|R&0tYi&K74%m?%g? zm~mhQ(1sy6AGdP0jw?|>?6NAd21PKJ!eX!Ers-xxoWn`u7O+oV>zlGf-q7U=)(tk* zosps!GpM*a81i6!^>6a#;D&;+#zP<(ErHiB{Q+u7FJlRTOZ&+?ghtH!)+mIeK+hw zBgfEMI<%0}?cZ=~zpv;(2l01tH1%LQyO~)=f$=!{vk>Fj0b}MOkGoFfFF$^aOALm9 zTc`8)hc|}v%RqB>W%4t27T(5rVX*{2<9nl-OUAm1uN?NdR$?`%DYKlyvNIqGW62tQ z%H!H<%eb^GCFIC346DF(2{YaxY0nT0&ql>3i&d$KoT0L9^LgTIQotErS4Dok#^Y%%I#iciq#MBqqHOpvHBc~FL;bZiXhWWJ=%Gk~dj( zZRQC6n-mYDR7cv;{0Ob+LgM3P4i)rw3z6sF$$r{iXsq858IY2DuPdhtG~@52W)i3Sc=#&QgaM` zTE>F4zfg$1;PcNXe)cjcel3-8L)+TZUi|zk{km*yS3qc9S5{<6emtL(T6(2{L>JLC40=(29p@B;tpt4iZMwEZoU7?>?Jx2^BL?cH=23ta)ac)sD z8e!_idG!~RdR-X?edR_F zML+}(g_<02oVI($8puBu$@7Gml><9+n!o#6e&ki-+flg!VL!A11p!Dah9HbJd0l{% zW$%nW=E;D?$zuquuATB}M)&R|r}h2gEs-hoym=slM#3h@6usjBJ1tn^aBf>o(m-GG zMr^O@-p(V{f}Xri9n1F4Q)@+H5lMq~Ub?=@hktmll;(SQr5n@tk~y3clN)0}Dp_&G zt)5?q`ueg@FLAhKqj7h4{0S0eu~TUPN8S8CSrEq}kb>NcJ>x)Kl|?GRDN9)fDJ`}+ zN%b8J(|)J%xswvK<++L>!v2x1Z_qtKy;2qjkaj}RiKowYY1MFvWX6>QEry=DwEoJ6 zv(Z>s>#d#DH;eEeD5033>Up*0!Og%6J#wGXftF`EhNUPyro;p(YRYZgl0~xP9e8iW zArT8@Oq?bV3o>MmxLI+*F;uI!cxk4kan^9kV8pY6)~B$~1hxs#Q9E|^x2gduQqf5Y z-u_O0GCg@$xV4cw000JhWhP8lcRn~H3-8?yuf!H1VnD99LAxFv1+NXl4~4&B?_*Gq z0(t`Bgr#eK$WjX!kww%TWZPiuWyCHI=;(OCObWqC{vO<-#79mZ6sry%54J+Y`x z)nlLFDXEKTqW!*>aMy2aCw?+?;TpE$`#pT>FScDRNA9ysZrpw7vvCrb`pJ(?EEdi{ zE++A{U{#b|kkFvn(6%W`?QT01-K2N(Fm~jrV9WVo&G?KP7xXSi>A?FX>dd+wWXt57 zK&#=aVRr%bhD;?!qVNs9>83e4*e`9x@vRCvxDX?rt4^iWHh_0zC$*}wQILf5`uB{? zv!q>MFcL1CVRx5|DzPfHK5qI~Us7Z>Vnopbal5?5k;3&vn{`~GD&P~yR#?Rjg!!4- zo!IW|Kj^+X+rpqLv_;z1(Wv0Wm*U8w8>xu1J4&*rI?GlwBNCqZ*O_lApDKIMt7g2F zS=muI@b8j_XtN#a()@{Z*>EFUGf;q&N$yg zVvP_Mdh9_IGqN)a)M~IdbMgLI2_m7|!S~wjOK3t=9f;rJ%@K67L>-QTtnTvH0b87b zqdhdfjxF5G<37<>eecwJKRE#(OL1Wwh4|{*F{gU&sj~iG`dKs|-Uk#`=m;NsRV;2H zn(x4(;JR!5gV|K#fSp$ zxZYSA*9s}r7baCsInv(uLFOC*k^!o!|I(feTJ__0ON5eYD#oIwhjcrgwZ5>4yUoNv zXc}QaZE+1yZd?g2O~qe-q2UC-gQ9U#dc^_Bdc2Gq>T{x;_;?!)^xOd^uo-Th*4s;^ z{AOL1QbRm9&lb>p^&uW5@b8Op56ns?dg4)F%C{Q2H9sEvbcB%1GBD?rFZ%RJo1KF? z0geIeolv06hyazokHZOPjk)OkOPsmK)U0nMQnSc<^&O9=DS4&$->Pp^? zllKVho;B0TvatJjVTNBD0;e0toDAjg)v9dGUYlPXThj`LavID!fYiJH0aMjQ(LYpg ztRbmHtKkjt=mkPw5HN_|zU(qNC1=ea2t7of@C5M6mM&Z%yk_CkxeG>G;t%s)R}L?! zjC2s~n}vR3RpzILY+?5cIJ#N(ot)IC#Mbk+HRS?CsxGDQy<+3HLTCo_a6Sn<^4m~e zq(3hN`lQVMop0L1f3}YRHrXGbn((B@I*LFP2J0Ld{2UUKP!1z_FL%YcuXainbmxYa zOyWh&F>HVBAW;AbfJA7MN~Waqjm^KW-lGSE7OgRBCsW4hcl7CJ+1*UZtL5e@Z36%4E?O=wDphDRQ$tDKfzik!}+{zC2h>u zJkBlf+h!eg=oHI_yQpjC025Gv=?xCu%MB9V!#NM39^p%&N7RYbkE>>C3bdb|-GNm@ z!vRfSfy||7wt82_iE(LPU@jB?fx_(;*Yalg?DnNvgzKa+#VmRSD^*O;hH7?=vNf(v z!%g;SeA5Y^z9x!=jhZ={`rOSv(sK&y&uwNlMY=HYLijWo@VZz}~KsC)m9oPY*LQZDFGiq*0-)f~!MQ$YG}$nS*8K z;yc3E`B<~4fhikPq{|xc;8I$ghL{lSb?<$t%zauvm6HVu1)qLa!Gq(cNZN2lT;nze z!t6!?XYU_ND4P;$t%ZBnf*kGqOh`2{fT6M{&nHP!eajMb>I=BI$F3-WP7}CW)?OaK zyjcx*O(q$cZba_q-V(02IF^#fd7*HaYdW6KDtU#m=R zZ=7G1QmsBew%D)*P25!TKZI4U+&8Uq)EkbS0P-fHVVT5Tpstw9@B1BY$3{FZ^Z#1? zF%L6z;s=L3_W}R_26AN`5+B_EAiBWa$nJtR{%`j(V%nrafLwbYc8Fux{|*2yauDf4 zR1;93{kj!!pwbv22(8bioB$Rhh?qRT5QHhK+n#l2k%y`s`c^~t`i_cm;#FZ1Vluu< zC#ovmMK?>rj1al)-ewI?D=YeO#Qf%{IKd4To?fI|PdAv!ncIQQj*5K@4qFZG)iF?b z*XpJs^NQ%xb3?pCusthb9N8y>7ciD~B#J**eg~Q$m#LvW;_*yZJ?oQ!fI`nveX)G= zCvMbYvN#uys&pWyt9}=vOUc70=z>QN;pcz6ve$Jul>mfdn-^f@7RoLH_pZpi#d8p0 z9coS=J7ma6`R|Pt^8(CdmMlv^1goCCaf{0jBv3dTaDVpmbOS=w6)UhP~6JrzalV)TrvUL-xW& zD>eMmrA!vCvBM?qmU7rhGf2L{_Lhxh=IYT>N06&ylbv`~i?@BmPw7NaNmiz%61CjZ ze6_R%i{wC}q;<{}rx_fAY!gjC&7ga-VvA%8zFn{(JeIar%Z(S=kmFrkHtWxG1Kjak z(z+A+u)m^t#yjpox}^skWZmx^iW1HXm+@)4_diYPs1d~Ulu<;jnW-ZLN#qLL4{%Q_ zf&HaOXL7(>=3=q4X*=w9JSO|(pK*8d=$@`?IEVrKoN8N{Z~ma2#Q-abkt9!>IeCeZ z+5A)xQKwIJ7agT{3GXk6?44?SbYPb};vrXf|4e)&8_;2@esrM29s%!i`fQaDkl_sl z!&`!*So&Pxf9f!rO@OOJ5Mk0GK}IfKJI4d4&mk|ox%bON+~oP3yg_dqYsQn@5RM$u zU)smtVyiOnnxuRk1uvA#I@A9+i{W@98A-T~q357{6JRKsy$ASnd(R}bI>}~SuV*}x z+d(R~p+|uJC|E3$x3#2}(L*P8EbFZ!a%>%^bUC4~n=M=lx`N%q&}6mURl29$BYc<< z*H;HR8yB}piX}WxHiky*m9XV}LvB#*@pB+=mn&?O>*r>;kI7KF6rl6U)=Iu1#i9e5h@J*``Z*4GEz; z#mUaU$)G#(WKG{1fmLO0u)}hEUHN@)MpKkyn_2 zI|>ehJZ@T@bvq%ulJZRzJF{NGpW(_63fln|DSdmB0_q*vj(d3>R;-;1vY)RO3$iw622Yu zhk1tDqGG(ujl>edAZxDHu^ziwUjV7V(4CzgZ82rQs4hzmG5k#DYxdxl6;sm_DD%YY zJ$JBeFR0k(sSpbJ&%N`3e^O9xOLou|b^D??ww!Yo$9((On~Hk0Foj{0)-JjoaoYWS z6b6iVD#$L+y3~Yrx31__Sk1M@&bo^ZAd>lP1@&;fl>+v#;SAB zF9C~IaGJZAb;)L4L+nDW2G6~9g*W~*nW-TIwuz+AF}I$u2vGnsJP7cS=81*DpLMas`MofuMmoV?w>Z07qAFa60y~ zGxum`I5XOucad8#^lw;A)FvNLma}C#3T>3q1M9tGksNKA1Ik5u@$;KA0eoh;6!}-@ z=_otTZ_l?SSJ^Hcon#twhl1Q<)Huozj$4V$#^XD| zhlGcOcxfdM$$N%}yce#TPc?tcq9>cm1&6vkbg-g0s$GpcSi#-8d~m*Sm=W1)O60#y z7cNxsYW_2aq{_ocyOo44@fqzf!@+|#te?ABy>38my2;1PvNoj0z1BbHu`_opS(_#H zhL+ib_$JrQUuv3NRZ?Xt3n}btDSp(w2H#$}YlV9vSqcO@QV`X<4d%e64L(|XoVWoxwy5U$tmD6;U+|7U$xa#=schPQTN|qA~J!{45 z0i1F4;HSm z`JU{70#`mhmQ;`M4hJ(S6R>m*2fQ}q)!%|Hob_DIs4%6QpQr9p>lHb0zNO=+Q@8%* zsH6nVJRIM%VU~3w9-~m6$|9Zneev?>P99Zg+@z>l=Zg8Kj=;jF!>%%mw_x{pV+Q~L z&+_5j3ZE&CO3(W(tjJ@A4}YY`Pm~#%I#}J|_nD79?wQ5JLnrCDcXY9-t?AV`5BaMu zu4V_Jluzt%e&I^?~rT20Tt(m0(r*dwrkV7 z5c7CNxBn#zh50?uO%S)36jm!jfCP%B4pfVH`SxaHZYX?5{N>vB z!4FH~fyvLP!&dD{w0#i(wK62{lxP2N#0O2H6Ep~rtq-wc;@IiA4 z*NWjl|4`+58>&UOts?lljDq7;mRP?JS9YPu|KNbv++u=LIr5+nx)-offAsj(ZHJD& zPZWaHysyQ1k7CT@kiMFqlIqr-AJ7SDqa>9Si9m+YQjj>ml1QQEWG$1ZIOfY?n|%IX zs1n$R{AA)V6awWZ;XX34Rytb~H{St6n#W@dviJHMrW>#(7GghF48MNtEVFA0tCk?_ zC9S2!axAJ5YHhHYy>0RH{1q^3A#vVOv=kZnPcrx^Na!1>rV*I;#Q@e}1s8l*w}A)m ztjYU`U0Y)JlxksdLj6K;9@HQeLxc*6#S5Bu0hQ^_wOe(=%8L6D%kpsQk$qcexn z3w6qQrJbOgR(+IK&ys+I$_*(XoP67ZI{xBcCl{S*>BMOWw<8LGTx%qK>bCu_xIlLf z>NIUi1t$j(SqiKAWp1SYXaBrEn9Upt;61PsBt|~;Xm&jIsZ|$mymYuf)J+8gW7qlw zJP!BBL#BfkW5X2CZr+Nl;DGd_SB0KFg1~iTfZ}5kEb7F47897`%eu^Hl&@8+I zZK~NhXj=j3>@@Qvh#2<($y%J{f_hCGsbr^(_O-Gk%(nwB6*W2*;z_ES&j2^9Us;F}O4(*@~WIVKAJc@YbV@OIc)`6zB>rEj2s_pjL0 z%dsPWSQyk46G5=HbArUzh)XyZJ;j8xjHYM8pPjGY;Y^OYRjUEuTF^5M|4nXb$}+j^ zN5#m~iA5ddJiwLnMBa^uxg3NYh0{k#0QN+!#iL66o0gbcTmQT0`o5hF9bE+TU^iiPCCdN&mol1>cC5@M^BEk-JI;0 zUdxW-q6>ZD6s==T+aDq<^sg>}UxfevRbcA%JcGGkt~P8W-uzE;jWtW@=p>42IeftB zB#kogycp^&(yg-LlroQ8<)vi(|KHlhE}UpGP4?Iwbe$Y1Ud%;!F5E1!yod>PCjN(G z^`bCFV>y=+a5AB`tD{u5HAZw~!+#6w@eEp2)U_v94&tjY(Haf2zLS`f`jqYxgPP#Y1l%idU>ocLBY` z>PHUVQx;YBs^DHUs3bXl3z*XVwl3p1ohK$QMeO<6}=w zFM(ru5bfQK7Yb~WdcpDXm~Bq+fWz|#a^kth!D(Qdh!&3osH4Ir3V(86n_REYJWps%u#>$qkCjc zWUCm8cyz|L+`P=@Rlke#{pO1qEixkcrF?qKC0o-h<%b(!+>e!E#CxYX2`=l`qBgncX$J{*Bs=L~MEqN+gdw-Z z2^29op~B2;$2^A^jtCa2NWS0lC-owE@C$V)gvu;WMKH4IF}e_PF)J|<;8EhM2qrl{y z6k_jnQU7;aV&kOZ($3CxGO1sd$4>6Q!zZ;o-X5Dn7`c%~J;aIv3eovQB;gE>%OOa{ zPymtm!Xdzhq}|NrnchLVZcHoG!7bZcsSej@{hlsZ5gRJq1lF9e&$nQqA1+SsLOjz8 zA>WP5HYrR4a$xNT5>JL;%R4GbY7@2}=V;(Pzd`H=v^Wt7TQF&qE_9HoP?d<3SGTu! zgwOret?pGyP?pwDdl{~%-WkZHKYFR%6B?FA1iug7C}u{gOvoZIqwq*Vs2*`=lt|VI z+AEtor;tdkjiGM5xs%{ccPYi1%2_bLFK3RWNL;tM@)N<0z(JcMA{#86NtGrGE17X!IqgF|FRF&V^fi72g62Vf;MT6Yw*k@yGzKwB6k z#M2CSCYa8oZXwJnQXitm5SFLq7w3}zU|kOu{M;>4SO{rgImTB~%)kKYCPQtFig1D- z3e9xLYp;`ZA}bAq?!Dzk)%(5&TKQ$)eB!%mDq(73gIhBru3s#W&>zWXL~}E_!eT!p zU59EWP^pd6n`3cJ&mztM00wDgN~#{)k~==cEeJ?X7$`XC%C{&4A%$1N2T)J^)2dWQ zjNo8->9g6IR&=$TIbagl*gaUsBKYw$D=$4-S*9YhEL*W9w4I1`#G6E48XVM9&?jq;J8#Qm*pDZHWBss&wSUl{Mvc2l zSA5E|)$DTGvSO&-Nb&Ddo4Pu^^M#*ntS%#RHU_zTQa{$6*QKY5{)T^}lkUoo$@UGh zJNr?uaGI&e{J_1Gr8)ONg8}QWrKQ}^_bvw1VfeDDi5ZSyIXZ`VdtrHIjSW`q`rFDN zlUv`FT-Aq5S0b!bibKYyznzyC>tK4*PamaX$NTT6c|}Y!0>0lJzHtVe4DNIQz!@vT z`0Gp=H}1i|4zP9dTg1J|rB=0<4 ziJx?7#fE!o5-f-|MEcL;!bN!M0`vr}h*}T8g;4>mboyY zfZW2IOFHSOGFpc5k=@Jsks>5n3l?a?8LTBNq7*$9H!Rl!Usw{PfsKI7Z|=#Ei2PUW zzaQiE==r6}DlsB3(^k@K*41;;(>0W%nd2m$K3Z82MTncBd3;tm^HG$dpcfuvNdRU~ z4qH87WrKr`&VAw_bUiIXWjS@q4Ua_~QA|nrY!DD7TOA=E;1bw)zI)3W`%XJtOY4`~ zIhedZ3s#zbWQSR)(3};!qJ1P1Lv?3A8JJ)?S3n2y=T^@{_AOqsxb@~ z5Bw1Rn~`#1)$t07R~g$k^K-J7V*roh<>H*jyn;5%qSPu%0e;!X((viyhg;y?T6r7c zZP!m?Qo4iU`_p57h6?cNj2EEEhh^vco6XnNz(WjepF6hnGNcZDexwdshM|0NZGt>? z5+`%;etoci^_&%I*Rbfg`zpdNIw;=q6NbalSvA8ZRJ6T|qSiY=MtJyIZv3tHO~dt= zM_6w5d{7Dro%o|n`^cc0VoVk%{?Fzs}jA~Z~$z!3u^8OZ1nhHc!Tk5n{F z+G*<&8hNA}&b3IQm7zU2V=J@t$jQw$iC$tJ zbsY?=T0qk|N!mNQ4p?Z}tDPQR@La&|-DU2AzfCd1zCvu73nn@Ac~yr{JP=vO%NkK} zbN&asq2Hf?xO~<$y8O2$f(@4}Xl-j5VG`RZokr*vI%Bh>_X&P)-;k^;m@6Rf0z_o^)V~t8JJv|rIQzNMGhg03^c8# zJkto>uB0*UoPOp&Q&8p363N z2AIwxZj@_gs(cOz1m#&NXMM;6wocy^H#cXhaTR&vxA_*8I)R+*>Q3gKQcFwWc_SU8 z&;yp^YgIJyVnCeo>q-v}K_APINP%i(79JGcWs8}&v{|32l1cpy18@dqvhTW91g;tZ zoW#X>FN?M5M?SxQ=$41m++(bYWL>D&<79MN-uR<^>Rw^@l;Y0a#~1EZ{qqO@(TwI5 z`esMYw?BZNH2JX(=TV?R1Gh3O_~d}3>0k;JBk#0>wfR&(=92gksIcISHGOBIJCMUT zZ|H|ntxQofeBh|gE!xT{KuH4$70?O)HFsGI0m1HGm9wv1LlFgv`E=**eI>>CqUZe8 zQCD_o1MdIke-OnoMhv8UGUF9A^=23HW~&hcwaN$HQ`(S;x~~Nk8#z&!oDlP2000J= zWgwl=#SWS?KNCT?1rzXFm+E6Wkm@fBCfVboZF9cd+P5|c2t<+>r0nK}j}Qx{O5fD- zN07&ziGy;t1|SM=X5UcPK@U+J#}q5udJobNt)>;A@Nm&3Pf`>bx$No;7Zw^DgbCZy zCE0T9bu~2UnL&?Q}Gp5IwFtX-~uW0%74Kn<8>!^!M<;kQ5p1ow?jyc)?%J zswvVqBVMS`yV#VZdvOF)ik*_I@5oEu->Ti7959Qa__31z+_Uy4RxvR^s_!#+yB>g_ z)tT}7dfC1i_RRrv2qx6lveuJy0Sk;gY0UCJKr|A9T7<^=PGd22pA_=2W>c>GfgZQL zHr%^kh%>LsN01O%0+58@I^6=#5LYfgow6P+wh|T=-FKZ1g>@WgH+H$ zm%h5FZOU1Fs8?Y#)%%t@x()zuV6`16Bpy}g@OYu06TkjF$lVVrRyre8qish4vZ*08 zXO0FzTd)w()ZE~DpbaJxpgxlF*N_@YzN>5K9B3)}{v zVES*p#rlwT^M%G`Rb@Ib$~HmB7kQP+SeEbYMn3bIm5ypIj|p8TwkjwcF&j<(PiX&L zK7V4@$NS0Buy+!`QWfBAI`3giZSW$3Wy>~DA64D;@*$mSE}mCt;q>CdT-PLjc`CgD zSR?)neK+zdO^**lRZ*4uNAI)&(@IE7}kwb9No_$Icv3=y{;>s z$}DN5?w4~iQM|odH#&BFta$J}@3>aa+iKE?@MOrpqlC*>?m4S?$akq$J;Y~DX7 zOy)Mjg7@Zk04pld1!;A9@Pz!gXW@iH*7d%fFOOe%6V@+f;V8IE7i6W!+vkNqnz{`0 z1-EZdySIG<8$n`2ByH)r&dlS818PL3q5kOPF6IMqI& z$*Ymp9=h=UMlZ-OXhGwvNiXV)O4Wt52YR3q22c8V4hf-=HR16AFZeU%YIPlfIdcep z0m}(2`*KDJuNytoc-%)@WK0EYk<6J=0ELX}+RE=qu`W(J^OO7UMDDNI)&-zyZQ)4-`rd%!fq{?lSBZzbE`?KmLNf;ka}EdFp2*?`72OczDGUF$DYpu{ z?fCKMWF=;*>h`98`?UjznxvE9b782NwBH}IdR zYT^WO8Xca?^A4vlyWqG5QFC;mwA_bR`dli?-w){^cy@e`zRPP5O3>Pq&?6%=;OdeV z#^oCS&8>K;(?<{d3y_`>IN@&|5Ub=FY&6kigqzeQa8L!XUk2*3Z|fr-X?hJlN(Y4Ez68RFm$tpur{Af+mVw!be`xTo z2o0o(Op5#zY5SKjHe;-7u4uv@0+AMN8le?Jy%~dEexfIwuuos z?XbpKjz;`JiyH2w9hJSHO`J4Lc`~a%PBI4w>nn7Ot-j5NrkUza?*D~F_`^j)5|e0Y zL;Il$)6)rP@=@sewlOFUX6+>W;3Ag9wjfXT6AZ&w>SN%0i~t59$`NLYGg3vHdj+kN zwFZz5Xxm1z0JOkR=2G^g2^3^0D?Iej<;m&z9;J$LtiWY2Nd3ozoDc3nj}5y9Q*LFi zZG8$v0JcoE_FZ4iubhB;NV3uzUBJQ8?C7d%6G~cMU%A*MW7apV|1%0tnCkFupyT;w z8Xd7hOM``U0v>Hn+Pv`+;Z`hB`=Q=cTd~W=hK~RM2A*Yohcd#GZ=QOIMowFqANZqD zlm_h^n07pn5&)dOBS$cno+~@qu?xn0m&p3Y82I80lJc&I-rn5oCff3#mq)9FYV z>kU?tuyVb~SDMeSH#hYE^)J_bcN{?iE+yg>=5hcp5v1fnl5K1nv}fr!V1tj?&{* z4P`F0<&ux9W!+%{iS{B?wjS!P#@kMOZ!6jyt&ANg{;&ZK`r59O7`lMY$`>*s@OX$0!dzIy{<6)R3fdBOv32O2ltJh*DO9_FT6}kp> z&;XCwn#QP;Fbe(KZfQC+sFCj{FPL!WH2{Xu3M|PI@H(+KHgWb*N;a-FbeU@l3Qqul zg~DdQVM*>MCJfgo8E`-y9^N;We+%GukFZX@i&%EeDG-smi_q1I&8~#&NlGR{C6WZoq_lCmD9HtG7&Q#~OytdPwKO-ZJCP2_k1G`r zX&e8(4Dt^RN>kiG2fmYa=2~an0MksY1&0?^^)lQYtMgBjeS5L6VT4uDZW{zM0&T0`^BOb5(i(d$Re6*4{BMnVd#yth||+ z9}TaArs4h|bF1KuCzz$bTza^Kajm3F7Zy)x7-oWYxuPGtM4nHTN%k4k#t{Y841r%~ z;I6YNJ?XY_-nDBmcIoU!sqQhCdD3Ejg!H_H%2E!Lra_I_E727VU_0}nnBnCqlfANw zbp8!osMs|}0qnegz=v0mX;RKd@Sevo)0@Zbwz})*fxd1t!P99gVctV@10W0e30+3< zWRd=&C`UnH48mZmX^a^6jyu-P<$F!;s2bVh)`Z815-(`M-8SA~8G zhCZ26Tq3H$fs1IWBWWtQ4yr$Fz%jQ*A7?n931WXd*W&WR@FgI|`uIqxwoZ32 ztd$Mc(R<-_OljT|QbZ6?0~w6PZ}IHMm4d;~R^9;Bq5^fawnB3RJqo+!b13;&XB5Tq zjM4GfayFtER-RJ!Q-HmNahfz4ToNZQDgoTQ%lZ(*-_?SAIQ8ui{uXI^5vrne3A=5U~2~2J^VsX1UB(na8qHwXi0EBd} zV1aT~@0mxr3`+qs*h{mNM7Jss#Qkq#Rm!lB#r*cF=EZ{|qkI2`)sx_1bKD8V7wOU4 z@g%qj1k7O2Ojp6?N-GUNy7}G7jP(zB9RK5@{FAmx{;I{JV-CMg<)9V7O8fPLHEWzV zE$OH;v7GvrfkTilh{knlBC+vd-1&;69qpO!*Wz_PWgl=i>I#9R!=mwU7QY+(294>c zUHk|MKBa4PkF&Jl zj~`JJ=UBivRWkLe*Ba4`|rOoQak~MfF%RokXgU2Z{?{>C-YW&=`DJ zSFL7aQgxJ}Ghyjff!rjCcD%VY)@!_*^qmDF3_AO+d>yJB<82kUMjCq9cC`+@(M2uYwx<(%iaDt;J(HK>g+e~Jzhxw{l;PX6c{4hZpw;=e*V)quR00D(WI@_rFE~DdD=P4%CIBNb z?Z0!_rx<%`F6XPQ@Qz?4ZENL@{2_N7K7Z}i!%&)lYbdOMQ`EqdQq@QiX>?4s_6CPmMjJ$B zS8lpJ^F39RtmNcsy(yr$FZsPKmY=fbTa6tNn=pq&@?uy1C$F0ks&4H#d?*_YjR`KT zp-<0fa>QS2iFNW7zOj8D`k@ZfT&(gwc1CRu{eHE;l&tz>S4nCp($_zFg=cZ_3i3-O z&3Yj35as~Cdf}1g)tMt}YK7~2oS#{u8adgy2ee_=#A(kl-gB0`pVDw8y~a@*=_0z zY5w?g=~k{WB=>K6xW^(Ujh=zvv`2hl`SXCO)sE@o1Lsnn^@6j3NIxGn3oNT1K0(`n z{4!Oy*@I;8;lt%j5ih1TQ{{IS$*D950xc7=9`)QS{;YFY9YTNkcktWKSK$xbkHQRB zf3(%GUVb)!6f8PEXcOtqWiRuKA;?i41|o()E8HguzBrM`>FH-Z^(&m(Slk`N3w`== zWm9YCq+dv+;u|pdTKgu6S=cr*6MUxS^=beY^kXz%buz;N$%T%l;_)@_RfX>MVv{4Y zdq6nwz&%d?8F>;)IPoCS@mF(VRk)Tnv5jOGPP{AX(4X%doDn=oh^_18_HKXTlWC(9 zIC1d2L$a)kK}x!7KldlI4QUdq*1JLO(0p5fsmB*~S#9LE!I654d7l9@9r9{6xR@AG z;L|gKm;(2QXOts`X{QgoI!-s{5w$(e25eN*PVBIou8E=pX;F&PmX)75uW@FaR~gx% zl6?<89)oZ*vByZukxaU4`TluP?iU-cM_*kv6E0v;V&*NzP#V{zV!n^ z8%IPI!zzgcedPbppjnN;#tlS{J^3-BF}~QIAeKwAHMqgNZD+-28xWM-uGiSLlzLp1 z1}~fsYEm-KRhqzG$Eb&qL#Y6v?2tjqa%glDA9s}OZF>M?1I+7 zO8Fz*ENX!HkSYT-@i~_7Ma$8h>KkN+s3B&_sAj6v;M)m>%x3qrkHAc6cilFGhbAQ( z%zXzqsU^L>!xyyr^c{Ps6<)B!%u$~BN#rd?Q9=|j4IwK)Te6$6(FoBC>$6KzHJYC5 z!qq#Dsjc1$7|mMtRNE#fb~5lkFf`i|?0!#GNgDo4hT5U&STgbYjHlE=B*tQ`V#B(Tay_T zD>nv$PaTj>#`~zytdU`so9yck_I?itpdY=qqH6WtDS)HmcU|yyZNr$~9p~BEyVG9! zSb3N}S!*in_AmT7#Ts;PWz8;f&Ffcy+5^8K`S#nyH5yO-tar;E_we{qxi`8kog46o zFb{mme(EzKe(149d5gWrO-)&H#< z#UDy)-#fqy#chwW#FXZXU;OKB=X>H2mmq?^$|lOtz-7}77w5h|FN{z9Rks=q}%Sm}9p_L+-% z0T1>jpp-}Y3uPHeTWu06nl#M%aflW?f*J8Qm0TnZIGn+^ttlPu7;E~|nlMw@pQ~Vy z%DU9RH#em3=k!Bm2=Q?1fJd|6!-_N9-Lj>5cY0{ivQzU7fMm4RsCLT1W|HhrOXq9O z#}d6=${HKusw#Vcfra;*)I)BpLXp0`w0f2Ja)}{V93n1g({)07c{q%7>WOId6IN6; z1btR__}#-FFaI!C`lUGITO>e=3XtIR&e|s=1fnn458YLt=6c0uA>MtZgNsi8Ig?N% z)Z?haQ6B*CgcuKD`F`})OP)v~=neUs$d*8zvIiIcmlHPjTwj|(wP-rwBYk)Eyvq`J ze|965y>n)$4aa*Q1WCGR);Km8GTXFRGb?V^GFZVdqhYZgBS6UOeTs4;mVN6_0 zZoRhwC3|ZH>q)LC^NIr<@HcHbzp9OoS-=)~4jinKVotb+Wo=Re}09Sie^{T&A~TxJUfD zpY+praprgAokqV+{^-}F(%3OOP3=q4NB{r@d}X7++DDj}E@JbQ;1PWi=Nzh!uKeEa z(PNVqfm&H3N=w4eH_cKCdzk@Z0iU5=&WL<>i~zD0)D9KH?>(UEz^JsM8Da^&|-<(cmMZV zy58lXw+Kk!cFdaDsg{+{TtT^~9`>+nv{;P&Ucs?R;1a;kK~f$rFX?LFp! zH(`@L^~}PiaxuJCumtTn6ExkrV?wKJq3YgIo^k7JI{4p({wIiogG*}I_ z{6nU8bx6_v!Qey7XAAcIe|@@ZT%nxSbLk8qF1FZ7h6Q81f9zJYB{G4BHrRY!|nZX;70q({)pVOef9Yq_lU*AG|V*aJ0y-CJ{e96WTn63SsvIOsaJjw}ev7>yRN+cO^Iy8~S8 zN4o0xhF!I?SDtf>d&(wI8>ofGxnDIb#CI$s{4v>aPXFJaQ2-sis|jB7NA9F?yU8Ds zKZBbREqo*Crjce4^>e!MEh+R1Qu!?uheX_K*tD zyAmW8p_yx@@j|0zJ-4)sOVtdip@(3)X6-q#u*IPjQTvdWKEoh+rgtxlx7J&9z^^Mi zFA4QL8EH4dIz!HU0ans*4f^XZh@C0~fiN`x9#??eFo77&i>Pk!QOXrt-`LNucB{PZ z7|n_b!yIU9g_UttvIBLAk)ZN-jvc6{#D-Bto4RPDRLaQb1kAo%`u}*|v$kdigb}tP zK+?ao>5K{3w?UDHSUAQ@3rN+G{Gy7BxWIxvA{3LBO|j;9!7rUw6-VWl<;GWxel&t!TsEA3tK~+1*9r;I~ zXMP#o*Ye3@ee^)VYwWhNb=;TeU%5~)SSB9VAJ{qzq)Fw0JpX{iR5YmRcB(Qna(f$* zZf^#Mzk8~(R6lE_u#!p(p0^XzTRgq#+^?aC zq`&}j*H(=6z3<3(Kg6_vuwLDID7n-z_*uP1jgd>~8ED)8@-y#b}OgPeT3@s~%sH zxv>T~(R!e(G!mEdK^{#l`SO+-T(7GLh>N>Q7915f(`LQ)*CU;$KoM}zk%yHM{=bdU z5fwSA88R$$05py#)CesBDHy)QIKpk`HaxGYR z5G|Bd5ZR2Br0i8h?tcNMyDp`@L5i@S-S*2Bwuc~+D?FKLLWBvj|+_(P=5%mL9O z6;H=J*=D6$J`OH1bpJ*_^zhmJ<+bEUWg2sH-4Wv%7=~_f4)lL7TrqFnZ;2A|4_R?? zaMG;Wf}o}>bj#?5IJL05_X2%a@@i2ibh0PgV4J&6EroEu%i zxpj9p#!Pe^d-eLta4)JS!4(3nr21%{K*2Dp385$eQUNvWm%|I{@&#@ac$bnTauJAS z0ZO<<3HL0smM0cP2?5bZn-5=M3$*+>CL~_k9ryHK{dqQ^vpF5-8H^$46G`^-d*KV< zSuMFbj61aU2r73>8kgX2DF5I`uNJU41bIoYiKq9Nh% zSYFP~O7k~AYIuCw`dwrcHiRa>*+sI(+pS|2OhMBxE}EBuuuq5uQJY+iFSTuJDac&U zjOuT@W&&3nB6@!t&}GFyKpVWR4J{I*5l%usLSKKnLo54jOQSaGY-#m))q&tsVA&ym zQudj@rrPPbgev~&WdTd-4&g?35Y~wOs}`BueN-pM``(~?oWM*!{~KN3@@Oq0tY66# z%2A-4Nkjo<;jDG5sUAD5J;3p<&jn2UWMITgrIsimEN&P`?Jas`#SzLk%=0bT>kXy- zs+G(P_@H`?u3{o`UD(`sv4rTd2WLbxYeADXO;P!^o`n2jL=4f8#g9FLRdlQrTqWs^ zBT8E`j`TD+3x`Sy<>OVMp^|gZTERPns~~zG(55-7**)@dAH(fV6Wb z%qWJ>DqAjn8~Bjq`H}AlTPSLd=%QLgI(SrhUAxTpHsAabGb14LX~%O4Y8Nh0cvIV; zp?R-E-JW0D#hDyza}1Y4*g8HnZU-t7lk+XX&8{6-MW9%mSG(PBiR+t4=t$cSZO@bK zmhPn|C%6PJI?zCAG5r&z1*OFE8|G6blw>~Ut-mm>dabTv*cK1-PZ85>ruzoFiUn); z^jnT6bn@UNGWGV+r!kebuC>1=Sakz^Z2ANC$|(cC>$RDI7ZZrNfM@F8s=I%u;pvbJ zss42+3{SKG00m-YmCmnV!pUj(W_Wy8ex=F3&&er#v$>)NXa z`JL#K>ZZAYp`K1_tjzK&EZx>X9LIGo#P)g)>(7LUtS$;)seHId_d+fi{xd>$=l<;! z?z;5uPeQ)ne^zm26;)xYdmu|J`XASin^9+e zhjZ@ZkK%@vXku^4BXRtt#RgCb@Vo(s@80ntW#;MM&tQ-bLsox#&< zJnzW*<&lZeq;f)Zj}MbO^f?P-IXw&XJG#K|dpNy9w~bs|5ke$|1Dgj%N6vxvlHj8? zd%mHz&yfOJ+#rVI3`a=C+7Xp$*x*S%hw~vJTgO31dOf+JJv$8Ej9~fLt1_RSL9M{d z1?Yafz(Pm93=tXm_3L1N&>-GgqX_1`YaJ{u!8+C6FC!o4Y9B8sGb8E<40Hf!(JpOuqRkoX@p3)&)eb=vgc(NCS8?3%wcTq1BW;^H_Rt?K-M>KYdfOL6}Eu zk0q_%{Qkkx!3cX?pM@R*Q;7**bYU+&v)XdNU9Oo61vqo3y@(b~PnYG;86C5dl45gj zhXPQJYwbILUi+*|D##HKKj|k%kYL*5k4nWjAtOauw1&Ur!)3=jZzC{v{ixb1B(9aG%sDl z39iY>Y%=$&bJcq)4#2wz+>Kitl(qg{=NY7?pa&=2%&GGfF4WG&13&;$vV!>2O@%bmvd#SZNk5UKh_bCvn}{a)ZGbIi&I15Q(n0W@5GWS$#d5_`&>>Mf}|v{qeJE zp^*V#QLij6v)l*MECcd z;~%+GlS>$SS4=rEFrO)GDvdb1Vk;rK!M<*#&M7n zqJ0EGq%m;#N3|dZdQGJ95EewTfN}c-?i}LR@uKzI;QW}CIp1#{PPyXWCP<5rJF+W|R-;u009U^sv0N^3=r(aTBdFS}n z{f93n-U(bvq5#{7da3Xa(PGaM1BR7dp)9Nw9H(7h?9;rh)T%O5#izA$q}dMx=WI}q zu@(Pha5g^eZ1z;XqOS_R2id&kQM^#v&KAo%FynE$s;ywz@ryO6C55G3OQ1ItBG7mo z|3Lp^4W3$34NpB;f38NL!UU_F7JJ6Iy+?usR6+}LFBtjY7Ea~;2eSx;ZMYt>0L7SW zbMy;^ftUNN0@r;DnZmuU={j+#O(~40&7-1PWiPT>JsLaTjh;(5T&rYGim zhM2;4KY4)!og`eF7}I%iAeVKmA8jlgh}LO_m}`ejh7x`}D8#lxCBF|h?S4$5*dgph z()NBl;U_8ZQ^;gt>(z$YZT_@Zxs#MO-!!!%t-j9_3O0gFx5!?`HgL&te|2GDv|U?S z`k4E{uVE4=n(ImFqkKchk)khc7Ns>UzjB7fruFGC?2kx*yxPd9Mfi3UZBP4Y)W@G% zIH46IJrVzDQDWW>B*_72YvHlI73-~YWFTjH^bkTIw@x{SmNQ---2FFm`wQIp(LaE0+?5w@q~60XK^WX? z!t&NwLZp&TUJB&cDDCCxHC~DgSs?~r8SXwox#Q^SQup{aBh{3U!_=wq5l2a%l(3M@ z<2aQVn?CZ*ke=0WOwopvKw4CS1MP5QeEUY60tO%YHp( ze*lHN000F{Wep+Xqr5@3pCq9Wd>@?FOm!GxL>>xU_8!@27^l>-BXffuXPD%eR&P4k zrNS;x^_5vZBn*pcDs6@Hw)`aui($GWRk){juz1K53?5z@8>M5eCxJkoZFjol^GU7Z zDZ1(MhNDCgc&Z1uYlm+ivQ6L5{q_IipldNy~E&?Y2r1vrQ zDnp2Ekfb_q5bV?f(KV_o^n(G9L1^{h(Z*d+m4pO}7C$3I-fh_2hNn^Ym3EHV zMjnu>>*Ma2FFuv5vvZ?Thr&>f7|g+=HmY0>Z|pi@&ye(6K)PWpR$aG9bW~aL2f?^j zo5dEQiJK4eYgp3z=gQLAS~1Q%qdHQEN$$%yh}ta>Lk7JB4o`49#k5UEMhct6RL-=u z5(Fa9f_-y-gn$oHmKK=uSVNv|{-NHCmC1gR2;Vgl*{oggiK6rA zSkQs+@3_!@4HZ3-CQBuvE8(we(+WcHy61h26NX5q<^koDDh^t8NtZ4uKKJYw2AZR7 z&QO&Ao}=WVa{|zi(1ITU#jRt}$6gjj$m>sdn;eYG><|kFH)oyaKScxd&uBu`lAJO2 z`p}T6#A1rH7<}3HT=9o(7>UbP#5wIVF)z)efZK?RttwN2O8{hkBBzX_q3rF+*El` z8@jk&kMS}NnNhT#*>WD=05249POPpyA86=5aw^sK2ahN@D{sjKJ0y0ARH>a42A$}? zn51?!)e1=A=Q!ZI$RIYRxrk8lMse7oBsCPI8!-C;JT}}YmPtQBW0_^Y8DgTDXI`=p zty`|VfJf=v{?LiPMhVlav_Hv_4h40hEpT)JE@W{Q{EdWh!iZ5Wx<5b{57srzx-h}v za(G!Ja>cT<)`AE!^HSwab^qTJ{J4Cj89>{e6l`2(@zpP6_~7q<+QgsHw8J%*`*Y82 zMq4oui^_aoJ%@~+tMTCw6KcYDC*}{RN2VPNI+vJ1+>esIO1SiUqm{Uqqhd@a?W5c6 zC0Y02p8%tPXOK}vV*wN4@te%mu)C9-$W7qQ2|t9I#Uk>-sH)1^UFR^0#m9uCK9(RF!tPT000FtWktzJeFGwSnTk*s{!+)BCwyZR0Sui5V+u62)Yoc~1b?}r z&9u>@&Z9`W6C7d9m4XlS5#$38LaCX;H?nUkO#`2FPih{i|A?@~0sWoour-8Ln?>M( z#kgGTlya1k>p5Udj7hjP8~B|y8O`2ZJ9JhBjt$?K)obGR$tOPf-*zE@Y?R)K2qGu{l77wQaiD*T zDbBgrBJdH?Py&-B6=%if9AJd{rP%z2Wnpuh{z(;M(Br_KGRl#7Qyv9Tp6x&18Km}- zJZ*!cvjKaDitSpZI{aHx=w;NgEmd-CDa}#y0jnpjgGmO#)U>IpO_7t}uSH9wfrs{` z=llN6wU=D>hJe@8uBF}Qcx-Qh$I4Yr7|ViUEva^2EHAq788-rt(z0OyaEoc6X#E~+x4UOFTVtE5o zm*&>rb~3?1Ty$Wp%hV%`s~a|4Q6M;S)P+`RQrYGR?d$cSGoKSzAIYI9$%-+n+$czD zTKzBh;r(W6K6(=i*&ZIHe-x4hVtvPq+o*6{)}lg4Wv$JPKQc4C@n1Q6Xw+UYjr#gU zn2#V-s=t)o;QVljh8?*LIq*Ok&kL}YN>A?lALj&l*z+MM!opDyJCQ0#1xhno-6Wb_ z&VPf)mpYq>1IC+9x8c+>PeV~NRTM}PUGd$hP*^!BNH6n=myaa@Cz_MV4bDp;g%Gp% zfUBpg|AO31J{v0TA#~DfqICeQ-)v=tVs1;Za-qYt^A}$5?tmZtG3scoB1;?cAN7Hs zYXF5rthRJdRBQ`R+=W`?!_ch)n+kXP!;d}w*ojwaL8XgPhQ<-AFl({@9S#l{p3sv` zIy=KugexlD;CFF>VzVbwPig#a`T<$c=47s8q~E=8o1R}Wp~_z;mK!QcTeZF-e_Hkm zJyg}10$81=K_&(aVy4bUQ$5E(i$2(J4?=lkh&aklVrysQ1y7Fxn44$4j))@m+$1Lw znALJPGZ%!?T1SayB*$>aqN^OPAg3o@^;mC>egHibadSAJp#xM+{pz>`!W#0;(pS0O z7Buz1#P;#=58hr4;5$kf1%5Ut_HUwNB>Y-eE-IqsvoIU#*}Q6*Pj}V^li=0zL0nNF z$fR>K-*a08QxM&}yqi4A4zc~AM-_ZW#C;1e4}wxD!qBdA;Qu@j0h3>_LfLPHr}E)Y zTp)5ztCtV_Dbkt}T5uC$>1ZQ~8FgumIaZ=}dq6%1UR68Fss7s%3yIEF!L)m#gfh$D z+8(Wb$!s28^Wy4}O(^t(@Vqo~?ZW&p=GcjU1f2hXWl+=0=JlHRE`=8Uzyco;6Wm|F zcDroI3e5pg%r5%Ypd;pQ+{eGbHF+LdpDP_?4uI%)&n$$4bsbAvkGA=e*$KU0jmF1h zoLkD~oZrmx6_PU&C zKAby!aUaac*L}B0Qh-6M#@oxgeR&OR+QDLxe+h_J#=35ek* zANDwL_8>&ZadK#+#6-uJI??_D{}SZLz)a!L<%ubZt#wZvaBrEU0=xSNKfaUdAE*aE zW=$}<>BJsuJ=vAw+)DnSzX1O-s@(fSzCj}#p?aSVEfN@0#2fARewK4#1quERNy*?f z8d7&G-y;6pD8y5>e&-rC?`Qq3`->|{$#kVnYXRzv`qZui{MRF$(Y?^9kwnDU2Slk9 zOi&ROeL`I3yYIKYJ4IfU*EZjCAm*eRLezv~p_@}&nF^>cO-%FCqZgau*tBJB6aWhaFBxsVp)pC0!lB?DFv(_mlR;<=~OA3nn@JE<9m6Arcotxi7YG5Z~tj z^4ZUybmpdKI`YQJDg|vmGOUg6fB*Ylhx^Cy&gOo1Y8Eoy&;=DelvqV*p%8g#u>e01 z!j_nVvYMj`>bcdSy+-h60k1tLVI&z0+Lc+&B@!~YVdTHu3)&B94oH?xbSCp#0z6!I z6YY};o1iDFMyim#H|;gJ8vPj(F_6KtF9RE|_g)E)#KjI<4WL_Z!Vp&@eja<~_~N;w zUOhsKdNK%g9x_uTMK!~8O>@-zArd~rky+2e9&E_9a~c?9!$>w(k2WS-f|BY@>7neH zLTb<%fb2jD)bgzT6kNWXs@W`C-56C7nh?i`0WJR(exl?62jrv$>6!=eapDD|M%APp ztX-Mpty&U&obD2}N25|YZ>iR@q6!0P?M9m`41c*c&ydwR07@JQJCJMM+eK-6dTHK7 z!EK@?UtL`XF&Il50((+O5tje~?1c_oazLlRs~sq>9gr>9BS}gqe2`_qbz%eV3`p9&U`m#A zO$lk%LjE%y)}W!%(ZQ!qH@^X-P>Tc4`52(~z_D)~*2#h5)zD;k$rr;Xh5T;A6Q^XG z@bJb`4jMbB|LAC8PyZxMMmm}N+RNQy`?TP|CdQ<@x$N==6$9S~I*Esd**&{=Lom4- zDK2w#l-mUI9zZ>a%;$+8{MYr%m{O&0STeiare$Gi`-jlDeEb8Mj7`yeU-_iaMO@~A#>{98tsjfrsTVvOj{ee zwxTR^{TM4Ii?Yu{tiiQY;G=8hHrQzVi#}>7Qr*mZm$<}pfF?#?2 z1uA7|R-{^@Mu9qopuv0KY|@z+@lA1K)XipPgvzQbu{5nUw$yj|`dSt$i23ESGwt|J zOtNjT<7vRA3@JBQ+sj7&FcP34ZXrAJUgaepbo;S2=@5#Qh{ndf?zF6w%ms0OL_`lHv9-x`hotkLX~nzIm>sqAsj-9z}{K-=LN7;?GwfDCFgoe2sSG`4?y! zz+)vKg+)#Lcyw_^Uu=2lr3I$>un2&6SY4MesCPx!<@sa1`-nyB=%cS4CXM5ql@1|6 zllCf0`-u+`cQ?VSn34&XI6c@kR4A23AKGGmWBU`8!$v3JrY*8K-i6@Emi~O?PQS*_ zrAcj?nLcphD8l#rVLGOj|4;h~rniq3J=$2H04`=J;l7oDXd}HTTyqieDpQ;OMa@ry zT?Z=%pyu69$Vgojv(mV5B`_4<(Q201lpnHJ2sUiUF1f}oQ?giDcj8P{Vd0dxW%S0R~+n}SWHglnm zql_TFZgmGU`YqIyZ5F2*B3L}nMqg?%EkCOQaX=No@|L}w`b9#b-BXlAe@kNP2sleO z6Ow$=CnQ4kVrxJCk#yNAtfA@kW39Izty%8iS8;oZAnSd(15@hQM>e?^VF$+a1u&-L zT9q=lD{_B>ZzT1_H`zLq(BR`E|78+2NvaWmFTt>HUHhpCftC`wO+6KtIu-Kml997c zWw||V7>^JLfd=UkDeXibK@LIglS*TUN|=-t%34IbLnoPG>&bV#cqR`+yhWs{PonD` zNW(tEjNbebli3#$gupQ#i4VyLil(;O?Jd2>boig8W5i>BSG@*4i|t$73U_M&SwN=0 zvy?camBXl>p2XY7=`fW$YY`wNw&WI%D+@bBEj(on%+he}@~7;EeR4HFVv`8D(oE9x z7V6!DlMD+5@k&QZE3|pOa{lWE(E7<{;H**P1emw0fRf%YBoUFHNkAbF!G0qM4P?>R z3&Gh$KrV)tMAs^#%^%C|h530?9F41?oCTdc-E ziV27vUQ7}7@z{edF0{-1P-O&T_v!uo=gn^3Pj!$rjPpmMo4>eZHRMGAI4vJhmvV7b z$t4>3&}$tNx^y?ogKv3LDiqYdB~!M*Ra4~tQ^Pird<;{sF~@p7&D{j&7=aXY|@?eLj} zUtcLpn4SNawBA?oMgB>1-wpcT*lcpu=KQ>$;?1z{B z8~`k+#>G*nD2k!s;*_*j`u6XH<`uGSOa`70gm`gbEY1@EmnbJ^kefZH!Vj2Z*C9Py(>o|AE z5Q2lvTldn%l(^S5Azo?sAWPp54W3jCV!6oJS+vsBVLj6z~ZF0p6C{v9jli$ z$^#iJ*-Hx;?!;@POHq0OA6#6_;JY{vnSNk;BQ_h$W+C*!oS~&H$1B;7_i)x<{ODDb zJEZ+k^I(fZ#&uJx(NM5E;FDb1!i{=U^ogLsC%dAIv-}pDlnR_Tq&P>jhpM4VowaNz(spC`xJdS&U}4I!ig8~5I3uA zb3!s&`3oQcQf8LIZ?$~yGTDH27Qrb~ya78-CS;JR@gMRbP&H;^FJ?U@i6x{*&y1yiNB_i7fYqD$*yXBnbGdM?x>-?H zzRAo=bUUEt%MIV-JAxmmhh`LfZ4=n@n?X>6IZ;5+m8DPM)MlP?=7ue1Ut9~GK6+2Z zbF?S?bpLVZ9OQTtr@Av;Oo!kL*unn%Tw;?PopI4@d2fj5l2@EY#vfvV29GJ9TpJxp zGy|8Dqk)bFfgewc5=lH!|Cb*a<%En#JSs5;W;+^oBh$D(Bgk(teBXxSgWy zAn{0KgSQ5TO-{UQ8Ph(A9?NPpb+7l9MR_lTDqjRrSM==rMg^&<^4K~||G?B81L`RhDXaO#V1RXxYN#HqI;{6)jCd=!Y-TFLEb9!cp^mf>3vkI5(hFEX{5?ZWwQFKSN1 zIpT2CmcF{QLt(8$*h8AUW8A?)ivEmB^6HhrOd2XYs~gt+<{NNBA7U`k9y%5{Be#uM zi!VsHP$BHue%7)WySlgmo5IcwtE)(nGyn;ltAbEJCpyBl`B`1XO(CvD?17?48H@^l z6iTb$>-Y5-SXYT|lrRK3xfDvB>KKopnSYOdZUoniok*``fYR+xbjQ4KEKD{3><$;Y zoO2a3<|l!NAheoe{lEfz9kNw>h%$(j4L^7IY7)0L(yLF{6fY=C|_U0|IG zPHAtol+;?$KiC(LFW9P~NCjo%?%t|9UKrJQOJ*IAJ|boynM%&1SERr1h(a4A<#-VQ z00hHjuL4<^k@A3?eEcy` z$;s1SK50CNB~R*^xjc&La%agmFkeRPglu-J&%A;90-427B3zSUx=!Wtpn=v;f?-Ks zAh?^uuNxU`(_awSOp-QSnzI4(nnc*7U{s~?@BfpFP$VXX1;4I+-Y^NnedOGUVPL7s zVqnfIUdmn*2V7d`8#uU0*dW&{Bh2Uidu7_rl?s1wCcX$Mrw#(;KFhg+rbNG9bo@5s zm{uPszcUCZz)YHAhWd_@DfdO=w`;fv*@scy*hcAX^J>m5N0}Nh{OwaYK*Yy{9dnzt zq=$0CmJ^);8l5ZzJwu1&KMZH1s`eB05l9mbU5ltcxtQt<_=IhbC&fGs0(zh^OJ60g zbpX^BDjiXIbfkzQEN8^BZj$cQGAP*~*oYyy8Pnzp6yQJNYyM_3#p1J~6s^*Tmi**x zW8II68rn)Q+y#}trE-Dx@|KPsS(T20%{UJSWTnN%sw|~LB>EU9gBKUxyzjZ(pWe3s<8=XI`V!tynC5_?!N+N6^Z;~pICc-rW7u-CEJjKOM zk9*$#ylr~g#ddx51;$U9|GeM?TM#g5erN?ENHks37N(orXHSrEx3 zsxA&avwH)qZCGKkkp;eHzC<@4xDEGu+ZLxkcVe{;|5AK~`GhUS`428F2QH zJD$9l6>c$TtB_*ln;4_P7DN2^zc6-186U+TXeS7S|20`(_@eTK1rXU)`A1u zfWQ!V#r&kFC=U~v+AlXU6Z1{AW`wUk|H(%7jo6&1TuL@%rOv|+(0s%4b^?M!l5-E7 zT)9y==)k;}x7_Sg%5RoTpu7fRx%KM8w2GTq-I@ErBZ;& zFQ$~cj;w8IiSEllvF-}_B=G6ol&>aTa?$8m+iS*c<$;m74EAuTlz?@?jr`87s3vr! zNIA!oQ5xdM&2tCwI>F`0|ISzIokeltn|kD&YwcjN&iXo|;g5g0L*gLGSY#+H+kgau z2Qz^upkVp2A>Xrw#AwI9z8_hC;h7!j zO?t4byLQN#7Iv@Tm(7unYA40unorSU#BVV(s@8Asu2AB0e8drtP`oZo2bIHI4Judc zWtlmYyp1xmAvUXaxiwt;n7ggp=#hP3kP7#ipzxgcE7%W&$oEY-MNU->bMyjn;2AUD zZ&=JXG@EQC(6RN0$GgjyN|I1TQPAa7wUo>#fnPExEyllx;K^E1UOJW}nOAH)BKBc? zaMAKStL_1p7~;7~Yn_2irqA0CmKLm&_euZ&1gd2aM0+I!srE`%t_cucWOOJW{UID_ zA_$){8osJoDvKnFkF6mWlv-v=WaOXgOBP$2(2S<34jjS0Qp-duLHIkf@B18N9wVk# zIU)P?_@#D#h{O9%X6$s23DvlLPDwjv3_j%Fq225nL6B+DcCg(L{yQ@)Xn2Ud->V(x zVej;m?@Xi}EaoyG(d=6#Vq*=&s&Nvh5U=O8E#zYmDz5;F z8_s~UOh*=*9!URxzER=hUmA!^Pg91<_cy>|1#|VT0$D9n2HUs)J|DBeb5T72v2tyNb zrWv>8Qc?^kN)9aIKgN)ti9<(1r}M?R1J zQ-OjrcDI(2If#YRM63Wfzq1P?IWz_usiEY20}GE=&l~S2>L~J-pjiU(K8@jKKs!WT z=Qhd_Dw;?RQi>E%z(Upgg{{Og*;J2;kzi6l5YN&v(b%Oz}S~(I*QCvZZnk1KGR8TQF+782o)9Dx1J8z#J=fqb@_8 zSbYWMQ00*93#ELH z?kmBY*~hZH6P9GhIWmdOi0u1G-R&V3Dnf#jHA z!gcVyUy1%F3+i_b9c?iB(WpH^#y;YeFe!zbt+W#Q-LR-mn_oaRYuIW6>?P{CkgEQ2(&sH(Arc zgIY^7AUQdq{eL}CS-XXzKin;K`}V>9bt8vplb~fW@fDRXYK-rU(w49KcoPFU-!lY) zAUR~nu8nc^RbB^D>-%LXvU4XH?xv;mLU&0_l3(ygbMG`jVHE}{t_qH0zFYRBEf<=1 z`MYg03z*7~U9a3l@cgL}=uje5ufyl^eRU`9000EBW&9=CHjz6{@DG)Pv89|P#vGtY zQiKkcou-%vuy2v7*_?h32*vbm0@d*DDf`W<~AF?ZcGw zs<0xiUy`?(k-EuQMw`$~>ua}eVTGxTMk#3bda^E*IB6)zDG>&vGGbRRqGe&H1!ERB zF)Jfl&qE-O_Ml#}{!V+{Ft1gIn7*~&h;SfKS#`i3FPc?v@VRs0%{@qDr?>l0w&$6A zYX&&PRv2#N$XU0YRWqVXl8%z^nALWbT?{VBz%CFnmV{gL*}P&ZnJ< zXm;iUfBIFVcHc0Jz-%#A-*j<2Ua;S!TOWjl?0FQv7aLKJ5Kzy%KIge|Mmx=_4VY4I z5TS8$@GZGRHi*zD{vqn6<_`_ zEObIoY7h_ISMe82Zy==JHFZM0y2-N{tM-*=7;bLOxaUb9zEm6*!CcU;{nx3=XfMgo z;a*s;Z#ke6#GTKzl%NVHNU^7HEDF`21R&rTC`xfs`iGV(uruEZkF})C{%N^X9WyRFNnW+DSlIH>x=;B_E(otgzECkb&X8)EY5Ox^$Fhe0 z<_f=OP#;N5OY(F>+>gnOz_=Z7?gOZX2wdwS**A%~prN4@`;~0x=b=_#rPrA^L$!$e zv&j{8sK8GmLy67Fb#XN}$m_~>F-4TQspua-99P@)@W?ny|IzSAg-8GN3e-jMHTH`7 zJS)De5|om#GPl_=*`us$3G?voV3- zx5c)HeK7hu2?~hmS3lm zU_$NV6w^~wv60Ed*vPi@k84o&&T%09_NvN9{TF{i;#e%?o<T2kxa1ya(b zpg5`lL_?o_?pP8=(I~H`Nb3RV+JIj{A8(zC=?9*%bN~b#7ytkSv}F-o)$uDgvzISY zZZ=8F1d0Q}z=Le5@MzJh8x3T$USH8u;*{w$S*Y2N{!-OFQt|=4iTiQWpE}UbaM$D3 z0`Ty{#U`ARldY$g^2mz<4WBwv+U$ckomaoNUMd5EpGOPtB|O_J#o35?lPAJ@MF%r}6oX2QuKpJdpOt&iPs@^q&$u8mWX(Tl z>*-`mdCZIx0D*1TQJ<-2XDkn76Q-p-j^4X!;ZgosA$04_s~<)JxaV7rG~%Ky%{ml! zH5>MC@kbU=9S|893)F$$snCGC2zEM|b-?q!9fvRtZrB3#hpJxs)b*93FY`USZZVM9 zmJJGXR9nSALDmynY!|9)ZryK>#)0O(L`WsSwY=%!MkzabN@qVCotVN3wI_#JVeK4# z@fGKnlaO!;@xKtnFGk&h&5FV-J(G}hQ*2!$R4#H1O!w!Vwg4#5tiQ%i{0o5%cnm!3 z=kb+jq1eVhu6_uwib=bczl`0vVXN~6u|lHvGMLgscF#5%G`P;EF$iUj%P7lz6ESAT z#K_6bBG(+eY-YkA&kjn-X2V~g0;`9$M>zeI{UGMo%Dfb;$vzdxS+I+@S~gih8(W5O zQ5l6@EFz)ra%obi#tTaA&~pXwiK)ku=zeTsd(>NO+H^t>b%H2} zBv+pu9fGE+vbZsoU+5#eY7k{W6(w;I)Gt@hyFpyMK#m)kT(_;+5f(`t2~98!NImh2 zWOd^MF^WiIs_*4F#&OwDB&B9&ItzMZSVnOTMh=Dy?DI%7@?FvIbB<&Jts?Sm?A`tF z0?|GJhSo3TRQtpjrl!KX9C|?vWCu_va#;Qnlg{!=qkWF%)le(5R4C(GaHTc%`5AMk z;yC~7b>+%`A{{PQ{0-on8R7lYLS^jTIRF)4=^crQ8dR6PaR7y<%Q&zOdsg7CixXSH z1`KQ1fWbMVa8_ID{Siz#@}>1F0351%;|)?KS>?>6uNjb>#pOi@EQh1C#ztM91co26 zj4$GsVJ_go`0+n15KDneaKwf8r4B^dO1?c#`HvD%opzBJY#l|`gBfy4gT3&NE-T#$ z#&@VTfpgqkD8(*BpJR;#oiHtX9rJrgy8Cd6847jx&}?%yYx0~%(K!>!nbGU>pP^?+ z_mo5jWpU%7#xvSv07M@D6~itXsW?CRFslxU$Tz}ZNqDgBAMCE$c0xt%C&<)dX-;ACN(0l|dsy$jbS>*=~(VBo# zyFwwr1Y_GyRAEmpbKbVX%qea$_+m{IcDR7AySk)2Ju>B5Uw163FgO)sa7TA(c>n+e zJ7sKNL>#7$P3^HGxX7#$pO;`cN_j|GL6a72Xe%SDby=^27Yg_uo6hhF5-pw<6LsJQ8)gf#>-BPU3lTV5Uvi&4`QJ{-+d-af-pB; z;cvVh<2S4*Gm>sa9qhrl8Gw&!1Px80Ew=(rm&cLQ7j{HeqLwb7kpyCQ$Q>)ldSorM z79r)%Um~sdFCalq1ZyJxxuGcjcpMi*1O#QZ2-BgOUM9`7nZ(I}9>o&m%1~-0m<$7R zMsef2q&sEyA$iahZMLG+Tv?U_-EAAB%3HSFNG+yNR(gpb+M~Qyw;&KQ zG&X>>Qs9e;tfgbI%|_W#fZiUeCPQNU7Qsa<$n&{!%x(FTE_D8%BNS`1YDHLHc^dU} zh1&(@IQh^40-Qpb(K->CII^zJ2-YO5S|p z#rgS)>OOe7cS5SclZbCC<=7C*I{CQp%W8{n_AQ)?r)~+U^T#`SSHeI?VeGmBQ&jyT zZfDjQUjuPIw2OpP8$5$v-Nod7)4sK{TxmK}g1cn?%C5k!?bH})N1cYZyyIuB!E~AY zBfK;}+2=c8h){B#iHK7RfnV(3!wd{~YP<-$m$SQcnR*w?trKG`v zlKCJp_GO47+_N+G!O(ba)f4`Q00G3&B5fs+T{l&J{qH2xX*QAeVSJ)0f4|7Gs}5F+ zXC+e|v$+kGjfLoJ>44J6qe8q3$Ki0k$@nI% zgX)mD^a#6jNB-ZgJJo6Z=6!PA;x#|Y3LuOo?^=dKKSCH!LlaAC$G-&fdG1UzdD_); zbDhDD=ad^Gw$F&37Z9RbeE7{|bRJfEFgGc>+G=ChBSPgmZ{eUPZ1H5ZQ%YgA0SY2H zHpv&g*x}h&sFNsKC^k*JersK*uIKP&e-&@d$BZ~~wd4j}xja~BMK~rx000C)Wh5)2 zmhyPtnO@?SOiFlqGJDA=_PN*Z71KG?=8-sBxxpXlegf{bH&o#4WoW0AP(2oxQy=D; z$(+HS&0N%v`Wlph!(FE0aun1+wt({`t)d#3A6%d^g}cT9!z0Hy0#35vT-;5nDXwVS zbSO{>zz&)`IS3&fsh-U_gIA)fXNCZvz*zA$m*gN?U^ll|B}H}yTX<(x zhImW?p^)Ki)mA=H)}Tz-)YzP$*1+lF$&^Da#g`cSWZ;wxvI127E{8vvX&KAoxI-9` z1){>5;_((W^?uu*U@wJcof~bLA=3%;nfV=s90GXPBQ2CPYpju_Y?3RuOx$Fy9eMMd zM0Km00y4CbDMnx{nX|Cc9*9jTiKXZ>1}yDYmxks;+5)~G@XA282}Zz2ie<1WbzxzK z=$!JkPY5&*7(8YVX6q+Bl0r-TsFW;$?Ldd)ud#(NdO zyvyjc=)y%Q!yZQnu+X{Ddau?y(OOs(?M)8&Qz+x)Y8YlB7S_04k-^^yVB zlcye$Bq#Fv4!^R7RJScbjnYfICCQ3&ph#iif;3j;`&zRhr+nZ)dDs;5i%&p#13y`b zpr!f8r>a^*t8fzY+g*Y?7k2VSN0dr?wod&0#aDHabv4lIl~xwhea{BvKE1XoGA5u16(1TQ@@=pQTVtC(97YWo;e!K z4m1Zecu`HQ2L0)+C^MyX1)1>)2btY=+M{h(bl7a#hzW$wcaeQB-ii_=*;#V|-isNF z$Yd*aDl_09`p7b61i)+#th3AA6fN6JpS0#Pqs!F*gC`}R{hir`ozG=@gY|4ODsEHZ ztk{a)jwy2zH>WLG90FB{a5hj!bHKLo!^iSJB1M2R4FTl;+6bFMWT7Hn7@AMe8^5tG zkKeTM@WB$-4+f2NnLiA4tw#Yb$cWKt9#C{?o2lu5;VZfH)GOrSXrJ};4Q!aa-&0Hb zpBUyq$60d8B2j&MzxAqHUHfX!niRDvX4@EtH*}ai9Iap5?F$MND`<64hKhAAiO5`s zG8%K2k@lPtk#1DHukE{9`l7fxx+47wj)jkUk!odraXoIm@X-?tI_T6&`nEgCP-@qj zLqTIrh6#BAz3rx!JMCiwOx-yVGU^RuU^?t)`8I3BEu!}-EB^U+N$zsD&-cz~RN4wA z*uH?V`uBO8%Jx7#jg`}SWtFpt-9iE70!N@AzL(UU8AI;zsS_w=S&lmy9S%JAI4yw( zZ|S7_`?Bub`wl86G(Wj-?1cldltawQ_5{@EX2C;nZ-pH?9ciBU`+N?1000E5W$QEn zZp`BuCm`0bj%AhGMxwoB`EP7p8mCX`)#h{Eo1-Y5+SQQ~Xtr3K-M(XOFO6H8U?Q2_ zx{HX2e-xw+f z=YbPDv8PH0vWOaZ>&yg+iNupUkIUW_Fiki1iLVD`z~S+q%^p?rO0*Hzq&t}%#T1^M zE-HWsL-8y?;!Liwiyoi`@!cY2BzZjt=jkbWxz?By##&^??^i@$o~~Pxw{bJ`HTToC z=!l6?t)fnEG1{clYB|>`RR#i8xg}jz1Pxh9>{?k>Y1kffWeT?F32PxJfUjGHsgtN`tF zi<5Nk@?X&6!b7i$>_W8K1A9MhyRwnQ!TvmI)1p+5j>0%_R~})QrNOEO&Ky-9|1U@h zdrF_y=2k)c;s&et5R`OH32*cL6MJ4sRbmOx|7=c zYCR!6cTgnBA@o;oj|G$rYYf`{$1_QZ#06vf-ZOM8JV5>bd)K$0_{94`N(&4b&*Td= z=^bGaK;Ye~HxRa=+pGLP`QY*in4?7Tmp4it1*)qH_5}PE%v{aQ-~7)W))0fgDF#g) zMk$$k!0w16t$b@PTq-Y>5o9~mL(XPgf?1^BYBc)>sX%m5O3<{KA_Yfx?X5aB%=lMfZ#f!;O`;aO2IFr z!L6$wG0_Gp)#IPsY$gat*g&pFJ1q$ME#UldQ1pFTL8t7=)#wj%gS2?o1(cb;E#txg ziD;`wCy^eDfCC~h5oQgYJbsu{Xw$>xjkeb|Pv0>po%(gC`FYP+X>70N=Lw1ZE_<|U z1&K3WqRm9Qsm+oX5GCJ(9)&{|kV(<^V@Vd|k4$jR%e;sA)Gr{4-RzMG4#7jGDfG~V zD5sQ>z(^b2gy866YFuAKa&Cveng2V7Tj8qroA?fK1L>La6(5ns5wCQiLxvd_6F$6n z;{ko}&!ZajkbHal>aZJy`;c8e_0nfCLL6E97XcKOwN)6qygY3+>(RWBhe-Ad){MnA zaPdR;!3DX=3BFlYou&1!NAtNRWgruyhv!po|AGBHhrtR;;`)D1;b*FvAQx|V$$qo= z*Rt1QZH6A)m+6wn|G*~Rh20(q1Z`~YrT1Ah|H|B+3^F2z8uWn1a^0jULXW|H8{RGV zG>l*}XIlSAJho|YNq^#&(Gyk?a1sGbM zv{bc%KfylQ2tis?p0W?xoyPnFMHjU|0n1SUukn#{V%u2slTtfCmVg;!&ueP{00d2C z_qO^teJjtzv`(kjW0jH}DGuLNb?n+h)HGx_n}^@nf^|NXj|RLicl4Y76bsao&N;KF0uzNN((a1wxP;F!gxo=7$0txCvqIm-VHl%g zS1P*g;{YSeR8Bj}jc&B{5>jPcN)d0wHd55PF#mWIu)0C(xro5sd*10fTLX8E3&@3c z*2+lMK)Fj}??xMK6u5!pRA2Bp66Uoi5#{%lA+dTVl%Hmq#~Ws&d}=On=%47L;q~1G z`TRjWf%D!m3yT`nY~bO;U}_3$%3SxnwG!pU;6DQMw(1l`62Ga((q1X zKmYM~bR)U%$h^@_=<_ksrHJ~3f}_d9jcxX9&nD=;ZK}1z_q-`r&)*AJ?KjsZ_*#w8 z3zpTxx;{LWZn*tz$ZGY*pDt{yQ~vrSu5Fe9>e{o#3E`(;QaWG&1(PBaZEN|;GRuTBzlz7yxxQ@H18kgYLDA~F7j2nRS*x(sC)jJ-M_YuW+7#z$hf4-G^{?5 z9H4%5(I^9uByNzoiB%Vv-@g$=M;@;!Qxj@59^Af9xt7Ku&J7l;K;ic_Q1wzfx#mM) zYIPLi!+1CX0N-76TysZLb6Z~S&b{ya!SR=;Qp!zHEQmsg?Q5LY74Af*l;`Yp37Xhe z-`8;ovq#n3CMt2eXr6CuGuE?YeYbkc28t$YgMI6JoAq;O8NUv6q8-Ys=R|W5H8TIV zUBA1Xj-KDM0XZ7bt|l#m7}O~E4@9dH(W`M4Fyr;pI4t!lDYC8oGX{TC(=PS%EVkK{ z`85vQ05%nk!)2&8J)~rtmp*#I#NDMtRYG#RSh1xMvK8cekIG~P0UHKznO;!KX#%xS zsc)&q1i-v84QM4C$R*K4t`G{9YBb6woWZ#%4wF%kTKe41H(_3%+aNbsw2ZHH=A}CT z1asnQ4@RZNuOf<(oFv87f$;d7F%@C-5G7WC1Q z(X&;eo>RhCey5ZV+R=U!ij*j%hr*Ruy)k;Y2p~lnBUb zYGN|fJEo4!w}yDuI)J{X_?|hKUBe!gRw9r~vxByUL^4Yv*LKA6=?V|dZmlYWg917d z2Pl~JEJL2i000CDWw6X0Pp5@mF6F$dTJ52^kbfWdkxMK6`edl4yRDLS*?6Ubxv_dC z*Nc}Bbh=qE$G)?S8E)Zs#c#(sk25iS%?9sERHZB`>TOq-p{u3ADCKJ6nKlFgEqr^u#8??{f5JAV3K-37Sw zL4Fn7ZC?_MUof2nN{DZ9(I9S*Px^sHirQ0o5Oi$98xsPDfEN&do6?vvT=KQUyHsqZ z7LwM#J3XHcaV8J{dYmn?%1i#s-e*4c=naS2MGpG@_56o8nk06arNW9Y7x1>->xYp} z9;Ib@n4Lvb!jSoadn%od6368I2@g#W zzh|!U&t_{G`_*GffoDz2!SXn2vIc3OuNJgu0zwt{OlsYa>vKaYDKva91UZUqD|93OeR=Qf{4|Z|=oCXmJ?A>)v z6W}U@1Um3x_=1cK@=lT=q0UKDt-587mk2d^ODI)&WlVBvxtK@WYkdK1?%IVQFf^99KDvd2|+`o3X%sh#=Q9i6B&UffYexFCY;K%c!$0BNq55f|Z9Ve5I^kBl6NCMem zNd;4{R_e!ILE7lc;*g}{L|x1>m6=0>4PZ>GTwX_IH!BPsVx{G!l9{7=>u4SNjddNB zDj{674?E#xUL*H`DY+M#`a8pFhf+OP*>lnI@QxO?Y8=k%Y_EQRjX(L_GcMFZkg9Fy zB~IuKO$1*J)NiLnJ~#dC56{hVE=L<_XbA}P*KS*l*#3_RvABjDN~8x2cUB1-MjgIb zn_1~^761SQm1RQ3uwc(S81bN*)&V#@=5^|(X%S&SJ%jfh+s9Pj6S=ywvv$K#okXbM zz#!hxnn=|7tM;!Ot3DFHC$TQGzkZB%%Z4uyI>VzwY(J;V<;AeaD{L-4> zleXtv9*KInmW=2^32L`4&>bQXx-IkVkP|c$RE1KR_t;=QlYYdpMwk0 zFX}#&`+ND%?O6s+k+@+mfD%$h?z_WqTvm zssUZOllTiJ3`c;krq|Pc z-6{5xQOB~5F907ymQa|oCv8L0LM3KMop58{CY@{3^A+!Y6Ai_H?rJLu+NXsG7g^W8%a#nv<#O!4H<%UU#C`4+JEjF%U^Nh z*Fa`+@)_sktYZTPF&@RMO93)jIz}TC`~JeDV>brsfL#p%4mCjRcJT(Sr17PBK$QHU zqed{-vr`{WVu3Ut@!@Fy`_#D^&Fq%Fe&ARbZVy1`k>!o?&Goh;|Gy@X)?2S(Ep2Mm zPav|OG^S^iYR=QT!CcQ9ZkYIDy6$CvVD@a^%?eu-W#bCL&`j^$9eoQT&C}t+=1}f- zNS#a#SUaAbZ(|hA|5~tJw)PDso}Ogj@IdeFVEYZD67}ah+6e`Pm#fHb;{WXtp7|v; zd=N%IAE&v#?Vi4nBLW{ccxg?Eb#J<3c4hIL@B!#fDE|Wc?AdF^m7p*v#+5^TlK)vM z(%0KI;}93{n3cTlCcWm+_P#%-?ptgjR6kKmgu8^4SXj^`nCs4}mEE&e761sXxQh1r zCju*}C83oW-cF9Mo*q@ZiUT1}9CJxK&u0FUA zC>cNHO!gnjq|MiZ@NZ;W8O}~7g*ZP(DE>#JV4f&v7}Fyrxxw2BNwZ*KbqpK{LE5^j z=OoZU@ScoO%lRE{6&b-dtPfKt;K*ZJsk}!93o?8E1U0Gr%%uPT1jS`Q+NN5pt>9`@ z$(a%Ho^%WiHhV>;n_9&z-zLzGd7@Y0b|OQ==j?{WKgGKr-t6SP!{b~^&chFMlNiop zGgn}N8a|@cNy>1)u8Ds4K}Jb!{X`$2x0wC*g5^Ke@HCnUYP!P%xrET(PJO2IU3z?; z450jYr8TsPoT^R&7@`*F=-E0$Prla}5gxb9tf+6LVqXN85>C^&plfU{D2ugS!J&S> zch#Wom1-SaVyx*{HwTwzGM;v9rU0vbpP_KnWvA_SfUOaI_piOF+R%~vw#CfbGevqD zL0V8Qb^WNej4luIp40c)kzV5@WXJ79O?T==4kw>noDyh$-$?YUv=LzNX0sBMVCH(@Cl#u)BN6d?&BH{rV zgyiQ!Y^F@J?UG*$RyLymTL4c8AVgu1H14kaCHkawd$|aWo~>{&$r!QGN5|dEy6dAf zdNwJ7JZCLz0bybc!`xw3!0}s6Vvthti&9GnJzIf#N=@p)F^$MjHgAV{xIc(%EF8pb z0k#*52pa;LX&DUEBMHx(2Y%|IgqjhrOaUWs*>86O;Wz+Ln$DX~R;@5&IN!GDTD?gOf616?-US*MaT>*hc!M?a>3oZDdBj|t*zI4y?Y}usm zjaofh*TyW&b6`~AyFEvxq+>eHFqYarO4lD}oO%`s+KH2^VMbB7j`)*U>Y3hU-2|%r z_u4fQ7qthUGd7$)ZM@KV=kx%1w$YANUJ2N`e+y)wjYCx#nUi#ER20dNhSlIPdn`Pe z5n)oloE;z^m8LC*W*A&7F)4`R?g`~RWMeE%MQ?I z-Oc()<}wK;{v*DR_1{}azRM4dBXv>rt*@N0qeZ+F^n##96!1FP#OX&Sg$h;JeXG%p z!+`C2qShlhZn9+0J!r0ab(+U3#*yjFt5cm@G6=oT&b@4?)PXkNEY0QZrzcY@$PrLJf89f>;!IZT_A`Cy{xfaX|?>0yk(ln1v>i* zX;Us;s0Pt)Z}}))S0)9)y$#o^`#AkqkGH||dsEwq6uOGB4q9O4xhp5Tjj#KU-4NY0 z#S9wrc;U^>OcvoMvCP>o=j7y>GP_qr|5EF z`Cf_$bM5L%(-o#*sHlV;?&tR7hIhYa%$k_}oXO(_s_qj(J95G^Py`U*nXd&P|pqYU! z1%Ic5V3d5Sm}8FXvBnnFR0TC=502PPtKILa_0RRS#JK4}Ui$qD#8vq^RiFz~!9H{0 zC3?;l={Vc!ZBpQ8w=?Xq0{ALBYKFliQ@+EYA$rKVF%JN~3XAMB%fZZkzkr2a#JYLW z6^_YJ_I6%!!S)GQYi!VADQ*JfD4{pdXs~+8X*ekkq;>XE$-%&VNya4 z(hQB(yugsGFSZO#&1tttOtrt?j3|~534RYGYW)_#Iq;>IwmqQMuwBoz3b@)igXMso zSD1m|X8+sq;b^=Z5*uI=BBlzhwP!PEBN$)}z9fvE_M;A%UphN&i;3u*NZ2cXyb&(D z2{1(A4BUVF!D*15#PJ`iSJztGa2z2gGydQ{Y-Nf-h{-WM9 zK+{hV<>PKg3)+*rz)=w;tVz5(hXd*}6Ynw!YbE4WydId#i?>K+S8=UfjiRMb8xI0OY8$B$LDSI4$BX_*+s072zQVPHN@o#a`yN0Yeb9@iMzu*AM4B1M>4ZVLg=zk7R>FbCid@}`CRJYd@kSyY{fI0 z(0<74M}~THA7ual1rufEPO?6X+^Hed3K@`LW57;w&jA(FHt21}uAbbWa{sj{>d*1U z%h6oo(quc;no|LsluoPpsC%G-T{F6&$KM=rXg0yYc+}DViP3-Q)7O=g)M#YU@=z=Bxe(qrE&JI{D{ADeKW)py!tKCZkW92qNSd z`UYk0=UKBKC6Gp?+M>Ic*j@0zClSA**3=LULo`b%9SU@z3blO0QU6pXI0<0ZAK$4j zYC-Lvg>fP|5u!<|qNntaHP)F3wCRE2DRN4%kVh=&%S~bF{Wu<`Cr1{a=e^m1dQF%N zzxHtci}$U1*{fROVB<@9Sadl=SLB!eyAlixHs`GlNtWyZIWX0fBw?YU5Tbz@FhgozrzGyktR!(n{c z+Wny2D-DnI4%pwo)f#&U3@H22w+$&tOlg6V_fPS{jz@Yhx717Bk&7VVdi^z{;{p}= za8oXrdl~{2sb>v=b2$?bRkv%Ub9RinGtXm;vLd6J*Amvjw;$#QHZH4R|M}6bso>i|Fy(x{B>RAHhK@aI zX2-wXbv5(ePhizf8KeYJuH|Se?hn}5FZYeRt#6|+QCdf5%tWty) zOeg)|=OJ`sMAM0xaH&9wi&+A(3y8f|-FVA=PrI~-v??7#4vgh7W=Gwae^sK0l`X4z zOZUxRCvNGwqwJChLS|3^nK3?sOOEl8eyX_PG{O=ziVAZu%Jd}s{1Zv%kUa(cm0`|H zjLEG2+|xO7fogKI@vCh=%b|{&!96bK6hwswTt@B;Qw2C*e8U&~wP4|ScOs@Uylp2} zM#d(s$|=CPoQp^xcrY&bWUFhQa#o7>N*fCKi;a#T$UC8Q{;+SlUDdF8ma6GMZxB{A zM}Pk(ZW|i!3atN)_6cCh zKB@i2ol8ZRWPapla^Q#k)z98OY8a4*TUe*sew%(fmvmSgN3_4HG4wRL#z5fE%^bvk z5IKei=^{Wz_CxB{ds&IpSP59;evO7t%<)H(J{09H2u>7aAa3CTMH(Uqu5(j@1c`}& zaR#T*cK!0LZOf3-W1>(r=XiwPJOHFXmFMIaT!jPHlMSj8;xoeiRghv-g1J(xQoJ%O z{Acxj|HbTwHh5E2=3e8*9XcR!G|M95KXDkhg}G(j9YQj;NKSkFR@@q~jc(L+*qB+T z>7m~pm}>@pJ>7rq^b)x=A%6kkrXeqiRAtP>rYeVpq3$_tZoc=p*>XI9{@O%108aKf z`uZtM&qEs8cSHvAM+K7ZZOhPDMew%)Dw51LDch0@?+RMU(|m{JY~Ybq26Bwkpy3fF@F zF>|^K;jFDHtK8Ox`LDdc2{G?RwH95SlNegE>31RN-!whKlLx2;l+G$5%b97eazbSC zlv)IogS&7oPy61Al=lXToaOd)W!aaui06lFI3Zmg{l^$yzK)T?zXh(-!9;T0B-8jE z!B*n!V6GxdOKrM6aIWZoM2favilu_RBYct4^s^-)+ zO(GP^J#XO~iLSZb-qp#YpYplsa|=f-I1YR)JC_n*O>u}JQZnnCHv!}MaXQ~&BLLAn zPmB?+J60RQ%8(RLFy+qFSok~Zjhy0L`T_Uyfz_@zIIGpZH^u@@Xn28T_b7TnA;mp) zrHDoXjp1O`1z)MdWpvOO$}brG@R(H(PAMV!^5<}onOvTxu|+r3`;NkF;8C_{KWye> zTv6!*kqnU zh^P>LZ{slQh9^)JcRKQDFa6=_5rh|w*@)sOB=lJDA?rveQ)a(E_e`<=v=`~IX$&rV z`dQHqy$xWhLxPCU8&AvdwX4ZM>C+3xbjHHUa6yoH9=#(GH7@+d14{f*vxdVkg}h;D zrjH=tLjEm^OSVMxX7_|g<#u7pyqr*_`CDl2mCZN3e{FRX#m)uAO3rv_bm_$0CahR)8yy7J7MupKv;;LB zM74fQ<7$dl%bU;cKW>{{tT{ASut0@9@O3xr0_EQrtfK@TfD*yvaW}s9`2P{VGsdqE zdpP7zR@fW)9x`PtR%SB1mLgdny^>|G-xQD_OU#vjS8z!AK zy%>2F<{EU0L(Ki|d>WtjQhdkCSFqk&UJrg_nucsZE1tKX9g0TSCb}UmW+i zef5OBKnC~JKEkIPCkM|>GR*)broXMEx4zBtv^1l}TbmPlNL%l=3eB=<TL=n zf&Owy!q&4EQQ9+wI;^i2yH$I)Hd7hj4EnfgiuDVo(`u=DZ+S#{`>`PW5p(<^MMaaF zM@uLhn0aGk0;EH@BG+-mDAC~z=^nyHEsJmSYN*cQb)<3mT)KD7JN_0_U!AC-IKuvm zKzDmGQVW?C4=*)&(7?6%!??1c`t5z_C(Q`Z&S`{b(mB3h1a}(J1 z>di_L5AAjHi2${&H5{UkX`Khw<4QKqkU7D>OWGgjWz)lGkdCYkOmhnc2yPA3Y-{>& zY8#Zdl`n7Rif(@LjMzK_xQM+1b;Bb^nXmFag3mhx2zrMAu-VV#*V35rM|@X)=py>b596V^^u;YcT)%z zLjVklx_r{i_5|#st9MauAUj_1doAhdJ<);5LHjUr-QGb0|~Uzi4CSmrR4+@xaDBf zYZ+~N>c>(@^$Im$SDv5s@`ZwDy$Z)G`ahfo@n$!)U@TE(H$5PF#Xh4C)zdcL8FD+% zQQ7|!g@24m_cPGbr^OMd9@9bqF-y3!)8b`Ok-SDqzdTjnqAdSOP|z213$c6q32UgHD?K47D0Z$ z$bf<(j~ApXd#4UdoilLOCbeLs1ks1$zRY?M?>o4)UcvcpJ#BMI=M!VnNVW$(Zr!g> z>U;@#Lgb(>ACz<8^mG241{+`JM9_-KrzQ)T)a~lT=qYXra=b6duR;~M?=T_muN_^u z5NM4^n&O8mQsa2FETN`4P%MG+Lk_(4Z?+aj!3cphkOrcg5zCz!ajpJ~w-mcS#c7ti zwd|(|Mkg^X)Qx_B8j1R+(49z=SHv;$?Xmtbt>QW*Zt&DBRY8$+3?1yEeOtY;ePIp9 zu|_HnB>iwczB~k(kO~^_LoO&_`AQiQO~!Kjrct&iI+8d9$k#rs{Emu@gU3n4OW>E| zC8~oOk9-*GOzilfUYJ(~>(F`*7AC z3=dW{fGO;+Z)cTgs^^}vp>D_UYW17TE&~ zq{u3okUHi)Vvt2=h-`kXkk@Oo`aF!2s~SG1cJf(g=x!iBXo~Yf+`G)o$F1uW{PpHa zfK$uqZ;HW!=5F(yKLgqk+m^X8`pggb{u<%qw%p%A)sZcL?yuS^CgRqm`&h{rgw+e8 z$A*uvu3sTow(&fkvpT%p)L+4x7Ukdx`N2)ZQx~;u-Lkl= z_&uHM4vCvPftH>3SCmjqBiF}|FJ{|JwuSO4Tdsabx2gmn?J<2QDMouP_FLcMma=FD z@lKFQ>n2E$rZXR?{c9dABV)t0namCWGIv^@9W|A9;U>=`uB!Hx36od-feG%P;?JTJ z!+Dd9nAu-&2RP?RzawD`{Ld8<(_SmR*;L4Kv)3BktTd6Xi$Y8kgx*5gLhl;_^%x!x z|5o?;B605xpw{*XZ`~$ixwiK6*HYbdeBV9Oh4Ty2&@CEBESMX+>4%hnl$zw0xtTDSmIjVJ5~#umaT z6{qkbYVOmB;!|NY1-*bti zq}EoFSzPsD$t^(zt7qwbQc3r0?3aFNRFJWP|4S2@t(ib?okhzmZw)l+GRCOu4;>yt3bv4z(bXeYn!Q`^$1V&v^@qvH1`=_kVMtGB)W{Z3{@SCQ$bmx2d7F&LS`}Fqhj}SbaD9%STaEfmD4;9 z?Er)98p~wp?-ei+y+a!{d42N&}YWfy7ed7=gS{UPoD0GH&2bBsiy}`BGNwS zF$!RU5G7)uJQz~9UGN#2I`!0-WApulcLT15tv0z1FL&}&bzNja35SRVsHhNU$fN7X z+yPC%&ushXFgrQ~bV#up4Xw9?4mVG@mc%sJzjfQrj{0kW4FY3r8x8DgB$iOnOO3T4 zv9Cw6%QY}hoBx-WaW=l3P9u7nJIw*tX-KiMuLmNin3-f!ehdA=(VA5|t13?s7M#Rl zrJVuLNiv&~LAg~(RY32C9t;s3T1Mb@zUeQL5GIB;qE+A#4A)m^$u{k{jKOoiduXub z^46>oGKWZO$M9p5m1+1bTJ`n63>xBRFKAZg?S1NvU#6aw zh>DfODht{V%pXry`Godr)U|iUD6ws>X~24`1b&y1acERxKlKZU>e1ovZwy&uJ&pQZ z=NZ0@Zx|&`Whvxoh&T4jIN)Rqo6qm^7JUDzcnm2Qhu!do2+n5PogY0KBg6te1!y~X zqejXG9|1ij)26A5Bv-KOJTjh6R$T0BDX#skCzJn_G}l3@C_{8o3kz^2V+g~375Xrr ze$0>y7I$jD1*s;vF_61hQi~!Mb?zA?2X8o98*EM2rjc}1EP#PKVFzJVmy8a3XtkJw zugV}QW;NVw&AG>lun}h?2JYsAj4ifTi{7z!Q;$<=*HubnJ~P$?C_i)Vpv1#9e1&w$ zcjTI6T`H*qKW&GYR$6V?nBc9yD-E^6XHvSW9o?h++nmYK3PSc7IfdpXld5SRlb zR--iP?j)5Gk2=+7*X(Tqx^whoJZ}tP7EUs8ous!sW_85AMi#6RbC5? zWZOm&nGe%A3kePNtc`E1`_jgE+c5-oDEhn4!)ozx!cVH$?94SD%u=m+jHVhH!VpvAbRIFO(r_YC z#b&9hiN4f%UVg3T+%8f6@xSiep?)6ipNaE|+@Qq6_fgP_7b>3U7OnqrkjUH!5B5II zcO0ksnvMW=Bdn(yW41GCU zAyY$YT`#~wLcqfWLTRMLCOa4TJK?vRkX!>Z1e*JG@6&bYwf&g*Yo+!LTH^C&Spu}r z?5&E9DlhO3_#M@?($6gT`U2r&eO>=0I5b_R2xxWxhKoOYfs(b9b9Fj_G}t&H7zs0h zV>n<}1jWS5vZN}qDDsDkbj?>Vj@4_zBMVw?nZ#L66ZHo~nm!>j%U6n?LCrs1(Bo{H zSqx}Gk6(Tr2=@(aE^IoYJh!$Ob6A?I3ozHHP6-IU_ zG)bmY$DB7npPkF<_d1#q(74gJB+6%zcm~Frp5G$0e5RtB5MJ`RlTsQkxg9F$c0J>u zfX+p5{`jGY!;8;mlE-dmcH$Uid_j7#ES8K)+aMH{<_4iXFd)APa19H)+0Y=L5qlo3S+gP6H<6B1{Q}-OEWY#td8v` z8Xto6$XuP5i%+J}XkkrMynPi!CckY|o`Eb;A5N)bzp|3`2Xp%g^(0R7y>pzjFhY+t zI6pTqqJ-CKxg!R>{vceSU~_aFd$^g}y4oTZ&s9Bm6|eJ@1e`9Q*W@wfnar;wlTme~ z-g1}ce)}airLYcuyDq~Rr^7dnxAntJ#_8qR;S<6#yrW>e)7)GeGapUnH}D{KN8M$_ zJM~#<3$`gzGNG^UL~j#k?twmf)cS{N@;lRq|4&%c}QOOhH<{p)XbI* z3og(?y+2(F>1wS`A8nc?g!0BHw!~W{6l~qaW{bJQ%{00*TsfL$-EK&b%hS+Gr0szp z6Z&?ON84yE^!A);L@wkhGB`uK7Lw3Z$O~f)2|ZNb^ZgrK}$dUNx^ zOks(yNI}lJu?wws77eh|pyagqj_Ba^{}l^=R5XRgZ9R4iNxahq$qhwU%tXO=1{ zE7TtjC9YD?PYP*WC3YuW%nnZ4Czx6A{(`AAW|IUn4=^p6icqwEtr6-C*!&d1OjjG| z52l4UhA~k~=eMH?JHN^ea7oVwU_P(UUzuR(u1h-Y)DyvWT*qmTS@#SyiH=MubS;vl z#8onvq?_tzv;hj#sYY(ql9ao?;=F!wTBUeq``#KQ`1G>(Yt4seB+D(x(5j+`tBNFB za_%#Bi}(m2>PsqMH*WpPDVg%eUcRDg@}RgJs$LXjBudNfq3NBNNz6}2s~)!@6CF?_ z6mrcHm$n(UT9_GL4~%)jOv%vCLKF%R!jtUT%~TpMBeZtWX6IxgHW@9q7fg2U8rz2~pTjLmiGrhE?ibuoR(eq?hp(xkSXZxQekEWSVdR_=@|f zy?5z%fbYo$%AlLXQwr};N~q{Sz>xo%jVlXP{t!E2QEYN(I2U%!=Pr9BFtAeyM42kx z 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 SbXprl8cj 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

    gK@gbOn%|&LRD65ZW};{LVFx%>JfFv1Pvf#9 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

    dVmZn>|#<*-2$CO{@>J0z@1NLR7 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%0A>`O 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�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�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

    ?wmLaRyhT4GCPSS>*@_x4g)ROcI8iPPFtLej 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

  • &A2$OC=5w-kME@0e)J1J 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%0A$jYf{HyRjjScDOn8MLrdjZM7}+J< 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 *`|(kTQ|Z_wamQ4LK4VOr zv7LcgLNo=)xs&{LUHn>@wpfJA+=OIju`d$#OY5S9z9I)t^yG;661lZMt9-#!9jiNn zp_;7il^wd^PJPzD{EIbnyqwePke6>EB~sSk<@d8GNS$7uZ2mroCCA zDMKtd$SX;eI4>7`lpde1ePn0#=F0`Oxq<~U=DU=}3XAD1t_6y|afP0A$tCBkHLkDL zFO99isPc00K)Ty#(VgJ;1+DS(RWM3&D2P5zFQy)#jJxV7v7XN}KNg0tp*ZyYN#^`> zE0Ui~)_ndoKvfCsbkpe}a!$RSd;NhPcpYz{nf-*Sht?EKc2P``Vnm(HAEG7%f@eHR z(E??~dw(IhN2neM_s|#H8tax2{e5NHEhS@*n=piJCpr--O27`{s?7^M!y#PW;(Arz znpDByaXlkA!XzW^ziwjayuha=BEi64DhUm5NnV!Y&nAKIoaU!SC-kLL{J*ue2a zcrJ%KTi1IvbP%g3#gB?t=jd#%N@`Xn{=V3d#cD)sKxhpY z_6kc4hP6_b#*Ge!nSnhaKMXSb&4BqO(9Q6`C%$n1iY>>|s+1+9bdlxaj0`DF7YRnp zO#VDCyah&vD4ZSsse>1j4CRM74Sc(wq`Lce+>7?|Kc`Vk-c>$XQ#gC4H?4GH*kwq^ z=)WT4)R8uizgm2qZDEhn0Fi}$Js^#Cyb+0Rq85aG4-FR=3gQ8(=IA7A8r$iQmmCdR z-r%{){>AT6h#ukm9#4#h5LL$Q$oN$6m46HY=B`b5v9Ca-yahJ`Vc}ymg?`t48;Z2v zsm|AgpyP^#$e;)oZYoot>#m)-=~>y*)#;l8FF!l|Wvf9oLl$kK7X)n~qY{DV181ol zlr%btuwQhC`@9wJkC1Q%uNV%qg <5)V$uokzZF{~N5NV>*{hVzgI1)K0H*=*x1L zDNSeMM%ur9`Q{-*rlX273S%u!tkmZzKGWR*yAraqayAK#2WnwcD>jmzJpm16YW}iR za*6^dikRejKrTQ1BrO0`z;WrO@R_JOLz`u}Ju2nPmoq-*Eor(T_Z{jBS-x=Zzu zyFs;wKd@AuMA#6xgY<~v!{QDKl>;;ct(L#v)eg>gvu-!lD(eJoV;u#r?O0AJ$F47S zuy*KHLs{d~0r&1g=YM6u8551()Jwy%1+7`57!cwz7 z0`YWeF;JlojI+-*nodc3JqAW@s|TN4^bm|$lZ}>I4~PH0r(*j(7?)G&EM0|e6&T2n z?_w%KV(EDjgkp2#kelcLo>hWja{thcC&`$~7fh!hR+onl-hQVEyC#3x3qjmOh4=-( zAL&?+1fi|JEm+ON>z(`&0mKa71)&vIzg@Wr9OSiff49{I~t~) zJcnihwu@m6)2Y>47u^IN1S)X&!cgBb9qMRk3!Fl5OM_i7k_xYeW6tBg&>vL?MFw2< z(Da_-W|qcjDp3CAlUf+kHA|26pns;Wn7lzlM!sds7)c99lMeAdUA9RfEPg~*(hZCq zT)w77a_~B-i))&vE(EEkCt^TaJG)lA$eDOf9`H1`l)U&RuqFoboR+t25Gq+>5$$!i4^gsIBB;qp#VzOtBJ-&uNxp8zD z^84YG5QWvGYa7SpZ{3ya?$STJ>#9I)==f)ysXBMa=BupN`4;P&R%rB6Rd zh@@|au;6(*cXxlGh@4?0arm#WpD9vjpSTz&RG~7)*RX&~jG(uLwHqJ()$rz{u|$JK z82IpOc=Mz%)9HHt?9wJ@ZXxrYvJ6NFc8uVUbOD>$??~vb{#g#mcv<1gqbyrrhy)VT zAerkjJXT)&eS?~OqyHJ+n~TQ{gI6_F38GzZjdOrP24#C%EaEH&-7DlV330rIq7%i9 zN>N*_otXG!oF8!0Uo&qFLuw6RE_+OFjh-UZsTTwKZVix*ew7t9mtorsdsv4o^(yruzr>&Uh*Is=U$avUN^u^E1!;Y##YMQ1c z;S!|aP-sVjD5OluHSXIXX8)sSb=E#}nS?J^jt5S`WG7Pn-XFdEK4#2DCrs``OmeN_ z$fmtG-gvEl>SI@8Cj@HaJHaY=hu6CB548w0S@esA1zI`y{!#jt31ds`)j%0L4fRzW zuDBk;OoH%eyekOIlNY>Oaex0M`-xe2<^VJ3LLHN!ZLWzNiV21c9e1@qbA=%3vVwf+ z`w={Dl2V1kVS@(t5>`YB--AXfskZ(vp03ffh z-K(Eh2gV~BQP`rt7XF>5k=HO7*{cJOoMPdWV)&vuNHPirg%>19+Y_;|$C#74%c2M% zDm3-Q-G(xv;pBZXg2{@{K+D!`0`_kfy>tp$s2*C0L+Gg8f%qV%GPOqr%zmx~&ine` zx&$q$RC}~L`6PH?f7IXi)Wyo@xadrVZ_V+n@^QU^?(#mxjT=JpqW#U6(6@hxhhMWE z!jYkVy~ZL4SK9PHdB&g}Dr6{w#~*M!_Nj35B=yOR1qHC?|1kf3X@VQE%%&K>=gk=g zD?-~@XrZl!<;$vHG@o5P18XK6Dh;Vo`4KLD#<~p_eSUlf=tMzr714vtw?mdufljo%Tq*@OaDz%YoKiC1_zGQk!NP+Rz>H7!f| zEiqVQCIr(1JER0fI$O}8=dh06tN!1{34E}ooR-GJ^L{>#K@8NyTo2EhRHe3`1cp4{)=Ts( zKrY^ytxvVEa*he}$E$NVzY5HE(GwA4^Y%A;Jr?y@oWz=9&}p||cUq*w9g#R%17KN! z3&&G3u}nF<1E9CaIBae);h4mxNfilmLI(;i!d+q@9uNBCDEApBk^vJhr^-K^KX&8R zx=$m|O6p>0WG2{Uz{M+XOMFaQ-d!&KkNU}TAauY35WRcy!*nNjvwb=$4W$vP4M`d~8^>_acHxN)U8F|bIJns7t?;r|h zucm=&;hYL2dyorR&)ACf)2MZEtuS%`w1ZeR7t4n*!}t=5A>&Q>Y+Nz{*g(?cfuJ75y@?^=Rjf)BbI?S^MrAJfenu<+0#oI=Uz60f*?+k z?fk5t(u!hG#a-6GZmLd7DKs)j@4%&!aX;T6zBD=3rF8Yd9|&!WutIQVfFV|>2}Xu8 zk3&Rn3&5%8#A~DBC=8>6#1)l&hoer=Vc}qHY9^Eb00w|%Y`b}}lw=t3UKuK;L@b~2 zO+^D{GvUSGOIOu0V9s9UD(q2luvCWmG4Xff_8hkrg|f$ucrfdg^!?0$GWWD=sCDf# zLT8Dxi)lZCKi~a;-TxU0oUpd`H7Z^p(O@?vh5h{c8CsvA8((%th%&z7Lp6cCKaEPi)w~zLT0YvP6csQr4jWcLQ|%SyiNuf4uzl5U|8_(3!8e z03&`i9uYirZt{N>Mqz7#ym!bPJHVX zwp)KHT3jL&F{H2Vj0TkxNjZIUz z0&tyMf9XH3od;w$^3eZIF60G~S7T(OI#`GlD)#ZS)M;%0&c@a}6; z4TAWO=L+2aY_=s*wyM~MxU}%8o7T&i7(CQUo-8|4;jk<0{a~QQg$T`b!SF==?4n!%8F6j(ZtMvu|iIdmZRzxR6UAPaULZuZW z-LUjAXIdl-lC43kj1tId!*JZU`-HUBhi%>9H=FQfz674&QA}9b|2$w5_beNV20!+z z%B!kYHBFRluh!V1NRd0nzp)RBdMXn8`D`Bp)}y6?C$iGGAbe$_Zi??08E3}W zw?u@UOf@b&8Wn%qPZ6f;`_gmql^0^D7wqRD)_Vl$o>V55u$@%>h)aHid*ge4DL9-6 zFhWI8(O7@Km)Ic96)N&R`xSfLTQPv|!s*#nMIY{Wx$s0s@gaX_iXo#Dfxp z%-i>v%f()LVb8Mq6g({m1;gS9gRIAL&lpKaZS1Zk+<3Zy9$(N4Ye#<^w4-VkUQhFN z^$tCr%$haJi2nj#>i`2DgiY?^@KMBH50>AXk;EkiMI~QHREW5HbaXIX;HbtCs@HLD zMprl4Y!Sh6f}7X~ErnJ+p&e7MyrEOdZkTi=OyXa(f(zbbzFx3DA`gzx005~~>YK4e835T__0t}zVz2Rj}`Fscx4f2sN>cnc>~ z^C>KDL5P$J>kp}+KWTY4eE`XA#48IeEdk==7AmUO)LA|F$N1{B{`Dk?Ul`|WEhIji zQ6q}V-P^(d)T-_wRaDN+`8Zu@1~wef^|l_kw`ocCfe0xqHEfnY-f|MN`EcR+_RrX0 zn~%Xs&A^k?Qm8%0Dy%rPK03(Lp;}78!?{q`NdQz`AC2)OQZS-~qvi=v-Ibu%np3GL zfqwbR=HKeB?Jlw_T}Va|ifw{`T^j*mj(;TEYAD2Sc-)gOc73)$t;r=*?`7adkm-~v z9WUpdCG!BU)2?KmMAL-!T?o7%r8F&dV6@qTmXJy60;{^<|Bw<)^|hbt8^a6{p)rP$ zwfeUEGxf7NBMHKy89&z)B+WY62;fd%u=YsbY16I@z7=wV6tS18aFSmSObAakR3T0{ zadOgPODywG-Ch0LfOsX8g4?DmLDu3srxu4kX00x0&TI74y@@#WMvh*O7 zY)AK7`bmo(3cK_%gccH8A5RRL<{zJaM##Bt**j+@+kw7od0npH=n`QqP`Zv@e+C*e z6^1&wjkunmDyb<`>`*m9>#elv2Tmd8pM6W0NhjU?)uQFADzHeTJ>S|wJ|yQcIQx@R z-f18%z0I*^23FSM^92V6*o_&WsL7hw0ORg^{*928p7m%!Nu@rd9yDX$+YX zJSbyqL-EV);14`y|C&}Y_tp=3cc|FO@kKd3zGC{6@I~ktbKBQaCzlWcPJ#MjxMSIz zHV+T6NPpl@aZ7P{!#Hh&FGuSjGa83nL}oCVHoomlIqy8M1?EBQI!eoHS=;Y6G9Ynd zF+mGNKr0==Vz3R{X!yKpVbQIRaVU>zV4eBzhC!DY`%lp$5tg2Bk=bCV<)a?Iorkkf z{=C$P?-i2Fd)lM+?7^g~iI;Zcqd9BYST7_fSi7cSPlK-AfZYNuuGC9j13Q5lY9(i> z99JrG6hddLeP`~(#+@G(Z<4}NCTN=#g;~8maD%ZuY7ubGj6?l*X zW&-P;K=kf-*x{C7sQQi!K&~!;JZ|xX>R7|LZ%bzJIw@~mhmK4m%ZBV1&XLMG3Pz1? z+8(-qq-`abiaV&u98`@LA3sJ%VO%UdH?8Ed|Q;4M@$0XkP@|DWI&RQD{=GN=Abf@lbwa;_82}w*QSEt%Z}g<|;`YBICTE z!PYPCwQI3iv!zfay0*Ma(^3=!8V`RQpbU7APwt8LWaTT;$U4Nv2fsoq`37mVF8Dn- zsW(_?LVIiR~d@q|PXciN=ZXXO22bCr1{bNf2`^C&IP8 zLTV2sgP}@B4sKkd>8bLmPOfgfBdbbr@c@@N<@usn<gk{QXU1F;)V)V25M(O$mOFlCOy_;@(wm?_Y5@#+gt zPGH;6zVLNf9@%8z(9J>xj(b(8gBzCa2HT_A3o(lp@T<=G_NHx!Dg=NxfD8Xi(;$b< z9A7f%+)zlwoI)*w?BzF2-2mO+hzPP2=H|WKUho43rRkBCw!wP zCFH2bK8GBj?qOv?)(z5dW}sF^gbz3kvH(lDo$c^B#)qJ+l1|wDt%}}A;R4g7akvtz ze_~oTf@7N@JFmf86Wa^`WUXH74s%1N3%OPHZZnq34M7Mt{M`03`*})3l0 zw7~T@)C;w#Nt=xTlE`-L&Xe(*=aV?VET_u@621pWYID1&hRb*W`*MIQ69yISv6+?3 zIShZs20c?{_<@@PE6c_RwG`v{0nnx~*@ELm9f4nWIKR+2d{I4`a-;Pzft_WUhQ{`p zZ=5kXP1`P1BW0`W);NiI>+1C{;FAT5&*N%q$mZ|yd@C!hTG>akTYtU4X>P}8v7+EPzElcOSw_f+H?fH3k6Usj6PnSB&ky1ru(?kdkOyVDU-2Dz6Sjva*hfNB8q@0 z9!Xk%X%aaI2rLA!4c%78AY7eVl_w%qNUv%FY)1v3=`ksJYcRjF000JnWyg`8tw8W} zY_MH$NE;hJznBQU0DcrRj*4P33RgLgD0P=ObHoB0hglgCY}+FNw=?s7x!uFEY@asW z+{HKn(_OcCvHE`_s%GN9oxsvKJSB>%i{M1D>~@3WMUQU{;pa9!rh^`>fq3a&@R#fX`c8{oJ>O z4kY4H7x3{#QLv9B4o~PyJr*Bm{YSqRbm?c?$uCv)gzIvL zo!np|VD?nI!j^c)POexy?XpaYO{paRPE*xJ^i^5r8MmY~2-w z((v7lZRCZ5;@HjXZwAktdoo@$Z<{v$)K&@#J2U0sIQ&-?yg?jkFIkj77c492uWAS! zkB}E|YMhOXFgJdJA%!*l^X$&xEIvKND)fL$v<*kvRE5%K7J~E>DlV#vmbAdl7^4Cn zsxlAcud|3u_`FykI!sEmlgTdmviV!;zF!!5mRpiU+=d=);i|FY`x2QP_oKXC)2N@a)Mnz%Mq=&A3k(B8A}YpUc93kkjq zPJlj4HQ@NnI+FdyL#PVHZwH+Y7Qf3GoOi>2vv=}oTP3Rv(d$_4U ztS>$$DQcTIYP+p}1EUZ}$iQK^JCTkg>hFu&4Gw%+>JQ5zo)*>>i z7OT#+8#!Q@_c4PZ>00dq@i#3oxB}YX-?c|oGkx4G0saNUm!p_!iE&9F3H$f3SNG$J zm7|G}Lldm^#y&QV&3Bqa&)PU9>*;nB-i0k0J_mkUFOJYX(ZkzC)0y67T0$&Ej+Yh( zMi^|4BXhw?`o>Gc)TV$Cn^mKthFACwB>Euni9~?FE#_5?{nsc8;eQU@nY;J@t*%-V zPe`DNm~7G)3nUFqGZhWprE zv$?${bqm6ZSP>|l3;cqJ6gn$9N7MQjBCVdibU#v9`Fr=^nRk9{H5J(xl=DZ;w4^Hy zz2QF_nVSm1)};N!l6?rSD=84E&MKkQkbf8bH&N`ZfG#(LeM31#l5j&w89KXhlpVV8 z*Vxg?aTz1Gyd6JbVtO1{V%a2bzou(*b=Hd1-Np$1>l)~{E7n`N+S+M@f||z%l(blYwSz?_${&0{t3c(3ba{nS*F&D z7dsr+Wv0amUqi}4;AWH8MVYdpR$3gNN}W`sH?o+(*w-&PO+Hwk&Ne##OGinKISKUf z#_aDi#UMl*NyHN+QiVj8Gx1vi!N7;kLKHb^oj6jDhM@i5?W0bl?IFacK6Wfb=#5Se zaXb`QYYG>tPU%WRg-IPSdK%gZ%W!t&&Mq$vJE__ZKYEFhUN*N)2<&Uoz`^WW>h*b1 z_!~j(vSz4Yb+0q8kK;E6Ec-uAdfM7&JEUOrqBO1qm{^mFaMc2hBlyEG%>r1J)H2)n$OED z+!2d5(fTcTl%=`q%_g_;)GtZv1pCPPihT8SIIYGP2`Ap)AtY_ANXZ94F3C6x{Q0yq z$RLrTM5}L|EsE92aia6QlX{9A6pjP(hPs<7JxNXEwto7w$psmp(NtUeBUkG`xz--C zg4GVg+|3u2af{HYF^!`bGkH80+B;RPMh`;SJhs^Lnz^LadL*(G`l|~`uxxJmM2!8% zOfuorrf%B`@$%QeL7XfAI}vIv+iku5C4Hx9%+lNtDx1_2;e$sKh4FOh*3H}3`j{)s zTUk1D;uDu~$l)vdYp0*B5&ZTea{0A)H6NJ2t(@)~RS-@<#v^@$dh<|q{GGRqISlB) zDR=EOx3G-J(1J8>fG7eHYzPlwLsOzdC36C7ISfhMC313AAFQDm3sy7r24YaWdU}q3 z(4_&tuHK7XCA_#OJYAD?TkR^Xvg!`q0p=N{Kb z@@(y}U8{R)5nHQ_L#w=@?*%tV>kt4qpB(rbf*$Rx%H+N;e;moP z^~n$vs#RcCJV&ELqLlwsRd(@#7}u)9%mDi>WD$m?N1Yff*81R#=(Z=28;hirc)8n_ z5rBS5DklV}x9a}fxFWRwn9I@1=pWHrXnw?Yhh@d42o_LvInH8)2|H&vYGJGo$C~Ce zsDc?LD0`W~=fZEad|3`r^M;_YZ#_)(Sp>QV?dk+;RT|@ERSKk5CZ$AsYf`o_Do9wQ zz98U@9EyRt{{A9KPoRJqm<|EksSv%$uBx!H)k&Kyqs)^kW~&Qxpo%%`4q4aeUymrn zXCikO*g5I)C;ZXPX%i>HfLE8N#A!m+$zW2ZwXB;+YF%q?SYfVb}n+^iy}_icYLtf&wVt{xftY1v-ne)>~5P`X6Uc;8Rt)a43hy_2zJD~ zBa&=WXLf~(o8)LA*4Kjs#MSu*k5wWai@0EOVYTp?xRQEtL3>E1Z2OF zH5MW>U=aN#<=J&lC`8Bq>^la(d*wXwj*D9le2ZNxcl34kT?FqrD$Ml%UBwL$03Q%Q zQSv{$HCr!S*RwLsPEQ$~wrIc`xVHO-#M$FTYk`~iOdXEsa`n8rhG>EaOXg-kWVq)- zlsyvSgir^>Si_&QgBh|&)%TN|3l6=_7fv2=S0F;-Dg=M~ehL!iTF$BeZDD_!x@|Rp zOpj4g84=QJq2mv9=8sY>2122dye_`{S*T*qey%yNP7f~tbeh?y7qBN^qXyqrArzWd zgAe?)csNE7uo}%ZFm3Z9*q>BMcJh-18MXQr2<(K?vLi45Bepn@mH+?-cx4Un*;#nW zBv)?zogzBFL0x8aD_TscAr;CaKc6C1oQr>p74%2r*x|e z65~HS7Kuwuq(B2za>UJ`gWp*{7pV2!g6NrB_kMw6fXDt<3UH^gMeh`>7?T{0hWWUN zBmn)%X}y$Hd8JCSO3OQYoqJRZL1@!o|7ka;aUKU1NRt(MN$a;2i0=p9PX|4&#Pd9_ zXVHRA$Dx2UJ={U5O@c=;tS;LM5_(&S_T6go@} zh~Lk-X>mQ8IL)%YKv7zVVi9F&2aksP3*4e#F_8SLuZI}uQvB{7BL{iGBx`~;T?KTQ zc)-yYP+_<4<8zsp&__3}dk9!ZB*O>z4NPcd8d+ z(4OaZXeInC!Ip^_LUctxZqyiPpAFY_w`s8@s#H&zN>VNFSi}{6WcWT07u<``L?5%G zAYDVHFnIW=N<+zq_Im%1KGCbjR>08{d=J6B2FK;*G=(+nCsuO@N5zU*adtQODE7b z{w)lBMv^Li3d$mqkgEg~;xv6&0mfcP$GN6J9|p$E81;ceYb@?cDGnb`_UhmbYTpnY zPDWd_Jq{*86YtR{HYlAiavWYoqpoysE|{GN`lxf$@E1&I;3QCx3^|mB{v@DyOa==6 zQkr`LbM#GAfM5nuBo_dwvXfxZ5YpA$UwuWXcC$GAslueAelv7>sx!#o1#LZUGt|v< z3*yF5F+Rg-Dy;axN>vCb{UG}_XFS8WqTqOkuREcwv@hcBlLf~yN!WFpsTD|F?@C9e zB4?*r4czl@-L06&gQ{L=qVc+!Qq^Hyfd@Wh4XY3`nV1H!dUao50y+`1x;o(Upk8!% zRJo)6wE$qtGu!F9`T2(yuE*TYBS`qjTrhZq))Q7m-RWi`vlFJ+NfYx-@bvawem$-f zfSw^bT^GAw>PH75@TTx~UD7Hw8uUsDK$0|pB~VxP^g@+2MDlD2JsNF2IajF!>y zi|YwQ&x2U?;^Q7C$WIxytxE~HL}LFTO_@Lph@1p4;%vP|)oRE4qd^akd!5tiY%h&o z9Y;8<>R00Pq4g*^J{`b!;=Z2^n3cHtjbr9$<8te#ZHjUEx_%WTlV!P(_Dx`q_bl$Y zqYQ+QatDh53=eM@)G5J?d-fHm3vJa0mWWM@WduKw`)?Mwv1&50q_quX zW+J-NX3)l5Lm5?fa`#EGn$F+9A~>BPjZA%5=Qd#f~E$uWW^s03`5g!Q1|XTdi$ ztg%HbgBu9{(#8;~$_urSt8;XwJyTZYwXZB)Vuj^|7vCgfj}7{C@1&~|;S0^fbD=i& zKUDfa6t{m0HwEpAkz(Gi1MRXeet|zHCV6DYP8*-b21N^htXtX=3Pqtq#t%0anLK=^ z-We1b2&5u19)+|bidLv8;K|wWcBcl=F9)?WvteSiCk989l)^$NCeAobxyYLwjZ^c7 zl#jsp-9?WMcgGx-tUQZlI7+jB4ObDR7UO{QE%LW|ka43f0*_8*E-Jijb zf8u^Md%5b(M`EN$5E2a?GhMqVnY4{mhD+x_AACcn%V+0p6N`IO?g~%# zI%#PK>jue7fGO7pwR*+QtYF*ieBq{rM`Z*rNN$QVe%#pzGo~yZ!Z4Fer!M+W^O1UJ zDe1r|WB;AJ|6>y1K>o96DJJ6wv84Q95;jP1Wk96Lh6!SlY(g?7xW zFOPfl5>+-6Jn7XC9n*r)x@FE93u!*t`3lcgsd6yrnoY%0o>6nNpX@tcjAY zT75BHx+_yaF>{K8+HH`%^@spv>Lh>CwKah`@L23}DMHKWH2?qxd1XNCvXKxe$kSLA zB8Ve?g)56QT{CIGaj}RTiT=kmIPp0_+6RU!E$V@T?Wq#NFC0H=sziCBY=nSN`mHtI zfLyj+fnF|*WOh*=)uprym~>3QV_OF^EdI52Ms{47vm?*&kw5mPT+dm$Qoj@7>4i$v z(@USJ$KpS_>kcrd)?pBFWA1s&^8r@~JEJ>RlZ4ym8!_Ab9+jk@&H2DDcm$R`o7^$Q zT&}DV{<9aCUqm!5E6;=nc&xD^nMFkTM3YnX?dRx30Hg?`4jcukS&SD$d|D@DX&~_V zcjUqGqk%aJEo^4s=C6p><+8#mbVq-#iZ`Oa3gsIpJ?%Kg!I$N~T*YNc1I^B$O+B3? zK+fim9twdTI%|rb5eSnGP0}5?W;KwRvFN<9PC}7J-+EAwtFc zf+F)pk$I1zRnEdSAv$3wRkR|7lypWmh@N0Zu0;;nWOn$~lAqJ!c$QIFF%Z1>Q6X*{ zU))TA;oc+om^B#;zAS+^Md}qeHNNrq;go0VPFX~^IoY!mmM=u6%NY4Nl9PwEoOyeo zCzZ8gNQGAbmm;IlnSs(G@sH~6gw)~@XJoVD)YY%;Y5ZWGMTNvYwyTBTD&Fp*orMcC zjq=pAhcr3FHo8wzxg{E$C-}*1U`k1e#qsC0ZpF`QYvOUcHXtW&`)kA;k>=v6vCn`S zJI>~lJWZ&IgTvIToDsIgsaa$aH{bV?s$#0@^wZBgXM~VJeM=;{_nX^%!MhuxN^th~ z7Axs@*&50jV2hJE;s)L{x4ZG8C36I&%5ue6I<{5J9H91m4_w)k&|(cpDSC$6@rJW6 zc!L2`?k#*Y419shZ#*vt*H^vZkQUDcG;eGP{ygYPWZXJ-@6FEC%`~og?^MaX3YzKH z>LE>5SNH;;ND~8v<~kJB-1PrQo$Y2fV|++zQ2Ixv?o|bz;}_wZm7w+Y4*9bNS%xIe zgTW~jRBYOCZ2XOwTnRe*dQ>HoVS;lz8&jv+e_pxEcyeFV_p_C;UAgfIz-6JiNTi+1 z_1X8_jy$ag0A`JwI8n8{RQM5~20K8!!NSRX3pqWEKk&rL{YlAL=IDx4tmB`Q$3f9Z z3rKWxxz>`f!i z7IkkcJOLQ|PI(`ZK2E!hgq>y~HY)+RQARu!EWO=HkFv3pp+G~nhGWvFv=is-Y56XziW z)qXi1d8T>Id8svQlu*Qy^M5Zl$1X6udDrlm&7w$@yB9>c+0cveE-KqO_`Q%GC~!!# zMZoVdpLgt}1gc409s%!S7B3B=U1&mO{o7zs^00~Qrio>(9;pE!M*^uH=`D#NMjk!P zw+t-fAk}rRK!3JlqAQ+jt#?;4Gzyb$hj0kNOnLQ>*_6BO+dqA6#Z1SEmV59~p9>=X zfg7z%`*ddu$)3=Tf(84E(NZy9zn#n{Y_PKT^aAiG`mq3}@Mx>PmHC&>Ut<;JtT#7K zgJ0nJG*Dkzzx9vDD{EMhu2)R0*Beo}IDs7Wwsi9S+uZL-C74R2TcNd6J#nw_X~TXW z3{f%^aDs0&R?ooopMl?5&;Fnr|0ST~9n9)MU@nti36+yFU`KEUPI0gy>L)I(9jjhr zzF^n**4kf$|Naf$qwn(+G(f?SsWGH2%cZ@2(9um3MwJFCNl&Lf zgI5^$M!N~d-$-wzQ?&k;oX6+9Z9^E7*~l=R{g(G9Q^I_PEWJO-IrYTY*Gm zUdfT!nv&QMB-}{RMuEBQ4=a=8TLV%9tVN?Ax_Cf0Wd-n+81TpKR2kb1q4ja_6BLdY zvLZ~{!Q@J zIUKxOT$<8~8BAA6_+_JN=X0ptl22;`kJH~un-|0y&6L}n6hAwwCTSBHrjLqhesrox zfx_1(y8})x8t-6z%&}Di9{^AbK71u-b?_&DR9$Pp1b{-Yc1$RsvzkvBR?_T9=gU<3 zJ@xzUyr-f(cWel4(GsYIInGng=Y!Y<3M8nQ-^8Paw`8N3%*@$Qvd^$u_-bo-bcs^6 zodKxMNfHncc^oCXF#UmS+kyyIEzU)CBTkhFwuQ3q^)yi)hQxdmgpx^_f{k!)$&Q*+ zF=MnoGWgd%^a3b715ij0MwmBvH72f&Ty_R?wV7mKcmFo9O}ON( z=mq-Sq#Gk_4f-DvZcuwzfQQh-K{JtcQ(XTn1uvG-Z*`}%HeTYh3|B-QK$2{x;g$!- zX*g5W_vIW>k0QERa&C;Lcke`fPV82hs8=DOzYo6uDCZAWTSo>Z`pv^KAyq8=Z<#QB z>AX4&E+H?((6aC+aQ(|PbVwB7R}A`LZ3?89aWXX~`z!f**9uKRjE2ZvuL1tb?2XHM zlzZJ;zqSfli54}@s&VB*N62Ek0i%;z-cqDLK15FF-oq79LlP}a=F;Y)ZLR|>6j-4n5a!^nlXrkA}>&& zN!&|L3WAF4rCas4 z2g9|uss&H>RndpBa$UD2t%0Ylb)m45ZPaK|!yHPzUPG8=JGlS%V`?o*K4^30!-p4% z_~ST`hacnH()G@RQA2{0AEad5UO2<*UwmpwSBBmg{o03sGhO9a2D3W99brTZkFr#P z{E#DecyI+nl0M8&3o8y}l1?#=3*?>}wi6jSmW5^rP->70UwV1ngRi$-0f{FlhtmZD z_m6i*kj2QX4AF6xr`>@|<{G60x}gTT)dhGpCFzb$&N`Pr3z2EqMqUxHwNg$gFH|}j zC4!q#(&$7!l)#b@OaLt9b~jDzOJgN#D&QVe*or*cy>Wo|Hlc!0Kzp?=PtZ8nfz2;_<^*70>f{Qov8Jmih_P>I* zW_zyl-Bs`vER}M*Tozcvo6>7Nsx@pmwVoSJ5W@%!sloIJHHxJ>oDE5Vnsn6~p>JN> z@f@>nErX3PAFQE14vYH9FXE~@e2EVd^&@q~0J@ADe?}Z*4wJgaM~M*qDd1lAN8G(;O`}qO*PSN%TdB=#2K&ecAD7We7 zh1Wy~{$+kvYFhNwf1?*X>XPROpiWJ+c_yglfB@^h_yDEsG4QQTu`&~$=&wI7Dw?i7 zh5Bljfc+lO$>YA^(acAZcXkon`H81jKaFG}<%aaKWuJNI-enlRr%idij~i`!bq<5z zv_QW&8l~a{A>4iO`+5KX261I1Iz^(TmWS}`Z!)*TLGK3)hC|XiQTA($WhvK81$FrUtz8Ua^(v88l_w;{bB%iL6Deold!FoH z;}I8zZW0q?5qQBO=7VC1uflt2hb(4*^l>1-0l?dP+u_Tg_Q0>-L$n66!*N%jg<0H{ z^$^g=%T9(}vH#ggsJpf@b3nN6+AOb|LVF1c7IHHcRI;+$5QsQoaOp>}V>jbPibL@d z`d=EflA#7^moozexYyk>-O$AYkBG_6TryTbL0_)%HU9s}1RLy+CgeRO@_Y=D5Oj7Y z$A~D(zBlvlnV2GByvhPI@=YHH7!%sEzB9GYOZwI_4WhY{gn};HKLyj?no9~yA)N5q zpA K^W1)vt^HfO7*DiNJ=<$2?^SgAt_1cQGn=(?#KDMnw)ZJ2-z)|<7q3Nx?kuS zk&mI4-8>cJQqcF`)a`1Ao9t9Ij&*(0NAW(i0c0|3I%P5nLQB&mmX1Brd?7jOLGD0C z&gH~wqNW)0wcYyW&C;s&prgX7t zJuS9#5ZwDGUy;mJJJ2@vVEo)x0Y#MwKjn*xYpG7@#wjysi3Gu{OWD>-BP1u++Q~fJ zcG}uJ+0HA$f7vDL%8U-WTSG3`@HsQqmVLK?nEF@-4~5tU@CfJPtMEz-irOR+5C!eW z072r%gHP8IC)_r%!DKZMc^OZxTY_O;a1|>N439cxD(%;BW>Sx$)r69cvp)gITWi#> z2}pezgleDS$|pHS_>V4nwf6KSL6{XrJ(d~DdEvj-mQ7(fDcpIIJi{f;4Xc&9RA~C_ z*-I>v25|T6av9M4o@I>mG>!@8l>op1WN)3=_a{GCQizwC~k==FFpiRTcS6!-kD&VLe4RIwdA&Lj+)7X1iI4?l+P@#G}*fAStC zaulGzhWVGtkaaJ+{7R6RD0i+%xsqVm(NLlma)Rea%Bhjq(LKDIK|!pB2|5nW0dH~p zt5ZR)f4bUm(B?WKR!il7!`>iYYB&c3xOv!mM~y_d=%Rc(NA2Q&nY9K`1LA@+!8N#W z7s1KHg{hDD;;c}O#%43Jr?)lO)5QAyDcdrFU{HULHME1$)3shUW1OV{t+rM`#sisi ztW=v$+br7h@U(Cvl=kCQxy)D)>0e?c+oL2A+d#%}+`S_UVWq0SgPt}?Dk^3xqeW1q`uGzZ`9pqTnc}0*zC86D~Qk%G$Pmc5PwtY z9(=VqmpGRDT+mA)Os8Uwx^gW5tW^$8wo9V} zTq>|JllQpCCBy)VGCGdgc!+JA@1hb|tm|_rL0V?+p57E%uJ^qs+0bY=SsSh}992gr z0c`SDfO*u~z)i$%OY_mAn-o@>3{c7K2gS6o)kOg&f)J6#6Vyp$MQL@g&QB8~5b=$z z7TVeX00vcMe57roX&sj-Jcp#r07lxTlDPD`~;#&2t?B|~J(WpWojOZT8E-kCr-xfY>tb`1TB`=Xw zm*(BkZ`Ls~8ff-Ieq<5Q9a=>WU}}cu7~Aq^=VLmtt1P zG2N`oO=hD7v5r|gkC2jvO>+jp4;9LAKvPhX z{>-W}B+5+uIOGU^f$Xa`juTLMyVkpTzxG{LWu&s;thUT? z79tQls+bzMwv!+mz2DTG(lw>;5@B$;ZrsaI6RXi#Z)Sr_mfmS=#R{HVs& zL+|7e5Syoxesa{;n6vy%X};f?7Nb~jviV!h69|#S_kR{R26m3I1jxD8=`_7fhOb#bHzg4xQ5vphQTOh_AIy7`4TUnthtn z4z1|yN>!|w?2xn^SJmqpm~!?7NnuW$L0}7#z@WUa=Y;DZlzOpu)qOcaPHo1{!YNC< zqX?qx&<8#|p-6{LS~Y@|koSMIZ>s{~6^2A|Cy_T*wzd0h(F}K1*to#-H++9f5mWVl z+S%vlT>y7!1YBIrQA^1?u4O$;ISCas=d)|20W`&@D};5O^)eRorZYEUp{aSP@=@#8 zd@~pNM^iOzQfT2b`E&|J!AvHFptw%VjCbyFJ;pVgn`{hN)OQ$Ui#tZB9p%1PuEIc% z>~7PeK#Djf2Iz{Y(z|K@GOAQr5hdV`jwL_#Z)e&kfb*&@D%btp0@=&-XlE|a$DTw^ zbYPNs|9C=~w}zBuOZn!AdPk3jGjZyMLQlzC_^lfFR>Qf=6R{L2?I(`4o0RP8MdKc^ ztuh-p+S~%Ci}_*n)$d)FfXY%{BZ5Ho=j}mvp8JoLcM&C(yp4Zi--DzHBA2TfhC9eJ z6EB?H2>&26+-(`G25xAu11EWmLtnjxo@mP=h9BAamHj@W_@KDk+^*4kroF!3_NXWi z%0H;7JuB972hAC=4RXqg0r;!TM(!#)AyjdZ!fM17f_`0GFz)rm3D^1@vUhNuczIgI z+Z?k3HO9N&gbCg8pym{aH+nIA5J?RPm#7SA3#A+SObi-3A-Xb|qMQ~|r{XL{I0SRE z55?kOgvD+1sooaSo3yEIQ@Pov^7yqtPCfN-|6CTWzVuN&%FH%gDtSx!cs$VUbaZQc zT(4pSDznw4(}yAIT*$99R~|upvR;J_-_^C;t`phGr9rqDl%j{)WrNkxY_>h?P1kZ@ zcJ*7o&y?;E#4^wu>hnim9(vKdgy1^fYjyN(#N>9nsAYKTZT;(`+s}?5&q|MNpIs_! zuOFaFd2ct2y6z}k9r}>7gLr~w;2X;ZzPZtMI zc=p)24k+KkJIqj;+qhO`9o~P_RfTUPABni z(y@(F;7)q(Jetcp1>;E2&{!2G^K#mu9zMA)vVrA@FBjbUkbG4K?TqD%qdt}D9lAog zWU>c5^0dWhYzM}9#Wk7?=e(L?MJzRRtneqCZV4xIENESUN?5)0eP+ zx9+h`jf8%XayOwqYt2ehgf3gax0UfPIi6g3?eH@bmV0)-PBDw!vAl|tIq~+cSNI%j z&}Je)8iQw^3#_Hn^rUpEETOCfSo<2o4X550WoJ4MJ zRdTJDV_IC&7zGP;xuNq{5Uun4O9{j0OX~`rX?KO$Gk$IPc-=4EK~>SyPLhLtfe8=! zb~Lre#YaW=+pJBAVuELV9~U|+R{m$O4&z7#rMpwHjA)6u|JfeDlut^cW$!0|>HrK( zV01&@$KYAIp|(f#4lvEn72lZ2U@R7^I~njzzINMBX2H8m{x;Uz@yTi^1VnaPwuXxB zMw-<7kFgxe;Aje~w^d{~uyViwqGnvl`^cl=0& z5c|)feTlBtJzh}!95E<-v*2g3zGq0!Sp44~P5;uDK9?QRXNEG(kqDrl@3*cd1Y%aP zLPafau@x1Z2G=W3jQ+65F8WC7AqNG7+MHD^?LvhV|8JLKBKguWY0@mz%dNGvA@5QQ zwlV_y);;mi)y}`X4=`aA&J-mOYbm2g_43HDoLTn+xiX2;sQ1-L)Keea?6pTK27sCE z8GR+cpqn39mVoYmbzo-7_ejC$&vH~Cd zwwdxkU}gdacSIwJ32J!Ft-tJ8&9JNev3S*2aANlpgEta9T|>FtUb<7{!A(#O?(*~s z^ciF7wM^)Asu)hy%Gl(REw-2!y;Z+nWQs7jlVR+QTaiLVN5)g%QkJowCbPK1zIbAw zUeCPoQZp1pekQK#w8dl`NxbZ5d zhIzO}v^jnHK1ozWZq*zgqmlevsKnz9_O5hZ07rUApW!Cdl75e&4`Y}rXdQ6XLs6cSFAmdTGXP^8>D`Pfi@7V10 zE_Cuh8k1$Tix3hxNos+hXO8k{qrfsKWEh z`I)yhQ_-_WC5OLvC1<Z}%ppuWn9$(zHvmkrucB9+^(GxRQ z=?MeKB(hB#CpBoQzBF_CLhgMrM>%#B5T7!hIgXXuq(5B&nMUa*wZ#sKIr5m_Ro2mY zhBiP<8>#xT?PKC|le+*&yj;QREMFB^yTnH6TW6Me_cC$=2-e|C*^?hL-I|&Z+I6V4rwxVCaQMzV zI6=9~7te7f2urO8An%8$jC{n2ajpXAI$ItiYbh4)nGqFua7?u_40@j+Ur;1#E7ac! zSLohC+Zk3=J1~{x+zZ@gF;_}%(-wMV_Clx|$65maA%jupm|nh`F})988G%~Ad*iyE z=f9R0I2pDOP`;R%iGQubLG4Es;$Uml!ZbA`lzrCC z36?#Bgs>*{gey7dP3iTSrh(w)JnmlS-zi&03N11|)f)fn#|AArF}Hd3ao5#5dm($sN-?;2Z=v5M=8h)ziU=7A=TN(KfZTa? zbR7a4nIoMSvs;u)U~R`)kRh%!O}9XQ+nrW(iBlBxe&k*4<&l3l2#|gv$xLis(s8Ho z#=XA|Yj+q*4U}%saKT|ubj8trRIWb^KUECc7`k;ksFR`o9|8d>wUNG=`^(vY+f*Mh zH=#;~)t7%_`SabWU2qP!-tk=Kfjtl>#pbdPj$%r~WQ97+yEW>UeE5d8 zIM9nED;&hMFCuJ{ikdw^I|~_~MwM|V3*21V>SXk#W2gup#Ddw`8E|Z}{QN@tBQ?W> z1neBZ>QR2VBu^%9PNt5^B?g>D$Vrt1s8(X{8cAW6?QLe~4~pbOESr$;ZMP3k$fDp# z6!qxiLHlL^2#o}RBbJGbCW;@JbgcImQuZpXoU-*YnUrW;LmheCc!8tGQ5w~ta` zwiJ{tu>xrvQCC^fB$bZaXckNj#3HvX1Z9#SMseYKx4wL!rlK|P$KWKdZ7D3?k4vqx ziZcyu;PA!8b8D*ONk#LN2r^{UV|#cciN0xGc{i*l!F309;8f|&3fCcuAlao~Z3o@l zbcPsXu~PqSD(sA3RnV!z7W9r|JUc1;k|9y^B3y@mlU8xM+0Le9r~*&ij(fR_mmU1E zBaV7S=fRqHvyzQE1k47JQMBhP89Lu{GZz+ki&>h4ElBISa)+(uI8a=1 zl@ek;C1Rx6ZKaC&p3{Wvb!xX1M*40Ht+$Mp2^|N}&?1UVpoyzs@W|y}4GGI)}K~)lr@h&usO! z=@&_c?b#Rh(`s8xg1U)^nqOJLuP7j;e`z-wE=1s0W+3beBaWL7O}&Hq>FGPAGtWOp ze>`INK>%A;%)WBOcIp6V9ckf4!wHME{fxQ^58i6RE^N(eqV^j(i4)H*r7xGCm7GMQ zX$uVM$MqlnTM7o~XGR{w=OmF+OwA$B1f zXpfK8zp5P|7+LiK_q&;YAgH=VIzP2R17-YD2ppPEC@zv>6sq1ZR5Y5-S^2x#tUxV0 zm7zU0M~aM|bN(d&`o*oSmNzM&(hHS=$3EXep}k89;%Yj~arQK>F@BmU#|!I&i(2vz z2scrQqcj-D9%MWiJj<;P(~VM_IZ8E3A*-dTNr4_Ea+r|G9CcASB&pBzns)6fg-w?> z@$>7Lxa>!oQU!dC?&{u3%ZZ|mcgi&KQV!3XJVmJ-XwI%42s9JtK_z$LI@Nhjpn( z%^6S3W|v>|izL#2D&%(K{cmsEhbEmeX-u~>QbcLgEVZgM#->fggxn8i_nO?trCb-$ znEzkLSiGTjPDBYN=C+$Pdvc>(=QE9 zJX9t!HMswO4!6)5+qb|*;Q=SF_SZ&35-|q#40TeHgC9%#4j{bx_kSh3>Gl@y%v+2s zA-5i9XR=QK>QxlY!AyD!3@EEg5viM})@ZmnR0^h5&IP-NL`s4-6i7KJVfy1%EF-!B zcl_72#A=6>BYHkh@}$m@shSStO`Fq7Lu60H?#*}=n~dIo2K&v|`15$M>YJy0Rj>^1 zdoby;pcvt!-Yi{Xk@$`Y@%4#RUsF8(cX z2o5uqazS)FjWiHq*(Z9D8HCh5@b*p(iX&P1a(8Ic8e$VTt-K5OQl1cQ+L#>f0aJO*G-IQg0Qpw z8dgX2N8?=6xA90YB%Pf%Xd>%1NPxFue<9B|L?zM^WNI+!ZNw{?+y2C}5a#3k<3+`x z%ewG{f%qii(>GPa961Q06Dz$}w^DxpUbZJ#rMGc22COEBuxrX!;y7`_s-NzK^yCsB z`+lHbylzn5$ouA#9drc9 zDF|x4w)KvSsYZXq2tQ~DNz?bdN+!Yxg9K`7*~#2)vnlJvwl zbW8RbtWPj>W7R&+rprLjcg{!vnHzGv_s~PCQTw-QD-K5eNibDPya^o0KUn2&O zu3+zxm#FpbZ5YOfNPU0QMYxW0Cw&;mE3@oAv0P`Zu9d#KGOT0GQSsq z-==M(tA;ibG*fj;IwnFb1GJfDC+nxJS<0rVRC%fv4P2oNYLN)O6D_p8$?1`_OJy-D zFVt=ASYvz8!QWo6X@0l>El|(+dYje&P#Vo(jh?xi)vGuS>q`iSo=>Ckc)m?>X|chs z$zDp37-yKQW>j zS2L#Rgr?ec;CL^HGUUPkmKDRF+UH_GG#~I9um!VQQMf894~m29X(Ye<%WX$%1t|Dd zwi1DgcOWQw046u6(;Q5PK?8V>p&GGEHXz03C`exDQS*AK<_MrQ{DYLL!Ik~s0uSXb z`jBo%Yx5h|sPmXp(E5ZR@D}CKPv!Atb!PJ?0~#=GnDdKYDc}RhgkP@;?JQLseqp_8 ztbh``d5EK4%M#~fZndB*f;^rSioy3phCM02n(+~#fZjQorM$9BgK>Z=f_;WtmL%x0 z?jp#^+_AwabVY%{sgG18Lv62TkbBxWk&kD)#!=`gvPYTEQ=G!Rlv;vk+!7kL@nTwN z=?zf$?+Q*HLtH|>wXz6&0t^3a1joDjWpgj4Ne3tuR|LS8Eh|Qc|mk0rKj;oS32B_y1>1hdR%+l^2Oh- z2B~^M2oa+SAE~2h9!B2}fbz{9YmF8cV(Md{OU0ms7!=6W|LY2d+}FA1-UTQg<*DJL zt2tD7{hROSKCb-;rLaw2(a`9fagd0v|zN1+)DNK|Jd@}%jFPSFTrPuP(OD-33Yw`zG+BEJlx$rP0;4Cc`GIGqTPG3jAsc9=JhsW?aju>Q+O74%vkqB zkpe*c!WW+`%bU-qFG-ky6G;nsFx=RjuVi2UHd)er+K8ve}_1#%wNPlbN z6zbJk@Y8)Q)E;470V*K{&kL)4cF|w%2kQEi^`kd=v^a{?eC)(N%k@Y6xZ#*BBVOa3 zl;pGsec~EVbCU`6?MXn)wGv4;3*C>sp~ZIFqYc&i9Em#q;9*%DG!1+Fvj2wqnviPK zh(p;1x|bhL;(>Pzh&9DU6ki6)wqNfS7G;ckv?g=;w6aIOXD=Trenvpe82v3}Cu&($ z%x4rw{ZA;z>io9|l@NN=PPqTjJjZjo9{i8-mxLw?GglS*%SJr1yYbSErWkt5YgQO7!spDBW5aTzbv)VwRH)Ds=miu~n@E5N(Fyb{X3ALp z0>QgTBBSwqzd2yVa>rt@k<$Ug>oob+nx-4tC#D1jjA%~@N8M?Okqsb)xc^Lq9<{ln z96FCMPv&SY@q*m?)Ou~BTtmEV_=C^Ma}f?R)%978`kb4LK)0~yxV$u{Zg5;j2f5>B z(B-6<@E0%fcFBih+_B6V@AJ{gSK!Q+0JGUFBt{7eJ8$hQ-&DQpys-PrE0_m;sRJ^~ znDy<<2V_8X=BgWO0Ecdp?n5J=+yck|00sMHm)rIwxvplaqwIuV*5hQa&s!UO9*n9I z8Yx`L)k_}4N+0kg`y%e;Letlk0(t}U32ruF9z5cf*=!v5Vg==y zU*_Kj`xK?>LjoadGF`fXdxBg}eEY@i+Qr_tX1B4dHBSKKJfMna=O4XwJ2_6`EHuh1 zzbRNURiii$B)f670)F_s8XrCc_X?6Jf4UVWOM$s$gw8hDygBkGh6&`omr9piQ}w(#LFrpZW;*>NWT zP?0@}&fo%Mt~In9>%(7&gby0`BCw>&@37h7thGVxCbCsB;JNSmQTeOC$_!|^B}@$A#V6TiUPD_lWrQ7McLL9l?RYaszW0KtJ@hNrsm{ij~3d6(2MmXKp?YYkbf~ za*-v9wsq1-iD%)1D-WKPAO3YzjNr2=uu=CF}KK(+_Fxl|8+gR2`5=R+DCFw9$2)?+|o*eK=L z*FaJzm@_IR4tXi^e>u8w33>1~PB|nFm}LsKwe~v(mp2;a&Y&X zfpu0@acBztMu5Xn+*ilbo}X+huNNj%3T=7y3Zq zBhO_(3T;f~L}eYRAg(|4KJ^9}(n}$X)YaW4JQmews--b$7Te*`o2Fcc zKN2KSfvkzlG>t)KUc5UOO>+0D-~#tcI7v!nx4Nnk4kzytT0CkXPJiT8FAe$9)DRmH?9aWht8~RYQXRGJ(=ntsM z+E~U4LAf2YT+Y=Gd8mtto?}XL2LD21{&oBs0Wa$~!Pha8Kr+3VpuCN+Cd=0%AQ$IZ zh$h*v;gv>?BdfH0WHE7p(URA32lV6H?Scx%Y}tGAciZuOCNVwq;$IGFT>>LnI)FjpgOCov37Icgb=x}+f5++>WV+#V3aCvTT0k-(?NHb1E1a@@7 zLAw^yOlh2Dx!#+Cle>-J8i<;t2UeHqc7Zvjw`El{n4q$CvM@ZhbA;IO{5~QzxLv}^ zj)|+Bfpr`QLIwiK2=X+hLVFyG+vYe=Z-{!5mH{?V@7|Z_a_-a3S3XFgIN}Z}a{pPr zX-jFP*>LHdYj@6A<%EhAqOrB4X&|1wol*__9zHFo;ts|MjW)9GfI7vP?#U?p9OqINKg4z+vseHC z1`1_w@bsKcIR6ey{S%)}`U6)3yl9RJN z%5s2xIAnx|g%l-Db)Ta&TXrL#lyWn;^LeJ@<;{c<1WAOpEH?%h3{!4C;)2_=eBo+ z+KZ~y(Jx{L(2^MSe4zLoFC6~>i4K^9QU*XTAxDZ{3Mz8!O`bR{zW*PedHBqPMy8%}O?4S{doR2D z(uY`;8(8L%y|py)G;yB9hn#DaLpf7#f~mz0_;qj_`cJ(Z;bpC!&mE@krX$1+{rmPu zQ+dFy4@nWM!mlFYN|_2#b-jGlJKYj)&MQf9ZgcKeYo zU5EJ8ne;37@r`VkKzd|oC3&ijT42=M9+I$EHn+$1Hhk@ERN)p{-%KhqVo4UhAy86a zJF#JHr&Pgn41a1VwsoHhzRh*u-^Z)dFd?*Y*~)jsV6ayBRDn4Y)hZq3g&t%1a(n4T znq(s`M)tkeo+404Q%hT!ScJRP=UJi~*O2K;Wzgl?P>uO%6s^n6CljVz^E}PlH$$e(aB_8g%@a`P-PS`u1pNByPT23)F z>E?4hiiEyGB|x{xe&!JfWnRd^HH_xY6z4dx*y=tV~0%yp>#aWtHIzY-zN=w#E z)kPlq5`)k>D&uX^FiDcz_^vOho&!H&(HOsmJwnv5#NPDtmM0nHS?MP5^uDo?3W#(D zPSw{;yEr|HYbdzuvreR7U3GU&7qo!`Y;KI5tv`IdK~5qr&=KB5M;=8zu>?0)z<3`! zV5CKfZ+svGuGZhb<}X=;DJby26hA1IDCz>c&sWBYMx6rQ6fwBykwL9S4oBUUd2kP) z!y&0dd@)~5=p9qpShPZX2I|A6K@7(6Hd~?LXS)j-e z*U$GaFRV1Ox0x_`6Lwx=rHWEHkw!VA+bRY^>v%EYTtzKABEDHB1Iah{Acz|R>Bc4K z>oGM*-`8~9w20`=bO+p(rTIsisvSL(u!=oO+D^7X@i;VuZ1s?MAGwXx-n^pkxGilC zx*?DcN2m}@&m=_qi-kK!3t;6lVVSWsbfX9+F$a!1%#3GP{BER;$h}WJLR=1HoaqMx zxJ`&Rhq|}{fP8~ZNXNcuunGC+w-N#3!)Bhjl!Nm{vAd#n*eE864jE==LkK;f=uYfOb z0CSG(@k>`cX|578ASN)Xh&5sRLQLf*Wz1yzB{=EBRz$bgy_V8tkjx~)zoI{GQ{NpK zjjF496p#0B2-o6UqxLIDA5>1)RM|wz)r%f?#Ok-)67adcv&#XK7PHu8yJpi>$`l&& z!6DoQ$*1QuFI5`LN`000I0Wg2~cDj39= z@X}K9O8kH$^v$Brf8_m9YaTw#*~t_;YL?cm7KI*<7}Q`KIB`p{pi4uXI1_LTGj`hI zEhWP1ya$qM5&VNa7^B!HdFPVh)FV34O^o7~gfA=l&yQlXtTQXqhFd-gj%pQJUn{xi z{)z9pe+Wb5u|l--rZ#t{p87~FI}E8G?8Km`JsO^ZW(NJ-Me)JRYJ;XO~|9 zw^rCaTU2wCl+|+Vi}V5WvZxHps|fCcNHY1}q<-)1+e?o7N*59=^;pW0GtJhHJ{ql(Lb6ea7J1GIvfo+xxi>NAhdozO81$?3>ZW zIMh~_y_VLc{mEP9Y#@!2Ef%9;8%CNio;b-1W1?6p0rgpe&-e&F4j()jV>j`RDJEeo z#(Djew(l0@Uc1EA-6VFDW15liBudM#YkR3M z`YINoeylRArE2cQWqk@p`JW-v0zP3nGD^%|t^&Lda{)L}`5KkUb)00TB)W2$EMnY( zv0`yP2B32&8`>K+R_kvl!+Xv8uMRuRf@)K3=asFJ83MYrE;4lKxkgkDVM9?VDip_( zEQwrCB!|f7O#Pdu6Y4q42vxBIFKIHdLIV9kE&O{`J!{3Diki?%inDE1@*$Zj?b8$k z1a~Xusl%Ao-&0q^NJsYPiFj6R6_gWhF2L~PCozpweBzZl{_}MR!%uY%m7WRpA`@&I z2`K`1mi%A!_}UbwOZ}3eai2>AP~etDx=b?OcUCf83yEQG{6Vg{pI_0BFYn2YQ;mV4 zkW`jc-kD_-Z|k;A)5p;&;h2q$27>>TDQ8Qxb6)|BE>ho zsnOjvY`LdEJebfn1AJ?nqT_LOCVFN^0zX!>cdBgg))L=4!XxshM-^TDK^y{E-jcF- z;zmkG7~v9o|1k;+_2bsfIKMv9JmT#-(>%=2nRRQm#$SLaiD2UC92lCvX>el7; z1Q&4N{J|0$A(FpY2j?9>`4FO#AmxOmz@nM@Sf1^@U+ltpS75y`0TGeB78y=xW}Lz3 zk|3B)0Y<5ht~EkNxKY{phiAT};0W)g#fV6ww{FL!;TVW+RK&gIs571fqP>-;gIorc zS2D67%YJ}F!Vn2H&fhO>^4?obSJbMs7K1bS=m-vs7D-Lu54y=qHp~<}mX%56Hs#DR zvdmtT^aLmIk`i$6Z}8qT>+j0{A{`SfQ#!HxPLFirBeX(rMt@wx2H5Ldgq4kFmN6v zP{X{1UZjYsjB(g_KFA@5>l&+m7vgh)>$=s^mG0$@#H%mmouGQHD2{GqRUK#wUB{Nf z#(w@eU77{OwM-Yv!X?GKY{~WUYU1=r2%>aW)HybRxqm~n>}sR_RP2$VfUC5&cp*i5 zkY3-bk4Poz0Ge-lWd5%s|DTt_nl+#CS`0}gIF8ma+U{FLiin<*`@f6y{j#6R#Oi?_ zabL+2;wj%ROBoC6#AmHOqGY-+ z)5RQjGkh;WEHF!XO0v`XND8dIvF7#YVgA}1#E>0{y)ixWJ`n6rEzWKVq=r|deh|0sHMb6V&?Au#!3_bUF zN@%Q&#B{3lNF$Hg`W^)A^cOOAnQG+R2xcLD;f!gSbD`0@NZ|o7cH6R*0~;HJem+!m zuNmpH$srrsJ3dDT)+l2)xp59um_ctnIW?f=tn-tdDdUtT#NrZ7XO81L933eJpynkc z+Gh6esjsIp3}o6w0p`Va0{AkRZok7K)=`fyqygfgS6eX-eB@54#z}0C zaKCP$8;y`siGL7%`^YU2WOU3X84G;J(be-sKg~i(@d`5H=c#uy-U}7=GeS;P`KJi& zt!a^&g(whfON69_m==NHy87kQll+Xgp+JZybuv(qLj@9f3gV1a*hlb1-R2x9C4|-u zP1bvDGQl@hIGZ|mbKZWDv!&_PM znAiSxUXX=d;ysh#7o@)GDiK5TA}`V1w<>{)`Q;i|Jg^Ll?A%g;+vfw)a6YE3O2_iyat5pe zDp`d*f1->O!8h#0qB*6*Y*rt%?)-3 zpy{Ya9q*|A{=0s&C5Jh@Ve`TlFhx}K8yl(LE$eH1X^C}MP+T82DPNgRv?_N}Qe+L? znQ&D9n*6h&8E47L{%O}iQ*D-d7G{3b{0?{RCoKe2C_#5#-#AHjP0=LIbANX>hGJ4W zQoUSYt;{l>D~(p2^#B)a?hf`|!SiOo(pu*+S&^em%OvJ179Av-|@^z2R=FKNre2nq$`GnQR@YA!+DE&=6oaA&?i1E`#sm z)T92eB+C)~6e;7qC!|>1UQaU?$<@B7!0lflUuZljwE(7sW4?)htk;|-U88bunsxw; zQ|24^uWYx%F6}SUP5Cjj_|QC^B)VpZ8~&ztMLp+5+g4J|1dbz&1im|xjqz|4t{UHP z*>zH)QfNo0%b9Gt49)kN;OHK4O=TAjeA;L0a_}^UC8EcFt*NrXW~YTz1&f$H?z;h1 zR|$$f zhQKd0#8=|<@|3kbci#0dfv8ONBfDa{a70Y>;na$!IJP-7uN0`b!TSg>R(qK9`WBe? zS@&9|(9=193eD%*t)}%F26a;NHDK1y5zW7rzlsc^;!ELOk;%kCZCJ=&0Of})?|GCq zK2xH9uK3-A!ps2Lz~AsTaUDyCu6KMw5QZS@1KApgt5E_gWWno4wTysLcO4oFUTr`? z10ep3G`5boq-{v?o~j0%Qf0x=t5AMf8y$kWpQ&4|tm_SF{Yk!9d>EFm*L+xay!{QN z-|4na5~FHmONCuLvl{+3T~*pgt�s>bai7HREE@!eCN2*=6Hw5x*u^)-+uVY#U_z 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

    iUfDYj0Dqq5ruVLWdHva;cD$Zn7lW|ltIzJK=A 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

    oXP=_VAZn`ANh_~J3DTt3JAakKvH-G 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 z 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¨ukVMa|>Ap{5bUvM_KX%~Pk+W#iSP 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 z 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

    ss9KjHzP)yD0~ctHE& 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 z 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�`eBx$*$j? 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 F)&{=B`b+=- literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-check-initdata-type.html b/tests/wpt/web-platform-tests/encrypted-media/drm-check-initdata-type.html new file mode 100644 index 00000000000..e168b789325 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-check-initdata-type.html @@ -0,0 +1,33 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 + + + + + + + + + + + + + + + + + + +

    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-events.html b/tests/wpt/web-platform-tests/encrypted-media/drm-events.html new file mode 100644 index 00000000000..dc71eecfeb5 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-events.html @@ -0,0 +1,72 @@ + + + + + + Encrypted Media Extensions: Events with DRM + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-generate-request-disallowed-input.html b/tests/wpt/web-platform-tests/encrypted-media/drm-generate-request-disallowed-input.html new file mode 100644 index 00000000000..39ae5aea265 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-generate-request-disallowed-input.html @@ -0,0 +1,33 @@ + + + + + + Encrypted Media Extensions: Test handling of invalid initData for generateRequest() + + + + + + + + + + + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html b/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html new file mode 100644 index 00000000000..3cd3c83d8d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses-multiple-sessions.html @@ -0,0 +1,56 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, multiple keys for audio/video + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses.html b/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses.html new file mode 100644 index 00000000000..c15a30a5132 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-keystatuses.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html new file mode 100644 index 00000000000..fc9f0d77aa1 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html @@ -0,0 +1,52 @@ + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, destroy the license + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html new file mode 100644 index 00000000000..31a13c15617 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license-events.html @@ -0,0 +1,53 @@ + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, event sequence + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html new file mode 100644 index 00000000000..ad00b536d30 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-license.html @@ -0,0 +1,52 @@ + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html new file mode 100644 index 00000000000..e8b9b709866 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, persistent-usage-record session with DRM, mp4, event sequence + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record.html new file mode 100644 index 00000000000..9d1cb6a118d --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-persistent-usage-record.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, persistent-usage-record session with DRM, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.html new file mode 100644 index 00000000000..5c8c14aa96a --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, retrieve license, playback and destroy the license + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-license.html new file mode 100644 index 00000000000..7403eef3a7c --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-license.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, retrieve the license, playback + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html new file mode 100644 index 00000000000..b9f7cd20be4 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html @@ -0,0 +1,55 @@ + + + + + + Encrypted Media Extensions: persistent-usage-record, playback and retrieve record in new window, DRM, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-events.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-events.html new file mode 100644 index 00000000000..243b1ceccf4 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-events.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Successful playback, temporary session with DRM, mp4, validating events + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html new file mode 100644 index 00000000000..1e68161ae81 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html @@ -0,0 +1,55 @@ + + + + + + Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html new file mode 100644 index 00000000000..2fd6b45457c --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-multikey.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, multiple keys + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html new file mode 100644 index 00000000000..5df1cc7cf2b --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html new file mode 100644 index 00000000000..dc94fb96e36 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html new file mode 100644 index 00000000000..bc371321f23 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html new file mode 100644 index 00000000000..c17442a7883 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html @@ -0,0 +1,54 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html new file mode 100644 index 00000000000..2e914bfdde0 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html @@ -0,0 +1,55 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, two videos + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html new file mode 100644 index 00000000000..2f21eb2c614 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html @@ -0,0 +1,52 @@ + + + + + + Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html new file mode 100644 index 00000000000..60fd50b1807 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-mp4-playback-temporary.html @@ -0,0 +1,53 @@ + + + + + + Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4 + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html b/tests/wpt/web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html new file mode 100644 index 00000000000..a40519225f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/drm-not-callable-after-createsession.html @@ -0,0 +1,36 @@ + + + + + + Encrypted Media Extensions: Test MediaKeySession not callable immediately after CreateSession(). + + + + + + + + + + + + + + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/idlharness.html b/tests/wpt/web-platform-tests/encrypted-media/idlharness.html new file mode 100644 index 00000000000..e65ad5e30ba --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/idlharness.html @@ -0,0 +1,51 @@ + + + + + Encrypted Media Extentions IDL test + + + + + + + + + +

    Description

    +

    + This test verifies that implementations of the Encrypted Media Extensions API match its WebIDL definition. +

    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/polyfill/cast-polyfill.js b/tests/wpt/web-platform-tests/encrypted-media/polyfill/cast-polyfill.js new file mode 100644 index 00000000000..576e0ad0406 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/polyfill/cast-polyfill.js @@ -0,0 +1,80 @@ +(function() { + + if ( /CrKey\/[0-9]+\.[0-9a-z]+\.[0-9a-z]+/i.exec( navigator.userAgent ) ) { + + var castscript = document.createElement('script'); + castscript.type = 'text/javascript'; + castscript.src = 'https://www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js' + document.head.appendChild( castscript ); + + var _requestMediaKeySystemAccess = navigator.requestMediaKeySystemAccess.bind( navigator ), + _setMediaKeys = HTMLMediaElement.prototype.setMediaKeys, + _load = MediaKeySession.prototype.load; + + MediaKeySession.prototype.load = function load() + { + return _load.call( this ).then( function( success ) + { + return success ? this.remove() : false; + }.bind( this ) ); + }; + + function MediaKeys( mediaKeys ) + { + this._mediaKeys = mediaKeys; + } + + MediaKeys.prototype.setServerCertificate = function setServerCertificate( certificate ) + { + return this._mediaKeys.setServerCertificate( certificate ); + }; + + MediaKeys.prototype.createSession = function createSession( sessionType ) { + + if ( sessionType === 'persistent-usage-record' ) + { + return cast.receiver.eme.KeySession.createSession( this._mediaKeys, 'persistent-release-message' ); + } + + return this._mediaKeys.createSession( sessionType ); + }; + + function MediaKeySystemAccess( access ) + { + this._access = mediaKeySystemAccess; + } + + Object.defineProperty( MediaKeySystemAccess.prototype, 'keySystem', { get: function() { return this._access.keySystem; } } ); + + MediaKeySystemAccess.prototype.getConfiguration = function getConfiguration() { return this._access.getConfiguration(); }; + + MediaKeySystemAccess.prototype.createMediaKeys = function createMediaKeys() { + + return this._access.createMediaKey().then( function( mediaKeys ) { return new MediaKeys( mediaKeys ); } ); + + }; + + HTMLMediaElement.prototype.setMediaKeys = function setMediaKeys( mediaKeys ) + { + if ( mediaKeys instanceof MediaKeys ) + { + return _setMediaKeys.call( this, mediaKeys._mediaKeys ); + } + else + { + return _setMediaKeys.call( this, mediaKeys ); + } + }; + + navigator.requestMediaKeySystemAccess = function requestMediaKeySystemAccess( keysystem, supportedConfigurations ) { + + if ( keysystem !== 'com.chromecast.playready' ) + { + return _requestMediaKeySystemAccess( keysystem, supportedConfigurations ); + } + + return _requestMediaKeySystemAccess( keysystem, supportedConfigurations ) + .then( function( access ) { return new MediaKeySystemAccess( access ); } ); + }; + } +})(); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/polyfill/chrome-polyfill.js b/tests/wpt/web-platform-tests/encrypted-media/polyfill/chrome-polyfill.js new file mode 100644 index 00000000000..346da6c67cc --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/polyfill/chrome-polyfill.js @@ -0,0 +1,36 @@ +(function(){ + if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1){ + + if ( ( /chrome\/([0-9]*)\./.exec( navigator.userAgent.toLowerCase() )[1] | 0 ) < 54 ) { + + // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=622956 + // Chrome does not fire the empty keystatuschange event when a session is closed + var _mediaKeySessionClose = MediaKeySession.prototype.close; + var _mediaKeySessionKeyStatusesGetter = Object.getOwnPropertyDescriptor( MediaKeySession.prototype, 'keyStatuses' ).get; + var _emptyMediaKeyStatusMap = { size: 0, + has: function() { return false; }, + get: function() { return undefined; }, + entries:function() { return []; }, // this may not be correct, I think it should be some iterator thing + keys: function() { return []; }, + values: function() { return []; }, + forEach:function() { return; } }; + + MediaKeySession.prototype.close = function close() + { + this.__closed = true; + + setTimeout( function() { + this.dispatchEvent( new Event( 'keystatuseschange' ) ); + }.bind( this ), 0 ); + + return _mediaKeySessionClose.call( this ); + }; + + Object.defineProperty( MediaKeySession.prototype, 'keyStatuses', { get: function() { + + return this.__closed ? _emptyMediaKeyStatusMap : _mediaKeySessionKeyStatusesGetter.call( this ); + + } } ); + } + } +}()); diff --git a/tests/wpt/web-platform-tests/encrypted-media/polyfill/clearkey-polyfill.js b/tests/wpt/web-platform-tests/encrypted-media/polyfill/clearkey-polyfill.js new file mode 100644 index 00000000000..057ea3e0301 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/polyfill/clearkey-polyfill.js @@ -0,0 +1,510 @@ +(function(){ + + // Save platform functions that will be modified + var _requestMediaKeySystemAccess = navigator.requestMediaKeySystemAccess.bind( navigator ), + _setMediaKeys = HTMLMediaElement.prototype.setMediaKeys; + + // Allow us to modify the target of Events + Object.defineProperties( Event.prototype, { + target: { get: function() { return this._target || this.currentTarget; }, + set: function( newtarget ) { this._target = newtarget; } } + } ); + + var EventTarget = function(){ + this.listeners = {}; + }; + + EventTarget.prototype.listeners = null; + + EventTarget.prototype.addEventListener = function(type, callback){ + if(!(type in this.listeners)) { + this.listeners[type] = []; + } + this.listeners[type].push(callback); + }; + + EventTarget.prototype.removeEventListener = function(type, callback){ + if(!(type in this.listeners)) { + return; + } + var stack = this.listeners[type]; + for(var i = 0, l = stack.length; i < l; i++){ + if(stack[i] === callback){ + stack.splice(i, 1); + return this.removeEventListener(type, callback); + } + } + }; + + EventTarget.prototype.dispatchEvent = function(event){ + if(!(event.type in this.listeners)) { + return; + } + var stack = this.listeners[event.type]; + event.target = this; + for(var i = 0, l = stack.length; i < l; i++) { + stack[i].call(this, event); + } + }; + + function MediaKeySystemAccessProxy( keysystem, access, configuration ) + { + this._keysystem = keysystem; + this._access = access; + this._configuration = configuration; + } + + Object.defineProperties( MediaKeySystemAccessProxy.prototype, { + keysystem: { get: function() { return this._keysystem; } } + }); + + MediaKeySystemAccessProxy.prototype.getConfiguration = function getConfiguration() + { + return this._configuration; + }; + + MediaKeySystemAccessProxy.prototype.createMediaKeys = function createMediaKeys() + { + return new Promise( function( resolve, reject ) { + + this._access.createMediaKeys() + .then( function( mediaKeys ) { resolve( new MediaKeysProxy( mediaKeys ) ); }) + .catch( function( error ) { reject( error ); } ); + + }.bind( this ) ); + }; + + function MediaKeysProxy( mediaKeys ) + { + this._mediaKeys = mediaKeys; + this._sessions = [ ]; + this._videoelement = undefined; + this._onTimeUpdateListener = MediaKeysProxy.prototype._onTimeUpdate.bind( this ); + } + + MediaKeysProxy.prototype._setVideoElement = function _setVideoElement( videoElement ) + { + if ( videoElement !== this._videoelement ) + { + if ( this._videoelement ) + { + this._videoelement.removeEventListener( 'timeupdate', this._onTimeUpdateListener ); + } + + this._videoelement = videoElement; + + if ( this._videoelement ) + { + this._videoelement.addEventListener( 'timeupdate', this._onTimeUpdateListener ); + } + } + }; + + MediaKeysProxy.prototype._onTimeUpdate = function( event ) + { + this._sessions.forEach( function( session ) { + + if ( session._sessionType === 'persistent-usage-record' ) + { + session._onTimeUpdate( event ); + } + + } ); + }; + + MediaKeysProxy.prototype._removeSession = function _removeSession( session ) + { + var index = this._sessions.indexOf( session ); + if ( index !== -1 ) this._sessions.splice( index, 1 ); + }; + + MediaKeysProxy.prototype.createSession = function createSession( sessionType ) + { + if ( !sessionType || sessionType === 'temporary' ) return this._mediaKeys.createSession(); + + var session = new MediaKeySessionProxy( this, sessionType ); + this._sessions.push( session ); + + return session; + }; + + MediaKeysProxy.prototype.setServerCertificate = function setServerCertificate( certificate ) + { + return this._mediaKeys.setServerCertificate( certificate ); + }; + + function MediaKeySessionProxy( mediaKeysProxy, sessionType ) + { + EventTarget.call( this ); + + this._mediaKeysProxy = mediaKeysProxy + this._sessionType = sessionType; + this._sessionId = ""; + + // MediaKeySessionProxy states + // 'created' - After initial creation + // 'loading' - Persistent license session waiting for key message to load stored keys + // 'active' - Normal active state - proxy all key messages + // 'removing' - Release message generated, waiting for ack + // 'closed' - Session closed + this._state = 'created'; + + this._closed = new Promise( function( resolve ) { this._resolveClosed = resolve; }.bind( this ) ); + } + + MediaKeySessionProxy.prototype = Object.create( EventTarget.prototype ); + + Object.defineProperties( MediaKeySessionProxy.prototype, { + + sessionId: { get: function() { return this._sessionId; } }, + expiration: { get: function() { return NaN; } }, + closed: { get: function() { return this._closed; } }, + keyStatuses:{ get: function() { return this._session.keyStatuses; } }, // TODO this will fail if examined too early + _kids: { get: function() { return this._keys.map( function( key ) { return key.kid; } ); } }, + }); + + MediaKeySessionProxy.prototype._createSession = function _createSession() + { + this._session = this._mediaKeysProxy._mediaKeys.createSession(); + + this._session.addEventListener( 'message', MediaKeySessionProxy.prototype._onMessage.bind( this ) ); + this._session.addEventListener( 'keystatuseschange', MediaKeySessionProxy.prototype._onKeyStatusesChange.bind( this ) ); + }; + + MediaKeySessionProxy.prototype._onMessage = function _onMessage( event ) + { + switch( this._state ) + { + case 'loading': + this._session.update( toUtf8( { keys: this._keys } ) ) + .then( function() { + this._state = 'active'; + this._loaded( true ); + }.bind(this)).catch( this._loadfailed ); + + break; + + case 'active': + this.dispatchEvent( event ); + break; + + default: + // Swallow the event + break; + } + }; + + MediaKeySessionProxy.prototype._onKeyStatusesChange = function _onKeyStatusesChange( event ) + { + switch( this._state ) + { + case 'active' : + case 'removing' : + this.dispatchEvent( event ); + break; + + default: + // Swallow the event + break; + } + }; + + MediaKeySessionProxy.prototype._onTimeUpdate = function _onTimeUpdate( event ) + { + if ( !this._firstTime ) this._firstTime = Date.now(); + this._latestTime = Date.now(); + this._store(); + }; + + MediaKeySessionProxy.prototype._queueMessage = function _queueMessage( messageType, message ) + { + setTimeout( function() { + + var messageAsArray = toUtf8( message ).buffer; + + this.dispatchEvent( new MediaKeyMessageEvent( 'message', { messageType: messageType, message: messageAsArray } ) ); + + }.bind( this ) ); + }; + + function _storageKey( sessionId ) + { + return sessionId; + } + + MediaKeySessionProxy.prototype._store = function _store() + { + var data; + + if ( this._sessionType === 'persistent-usage-record' ) + { + data = { kids: this._kids }; + if ( this._firstTime ) data.firstTime = this._firstTime; + if ( this._latestTime ) data.latestTime = this._latestTime; + } + else + { + data = { keys: this._keys }; + } + + window.localStorage.setItem( _storageKey( this._sessionId ), JSON.stringify( data ) ); + }; + + MediaKeySessionProxy.prototype._load = function _load( sessionId ) + { + var store = window.localStorage.getItem( _storageKey( sessionId ) ); + if ( store === null ) return false; + + var data; + try { data = JSON.parse( store ) } catch( error ) { + return false; + } + + if ( data.kids ) + { + this._sessionType = 'persistent-usage-record'; + this._keys = data.kids.map( function( kid ) { return { kid: kid }; } ); + if ( data.firstTime ) this._firstTime = data.firstTime; + if ( data.latestTime ) this._latestTime = data.latestTime; + } + else + { + this._sessionType = 'persistent-license'; + this._keys = data.keys; + } + + return true; + }; + + MediaKeySessionProxy.prototype._clear = function _clear() + { + window.localStorage.removeItem( _storageKey( this._sessionId ) ); + }; + + MediaKeySessionProxy.prototype.generateRequest = function generateRequest( initDataType, initData ) + { + if ( this._state !== 'created' ) return Promise.reject( new InvalidStateError() ); + + this._createSession(); + + this._state = 'active'; + + return this._session.generateRequest( initDataType, initData ) + .then( function() { + this._sessionId = Math.random().toString(36).slice(2); + }.bind( this ) ); + }; + + MediaKeySessionProxy.prototype.load = function load( sessionId ) + { + if ( this._state !== 'created' ) return Promise.reject( new InvalidStateError() ); + + return new Promise( function( resolve, reject ) { + + try + { + if ( !this._load( sessionId ) ) + { + resolve( false ); + + return; + } + + this._sessionId = sessionId; + + if ( this._sessionType === 'persistent-usage-record' ) + { + var msg = { kids: this._kids }; + if ( this._firstTime ) msg.firstTime = this._firstTime; + if ( this._latestTime ) msg.latestTime = this._latestTime; + + this._queueMessage( 'license-release', msg ); + + this._state = 'removing'; + + resolve( true ); + } + else + { + this._createSession(); + + this._state = 'loading'; + this._loaded = resolve; + this._loadfailed = reject; + + var initData = { kids: this._kids }; + + this._session.generateRequest( 'keyids', toUtf8( initData ) ); + } + } + catch( error ) + { + reject( error ); + } + }.bind( this ) ); + }; + + MediaKeySessionProxy.prototype.update = function update( response ) + { + return new Promise( function( resolve, reject ) { + + switch( this._state ) { + + case 'active' : + + var message = fromUtf8( response ); + + // JSON Web Key Set + this._keys = message.keys; + + this._store(); + + resolve( this._session.update( response ) ); + + break; + + case 'removing' : + + this._state = 'closed'; + + this._clear(); + + this._mediaKeysProxy._removeSession( this ); + + this._resolveClosed(); + + delete this._session; + + resolve(); + + break; + + default: + reject( new InvalidStateError() ); + } + + }.bind( this ) ); + }; + + MediaKeySessionProxy.prototype.close = function close() + { + if ( this._state === 'closed' ) return Promise.resolve(); + + this._state = 'closed'; + + this._mediaKeysProxy._removeSession( this ); + + this._resolveClosed(); + + var session = this._session; + if ( !session ) return Promise.resolve(); + + this._session = undefined; + + return session.close(); + }; + + MediaKeySessionProxy.prototype.remove = function remove() + { + if ( this._state !== 'active' || !this._session ) return Promise.reject( new DOMException('InvalidStateError('+this._state+')') ); + + this._state = 'removing'; + + this._mediaKeysProxy._removeSession( this ); + + return this._session.close() + .then( function() { + + var msg = { kids: this._kids }; + + if ( this._sessionType === 'persistent-usage-record' ) + { + if ( this._firstTime ) msg.firstTime = this._firstTime; + if ( this._latestTime ) msg.latestTime = this._latestTime; + } + + this._queueMessage( 'license-release', msg ); + + }.bind( this ) ) + }; + + HTMLMediaElement.prototype.setMediaKeys = function setMediaKeys( mediaKeys ) + { + if ( mediaKeys instanceof MediaKeysProxy ) + { + mediaKeys._setVideoElement( this ); + return _setMediaKeys.call( this, mediaKeys._mediaKeys ); + } + else + { + return _setMediaKeys.call( this, mediaKeys ); + } + }; + + navigator.requestMediaKeySystemAccess = function( keysystem, configurations ) + { + // First, see if this is supported by the platform + return new Promise( function( resolve, reject ) { + + _requestMediaKeySystemAccess( keysystem, configurations ) + .then( function( access ) { resolve( access ); } ) + .catch( function( error ) { + + if ( error instanceof TypeError ) reject( error ); + + if ( keysystem !== 'org.w3.clearkey' ) reject( error ); + + if ( !configurations.some( is_persistent_configuration ) ) reject( error ); + + // Shallow copy the configurations, swapping out the labels and omitting the sessiontypes + var configurations_copy = configurations.map( function( config, index ) { + + var config_copy = copy_configuration( config ); + config_copy.label = index.toString(); + return config_copy; + + } ); + + // And try again with these configurations + _requestMediaKeySystemAccess( keysystem, configurations_copy ) + .then( function( access ) { + + // Create the supported configuration based on the original request + var configuration = access.getConfiguration(), + original_configuration = configurations[ configuration.label ]; + + // If the original configuration did not need persistent session types, then we're done + if ( !is_persistent_configuration( original_configuration ) ) resolve( access ); + + // Create the configuration that we will return + var returned_configuration = copy_configuration( configuration ); + + if ( original_configuration.label ) + returned_configuration.label = original_configuration; + else + delete returned_configuration.label; + + returned_configuration.sessionTypes = original_configuration.sessionTypes; + + resolve( new MediaKeySystemAccessProxy( keysystem, access, returned_configuration ) ); + } ) + .catch( function( error ) { reject( error ); } ); + } ); + } ); + }; + + function is_persistent_configuration( configuration ) + { + return configuration.sessionTypes && + ( configuration.sessionTypes.indexOf( 'persistent-usage-record' ) !== -1 + || configuration.sessionTypes.indexOf( 'persistent-license' ) !== -1 ); + } + + function copy_configuration( src ) + { + var dst = {}; + [ 'label', 'initDataTypes', 'audioCapabilities', 'videoCapabilities', 'distinctiveIdenfifier', 'persistentState' ] + .forEach( function( item ) { if ( src[item] ) dst[item] = src[item]; } ); + return dst; + } +}()); diff --git a/tests/wpt/web-platform-tests/encrypted-media/polyfill/edge-polyfill.js b/tests/wpt/web-platform-tests/encrypted-media/polyfill/edge-polyfill.js new file mode 100644 index 00000000000..7f86f0c0589 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/polyfill/edge-polyfill.js @@ -0,0 +1,193 @@ +(function() { + + // This polyfill fixes the following problems with Edge browser + // (1) To retrieve a persisted usage record, you must use session type 'persistent-release-message' instead of 'persistent-usage-record' + // (2) To retrieve a persisted usage record, you must call remove() after calling load() + // (3) On providing a license release acknowledgement, the session does not automatically close as is should + // (4) Retrieval of the usage record at the end of an active session is not supported + + if ( navigator.userAgent.toLowerCase().indexOf('edge') > -1 ) { + + var _mediaKeySystemAccessCreateMediaKeys = MediaKeySystemAccess.prototype.createMediaKeys; + _mediaKeysCreateSession = MediaKeys.prototype.createSession; + + // MediaKeySession proxy + function MediaKeySession( mediaKeys, session ) + { + EventTarget.call( this ); + + this._mediaKeys = mediaKeys; + this._session = session; + this._sessionId = undefined; + this._removing = false; + + session.addEventListener( 'message', this.dispatchEvent.bind( this ) ); + session.addEventListener( 'keystatuseschange', this.dispatchEvent.bind( this ) ); + session.closed.then( function() { if ( !this._removing ) this._resolveClosed(); }.bind ( this ) ); + + this._closed = new Promise( function( resolve ) { this._resolveClosed = resolve; }.bind( this ) ); + } + + MediaKeySession.prototype = Object.create( EventTarget.prototype ); + + Object.defineProperties( MediaKeySession.prototype, { + sessionId: { get: function() { return this._sessionId ? this._sessionId : this._session.sessionId; } }, + expiration: { get: function() { return this._session.expiration; } }, + closed: { get: function() { return this._closed; } }, + keyStatuses:{ get: function() { return this._session.keyStatuses; } } + }); + + // load() + // + // Use a surrogate 'persistent-release-message' session to obtain the release message + // + MediaKeySession.prototype.load = function load( sessionId ) + { + if ( this.sessionId ) return Promise.reject( new DOMException('InvalidAccessError') ); + + this._surrogate = this._mediaKeys.createSession( 'persistent-release-message' ); + this._surrogate.addEventListener( 'message', this.dispatchEvent.bind( this ) ); + + return this._surrogate.load( sessionId ).then( function( success ) { + if (!success) return false; + + this._sessionId = sessionId; + this._removing = true; + this._session.close(); + + return this._surrogate.remove().then( function() { return true; } ); + }.bind( this ) ); + }; + + // remove() + // + // On an existing session, use a surrogate 'persistent-release-message' session to obtain the release message + // + MediaKeySession.prototype.remove = function remove() + { + if ( this._sessionId !== undefined ) return Promise.reject( new DOMException('InvalidAccessError') ); + if ( this.sessionId === undefined ) return Promise.reject( new DOMException('InvalidAccessError') ); + + this._surrogate = this._mediaKeys.createSession( 'persistent-release-message' ); + this._surrogate.addEventListener( 'message', this.dispatchEvent.bind( this ) ); + this._removing = true; + this._sessionId = this._session.sessionId; + + var self = this; + + return Promise.all( [ self._session.close(), self._session.closed ] ).then( function() { + return self._surrogate.load( self._sessionId ); + }).then( function( success ) { + if ( !success ) { + throw new DOMException('InvalidAccessError'); + } + + return self._surrogate.remove(); + }).then( function() { return true; } ); + } + + // update() + // + // For a normal session, pass through, otherwise update the surrogate and close the proxy + MediaKeySession.prototype.update = function update( message ) + { + if ( !this._removing ) return this._session.update( message ); + + return this._surrogate.update( message ).then( function() { + this._sessionId = undefined; + this._resolveClosed(); + }.bind( this ) ); + }; + + // close() - pass through + // + MediaKeySession.prototype.close = function close() + { + if ( !this._removing ) return this._session.close(); + this._resolveClosed(); + return Promise.resolve(); + }; + + // generateRequest() - pass through + // + MediaKeySession.prototype.generateRequest = function generateRequest( initDataType, initData ) + { + if ( this.sessionId ) Promise.reject( new DOMException('InvalidAccessError') ); + return this._session.generateRequest( initDataType, initData ); + }; + + // Wrap PlayReady persistent-usage-record sessions in our Proxy + MediaKeys.prototype.createSession = function createSession( sessionType ) { + + var session = _mediaKeysCreateSession.call( this, sessionType ); + if ( this._keySystem !== 'com.microsoft.playready' || sessionType !== 'persistent-usage-record' ) + { + return session; + } + + return new MediaKeySession( this, session ); + + }; + + // + // Annotation polyfills - annotate not otherwise available data + // + + // Annotate MediaKeys with the keysystem + MediaKeySystemAccess.prototype.createMediaKeys = function createMediaKeys() + { + return _mediaKeySystemAccessCreateMediaKeys.call( this ).then( function( mediaKeys ) { + mediaKeys._keySystem = this.keySystem; + return mediaKeys; + }.bind( this ) ); + }; + + // + // Utilities + // + + // Allow us to modify the target of Events + Object.defineProperties( Event.prototype, { + target: { get: function() { return this._target || this.currentTarget; }, + set: function( newtarget ) { this._target = newtarget; } } + } ); + + // Make an EventTarget base class + function EventTarget(){ + this.listeners = {}; + }; + + EventTarget.prototype.listeners = null; + + EventTarget.prototype.addEventListener = function(type, callback){ + if(!(type in this.listeners)) { + this.listeners[type] = []; + } + this.listeners[type].push(callback); + }; + + EventTarget.prototype.removeEventListener = function(type, callback){ + if(!(type in this.listeners)) { + return; + } + var stack = this.listeners[type]; + for(var i = 0, l = stack.length; i < l; i++){ + if(stack[i] === callback){ + stack.splice(i, 1); + return this.removeEventListener(type, callback); + } + } + }; + + EventTarget.prototype.dispatchEvent = function(event){ + if(!(event.type in this.listeners)) { + return; + } + var stack = this.listeners[event.type]; + event.target = this; + for(var i = 0, l = stack.length; i < l; i++) { + stack[i].call(this, event); + } + }; + } +})(); diff --git a/tests/wpt/web-platform-tests/encrypted-media/polyfill/firefox-polyfill.js b/tests/wpt/web-platform-tests/encrypted-media/polyfill/firefox-polyfill.js new file mode 100644 index 00000000000..0e42187971f --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/polyfill/firefox-polyfill.js @@ -0,0 +1,23 @@ +(function(){ + if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){ + + // Work around https://bugzilla.mozilla.org/show_bug.cgi?id=1282142 + // Firefox does not correctly reject the Clear Key session types it does not support + var _requestMediaKeySystemAccess = navigator.requestMediaKeySystemAccess.bind( navigator ); + + navigator.requestMediaKeySystemAccess = function( keysystem, configurations ) + { + if ( keysystem !== 'org.w3.clearkey' ) return _requestMediaKeySystemAccess( keysystem, configurations ); + + var supported_configurations = configurations.filter( function( c ) { + + return !c.sessionTypes || ( c.sessionTypes.length === 1 && c.sessionTypes[ 0 ] === 'temporary' ); + + } ); + + if ( supported_configurations.length === 0 ) return Promise.reject( new DOMException( 'None of the requested configurations were supported.' ) ); + + return _requestMediaKeySystemAccess( keysystem, supported_configurations ); + } + } +}()) \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/polyfill/make-polyfill-tests.py b/tests/wpt/web-platform-tests/encrypted-media/polyfill/make-polyfill-tests.py new file mode 100644 index 00000000000..7e7dc496e80 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/polyfill/make-polyfill-tests.py @@ -0,0 +1,28 @@ +#!/usr/bin/python +import os, re, os.path, glob + +head = re.compile( r"^(\s*)", re.MULTILINE ) +runtest = re.compile( r"runTest\(\s*(\S.*?)\s*\)", re.DOTALL ) + +scripts = ''' + + + + + ''' + +def process_file( infile, outfile ) : + with open( outfile, "w" ) as output : + with open( infile, "r" ) as input : + output.write( runtest.sub( r"runTest( \1, 'polyfill: ' )", head.sub( scripts + r"\1", input.read() ) ) ) + +if __name__ == '__main__' : + if (not os.getcwd().endswith('polyfill')) : + print "Please run from polyfill directory" + exit( 1 ) + + for infile in glob.glob( "../*.html" ) : + process_file( infile, os.path.basename( infile ) ) + + for infile in glob.glob( "../resources/*.html" ) : + process_file( infile, os.path.join( "resources", os.path.basename( infile ) ) ) \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/resources/clearkey-retrieve-destroy-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/resources/clearkey-retrieve-destroy-persistent-license.html new file mode 100644 index 00000000000..8ea67c661b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/resources/clearkey-retrieve-destroy-persistent-license.html @@ -0,0 +1,107 @@ + + + + + + Encrypted Media Extensions: persistent-license, retrieve and destroy, ClearKey + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html new file mode 100644 index 00000000000..f74e6a2bedf --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html @@ -0,0 +1,75 @@ + + + + + + Encrypted Media Extensions: persistent-license, retrieve and playback, ClearKey + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-destroy-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-destroy-persistent-license.html new file mode 100644 index 00000000000..68f87616bc1 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-destroy-persistent-license.html @@ -0,0 +1,108 @@ + + + + + + Encrypted Media Extensions: persistent-license, retrieve and destroy, drm + + + + + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-persistent-license.html b/tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-persistent-license.html new file mode 100644 index 00000000000..bf162dc7f85 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-persistent-license.html @@ -0,0 +1,73 @@ + + + + + + Encrypted Media Extensions: persistent-license, retrieve and playback, DRM + + + + + + + + + +
    + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-persistent-usage-record.html b/tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-persistent-usage-record.html new file mode 100644 index 00000000000..8831e6999cf --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/resources/drm-retrieve-persistent-usage-record.html @@ -0,0 +1,72 @@ + + + + + + Encrypted Media Extensions: Retrieve stored persistent-usage-record + + + + + + + + + + + + +
    + + + + diff --git a/tests/wpt/web-platform-tests/encrypted-media/resources/retrieve-persistent-usage-record.html b/tests/wpt/web-platform-tests/encrypted-media/resources/retrieve-persistent-usage-record.html new file mode 100644 index 00000000000..3bfbb52e540 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/resources/retrieve-persistent-usage-record.html @@ -0,0 +1,94 @@ + + + + + + Encrypted Media Extensions: Retrieve stored persistent-usage-record + + + + + + + + + + + + +
    + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/check-initdata-type.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-initdata-type.js new file mode 100644 index 00000000000..5c7cb6e4b9a --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/check-initdata-type.js @@ -0,0 +1,35 @@ + function runTest( config, qualifier ) + { + function checkInitDataType(initDataType) + { + return isInitDataTypeSupported(initDataType).then(function(result) { + // If |initDataType| is not supported, simply succeed. + if (!result) + return Promise.resolve('Not supported'); + + return navigator.requestMediaKeySystemAccess( config.keysystem, getSimpleConfigurationForInitDataType(initDataType)) + .then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + var mediaKeySession = mediaKeys.createSession(); + var initData = getInitData(initDataType); + return mediaKeySession.generateRequest(initDataType, initData); + }); + }); + } + + promise_test(function() + { + return checkInitDataType('webm'); + }, testnamePrefix( qualifier, config.keysystem ) + ' support for "webm".'); + + promise_test(function() + { + return checkInitDataType('cenc'); + }, testnamePrefix( qualifier, config.keysystem ) + ' support for "cenc".'); + + promise_test(function() + { + return checkInitDataType('keyids'); + }, testnamePrefix( qualifier, config.keysystem ) + ' support for "keyids".'); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/events.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/events.js new file mode 100644 index 00000000000..5286ac0c75c --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/events.js @@ -0,0 +1,59 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + ', basic events'; + + var configuration = getSimpleConfigurationForContent( config.content ); + + if ( config.initDataType && config.initData ) configuration.initDataTypes = [ config.initDataType ] + + async_test(function(test) + { + var initDataType; + var initData; + var mediaKeySession; + + function processMessage(event) + { + assert_true(event instanceof window.MediaKeyMessageEvent); + assert_equals(event.target, mediaKeySession); + assert_equals(event.type, 'message'); + assert_any( assert_equals, + event.messageType, + [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + waitForEventAndRunStep('keystatuseschange', mediaKeySession, test.step_func(processKeyStatusesChange), test); + mediaKeySession.update( response ).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + } + + function processKeyStatusesChange(event) + { + assert_true(event instanceof Event); + assert_equals(event.target, mediaKeySession); + assert_equals(event.type, 'keystatuseschange'); + test.done(); + } + + navigator.requestMediaKeySystemAccess( config.keysystem, [ configuration ] ).then(function(access) { + initDataType = access.getConfiguration().initDataTypes[0]; + + if ( config.initDataType && config.initData ) { + initData = config.initData; + } else { + initData = getInitData(config.content, initDataType); + } + + return access.createMediaKeys(); + }).then(test.step_func(function(mediaKeys) { + mediaKeySession = mediaKeys.createSession(); + waitForEventAndRunStep('message', mediaKeySession, test.step_func(processMessage), test); + return mediaKeySession.generateRequest(initDataType, initData); + })).catch(test.step_func(function(error) { + forceTestFailureFromPromise(test, error); + })); + }, testname ); + +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js new file mode 100644 index 00000000000..66108a8a780 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/generate-request-disallowed-input.js @@ -0,0 +1,92 @@ +function runTest(config,qualifier) { + + // Create a session and call generateRequest() temporary, |initDataType| + // and |initData|. generateRequest() should fail temporary, an + // InvalidAccessError. Returns a promise that resolves successfully + // if the error happened, rejects otherwise. + function test_session(keysystem,initDataType, initData) + { + return isInitDataTypeSupported(initDataType).then(function(result) { + // If |initDataType| is not supported, simply succeed. + if (!result) + return Promise.resolve('Not supported'); + + return navigator.requestMediaKeySystemAccess( keysystem, getSimpleConfigurationForInitDataType(initDataType)).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + var mediaKeySession = mediaKeys.createSession(); + return mediaKeySession.generateRequest(initDataType, initData); + }).then(function() { + assert_unreached('generateRequest() succeeded'); + }, function(error) { + assert_equals(error.name, 'InvalidAccessError'); + return Promise.resolve('success'); + }); + }) + } + + promise_test(function() + { + var initData = new Uint8Array(70000); + return test_session(config.keysystem,'webm', initData); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, webm, initData longer than 64Kb characters'); + + promise_test(function() + { + var initData = new Uint8Array(70000); + return test_session(config.keysystem,'cenc', initData); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, cenc, initData longer than 64Kb characters'); + + promise_test(function() + { + var initData = new Uint8Array(70000); + return test_session(config.keysystem,'keyids', initData); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, keyids, initData longer than 64Kb characters'); + + promise_test(function() + { + // Invalid 'pssh' box as the size specified is larger than what + // is provided. + var initData = new Uint8Array([ + 0x00, 0x00, 0xff, 0xff, // size = huge + 0x70, 0x73, 0x73, 0x68, // 'pssh' + 0x00, // version = 0 + 0x00, 0x00, 0x00, // flags + 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID + 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, + 0x00, 0x00, 0x00, 0x00 // datasize + ]); + return test_session(config.keysystem,'cenc', initData); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, cenc, invalid initdata (invalid pssh)'); + + promise_test(function() + { + // Invalid data as type = 'psss'. + var initData = new Uint8Array([ + 0x00, 0x00, 0x00, 0x00, // size = 0 + 0x70, 0x73, 0x73, 0x73, // 'psss' + 0x00, // version = 0 + 0x00, 0x00, 0x00, // flags + 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID + 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, + 0x00, 0x00, 0x00, 0x00 // datasize + ]); + return test_session(config.keysystem,'cenc', initData); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, cenc, invalid initdata (not pssh)'); + + promise_test(function() + { + // Valid key ID size must be at least 1 character for keyids. + var keyId = new Uint8Array(0); + var initData = stringToUint8Array(createKeyIDs(keyId)); + return test_session(config.keysystem,'keyids', initData); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, keyids, invalid initdata (too short key ID)'); + + promise_test(function() + { + // Valid key ID size must be less than 512 characters for keyids. + var keyId = new Uint8Array(600); + var initData = stringToUint8Array(createKeyIDs(keyId)); + return test_session(config.keysystem,'keyids', initData); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, keyids, invalid initdata (too long key ID)'); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/keystatuses-multiple-sessions.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/keystatuses-multiple-sessions.js new file mode 100644 index 00000000000..4553c2bb253 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/keystatuses-multiple-sessions.js @@ -0,0 +1,107 @@ +function runTest(config,qualifier) +{ + var testname = testnamePrefix( qualifier, config.keysystem ) + ', temporary, keystatuses, multiple sessions'; + + var configuration = getSimpleConfigurationForContent( config.content ); + + if ( config.initDataType && config.initData ) configuration.initDataTypes = [ config.initDataType ]; + + async_test(function(test) + { + var mediaKeySession1; + var mediaKeySession2; + + // Even though key ids are uint8, using printable values so that + // they can be verified easily. + var key1 = new Uint8Array( config.content.keys[ 0 ].kid ), + key2 = new Uint8Array( config.content.keys[ 1 ].kid ); + + function processMessage1(event) + { + // This should only be called for session1. + assert_equals(event.target, mediaKeySession1); + + // No keys added yet. + verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [], unexpected: [key1, key2] }); + + // Add key1 to session1. + config.messagehandler( event.messageType, event.message ).then( function( response ) { + + event.target.update( response ).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + + } + + function processKeyStatusesChange1(event) + { + // This should only be called for session1. + assert_equals(event.target, mediaKeySession1); + + // Check that keyStatuses contains the expected key1 only. + verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] }); + + // Now trigger a message event on session2. + mediaKeySession2.generateRequest(config.initDataType, config.initData[ 1 ]).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + } + + function processMessage2(event) + { + // This should only be called for session2. + assert_equals(event.target, mediaKeySession2); + + // session2 has no keys added yet. + verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [], unexpected: [key1, key2] }); + + // session1 should still have 1 key. + verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] }); + + // Add key2 to session2. + config.messagehandler( event.messageType, event.message ).then( function( response ) { + + event.target.update( response ).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + } + + function processKeyStatusesChange2(event) + { + // This should only be called for session2. + assert_equals(event.target, mediaKeySession2); + + // Check that keyStatuses contains the expected key2 only. + verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [key2], unexpected: [key1] }); + + // session1 should still have 1 key. + verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] }); + + test.done(); + } + + navigator.requestMediaKeySystemAccess( config.keysystem, [ configuration ] ).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + mediaKeySession1 = mediaKeys.createSession(); + mediaKeySession2 = mediaKeys.createSession(); + + // There should be no keys defined on either session. + verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [], unexpected: [key1, key2] }); + verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [], unexpected: [key1, key2] }); + + // Bind all the event handlers now. + waitForEventAndRunStep('message', mediaKeySession1, processMessage1, test); + waitForEventAndRunStep('message', mediaKeySession2, processMessage2, test); + waitForEventAndRunStep('keystatuseschange', mediaKeySession1, processKeyStatusesChange1, test); + waitForEventAndRunStep('keystatuseschange', mediaKeySession2, processKeyStatusesChange2, test); + + // Generate a request on session1. + return mediaKeySession1.generateRequest(config.initDataType, config.initData[ 0 ] ); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }, testname ); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/keystatuses.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/keystatuses.js new file mode 100644 index 00000000000..a39f0247660 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/keystatuses.js @@ -0,0 +1,161 @@ +function runTest(config,qualifier) +{ + var testname = testnamePrefix( qualifier, config.keysystem ) + ', temporary, keystatuses'; + + var configuration = getSimpleConfigurationForContent( config.content ); + + if ( config.initDataType && config.initData ) configuration.initDataTypes = [ config.initDataType ]; + + async_test(function(test) + { + var mediaKeySession; + var initDataType; + var initData; + var closed = false; + + // Even though key ids are uint8, using printable values so that + // they can be verified easily. + var key1 = new Uint8Array( config.content.keys[ 0 ].kid ), + key2 = new Uint8Array( config.content.keys[ 1 ].kid ), + key1String = arrayBufferAsString(key1), + key2String = arrayBufferAsString(key2); + + function onFailure(error) { + forceTestFailureFromPromise(test, error); + } + + function processMessage(event) + { + // No keys added yet. + assert_equals(mediaKeySession.keyStatuses.size, 0); + + waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test); + + // Add keys to session + config.messagehandler( event.messageType, event.message ).then( function( response ) { + event.target.update( response ).catch(onFailure); + }); + } + + function checkKeyStatusFor2Keys() + { + // Two keys added, so both should show up in |keyStatuses|. + assert_equals(mediaKeySession.keyStatuses.size, 2); + + // Check |keyStatuses| for 2 entries. + var result = []; + for (let item of mediaKeySession.keyStatuses) { + result.push({ key: arrayBufferAsString(item[0]), value: item[1] }); + } + function lexicographical( a, b ) { return a < b ? -1 : a === b ? 0 : +1; } + function lexicographicalkey( a, b ) { return lexicographical( a.key, b.key ); } + var expected = [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}].sort( lexicographicalkey ); + assert_equals(JSON.stringify(result), + JSON.stringify(expected), + "keystatuses should have the two expected keys with keystatus 'usable'"); + + // |keyStatuses| must contain both keys. + result = []; + for (var key of mediaKeySession.keyStatuses.keys()) { + result.push(arrayBufferAsString(key)); + } + assert_array_equals(result, + [key1String, key2String].sort( lexicographical ), + "keyStatuses.keys() should return an iterable over the two expected keys"); + + // Both values in |mediaKeySession| should be 'usable'. + result = []; + for (var value of mediaKeySession.keyStatuses.values()) { + result.push(value); + } + assert_array_equals(result, + ['usable', 'usable'], + "keyStatuses.values() should return an iterable with two 'usable' values"); + + // Check |keyStatuses.entries()|. + result = []; + for (var entry of mediaKeySession.keyStatuses.entries()) { + result.push({ key: arrayBufferAsString(entry[0]), value: entry[1] }); + } + assert_equals(JSON.stringify(result), + JSON.stringify(expected), + "keyStatuses.entries() should return an iterable over the two expected keys, with keystatus 'usable'"); + + // forEach() should return both entries. + result = []; + mediaKeySession.keyStatuses.forEach(function(status, keyId) { + result.push({ key: arrayBufferAsString(keyId), value: status }); + }); + assert_equals(JSON.stringify(result), + JSON.stringify(expected), + "keyStatuses.forEach() should iterate over the two expected keys, with keystatus 'usable'"); + + // has() and get() should return the expected values. + assert_true(mediaKeySession.keyStatuses.has(key1), "keyStatuses should have key1"); + assert_true(mediaKeySession.keyStatuses.has(key2), "keyStatuses should have key2"); + assert_equals(mediaKeySession.keyStatuses.get(key1), 'usable', "key1 should have status 'usable'"); + assert_equals(mediaKeySession.keyStatuses.get(key2), 'usable', "key2 should have status 'usable'"); + + // Try some invalid keyIds. + var invalid1 = key1.subarray(0, key1.length - 1); + assert_false(mediaKeySession.keyStatuses.has(invalid1), "keystatuses should not have invalid key (1)"); + assert_equals(mediaKeySession.keyStatuses.get(invalid1), undefined, "keystatus value for invalid key should be undefined (1)"); + + var invalid2 = key1.subarray(1); + assert_false(mediaKeySession.keyStatuses.has(invalid2), "keystatuses should not have invalid key (2)"); + assert_equals(mediaKeySession.keyStatuses.get(invalid2), undefined, "keystatus value for invalid key should be undefined (2)"); + + var invalid3 = new Uint8Array(key1); + invalid3[0] += 1; + assert_false(mediaKeySession.keyStatuses.has(invalid3), "keystatuses should not have invalid key (3)"); + assert_equals(mediaKeySession.keyStatuses.get(invalid3), undefined, "keystatus value for invalid key should be undefined (3)"); + + var invalid4 = new Uint8Array(key1); + invalid4[invalid4.length - 1] -= 1; + assert_false(mediaKeySession.keyStatuses.has(invalid4), "keystatuses should not have invalid key (4)"); + assert_equals(mediaKeySession.keyStatuses.get(invalid4), undefined, "keystatus value for invalid key should be undefined (4)"); + + var invalid5 = new Uint8Array(key1.length + 1); + invalid5.set(key1, 1); // First element will be 0. + assert_false(mediaKeySession.keyStatuses.has(invalid5), "keystatuses should not have invalid key (5)"); + assert_equals(mediaKeySession.keyStatuses.get(invalid5), undefined, "keystatus value for invalid key should be undefined (5)"); + + var invalid6 = new Uint8Array(key1.length + 1); + invalid6.set(key1, 0); // Last element will be 0. + assert_false(mediaKeySession.keyStatuses.has(invalid6), "keystatuses should not have invalid key (6)"); + assert_equals(mediaKeySession.keyStatuses.get(invalid6), undefined, "keystatus value for invalid key should be undefined (6)"); + } + + function processKeyStatusesChange(event) + { + if ( !closed ) + { + // The first keystatuseschange (caused by update()) + // should include both keys. + checkKeyStatusFor2Keys(); + + mediaKeySession.close().catch(onFailure); + closed = true; + } + else + { + // The second keystatuseschange (caused by close()) + // should not have any keys. + assert_equals(mediaKeySession.keyStatuses.size, 0); + test.done(); + } + } + + navigator.requestMediaKeySystemAccess( config.keysystem, [ configuration ] ).then(function(access) { + return access.createMediaKeys(); + }).then(test.step_func(function(mediaKeys) { + mediaKeySession = mediaKeys.createSession(); + + // There should be no keys defined yet. + //verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [], unexpected: [key1, key2] }); + + waitForEventAndRunStep('message', mediaKeySession, processMessage, test); + return mediaKeySession.generateRequest(config.initDataType, config.initData); + })).catch(onFailure); + }, testname ); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/not-callable-after-createsession.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/not-callable-after-createsession.js new file mode 100644 index 00000000000..2642c71e0e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/not-callable-after-createsession.js @@ -0,0 +1,50 @@ + function runTest(config,qualifier) { + // After creation, the MediaKeySession object is not + // callable, and we should get a InvalidStateError. + + promise_test(function() + { + return navigator.requestMediaKeySystemAccess(config.keysystem, getSimpleConfiguration()).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + var mediaKeySession = mediaKeys.createSession(); + + var arbitraryResponse = new Uint8Array([0x00, 0x11]); + return mediaKeySession.update(arbitraryResponse).then(function(result) { + assert_unreached('update() succeeded unexpectedly.'); + }).catch(function(error) { + assert_equals(error.name, 'InvalidStateError'); + }); + }); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, update() immediately after createSession()'); + + promise_test(function() + { + return navigator.requestMediaKeySystemAccess(config.keysystem, getSimpleConfiguration()).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + var mediaKeySession = mediaKeys.createSession(); + + return mediaKeySession.close().then(function(result) { + assert_unreached('close() succeeded unexpectedly.'); + }).catch(function(error) { + assert_equals(error.name, 'InvalidStateError'); + }); + }); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, close() immediately after createSession()'); + + promise_test(function() + { + return navigator.requestMediaKeySystemAccess(config.keysystem, getSimpleConfiguration()).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + var mediaKeySession = mediaKeys.createSession(); + + return mediaKeySession.remove().then(function(result) { + assert_unreached('remove() succeeded unexpectedly.'); + }).catch(function(error) { + assert_equals(error.name, 'InvalidStateError'); + }); + }); + }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, remove() immediately after createSession()'); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-destroy-persistent-license.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-destroy-persistent-license.js new file mode 100644 index 00000000000..dd315993eda --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-destroy-persistent-license.js @@ -0,0 +1,97 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', persistent-license, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback, destroy and acknowledge'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-license' ] }; + + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource, + _sessionId, + _startedReleaseSequence = false; + + function onFailure(error) { + forceTestFailureFromPromise(test, error); + } + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + config.messagehandler( event.messageType, event.message ) + .then( function( response ) { + _mediaKeySession.update( response ).catch(onFailure); + }); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ).then( test.step_func(function() { + assert_not_equals( _mediaKeySession.sessionId, undefined, "SessionId should be defined" ); + _sessionId = _mediaKeySession.sessionId; + })).catch(onFailure); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 1 ) && !_startedReleaseSequence ) { + _video.removeEventListener('timeupdate', onTimeupdate ); + _video.pause(); + _video.removeAttribute('src'); + _video.load(); + + _startedReleaseSequence = true; + _mediaKeySession.closed.then(onClosed); + _mediaKeySession.remove().catch(onFailure); + } + } + + function onPlaying(event) { + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + function onClosed() { + // Try and reload and check this fails + var mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); + mediaKeySession.load( _sessionId ).then( test.step_func(function( success ) { + assert_false( success, "Load of removed session shouold fail" ); + test.done(); + })).catch(onFailure); + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + return _video.setMediaKeys(_mediaKeys); + return; + }).then(function() { + _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(onFailure); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-license-events.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-license-events.js new file mode 100644 index 00000000000..d087e11d88c --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-license-events.js @@ -0,0 +1,131 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', persistent-license, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback, check events'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-license' ] }; + + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource, + _receivedTimeupdateEvent = false, + _startedReleaseSequence = false, + _events = [ ]; + + function recordEventFunc( eventType ) { + return function() { _events.push( eventType ); }; + } + + function onFailure(error) { + forceTestFailureFromPromise(test, error); + } + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + if ( !_startedReleaseSequence ) { + assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); + } else { + assert_equals( event.messageType, 'license-release' ); + } + + if ( event.messageType !== 'individualization-request' ) { + _events.push( event.messageType ); + } + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + _events.push( event.messageType + '-response'); + _mediaKeySession.update( response ).then( test.step_func( function() { + _events.push('updated'); + if ( event.messageType === 'license-release' ) { + assert_array_equals( _events, + [ + 'generaterequest', + 'license-request', + 'license-request-response', + 'updated', + 'keystatuseschange', + 'playing', + 'remove', + 'keystatuseschange', + 'license-release', + 'license-release-response', + 'closed-promise', + 'updated' + ], + "Expected events sequence" ); + test.done(); + } + })).catch(onFailure); + }); + } + + function onKeyStatusesChange(event) { + assert_equals(event.target, _mediaKeySession ); + assert_true(event instanceof window.Event ); + assert_equals(event.type, 'keystatuseschange' ); + _events.push('keystatuseschange'); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ).then( recordEventFunc( 'generaterequest' ) + ).catch(onFailure); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 1 ) && !_receivedTimeupdateEvent ) { + _receivedTimeupdateEvent = true; + _video.pause(); + _video.removeAttribute('src'); + _video.load(); + + _startedReleaseSequence = true; + _mediaKeySession.remove().then( recordEventFunc( 'remove' ) ).catch(onFailure); + } + } + + function onPlaying(event) { + _events.push( 'playing' ); + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + return _video.setMediaKeys(_mediaKeys); + }).then(function() { + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); + waitForEventAndRunStep('keystatuseschange', _mediaKeySession, onKeyStatusesChange, test); + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.closed.then( recordEventFunc( 'closed-promise' ) ); + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-license.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-license.js new file mode 100644 index 00000000000..d3bbfa69f99 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-license.js @@ -0,0 +1,79 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', persistent-license, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + 'playback'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-license' ] }; + + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource; + + function onFailure(error) { + forceTestFailureFromPromise(test, error); + } + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ) + .then( function( response ) { + _mediaKeySession.update( response ) + .catch(onFailure); + }); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ).catch(onFailure); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 1 ) ) { + _video.pause(); + test.done(); + } + } + + function onPlaying(event) { + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + return _video.setMediaKeys(_mediaKeys); + }).then(function() { + _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(onFailure); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-usage-record-events.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-usage-record-events.js new file mode 100644 index 00000000000..25d47b27afb --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-usage-record-events.js @@ -0,0 +1,115 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', persistent-usage-record, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback, check events'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-usage-record' ] }; + + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _sessionId, + _timeupdateEvent = false, + _events = [ ]; + + function recordEventFunc( eventType ) { + return function() { _events.push( eventType ); }; + } + + function onFailure(error) { + forceTestFailureFromPromise(test, error); + } + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + if ( event.messageType !== 'individualization-request' ) { + _events.push( event.messageType ); + } + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + _events.push( event.messageType + '-response' ); + _mediaKeySession.update( response ).then( test.step_func(function() { + _events.push( 'update-done' ); + if ( event.messageType === 'license-release' ) { + consoleWrite( _events ); + assert_array_equals( _events, + [ 'encrypted', + 'generaterequest-done', + 'license-request', + 'license-request-response', + 'update-done', + 'keystatuseschange', + 'playing', + 'remove-done', + 'keystatuseschange', + 'license-release', + 'license-release-response', + 'closed-promise', + 'update-done' + ], + "Expected events sequence" ); + test.done(); + } + + if ( event.messageType === 'license-request' ) { + _video.setMediaKeys( _mediaKeys ); + } + })).catch(onFailure); + }); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + _events.push(event.type); + _mediaKeySession.generateRequest( config.initDataType || event.initDataType, + config.initData || event.initData ).then( function() { + _events.push( 'generaterequest-done' ); + _sessionId = _mediaKeySession.sessionId; + }).catch(onFailure); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) && !_timeupdateEvent ) { + _timeupdateEvent = true; + _video.pause(); + _mediaKeySession.remove().then( recordEventFunc('remove-done') ).catch(onFailure); + } + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, recordEventFunc('playing'), test); + + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + + _mediaKeySession = _mediaKeys.createSession( 'persistent-usage-record' ); + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + waitForEventAndRunStep('keystatuseschange', _mediaKeySession, recordEventFunc('keystatuseschange'), test); + _mediaKeySession.closed.then( recordEventFunc('closed-promise') ); + }).then(function() { + return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; + }).then(function( success ) { + return testmediasource(config); + }).then(function(source) { + _video.src = URL.createObjectURL(source); + _video.play(); + }).catch(onFailure); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-usage-record.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-usage-record.js new file mode 100644 index 00000000000..633eac82352 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-persistent-usage-record.js @@ -0,0 +1,113 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', persistent-usage-record, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + 'playback'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-usage-record' ] }; + + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource, + _releaseSequence = false; + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + // event instance verification failing on CastTV + // assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + if ( !_releaseSequence ) + { + assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); + } + else + { + assert_equals( event.messageType, 'license-release' ); + } + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + _mediaKeySession.update( response ).catch(function(error) { + forceTestFailureFromPromise(test, error); + }).then(function() { + if(event.messageType === 'license-request') { + _video.setMediaKeys(_mediaKeys); + } else if(event.messageType === 'license-release') { + test.done(); + } + }); + }); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ) + .catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + } + + function onClosed(event) { + _video.src = ""; + _video.setMediaKeys( null ); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) && !_releaseSequence ) { + + _video.removeEventListener('timeupdate', onTimeupdate ); + + _video.pause(); + + _releaseSequence = true; + + _mediaKeySession.closed.then( test.step_func( onClosed ) ); + _mediaKeySession.remove().catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + + _video.removeEventListener('timeupdate', onTimeupdate ); + } + } + + function onPlaying(event) { + + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + _mediaKeySession = _mediaKeys.createSession( 'persistent-usage-record' ); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; + }).then(function( success ) { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-retrieve-persistent-license.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-retrieve-persistent-license.js new file mode 100644 index 00000000000..fe55de3eab4 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-retrieve-persistent-license.js @@ -0,0 +1,108 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', persistent-license, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', ' + config.testcase; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-license' ] }; + + + async_test( function( test ) { + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource, + _sessionId; + + function onFailure(error) { + forceTestFailureFromPromise(test, error); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ).then( function() { + _sessionId = _mediaKeySession.sessionId; + }).catch(onFailure); + } + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + _mediaKeySession.update( response ) + .catch(onFailure); + }); + } + + function onPlaying(event) { + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 1 ) ) { + _video.removeEventListener('timeupdate', onTimeupdate ); + _video.pause(); + _video.removeAttribute('src'); + _video.load() + + _mediaKeySession.closed.then( test.step_func( onClosed ) ); + _mediaKeySession.close(); + } + } + + function onClosed() { + // Open a new window in which we will attempt to play with the persisted license + var win = window.open( config.windowscript ); + + // Lisen for an event from the new window containing its test assertions + window.addEventListener('message', test.step_func(function( messageEvent ) { + messageEvent.data.forEach(test.step_func(function( assertion ) { + assert_equals(assertion.actual, assertion.expected, assertion.message); + })); + + win.close(); + test.done(); + })); + + // Delete things which can't be cloned and posted over to the new window + delete config.video; + delete config.messagehandler; + + // Post the config and session id to the new window when it is ready + win.onload = function() { + win.postMessage( { config: config, sessionId: _sessionId }, '*' ); + } + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + _video.setMediaKeys( mediaKeys ); + _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(onFailure); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js new file mode 100644 index 00000000000..4dd695634a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js @@ -0,0 +1,122 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', persistent-usage-record, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback, retrieve in new window'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'persistent-usage-record' ] }; + + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource, + _sessionId, + _isClosing = false; + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initDataType || event.initDataType, + config.initData || event.initData ).then( function() { + + _sessionId = _mediaKeySession.sessionId; + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + } + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + + _mediaKeySession.update( response ).then(function() { + _video.setMediaKeys(_mediaKeys); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + } + + function onPlaying(event) { + + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + function onTimeupdate(event) { + if ( !_isClosing && _video.currentTime > ( config.duration || 2 ) ) { + _isClosing = true; + _video.removeEventListener('timeupdate', onTimeupdate ); + _video.pause(); + _mediaKeySession.closed.then( test.step_func( onClosed ) ); + _mediaKeySession.close(); + } + } + + function onClosed(event) { + _video.src = ""; + _video.setMediaKeys( null ); + + var win = window.open( config.windowscript ); + window.addEventListener('message', test.step_func(function( event ) { + + event.data.forEach(test.step_func(function( assertion ) { + + assert_equals(assertion.actual, assertion.expected, assertion.message); + + })); + + win.close(); + + test.done(); + })); + + delete config.video; + delete config.messagehandler; + + win.onload = function() { + + win.postMessage( { config: config, sessionId: _sessionId }, '*' ); + } + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + + _video.setMediaKeys( mediaKeys ); + + _mediaKeySession = _mediaKeys.createSession( 'persistent-usage-record' ); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; + }).then(function( success ) { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-events.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-events.js new file mode 100644 index 00000000000..ea835a17ae5 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-events.js @@ -0,0 +1,156 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', temporary, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback, check events'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'temporary' ] }; + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource, + _allKeysUsableEvent = false, + _playingEvent = false, + _timeupdateEvent = false, + _events = [ ]; + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_any( assert_equals, + event.messageType, + [ 'license-request', 'individualization-request' ] ); + + if ( event.messageType !== 'individualization-request' ) { + _events.push( event.messageType ); + } + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + _events.push( 'license-response' ); + + waitForEventAndRunStep('keystatuseschange', _mediaKeySession, onKeyStatusesChange, test); + _mediaKeySession.update( response ).then( function() { + _events.push('updated'); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + } + + function onKeyStatusesChange(event) { + assert_equals(event.target, _mediaKeySession ); + assert_true(event instanceof window.Event ); + assert_equals(event.type, 'keystatuseschange' ); + + var hasKeys = false, pendingKeys = false; + _mediaKeySession.keyStatuses.forEach( function( value, keyid ) { + assert_any( assert_equals, value, [ 'status-pending', 'usable' ] ); + + hasKeys = true; + pendingKeys = pendingKeys || ( value === 'status-pending' ); + + }); + + if ( !_allKeysUsableEvent && hasKeys && !pendingKeys ) { + _allKeysUsableEvent = true; + _events.push( 'allkeysusable' ); + _video.setMediaKeys(_mediaKeys); + } + + if ( !hasKeys ) { + _events.push( 'emptykeyslist' ); + } + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ).then( function() { + _events.push( 'generaterequest' ); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + } + + function onClosed(event) { + + _events.push( 'closed-promise' ); + + setTimeout( test.step_func( function() { + + assert_array_equals( _events, + [ + 'generaterequest', + 'license-request', + 'license-response', + 'updated', + 'allkeysusable', + 'playing', + 'closed', + 'closed-promise', + 'emptykeyslist' + ], + "Expected events sequence" ); + + _video.src = ""; + _video.setMediaKeys( null ).then(function(){ + test.done(); + }); + } ), 0 ); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) && !_timeupdateEvent ) { + _timeupdateEvent = true; + _video.pause(); + + _mediaKeySession.closed.then( test.step_func( onClosed ) ); + _mediaKeySession.close().then( function() { + _events.push( 'closed' ); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + } + } + + function onPlaying(event) { + _playingEvent = true; + _events.push( 'playing' ); + + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + _mediaKeySession = _mediaKeys.createSession( 'temporary' ); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js new file mode 100644 index 00000000000..c649960f035 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js @@ -0,0 +1,96 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', temporary, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback with multiple keys and sessions, ' + + config.testcase; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'temporary' ] }; + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySessions = [ ], + _mediaSource; + + function onMessage(event) { + assert_any( assert_equals, event.target, _mediaKeySessions ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_any( assert_equals, + event.messageType, + [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ) + .then( function( response ) { + + event.target.update( response ) + .catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + } + + function onPlaying(event) { + + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) ) { + + consoleWrite("Session 0:"); + dumpKeyStatuses( _mediaKeySessions[ 0 ].keyStatuses ); + consoleWrite("Session 1:"); + dumpKeyStatuses( _mediaKeySessions[ 1 ].keyStatuses ); + + _video.removeEventListener('timeupdate', onTimeupdate); + _video.pause(); + test.done(); + } + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + + _video.setMediaKeys(_mediaKeys); + + waitForEventAndRunStep('playing', _video, onPlaying, test); + + config.initData.forEach( function( initData ) { + + var mediaKeySession = _mediaKeys.createSession( 'temporary' ); + + waitForEventAndRunStep('message', mediaKeySession, onMessage, test); + + _mediaKeySessions.push( mediaKeySession ); + + mediaKeySession.generateRequest( config.initDataType, initData ) + .catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + + } ); + + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-multikey.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-multikey.js new file mode 100644 index 00000000000..07cdaa3f5a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-multikey.js @@ -0,0 +1,111 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', temporary, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback with multiple keys, single session, ' + + config.testcase; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'temporary' ] }; + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySessions = [ ], + _mediaSource; + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + // Only create a session for the first encrypted event + if ( _mediaKeySessions.length > 0 ) return; + + var mediaKeySession = _mediaKeys.createSession( 'temporary' ); + + waitForEventAndRunStep('message', mediaKeySession, onMessage, test); + + var initDataType, initData; + if ( config.initDataType && config.initData ) + { + initDataType = config.initDataType; + initData = config.initData; + } + else + { + initDataType = event.initDataType; + initData = event.initData; + } + + _mediaKeySessions.push( mediaKeySession ); + + mediaKeySession.generateRequest( initDataType, initData ) + .catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + } + + function onMessage(event) { + assert_any( assert_equals, event.target, _mediaKeySessions ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_any( assert_equals, + event.messageType, + [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ) + .then( function( response ) { + + event.target.update( response ) + .catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + } + + function onPlaying(event) { + + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) ) { + + consoleWrite("Session 0:"); + dumpKeyStatuses( _mediaKeySessions[ 0 ].keyStatuses ); + + _video.removeEventListener('timeupdate', onTimeupdate); + _video.pause(); + test.done(); + } + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + + _video.setMediaKeys(_mediaKeys); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-setMediaKeys.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-setMediaKeys.js new file mode 100644 index 00000000000..f24c204be7a --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-setMediaKeys.js @@ -0,0 +1,106 @@ +SETMEDIAKEYS_IMMEDIATELY = 0; +SETMEDIAKEYS_AFTER_SRC = 1; +SETMEDIAKEYS_ONENCRYPTED = 2; +SETMEDIAKEYS_AFTER_UPDATE = 3; + +function runTest(config,qualifier) { + + var testcase = ( config.testcase === SETMEDIAKEYS_IMMEDIATELY ) ? 'setMediaKeys first' + : ( config.testcase === SETMEDIAKEYS_AFTER_SRC ) ? 'setMediaKeys after setting video.src' + : ( config.testcase === SETMEDIAKEYS_ONENCRYPTED ) ? 'setMediaKeys in encrypted event' + : ( config.testcase === SETMEDIAKEYS_AFTER_UPDATE ) ? 'setMediaKeys after updating session' + : 'unknown'; + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', temporary, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback, ' + testcase; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'temporary' ] }; + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource; + + function onFailure(error) { + forceTestFailureFromPromise(test, error); + } + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_any( assert_equals, + event.messageType, + [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + return _mediaKeySession.update( response ); + }).then( function() { + if ( config.testcase === SETMEDIAKEYS_AFTER_UPDATE ) { + return _video.setMediaKeys( _mediaKeys ); + } + }).catch(onFailure); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + var promise = ( config.testcase === SETMEDIAKEYS_ONENCRYPTED ) + ? _video.setMediaKeys( _mediaKeys ) + : Promise.resolve(); + + promise.then( function() { + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + return _mediaKeySession.generateRequest(config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ); + }).catch(onFailure); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) ) { + _video.pause(); + test.done(); + } + } + + function onPlaying(event) { + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(test.step_func(function(mediaKeys) { + _mediaKeys = mediaKeys; + if ( config.testcase === SETMEDIAKEYS_IMMEDIATELY ) { + return _video.setMediaKeys( _mediaKeys ); + } + })).then(function(){ + _mediaKeySession = _mediaKeys.createSession( 'temporary' ); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + + return testmediasource(config); + }).then(test.step_func(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + + if ( config.testcase === SETMEDIAKEYS_AFTER_SRC ) { + return _video.setMediaKeys( _mediaKeys ); + } + })).catch(onFailure); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-two-videos.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-two-videos.js new file mode 100644 index 00000000000..6d9f4630854 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-two-videos.js @@ -0,0 +1,91 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', temporary, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback two videos'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'temporary' ] }; + + promise_test(function(test) + { + var promises = config.video.map( function( video ) { return play_video_as_promise( test, video ); } ); + + return Promise.all(promises); + + }, testname ); + + function play_video_as_promise( test, _video ) { + var _mediaKeys, + _mediaKeySession, + _mediaSource; + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_any( assert_equals, + event.messageType, + [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + + _mediaKeySession.update( response ).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ) + .catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + + _video.setMediaKeys(_mediaKeys); + } + + function wait_for_timeupdate_message(video) + { + return new Promise(function(resolve) { + video.addEventListener('timeupdate', function listener(event) { + if ( event.target.currentTime > ( config.duration || 2 ) ) + { + video.removeEventListener('timeupdate', listener); + resolve(event); + } + }); + }); + }; + + return navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + _mediaKeySession = _mediaKeys.createSession( 'temporary' ); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + return wait_for_timeupdate_message(_video); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + } +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-waitingforkey.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-waitingforkey.js new file mode 100644 index 00000000000..fad9ffc698c --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary-waitingforkey.js @@ -0,0 +1,71 @@ +function runTest(config,qualifier) { + + // config.initData contains a list of keys. We expect those to be needed in order and get + // one waitingforkey event for each one. + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', successful playback, temporary, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', waitingforkey event, ' + + config.initData.length + ' key' + ( config.initData.length > 1 ? 's' : '' ); + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'temporary' ] }; + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySessions = [ ], + _mediaSource; + + function onFailure( error ) { + forceTestFailureFromPromise(test, error); + } + + function onMessage(event) { + config.messagehandler( event.messageType, event.message ).then( function( response ) { + event.target.update( response ).catch(onFailure); + }); + } + + function onWaitingForKey(event) { + // Expect one waitingforkey event for each initData we were given + assert_less_than( _mediaKeySessions.length, config.initData.length ); + var mediaKeySession = _mediaKeys.createSession( 'temporary' ); + waitForEventAndRunStep('message', mediaKeySession, onMessage, test); + _mediaKeySessions.push( mediaKeySession ); + mediaKeySession.generateRequest( config.initDataType, config.initData[ _mediaKeySessions.length - 1 ] ).catch(onFailure); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) ) { + assert_equals( _mediaKeySessions.length, config.initData.length ); + _video.removeEventListener('timeupdate', onTimeupdate); + _video.pause(); + test.done(); + } + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + return _video.setMediaKeys(_mediaKeys); + }).then(function(){ + waitForEventAndRunStep('waitingforkey', _video, onWaitingForKey, test); + + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(onFailure); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary.js new file mode 100644 index 00000000000..9b12598647b --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/playback-temporary.js @@ -0,0 +1,83 @@ +function runTest(config,qualifier) { + + var testname = testnamePrefix( qualifier, config.keysystem ) + + ', temporary, ' + + /video\/([^;]*)/.exec( config.videoType )[ 1 ] + + ', playback'; + + var configuration = { initDataTypes: [ config.initDataType ], + audioCapabilities: [ { contentType: config.audioType } ], + videoCapabilities: [ { contentType: config.videoType } ], + sessionTypes: [ 'temporary' ] }; + + async_test( function( test ) { + + var _video = config.video, + _mediaKeys, + _mediaKeySession, + _mediaSource; + + function onMessage(event) { + assert_equals( event.target, _mediaKeySession ); + assert_true( event instanceof window.MediaKeyMessageEvent ); + assert_equals( event.type, 'message'); + + assert_any( assert_equals, + event.messageType, + [ 'license-request', 'individualization-request' ] ); + + config.messagehandler( event.messageType, event.message ).then( function( response ) { + + _mediaKeySession.update( response ).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }); + } + + function onEncrypted(event) { + assert_equals(event.target, _video); + assert_true(event instanceof window.MediaEncryptedEvent); + assert_equals(event.type, 'encrypted'); + + waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); + _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, + config.initData || event.initData ) + .catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + + _video.setMediaKeys(_mediaKeys); + } + + function onTimeupdate(event) { + if ( _video.currentTime > ( config.duration || 2 ) ) { + _video.pause(); + test.done(); + } + } + + function onPlaying(event) { + // Not using waitForEventAndRunStep() to avoid too many + // EVENT(onTimeUpdate) logs. + _video.addEventListener('timeupdate', onTimeupdate, true); + } + + navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { + return access.createMediaKeys(); + }).then(function(mediaKeys) { + _mediaKeys = mediaKeys; + _mediaKeySession = _mediaKeys.createSession( 'temporary' ); + + waitForEventAndRunStep('encrypted', _video, onEncrypted, test); + waitForEventAndRunStep('playing', _video, onPlaying, test); + }).then(function() { + return testmediasource(config); + }).then(function(source) { + _mediaSource = source; + _video.src = URL.createObjectURL(_mediaSource); + _video.play(); + }).catch(function(error) { + forceTestFailureFromPromise(test, error); + }); + }, testname); +} diff --git a/tests/wpt/web-platform-tests/encrypted-media/util/clearkey-messagehandler.js b/tests/wpt/web-platform-tests/encrypted-media/util/clearkey-messagehandler.js new file mode 100644 index 00000000000..d82d4daf959 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/util/clearkey-messagehandler.js @@ -0,0 +1,44 @@ +// Expect utf8decoder and utf8decoder to be TextEncoder('utf-8') and TextDecoder('utf-8') respectively + +function MessageHandler( keysystem, content ) { + this._keysystem = keysystem; + this._content = content; + this.messagehandler = MessageHandler.prototype.messagehandler.bind( this ); + this.servercertificate = undefined; +} + +MessageHandler.prototype.messagehandler = function messagehandler( messageType, message ) +{ + if ( messageType === 'license-request' ) + { + var request = fromUtf8( message ); + + var keys = request.kids.map( function( kid ) { + + var key; + for( var i=0; i < this._content.keys.length; ++i ) + { + if ( base64urlEncode( this._content.keys[ i ].kid ) === kid ) + { + key = base64urlEncode( this._content.keys[ i ].key ); + break; + } + } + + return { kty: 'oct', kid: kid, k: key }; + + }.bind( this ) ); + + return Promise.resolve( toUtf8( { keys: keys } ) ); + } + else if ( messageType === 'license-release' ) + { + var release = fromUtf8( message ); + + // TODO: Check the license release message here + + return Promise.resolve( toUtf8( { kids: release.kids } ) ); + } + + throw new TypeError( 'Unsupported message type for ClearKey' ); +}; \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/util/drm-messagehandler.js b/tests/wpt/web-platform-tests/encrypted-media/util/drm-messagehandler.js new file mode 100644 index 00000000000..ab5da718bd4 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/util/drm-messagehandler.js @@ -0,0 +1,245 @@ +// Expect utf8decoder and utf8decoder to be TextEncoder('utf-8') and TextDecoder('utf-8') respectively +// +// drmconfig format: +// { : { "serverURL" : , +// "httpRequestHeaders" : , +// "servertype" : "microsoft" | "drmtoday", // affects how request parameters are formed +// "certificate" : } } +// + +drmconfig = { + "com.widevine.alpha": [ { + "serverURL": "https://lic.staging.drmtoday.com/license-proxy-widevine/cenc/", + "servertype" : "drmtoday", + "userId" : "12345", + "merchant" : "cablelabs", + } ], + "com.microsoft.playready": [ { + "serverURL": "http://playready-testserver.azurewebsites.net/rightsmanager.asmx", + "servertype": "microsoft", + "sessionTypes" : [ "persistent-usage-record" ], + "certificate" : "Q0hBSQAAAAEAAAUEAAAAAAAAAAJDRVJUAAAAAQAAAfQAAAFkAAEAAQAAAFjt9G6KdSncCkrjbTQPN+/2AAAAAAAAAAAAAAAJIPbrW9dj0qydQFIomYFHOwbhGZVGP2ZsPwcvjh+NFkP/////AAAAAAAAAAAAAAAAAAAAAAABAAoAAABYxw6TjIuUUmvdCcl00t4RBAAAADpodHRwOi8vcGxheXJlYWR5LmRpcmVjdHRhcHMubmV0L3ByL3N2Yy9yaWdodHNtYW5hZ2VyLmFzbXgAAAAAAQAFAAAADAAAAAAAAQAGAAAAXAAAAAEAAQIAAAAAADBRmRRpqV4cfRLcWz9WoXIGZ5qzD9xxJe0CSI2mXJQdPHEFZltrTkZtdmurwVaEI2etJY0OesCeOCzCqmEtTkcAAAABAAAAAgAAAAcAAAA8AAAAAAAAAAVEVEFQAAAAAAAAABVNZXRlcmluZyBDZXJ0aWZpY2F0ZQAAAAAAAAABAAAAAAABAAgAAACQAAEAQGHic/IPbmLCKXxc/MH20X/RtjhXH4jfowBWsQE1QWgUUBPFId7HH65YuQJ5fxbQJCT6Hw0iHqKzaTkefrhIpOoAAAIAW+uRUsdaChtq/AMUI4qPlK2Bi4bwOyjJcSQWz16LAFfwibn5yHVDEgNA4cQ9lt3kS4drx7pCC+FR/YLlHBAV7ENFUlQAAAABAAAC/AAAAmwAAQABAAAAWMk5Z0ovo2X0b2C9K5PbFX8AAAAAAAAAAAAAAARTYd1EkpFovPAZUjOj2doDLnHiRSfYc89Fs7gosBfar/////8AAAAAAAAAAAAAAAAAAAAAAAEABQAAAAwAAAAAAAEABgAAAGAAAAABAAECAAAAAABb65FSx1oKG2r8AxQjio+UrYGLhvA7KMlxJBbPXosAV/CJufnIdUMSA0DhxD2W3eRLh2vHukIL4VH9guUcEBXsAAAAAgAAAAEAAAAMAAAABwAAAZgAAAAAAAAAgE1pY3Jvc29mdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFBsYXlSZWFkeSBTTDAgTWV0ZXJpbmcgUm9vdCBDQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgDEuMC4wLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACAAAAJAAAQBArAKJsEIDWNG5ulOgLvSUb8I2zZ0c5lZGYvpIO56Z0UNk/uC4Mq3jwXQUUN6m/48V5J/vuLDhWu740aRQc1dDDAAAAgCGTWHP8iVuQixWizwoABz7PhUnZYWEugUht5sYKNk23h2Cao/D5uf6epDVyilG8fZKLvufXc/+fkNOtEKT+sWr" + }, + { + "serverURL": "http://playready.directtaps.net/pr/svc/rightsmanager.asmx", + "servertype": "microsoft", + "sessionTypes" : [ "persistent-usage-record" ], + "certificate" : "Q0hBSQAAAAEAAAUEAAAAAAAAAAJDRVJUAAAAAQAAAfQAAAFkAAEAAQAAAFjt9G6KdSncCkrjbTQPN+/2AAAAAAAAAAAAAAAJIPbrW9dj0qydQFIomYFHOwbhGZVGP2ZsPwcvjh+NFkP/////AAAAAAAAAAAAAAAAAAAAAAABAAoAAABYxw6TjIuUUmvdCcl00t4RBAAAADpodHRwOi8vcGxheXJlYWR5LmRpcmVjdHRhcHMubmV0L3ByL3N2Yy9yaWdodHNtYW5hZ2VyLmFzbXgAAAAAAQAFAAAADAAAAAAAAQAGAAAAXAAAAAEAAQIAAAAAADBRmRRpqV4cfRLcWz9WoXIGZ5qzD9xxJe0CSI2mXJQdPHEFZltrTkZtdmurwVaEI2etJY0OesCeOCzCqmEtTkcAAAABAAAAAgAAAAcAAAA8AAAAAAAAAAVEVEFQAAAAAAAAABVNZXRlcmluZyBDZXJ0aWZpY2F0ZQAAAAAAAAABAAAAAAABAAgAAACQAAEAQGHic/IPbmLCKXxc/MH20X/RtjhXH4jfowBWsQE1QWgUUBPFId7HH65YuQJ5fxbQJCT6Hw0iHqKzaTkefrhIpOoAAAIAW+uRUsdaChtq/AMUI4qPlK2Bi4bwOyjJcSQWz16LAFfwibn5yHVDEgNA4cQ9lt3kS4drx7pCC+FR/YLlHBAV7ENFUlQAAAABAAAC/AAAAmwAAQABAAAAWMk5Z0ovo2X0b2C9K5PbFX8AAAAAAAAAAAAAAARTYd1EkpFovPAZUjOj2doDLnHiRSfYc89Fs7gosBfar/////8AAAAAAAAAAAAAAAAAAAAAAAEABQAAAAwAAAAAAAEABgAAAGAAAAABAAECAAAAAABb65FSx1oKG2r8AxQjio+UrYGLhvA7KMlxJBbPXosAV/CJufnIdUMSA0DhxD2W3eRLh2vHukIL4VH9guUcEBXsAAAAAgAAAAEAAAAMAAAABwAAAZgAAAAAAAAAgE1pY3Jvc29mdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFBsYXlSZWFkeSBTTDAgTWV0ZXJpbmcgUm9vdCBDQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgDEuMC4wLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACAAAAJAAAQBArAKJsEIDWNG5ulOgLvSUb8I2zZ0c5lZGYvpIO56Z0UNk/uC4Mq3jwXQUUN6m/48V5J/vuLDhWu740aRQc1dDDAAAAgCGTWHP8iVuQixWizwoABz7PhUnZYWEugUht5sYKNk23h2Cao/D5uf6epDVyilG8fZKLvufXc/+fkNOtEKT+sWr" + }, + { + "serverURL": "https://lic.staging.drmtoday.com/license-proxy-headerauth/drmtoday/RightsManager.asmx", + "servertype" : "drmtoday", + "sessionTypes" : [ "temporary", "persistent-usage-record", "persistent-license" ], + "userId" : "12345", + "merchant" : "cablelabs" + } ] +}; + +function MessageHandler( keysystem, content, sessionType ) { + sessionType = sessionType || "temporary"; + + this._keysystem = keysystem; + this._content = content; + this._sessionType = sessionType; + this._drmconfig = drmconfig[ this._keysystem ].filter( function( drmconfig ) { + return drmconfig.sessionTypes === undefined || ( drmconfig.sessionTypes.indexOf( sessionType ) !== -1 ); + } )[ 0 ]; + + this.messagehandler = MessageHandler.prototype.messagehandler.bind( this ); + if ( this._drmconfig && this._drmconfig.certificate ) { + this.servercertificate = stringToUint8Array( atob( this._drmconfig.certificate ) ); + } +} + +MessageHandler.prototype.messagehandler = function messagehandler( messageType, message) { + + // For the DRM Today server, mapping between Key System messages and server protocol messages depends on + // the Key System, so we provide key-system-specific functions here to perform the mapping. + // + // For the Microsoft server, the mapping for PlayReady is the same as for the DRM Today server + // + const keySystems = { + 'com.widevine.alpha': { + responseType: 'json', + getLicenseMessage: function(response) { + return base64DecodeToUnit8Array( response.license ); + }, + getErrorResponse: function(response) { + return response; + }, + getLicenseRequestFromMessage: function(message) { + return new Uint8Array(message); + }, + getRequestHeadersFromMessage: function(/*message*/) { + return null; + } + }, + 'com.microsoft.playready': { + responseType: 'arraybuffer', + getLicenseMessage: function(response) { + return response; + }, + getErrorResponse: function(response) { + return String.fromCharCode.apply(null, new Uint16Array(response)); + }, + getLicenseRequestFromMessage: function(message) { + var msg, + xmlDoc; + var licenseRequest = null; + var parser = new DOMParser(); + var dataview = new Uint16Array(message); + + msg = String.fromCharCode.apply(null, dataview); + + xmlDoc = parser.parseFromString(msg, 'application/xml'); + + if (xmlDoc.getElementsByTagName('Challenge')[0]) { + var Challenge = xmlDoc.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue; + if (Challenge) { + licenseRequest = atob(Challenge); + } + } + return licenseRequest; + }, + getRequestHeadersFromMessage: function(message) { + var msg, + xmlDoc; + var headers = {}; + var parser = new DOMParser(); + var dataview = new Uint16Array(message); + + msg = String.fromCharCode.apply(null, dataview); + xmlDoc = parser.parseFromString(msg, 'application/xml'); + + var headerNameList = xmlDoc.getElementsByTagName('name'); + var headerValueList = xmlDoc.getElementsByTagName('value'); + for (var i = 0; i < headerNameList.length; i++) { + headers[headerNameList[i].childNodes[0].nodeValue] = headerValueList[i].childNodes[0].nodeValue; + } + // some versions of the PlayReady CDM return 'Content' instead of 'Content-Type', + // but the license server expects 'Content-Type', so we fix it up here. + if (headers.hasOwnProperty('Content')) { + headers['Content-Type'] = headers.Content; + delete headers.Content; + } + return headers; + } + } + }; + + // License request parameters are communicated to the DRM Today and Microsoft servers in different ways, + // using a custom HTTP headers (DRM Today) and URL parameters (Microsoft). + const serverTypes = { + 'drmtoday': { + constructLicenseRequestUrl : function( serverURL, sessionType, messageType, content ) { + return serverURL; + }, + getCustomHeaders : function( drmconfig, sessionType, messageType ) { + + var customToken; + if ( messageType === 'license-request' ) { + var customToken = { outputProtection: { digital : false, analogue: false, enforce: false }, + profile: { purchase: { } }, + storeLicense: ( sessionType === 'persistent-license' ) }; + } else { + customToken = {}; + } + + var customHeader = { userId: drmconfig.userId, + merchant: drmconfig.merchant, + sessionId: btoa( JSON.stringify( customToken )) }; + return { "dt-custom-data" : btoa( JSON.stringify( customHeader ) ) }; + } + }, + 'microsoft': { + constructLicenseRequestUrl : function( serverURL, sessionType, messageType, content ) { + if ( messageType !== 'license-request' ) { + return serverURL; + } + + var url = serverURL + "?"; + if ( sessionType === 'temporary' || sessionType === 'persistent-usage-record' ) { + url += "UseSimpleNonPersistentLicense=1&"; + } + if ( sessionType === 'persistent-usage-record' ) { + url += "SecureStop=1&"; + } + url += "PlayEnablers=B621D91F-EDCC-4035-8D4B-DC71760D43E9&"; // disable output protection + url += "ContentKey=" + btoa(String.fromCharCode.apply(null, content.keys[0].key)); + return url; + }, + getCustomHeaders : function() { return {}; } + } + }; + + return new Promise(function(resolve, reject) { + var keysystemfns = keySystems[this._keysystem], + serverfns, + url = undefined, + requestheaders = {}, + credentials = undefined; + + if ( !this._drmconfig || !keysystemfns || !this._drmconfig.servertype || !serverTypes[this._drmconfig.servertype] ) { + reject('Unsupported Key System'); + return; + } + + serverfns = serverTypes[this._drmconfig.servertype]; + + if ( !this._drmconfig.serverURL ) { + reject('Undefined serverURL'); + return; + } + + url = serverfns.constructLicenseRequestUrl( this._drmconfig.serverURL, this._sessionType, messageType, this._content ); + + // Ensure valid license server URL + if (!url) { + reject('No license server URL specified!'); + return; + } + + // Set optional XMLHttpRequest headers from protection data and message + var updateHeaders = function(headers) { + var key; + if (headers) { + for (key in headers) { + if ('authorization' === key.toLowerCase()) { + credentials = 'include'; + } + requestheaders[key] = headers[key]; + } + } + }; + + updateHeaders(serverfns.getCustomHeaders( this._drmconfig, this._sessionType, messageType ) ); + updateHeaders(keysystemfns.getRequestHeadersFromMessage(message)); + + // Set withCredentials property from server + if ( this._drmconfig.withCredentials ) { + credentials = 'include'; + } + + fetch(url, { + method: 'POST', + headers: requestheaders, + credentials: credentials, + body: keysystemfns.getLicenseRequestFromMessage(message) + }).then(function(fetchresponse) { + if(fetchresponse.status !== 200) { + reject( this._keysystem + ' update, XHR status is "' + fetchresponse.statusText + + '" (' + fetchresponse.status + '), expected to be 200. readyState is ' + fetchresponse.readyState + '.' + + ' Response is ' + ((fetchresponse) ? keysystemfns.getErrorResponse(fetchresponse) : 'NONE' )); + return; + } + + if(keysystemfns.responseType === 'json') { + return fetchresponse.json(); + } else if(keysystemfns.responseType === 'arraybuffer') { + return fetchresponse.arrayBuffer(); + } + }.bind( this )).then(function(response){ + resolve(keysystemfns.getLicenseMessage(response)); + }).catch(reject); + }.bind( this )); +}; diff --git a/tests/wpt/web-platform-tests/encrypted-media/util/fetch.js b/tests/wpt/web-platform-tests/encrypted-media/util/fetch.js new file mode 100644 index 00000000000..d14d00bdbe2 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/util/fetch.js @@ -0,0 +1,456 @@ +// https://github.com/github/fetch +// +// Copyright (c) 2014-2016 GitHub, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +(function(self) { + 'use strict'; + + if (self.fetch) { + return + } + + var support = { + searchParams: 'URLSearchParams' in self, + iterable: 'Symbol' in self && 'iterator' in Symbol, + blob: 'FileReader' in self && 'Blob' in self && (function() { + try { + new Blob() + return true + } catch(e) { + return false + } + })(), + formData: 'FormData' in self, + arrayBuffer: 'ArrayBuffer' in self + } + + function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name) + } + if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) { + throw new TypeError('Invalid character in header field name') + } + return name.toLowerCase() + } + + function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value) + } + return value + } + + // Build a destructive iterator for the value list + function iteratorFor(items) { + var iterator = { + next: function() { + var value = items.shift() + return {done: value === undefined, value: value} + } + } + + if (support.iterable) { + iterator[Symbol.iterator] = function() { + return iterator + } + } + + return iterator + } + + function Headers(headers) { + this.map = {} + + if (headers instanceof Headers) { + headers.forEach(function(value, name) { + this.append(name, value) + }, this) + + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function(name) { + this.append(name, headers[name]) + }, this) + } + } + + Headers.prototype.append = function(name, value) { + name = normalizeName(name) + value = normalizeValue(value) + var list = this.map[name] + if (!list) { + list = [] + this.map[name] = list + } + list.push(value) + } + + Headers.prototype['delete'] = function(name) { + delete this.map[normalizeName(name)] + } + + Headers.prototype.get = function(name) { + var values = this.map[normalizeName(name)] + return values ? values[0] : null + } + + Headers.prototype.getAll = function(name) { + return this.map[normalizeName(name)] || [] + } + + Headers.prototype.has = function(name) { + return this.map.hasOwnProperty(normalizeName(name)) + } + + Headers.prototype.set = function(name, value) { + this.map[normalizeName(name)] = [normalizeValue(value)] + } + + Headers.prototype.forEach = function(callback, thisArg) { + Object.getOwnPropertyNames(this.map).forEach(function(name) { + this.map[name].forEach(function(value) { + callback.call(thisArg, value, name, this) + }, this) + }, this) + } + + Headers.prototype.keys = function() { + var items = [] + this.forEach(function(value, name) { items.push(name) }) + return iteratorFor(items) + } + + Headers.prototype.values = function() { + var items = [] + this.forEach(function(value) { items.push(value) }) + return iteratorFor(items) + } + + Headers.prototype.entries = function() { + var items = [] + this.forEach(function(value, name) { items.push([name, value]) }) + return iteratorFor(items) + } + + if (support.iterable) { + Headers.prototype[Symbol.iterator] = Headers.prototype.entries + } + + function consumed(body) { + if (body.bodyUsed) { + return Promise.reject(new TypeError('Already read')) + } + body.bodyUsed = true + } + + function fileReaderReady(reader) { + return new Promise(function(resolve, reject) { + reader.onload = function() { + resolve(reader.result) + } + reader.onerror = function() { + reject(reader.error) + } + }) + } + + function readBlobAsArrayBuffer(blob) { + var reader = new FileReader() + reader.readAsArrayBuffer(blob) + return fileReaderReady(reader) + } + + function readBlobAsText(blob) { + var reader = new FileReader() + reader.readAsText(blob) + return fileReaderReady(reader) + } + + function Body() { + this.bodyUsed = false + + this._initBody = function(body) { + this._bodyInit = body + if (typeof body === 'string') { + this._bodyText = body + } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { + this._bodyBlob = body + } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { + this._bodyFormData = body + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this._bodyText = body.toString() + } else if (!body) { + this._bodyText = '' + } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) { + // Only support ArrayBuffers for POST method. + // Receiving ArrayBuffers happens via Blobs, instead. + } else { + throw new Error('unsupported BodyInit type') + } + + if (!this.headers.get('content-type')) { + if (typeof body === 'string') { + this.headers.set('content-type', 'text/plain;charset=UTF-8') + } else if (this._bodyBlob && this._bodyBlob.type) { + this.headers.set('content-type', this._bodyBlob.type) + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8') + } + } + } + + if (support.blob) { + this.blob = function() { + var rejected = consumed(this) + if (rejected) { + return rejected + } + + if (this._bodyBlob) { + return Promise.resolve(this._bodyBlob) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as blob') + } else { + return Promise.resolve(new Blob([this._bodyText])) + } + } + + this.arrayBuffer = function() { + return this.blob().then(readBlobAsArrayBuffer) + } + + this.text = function() { + var rejected = consumed(this) + if (rejected) { + return rejected + } + + if (this._bodyBlob) { + return readBlobAsText(this._bodyBlob) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as text') + } else { + return Promise.resolve(this._bodyText) + } + } + } else { + this.text = function() { + var rejected = consumed(this) + return rejected ? rejected : Promise.resolve(this._bodyText) + } + } + + if (support.formData) { + this.formData = function() { + return this.text().then(decode) + } + } + + this.json = function() { + return this.text().then(JSON.parse) + } + + return this + } + + // HTTP methods whose capitalization should be normalized + var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'] + + function normalizeMethod(method) { + var upcased = method.toUpperCase() + return (methods.indexOf(upcased) > -1) ? upcased : method + } + + function Request(input, options) { + options = options || {} + var body = options.body + if (Request.prototype.isPrototypeOf(input)) { + if (input.bodyUsed) { + throw new TypeError('Already read') + } + this.url = input.url + this.credentials = input.credentials + if (!options.headers) { + this.headers = new Headers(input.headers) + } + this.method = input.method + this.mode = input.mode + if (!body) { + body = input._bodyInit + input.bodyUsed = true + } + } else { + this.url = input + } + + this.credentials = options.credentials || this.credentials || 'omit' + if (options.headers || !this.headers) { + this.headers = new Headers(options.headers) + } + this.method = normalizeMethod(options.method || this.method || 'GET') + this.mode = options.mode || this.mode || null + this.referrer = null + + if ((this.method === 'GET' || this.method === 'HEAD') && body) { + throw new TypeError('Body not allowed for GET or HEAD requests') + } + this._initBody(body) + } + + Request.prototype.clone = function() { + return new Request(this) + } + + function decode(body) { + var form = new FormData() + body.trim().split('&').forEach(function(bytes) { + if (bytes) { + var split = bytes.split('=') + var name = split.shift().replace(/\+/g, ' ') + var value = split.join('=').replace(/\+/g, ' ') + form.append(decodeURIComponent(name), decodeURIComponent(value)) + } + }) + return form + } + + function headers(xhr) { + var head = new Headers() + var pairs = (xhr.getAllResponseHeaders() || '').trim().split('\n') + pairs.forEach(function(header) { + var split = header.trim().split(':') + var key = split.shift().trim() + var value = split.join(':').trim() + head.append(key, value) + }) + return head + } + + Body.call(Request.prototype) + + function Response(bodyInit, options) { + if (!options) { + options = {} + } + + this.type = 'default' + this.status = options.status + this.ok = this.status >= 200 && this.status < 300 + this.statusText = options.statusText + this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers) + this.url = options.url || '' + this._initBody(bodyInit) + } + + Body.call(Response.prototype) + + Response.prototype.clone = function() { + return new Response(this._bodyInit, { + status: this.status, + statusText: this.statusText, + headers: new Headers(this.headers), + url: this.url + }) + } + + Response.error = function() { + var response = new Response(null, {status: 0, statusText: ''}) + response.type = 'error' + return response + } + + var redirectStatuses = [301, 302, 303, 307, 308] + + Response.redirect = function(url, status) { + if (redirectStatuses.indexOf(status) === -1) { + throw new RangeError('Invalid status code') + } + + return new Response(null, {status: status, headers: {location: url}}) + } + + self.Headers = Headers + self.Request = Request + self.Response = Response + + self.fetch = function(input, init) { + return new Promise(function(resolve, reject) { + var request + if (Request.prototype.isPrototypeOf(input) && !init) { + request = input + } else { + request = new Request(input, init) + } + + var xhr = new XMLHttpRequest() + + function responseURL() { + if ('responseURL' in xhr) { + return xhr.responseURL + } + + // Avoid security warnings on getResponseHeader when not allowed by CORS + if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) { + return xhr.getResponseHeader('X-Request-URL') + } + + return + } + + xhr.onload = function() { + var options = { + status: xhr.status, + statusText: xhr.statusText, + headers: headers(xhr), + url: responseURL() + } + var body = 'response' in xhr ? xhr.response : xhr.responseText + resolve(new Response(body, options)) + } + + xhr.onerror = function() { + reject(new TypeError('Network request failed')) + } + + xhr.ontimeout = function() { + reject(new TypeError('Network request failed')) + } + + xhr.open(request.method, request.url, true) + + if (request.credentials === 'include') { + xhr.withCredentials = true + } + + if ('responseType' in xhr && support.blob) { + xhr.responseType = 'blob' + } + + request.headers.forEach(function(value, name) { + xhr.setRequestHeader(name, value) + }) + + xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit) + }) + } + self.fetch.polyfill = true +})(typeof self !== 'undefined' ? self : this); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/util/testmediasource.js b/tests/wpt/web-platform-tests/encrypted-media/util/testmediasource.js new file mode 100644 index 00000000000..62c2d577d3c --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/util/testmediasource.js @@ -0,0 +1,43 @@ +function testmediasource(config) { + + return new Promise(function(resolve, reject) { + // Fetch the media resources + var fetches = [config.audioPath, config.videoPath].map(function(path) { + return fetch(path).then(function(response) { + if (!response.ok) throw new Error('Resource fetch failed'); + return response.arrayBuffer(); + }); + }); + + Promise.all(fetches).then(function(resources) { + config.audioMedia = resources[0]; + config.videoMedia = resources[1]; + + // Create media source + var source = new MediaSource(); + + // Create and fill source buffers when the media source is opened + source.addEventListener('sourceopen', onSourceOpen); + + function onSourceOpen(event) { + var audioSourceBuffer = source.addSourceBuffer(config.audioType), + videoSourceBuffer = source.addSourceBuffer(config.videoType); + + audioSourceBuffer.appendBuffer(config.audioMedia); + videoSourceBuffer.appendBuffer(config.videoMedia); + + function endOfStream() { + if (audioSourceBuffer.updating || videoSourceBuffer.updating) { + setTimeout(endOfStream, 250); + } else { + source.endOfStream(); + } + } + + endOfStream(); + } + + resolve(source); + }); + }); +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/util/utf8.js b/tests/wpt/web-platform-tests/encrypted-media/util/utf8.js new file mode 100644 index 00000000000..5b11760137c --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/util/utf8.js @@ -0,0 +1,22 @@ +if ( typeof TextEncoder !== "undefined" && typeof TextDecoder !== "undefined" ) +{ + utf8encoder = new TextEncoder('utf-8'); + utf8decoder = new TextDecoder('utf-8'); +} +else +{ + utf8encoder = { encode: function( text ) + { + var result = new Uint8Array(text.length); + for(var i = 0; i < text.length; i++) { result[i] = text.charCodeAt(i); } + return result; + } }; + + utf8decoder = { decode: function( buffer ) + { + return String.fromCharCode.apply(null, new Uint8Array(buffer)); + } }; +} + +toUtf8 = function( o ) { return utf8encoder.encode( JSON.stringify( o ) ); } +fromUtf8 = function( t ) { return JSON.parse( utf8decoder.decode( t ) ); } \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/util/utils.js b/tests/wpt/web-platform-tests/encrypted-media/util/utils.js new file mode 100644 index 00000000000..dbd77502097 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/util/utils.js @@ -0,0 +1,228 @@ +function testnamePrefix( qualifier, keysystem ) { + return ( qualifier || '' ) + ( keysystem === 'org.w3.clearkey' ? keysystem : 'drm' ); +} + +function getInitData(initDataType) { + + // FIXME: This is messed up, because here we are hard coding the key ids for the different content + // that we use for clearkey testing: webm and mp4. For keyids we return the mp4 one + // + // The content used with the DRM today servers has a different key id altogether + + if (initDataType == 'webm') { + return new Uint8Array([ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F + ]); + } + + if (initDataType == 'cenc') { + return new Uint8Array([ + 0x00, 0x00, 0x00, 0x34, // size + 0x70, 0x73, 0x73, 0x68, // 'pssh' + 0x01, // version = 1 + 0x00, 0x00, 0x00, // flags + 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID + 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, + 0x00, 0x00, 0x00, 0x01, // key count + 0x00, 0x00, 0x00, 0x00, 0x03, 0xd2, 0xfc, 0x41, // key id + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 // datasize + ]); + } + if (initDataType == 'keyids') { + var keyId = new Uint8Array([ + 0x00, 0x00, 0x00, 0x00, 0x03, 0xd2, 0xfc, 0x41, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + ]); + return stringToUint8Array(createKeyIDs(keyId)); + } + throw 'initDataType ' + initDataType + ' not supported.'; +} + +function stringToUint8Array(str) +{ + var result = new Uint8Array(str.length); + for(var i = 0; i < str.length; i++) { + result[i] = str.charCodeAt(i); + } + return result; +} +// Encodes |data| into base64url string. There is no '=' padding, and the +// characters '-' and '_' must be used instead of '+' and '/', respectively. +function base64urlEncode(data) { + var result = btoa(String.fromCharCode.apply(null, data)); + return result.replace(/=+$/g, '').replace(/\+/g, "-").replace(/\//g, "_"); +} +// Decode |encoded| using base64url decoding. +function base64urlDecode(encoded) { + return atob(encoded.replace(/\-/g, "+").replace(/\_/g, "/")); +} +// Decode |encoded| using base64 to a Uint8Array +function base64DecodeToUnit8Array(encoded) { + return new Uint8Array( atob( encoded ).split('').map( function(c){return c.charCodeAt(0);} ) ); +} +// Clear Key can also support Key IDs Initialization Data. +// ref: http://w3c.github.io/encrypted-media/keyids-format.html +// Each parameter is expected to be a key id in an Uint8Array. +function createKeyIDs() { + var keyIds = '{"kids":["'; + for (var i = 0; i < arguments.length; i++) { + if (i != 0) keyIds += '","'; + keyIds += base64urlEncode(arguments[i]); + } + keyIds += '"]}'; + return keyIds; +} + +function getSupportedKeySystem() { + var userAgent = navigator.userAgent.toLowerCase(); + var keysystem = undefined; + if (userAgent.indexOf('edge') > -1 ) { + keysystem = 'com.microsoft.playready'; + } else if ( userAgent.indexOf('chrome') > -1 || userAgent.indexOf('firefox') > -1 ) { + keysystem = 'com.widevine.alpha'; + } + return keysystem; +} + +function waitForEventAndRunStep(eventName, element, func, stepTest) +{ + var eventCallback = function(event) { + if (func) + func(event); + } + + element.addEventListener(eventName, stepTest.step_func(eventCallback), true); +} + +var consoleDiv = null; + +function consoleWrite(text) +{ + if (!consoleDiv && document.body) { + consoleDiv = document.createElement('div'); + document.body.appendChild(consoleDiv); + } + var span = document.createElement('span'); + span.appendChild(document.createTextNode(text)); + span.appendChild(document.createElement('br')); + consoleDiv.appendChild(span); +} + +function forceTestFailureFromPromise(test, error, message) +{ + // Promises convert exceptions into rejected Promises. Since there is + // currently no way to report a failed test in the test harness, errors + // are reported using force_timeout(). + if (message) + consoleWrite(message + ': ' + error.message); + else if (error) + consoleWrite(error); + + test.force_timeout(); + test.done(); +} + +// Returns an array of audioCapabilities that includes entries for a set of +// codecs that should cover all user agents. +function getPossibleAudioCapabilities() +{ + return [ + { contentType: 'audio/mp4; codecs="mp4a.40.2"' }, + { contentType: 'audio/webm; codecs="opus"' }, + ]; +} + +// Returns a trivial MediaKeySystemConfiguration that should be accepted, +// possibly as a subset of the specified capabilities, by all user agents. +function getSimpleConfiguration() +{ + return [ { + initDataTypes : [ 'webm', 'cenc', 'keyids' ], + audioCapabilities: getPossibleAudioCapabilities() + } ]; +} + +// Returns a MediaKeySystemConfiguration for |initDataType| that should be +// accepted, possibly as a subset of the specified capabilities, by all +// user agents. +function getSimpleConfigurationForInitDataType(initDataType) +{ + return [ { + initDataTypes: [ initDataType ], + audioCapabilities: getPossibleAudioCapabilities() + } ]; +} + +// Returns a promise that is fulfilled with true if |initDataType| is supported, +// by keysystem or false if not. +function isInitDataTypeSupported(keysystem,initDataType) +{ + return navigator.requestMediaKeySystemAccess( + keysystem, getSimpleConfigurationForInitDataType(initDataType)) + .then(function() { return true; }, function() { return false; }); +} + +function getSupportedInitDataTypes( keysystem ) +{ + return [ 'cenc', 'keyids', 'webm' ].filter( isInitDataTypeSupported.bind( null, keysystem ) ); +} + +function arrayBufferAsString(buffer) +{ + var array = []; + Array.prototype.push.apply( array, new Uint8Array( buffer ) ); + return '0x' + array.map( function( x ) { return x < 16 ? '0'+x.toString(16) : x.toString(16); } ).join(''); +} + +function dumpKeyStatuses(keyStatuses) +{ + consoleWrite("for (var entry of keyStatuses)"); + for (var entry of keyStatuses) { + consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]); + } + consoleWrite("for (var keyId of keyStatuses.keys())"); + for (var keyId of keyStatuses.keys()) { + consoleWrite(arrayBufferAsString(keyId)); + } + consoleWrite("for (var status of keyStatuses.values())"); + for (var status of keyStatuses.values()) { + consoleWrite(status); + } + consoleWrite("for (var entry of keyStatuses.entries())"); + for (var entry of keyStatuses.entries()) { + consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]); + } + consoleWrite("keyStatuses.forEach()"); + keyStatuses.forEach(function(status, keyId) { + consoleWrite(arrayBufferAsString(keyId) + ": " + status); + }); +} + +// Verify that |keyStatuses| contains just the keys in |keys.expected| +// and none of the keys in |keys.unexpected|. All keys should have status +// 'usable'. Example call: verifyKeyStatuses(mediaKeySession.keyStatuses, +// { expected: [key1], unexpected: [key2] }); +function verifyKeyStatuses(keyStatuses, keys) +{ + var expected = keys.expected || []; + var unexpected = keys.unexpected || []; + + // |keyStatuses| should have same size as number of |keys.expected|. + assert_equals(keyStatuses.size, expected.length, "keystatuses should have expected size"); + + // All |keys.expected| should be found. + expected.map(function(key) { + assert_true(keyStatuses.has(key), "keystatuses should have the expected keys"); + assert_equals(keyStatuses.get(key), 'usable', "keystatus value should be 'usable'"); + }); + + // All |keys.unexpected| should not be found. + unexpected.map(function(key) { + assert_false(keyStatuses.has(key), "keystatuses should not have unexpected keys"); + assert_equals(keyStatuses.get(key), undefined, "keystatus for unexpected key should be undefined"); + }); +} + + diff --git a/tests/wpt/web-platform-tests/eventsource/resources/cors.py b/tests/wpt/web-platform-tests/eventsource/resources/cors.py index 8be80523603..d01596c8366 100644 --- a/tests/wpt/web-platform-tests/eventsource/resources/cors.py +++ b/tests/wpt/web-platform-tests/eventsource/resources/cors.py @@ -22,7 +22,7 @@ def main(request, response): "cache-control"]: if handler == "cache-control": response.headers.set("Content-Type", "text/event-stream") - rv = open(os.path.join(request.doc_root, "eventsource", "resources", "cache-control.event_stream")).read() + rv = open(os.path.join(request.doc_root, "eventsource", "resources", "cache-control.event_stream"), "r").read() response.content = rv pipes.sub(request, response) return diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html b/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html index 0c62472aaf1..cc39af3cb75 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html @@ -11,7 +11,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin.html b/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin.html index d94832a2aa0..550053f30cc 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin.html +++ b/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin.html @@ -11,6 +11,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin.js b/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin.js index c00d96fad32..6418b22f5d2 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/mode-same-origin.js @@ -1,6 +1,7 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js") } function fetchSameOrigin(url, shouldPass) { @@ -15,10 +16,19 @@ function fetchSameOrigin(url, shouldPass) { }, "Fetch "+ url + " with same-origin mode"); } +var host_info = get_host_info(); + fetchSameOrigin(RESOURCES_DIR + "top.txt", true); -fetchSameOrigin("http://{{host}}:{{ports[http][0]}}/fetch/api/resources/top.txt", true); -fetchSameOrigin("https://{{host}}:{{ports[https][0]}}/fetch/api/resources/top.txt", false); -fetchSameOrigin("http://{{domains[www]}}:{{ports[http][0]}}/fetch/api/resources/top.txt", false); +fetchSameOrigin(host_info.HTTP_ORIGIN + "/fetch/api/resources/top.txt", true); +fetchSameOrigin(host_info.HTTPS_ORIGIN + "/fetch/api/resources/top.txt", false); +fetchSameOrigin(host_info.HTTP_REMOTE_ORIGIN + "/fetch/api/resources/top.txt", false); + +var redirPath = dirname(location.pathname) + RESOURCES_DIR + "redirect.py?location="; + +fetchSameOrigin(redirPath + RESOURCES_DIR + "top.txt", true); +fetchSameOrigin(redirPath + host_info.HTTP_ORIGIN + "/fetch/api/resources/top.txt", true); +fetchSameOrigin(redirPath + host_info.HTTPS_ORIGIN + "/fetch/api/resources/top.txt", false); +fetchSameOrigin(redirPath + host_info.HTTP_REMOTE_ORIGIN + "/fetch/api/resources/top.txt", false); done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/referrer-worker.html b/tests/wpt/web-platform-tests/fetch/api/basic/referrer-worker.html new file mode 100644 index 00000000000..4b397de437d --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/referrer-worker.html @@ -0,0 +1,17 @@ + + + + + Fetch in worker: same-origin mode + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/referrer.html b/tests/wpt/web-platform-tests/fetch/api/basic/referrer.html new file mode 100644 index 00000000000..1af3f75ba0f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/referrer.html @@ -0,0 +1,17 @@ + + + + + Fetch: same-origin mode + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/referrer.js b/tests/wpt/web-platform-tests/fetch/api/basic/referrer.js new file mode 100644 index 00000000000..84cf980c709 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/referrer.js @@ -0,0 +1,35 @@ +if (this.document === undefined) { + importScripts("/resources/testharness.js"); + importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js") +} + +function runTest(url, init, expectedReferrer, title) { + promise_test(function(test) { + url += (url.indexOf('?') !== -1 ? '&' : '?') + "headers=referer&cors"; + + return fetch(url , init).then(function(resp) { + assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.headers.get("x-request-referer"), expectedReferrer, "Request's referrer is correct"); + }); + }, title); +} + +var fetchedUrl = RESOURCES_DIR + "inspect-headers.py"; +var corsFetchedUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py"; +var redirectUrl = RESOURCES_DIR + "redirect.py?location=" ; +var corsRedirectUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "redirect.py?location="; + +runTest(fetchedUrl, { referrerPolicy: "origin-when-cross-origin"}, location.toString(), "origin-when-cross-origin policy on a same-origin URL"); +runTest(corsFetchedUrl, { referrerPolicy: "origin-when-cross-origin"}, get_host_info().HTTP_ORIGIN + "/", "origin-when-cross-origin policy on a cross-origin URL"); +runTest(redirectUrl + corsFetchedUrl, { referrerPolicy: "origin-when-cross-origin"}, get_host_info().HTTP_ORIGIN + "/", "origin-when-cross-origin policy on a cross-origin URL after same-origin redirection"); +runTest(corsRedirectUrl + fetchedUrl, { referrerPolicy: "origin-when-cross-origin"}, get_host_info().HTTP_ORIGIN + "/", "origin-when-cross-origin policy on a same-origin URL after cross-origin redirection"); + + +var referrerUrlWithCredentials = get_host_info().HTTP_ORIGIN.replace("http://", "http://username:password@"); +runTest(fetchedUrl, {referrer: referrerUrlWithCredentials}, get_host_info().HTTP_ORIGIN + "/", "Referrer with credentials should be stripped"); +var referrerUrlWithFragmentIdentifier = get_host_info().HTTP_ORIGIN + "#fragmentIdentifier"; +runTest(fetchedUrl, {referrer: referrerUrlWithFragmentIdentifier}, get_host_info().HTTP_ORIGIN + "/", "Referrer with fragment ID should be stripped"); + +done(); + diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-head-worker.html b/tests/wpt/web-platform-tests/fetch/api/basic/request-head-worker.html new file mode 100644 index 00000000000..3be7c99addb --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-head-worker.html @@ -0,0 +1,14 @@ + + + + + Fetch in worker: HEAD method + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-head.html b/tests/wpt/web-platform-tests/fetch/api/basic/request-head.html new file mode 100644 index 00000000000..a9d8bef1f03 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-head.html @@ -0,0 +1,12 @@ + + + + + Fetch: HEAD method + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-head.js b/tests/wpt/web-platform-tests/fetch/api/basic/request-head.js new file mode 100644 index 00000000000..f0d6b74f8d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-head.js @@ -0,0 +1,10 @@ +if (this.document === undefined) { + importScripts("/resources/testharness.js"); +} + +promise_test(function(test) { + var requestInit = {"method": "HEAD", "body": "test"}; + return promise_rejects(test, new TypeError(), fetch(".", requestInit)); +}, "Fetch with HEAD with body"); + +done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-headers.js b/tests/wpt/web-platform-tests/fetch/api/basic/request-headers.js index ec14385b606..4c78ff0dc1c 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/request-headers.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-headers.js @@ -3,19 +3,39 @@ if (this.document === undefined) { importScripts("../resources/utils.js"); } +function checkContentType(contentType, body) +{ + if (self.FormData && body instanceof self.FormData) { + assert_true(contentType.startsWith("multipart/form-data;boundary="), "Request should have header content-type starting with multipart/form-data;boundary=, but got " + contentType); + return; + } + + var expectedContentType = "text/plain;charset=UTF-8"; + if(body === null || body instanceof ArrayBuffer || body.buffer instanceof ArrayBuffer) + expectedContentType = null; + else if (body instanceof Blob) + expectedContentType = body.type ? body.type : null; + + assert_equals(contentType , expectedContentType, "Request should have header content-type: " + expectedContentType); +} + function requestHeaders(desc, url, method, body, expectedOrigin, expectedContentLength) { - var urlParameters = "?headers=origin|user-agent|accept-charset|content-length"; + var urlParameters = "?headers=origin|user-agent|accept-charset|content-length|content-type"; var requestInit = {"method": method} - if (body) - requestInit["body"] = body; promise_test(function(test){ + if (typeof body === "function") + body = body(); + if (body) + requestInit["body"] = body; 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"); - assert_equals(resp.headers.get("x-request-origin") , expectedOrigin, "Request has header origin: " + expectedOrigin); - assert_equals(resp.headers.get("x-request-content-length") , expectedContentLength, "Request has header content-length: " + expectedContentLength); assert_true(resp.headers.has("x-request-user-agent"), "Request has header user-agent"); assert_false(resp.headers.has("accept-charset"), "Request has header accept-charset"); + assert_equals(resp.headers.get("x-request-origin") , expectedOrigin, "Request should have header origin: " + expectedOrigin); + if (expectedContentLength !== undefined) + assert_equals(resp.headers.get("x-request-content-length") , expectedContentLength, "Request should have header content-length: " + expectedContentLength); + checkContentType(resp.headers.get("x-request-content-type"), body); }); }, desc); } @@ -23,12 +43,20 @@ function requestHeaders(desc, url, method, body, expectedOrigin, expectedContent var url = RESOURCES_DIR + "inspect-headers.py" requestHeaders("Fetch with GET", url, "GET", null, location.origin, null); -requestHeaders("Fetch with HEAD", url, "HEAD", null, location.origin, "0"); -requestHeaders("Fetch with HEAD with body", url, "HEAD", "Request's body", location.origin, "14"); +requestHeaders("Fetch with HEAD", url, "HEAD", null, location.origin, null); requestHeaders("Fetch with PUT without body", url, "POST", null, location.origin, "0"); requestHeaders("Fetch with PUT with body", url, "PUT", "Request's body", location.origin, "14"); requestHeaders("Fetch with POST without body", url, "POST", null, location.origin, "0"); -requestHeaders("Fetch with POST with body", url, "POST", "Request's body", location.origin, "14"); +requestHeaders("Fetch with POST with text body", url, "POST", "Request's body", location.origin, "14"); +requestHeaders("Fetch with POST with FormData body", url, "POST", function() { return new FormData(); }, location.origin); +requestHeaders("Fetch with POST with Blob body", url, "POST", new Blob(["Test"]), location.origin, "4"); +requestHeaders("Fetch with POST with ArrayBuffer body", url, "POST", new ArrayBuffer(4), location.origin, "4"); +requestHeaders("Fetch with POST with Uint8Array body", url, "POST", new Uint8Array(4), location.origin, "4"); +requestHeaders("Fetch with POST with Int8Array body", url, "POST", new Int8Array(4), location.origin, "4"); +requestHeaders("Fetch with POST with Float32Array body", url, "POST", new Float32Array(1), location.origin, "4"); +requestHeaders("Fetch with POST with Float64Array body", url, "POST", new Float64Array(1), location.origin, "8"); +requestHeaders("Fetch with POST with DataView body", url, "POST", new DataView(new ArrayBuffer(8), 0, 4), location.origin, "4"); +requestHeaders("Fetch with POST with Blob body with mime type", url, "POST", new Blob(["Test"], { type: "text/maybe" }), location.origin, "4"); requestHeaders("Fetch with Chicken", url, "Chicken", null, location.origin, null); requestHeaders("Fetch with Chicken with body", url, "Chicken", "Request's body", location.origin, "14"); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-referrer.html b/tests/wpt/web-platform-tests/fetch/api/basic/request-referrer.html new file mode 100644 index 00000000000..dd895617b7f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-referrer.html @@ -0,0 +1,13 @@ + + + + + Fetch: fetch() respects Request referrer value + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-referrer.js b/tests/wpt/web-platform-tests/fetch/api/basic/request-referrer.js new file mode 100644 index 00000000000..cc5cc8e01d4 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-referrer.js @@ -0,0 +1,28 @@ +if (this.document === undefined) { + importScripts("/resources/testharness.js"); + importScripts("../resources/utils.js"); +} + +function testReferrer(referrer, expected) { + promise_test(function(test) { + var url = RESOURCES_DIR + "inspect-headers.py?headers=referer" + var req = new Request(url, { referrer: referrer }); + return fetch(req).then(function(resp) { + var actual = resp.headers.get("x-request-referer"); + if (expected) { + assert_equals(actual, expected, "request's referer should be: " + expected); + return; + } + if (actual) { + assert_equals(actual, "", "request's referer should be empty"); + } + }); + }); +} + +testReferrer("about:client", window.location.href); + +var fooURL = new URL("./foo", window.location).href; +testReferrer(fooURL, fooURL); + +done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.js b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.js index 5f3e7cfd5c5..ddf711bf0a1 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.js @@ -3,27 +3,25 @@ if (this.document === undefined) { importScripts("../resources/utils.js"); } -var unicorn = ''; - -function checkFetchResponse(url, data, mime, desc) { +function checkFetchResponse(url, method, desc) { if (!desc) { - var cut = (url.length >= 45) ? "[...]" : ""; - desc = "Fetching " + url.substring(0, 45) + cut + " is OK" + var cut = (url.length >= 40) ? "[...]" : ""; + cut += " (" + method + ")" + desc = "Fetching " + url.substring(0, 40) + cut + " is OK" } promise_test(function(test) { - return fetch(url).then(function(resp) { + return fetch(url, { method: method }).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"), mime, "Content-Type is " + resp.headers.get("Content-Type")); + assert_equals(resp.headers.get("Content-Type"), "text/html;charset=utf-8", "Content-Type is " + resp.headers.get("Content-Type")); return resp.text(); - }).then(function(bodyAsText) { - assert_equals(bodyAsText, data, "Response's body is " + data); }) }, desc); } -checkFetchResponse("about:blank", "", "text/html;charset=utf-8"); -checkFetchResponse("about:unicorn", unicorn, "image/svg+xml"); +checkFetchResponse("about:blank", "GET"); +checkFetchResponse("about:blank", "PUT"); +checkFetchResponse("about:blank", "POST"); function checkKoUrl(url, desc) { if (!desc) @@ -36,5 +34,6 @@ function checkKoUrl(url, desc) { checkKoUrl("about:invalid.com"); checkKoUrl("about:config"); +checkKoUrl("about:unicorn"); done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-data.js b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-data.js index 775466799cd..e7904d04751 100644 --- a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-data.js +++ b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-data.js @@ -3,12 +3,18 @@ if (this.document === undefined) { importScripts("../resources/utils.js"); } -function checkFetchResponse(url, data, mime) { +function checkFetchResponse(url, data, mime, fetchMode) { var cut = (url.length >= 40) ? "[...]" : ""; - desc = "Fetching " + url.substring(0, 40) + cut + " is OK" + desc = "Fetching " + url.substring(0, 40) + cut + " is OK"; + var init = { }; + if (fetchMode) { + init.mode = fetchMode; + desc += " (" + fetchMode + ")"; + } promise_test(function(test) { - return fetch(url).then(function(resp) { + return fetch(url, init).then(function(resp) { assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.statusText, "OK", "HTTP statusText is OK"); assert_equals(resp.type, "basic", "response type is basic"); assert_equals(resp.headers.get("Content-Type"), mime, "Content-Type is " + resp.headers.get("Content-Type")); return resp.text(); @@ -19,6 +25,8 @@ function checkFetchResponse(url, data, mime) { } checkFetchResponse("data:,response%27s%20body", "response's body", "text/plain;charset=US-ASCII"); +checkFetchResponse("data:,response%27s%20body", "response's body", "text/plain;charset=US-ASCII", "same-origin"); +checkFetchResponse("data:,response%27s%20body", "response's body", "text/plain;charset=US-ASCII", "cors"); checkFetchResponse("data:text/plain;base64,cmVzcG9uc2UncyBib2R5", "response's body", "text/plain"); checkFetchResponse("data:image/png;base64,cmVzcG9uc2UncyBib2R5", "response's body", diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/text-utf8.html b/tests/wpt/web-platform-tests/fetch/api/basic/text-utf8.html new file mode 100644 index 00000000000..7499a474a85 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/text-utf8.html @@ -0,0 +1,69 @@ + + +Fetch: Request and Response text() should decode as UTF-8 + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic-worker.html index 97e173c1522..2373bf710b5 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic-worker.html @@ -13,7 +13,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic.html index 4aa38f75b85..feddf59d0a2 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic.html @@ -13,6 +13,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic.js index 8ee783f610a..354d8aaa97c 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-basic.js @@ -1,17 +1,11 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js"); } -function cors(desc, scheme, subdomain, port) { - if (!port) - port = location.port; - if (subdomain) - subdomain = subdomain + "."; - else - subdomain = ""; - - var url = scheme + "://" + subdomain + "{{host}}" + ":" + port + dirname(location.pathname); +function cors(desc, origin) { + var url = origin + dirname(location.pathname); var urlParameters = "?pipe=header(Access-Control-Allow-Origin,*)"; promise_test(function(test) { @@ -19,13 +13,14 @@ function cors(desc, scheme, subdomain, port) { assert_equals(resp.status, 0, "Opaque filter: status is 0"); assert_equals(resp.statusText, "", "Opaque filter: statusText is \"\""); assert_equals(resp.type , "opaque", "Opaque filter: response's type is opaque"); + return resp.text().then(function(value) { + assert_equals(value, "", "Opaque response should have an empty body"); + }); }); }, desc + " [no-cors mode]"); promise_test(function(test) { - var testedPromise = fetch(url + RESOURCES_DIR + "top.txt", {"mode": "cors"} ).then(function(resp) { - return promise_rejects(test, new TypeError(), testedPromise); - }); + return promise_rejects(test, new TypeError(), fetch(url + RESOURCES_DIR + "top.txt", {"mode": "cors"})); }, desc + " [server forbid CORS]"); promise_test(function(test) { @@ -36,10 +31,12 @@ function cors(desc, scheme, subdomain, port) { }, desc + " [cors mode]"); } -cors("Same domain different port", "http", undefined, "{{ports[http][1]}}"); -cors("Same domain different protocol different port", "https", undefined, "{{ports[https][0]}}"); -cors("Cross domain basic usage", "http", "www1"); -cors("Cross domain different port", "http", "www1", "{{ports[http][1]}}"); -cors("Cross domain different protocol", "https", "www1", "{{ports[https][0]}}"); +var host_info = get_host_info(); + +cors("Same domain different port", host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT); +cors("Same domain different protocol different port", host_info.HTTPS_ORIGIN); +cors("Cross domain basic usage", host_info.HTTP_REMOTE_ORIGIN); +cors("Cross domain different port", host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT); +cors("Cross domain different protocol", host_info.HTTPS_REMOTE_ORIGIN); done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies-worker.html index fd79aad8f05..c0738e571d7 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies-worker.html @@ -12,7 +12,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies.html index 8fb6a7c0cd7..d9fa2e3eeb0 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies.html @@ -12,6 +12,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies.js index 64bc2cc32f4..6c8aa8df289 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-cookies.js @@ -1,11 +1,12 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js") } -function corsCookies(desc, domain1, domain2, credentialsMode, cookies) { - var urlSetCookie = "http://" + domain1 + ":{{ports[http][0]}}" + dirname(location.pathname) + RESOURCES_DIR + "top.txt"; - var urlCheckCookies = "http://" + domain2 + ":{{ports[http][0]}}" + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=cookie"; +function corsCookies(desc, baseURL1, baseURL2, credentialsMode, cookies) { + var urlSetCookie = baseURL1 + dirname(location.pathname) + RESOURCES_DIR + "top.txt"; + var urlCheckCookies = baseURL2 + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=cookie"; //enable cors with credentials var urlParameters = "?pipe=header(Access-Control-Allow-Origin," + location.origin + ")"; urlParameters += "|header(Access-Control-Allow-Credentials,true)"; @@ -29,7 +30,7 @@ function corsCookies(desc, domain1, domain2, credentialsMode, cookies) { }).then(function(resp) { assert_equals(resp.status, 200, "HTTP status is 200"); assert_false(resp.headers.has("Cookie") , "Cookie header is not exposed in response"); - if (credentialsMode === "include" && domain1 === domain2) { + if (credentialsMode === "include" && baseURL1 === baseURL2) { assert_equals(resp.headers.get("x-request-cookie") , cookies.join("; "), "Request includes cookie(s)"); } else { @@ -38,21 +39,23 @@ function corsCookies(desc, domain1, domain2, credentialsMode, cookies) { //clean cookies return fetch(urlSetCookie + urlCleanParameters, {"credentials": "include"}); }).catch(function(e) { - fetch(urlSetCookie + urlCleanParameters, {"credentials": "include"}); - throw e; + return fetch(urlSetCookie + urlCleanParameters, {"credentials": "include"}).then(function(resp) { + throw e; + }) }); }, desc); } -var local = "{{host}}"; -var remote = "www.{{host}}"; -var remote1 = "www1.{{host}}"; +var local = get_host_info().HTTP_ORIGIN; +var remote = get_host_info().HTTP_REMOTE_ORIGIN; +// FIXME: otherRemote might not be accessible on some test environments. +var otherRemote = local.replace("http://", "http://www."); corsCookies("Omit mode: no cookie sent", local, local, "omit", ["g=7"]); corsCookies("Include mode: 1 cookie", remote, remote, "include", ["a=1"]); corsCookies("Include mode: local cookies are not sent with remote request", local, remote, "include", ["c=3"]); corsCookies("Include mode: remote cookies are not sent with local request", remote, local, "include", ["d=4"]); -corsCookies("Include mode: remote cookies are not sent with other remote request", remote, remote1, "include", ["e=5"]); corsCookies("Same-origin mode: cookies are discarded in cors request", remote, remote, "same-origin", ["f=6"]); +corsCookies("Include mode: remote cookies are not sent with other remote request", remote, otherRemote, "include", ["e=5"]); done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html index c6402ada093..b65a73e0700 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html @@ -14,7 +14,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight.html index 3ff5c97eac6..5426d5adbd5 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight.html @@ -15,6 +15,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight.js index 8d932cc38bc..f2f3e200ea7 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-no-preflight.js @@ -1,26 +1,21 @@ if (this.document === undefined) { - importScripts("/resources/testharness.js"); importScripts("/common/utils.js"); + importScripts("/resources/testharness.js"); importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js") } -function corsNoPreflight(desc, scheme, subdomain, port, method, headerName, headerValue) { - if (!port) - port = location.port; - if (subdomain) - subdomain = subdomain + "."; - else - subdomain = ""; +function corsNoPreflight(desc, baseURL, method, headerName, headerValue) { var uuid_token = token(); - var url = scheme + "://" + subdomain + "{{host}}" + ":" + port + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; + var url = baseURL + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; var urlParameters = "?token=" + uuid_token + "&max_age=0"; var requestInit = {"mode": "cors", "method": method, "headers":{}}; if (headerName) requestInit["headers"][headerName] = headerValue; promise_test(function(test) { - fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { assert_equals(resp.status, 200, "Clean stash response's status is 200"); return fetch(url + urlParameters, requestInit).then(function(resp) { assert_equals(resp.status, 200, "Response's status is 200"); @@ -29,22 +24,23 @@ function corsNoPreflight(desc, scheme, subdomain, port, method, headerName, head }); }, desc); } -var port2 = "{{ports[http][1]}}"; -var httpsPort = "{{ports[https][0]}}"; -corsNoPreflight("Cross domain basic usage [GET]", "http", "www1", undefined, "GET"); -corsNoPreflight("Same domain different port [GET]", "http", undefined, port2, "GET"); -corsNoPreflight("Cross domain different port [GET]", "http", "www1", port2, "GET"); -corsNoPreflight("Cross domain different protocol [GET]", "https", "www1", httpsPort, "GET"); -corsNoPreflight("Same domain different protocol different port [GET]", "https", undefined, httpsPort, "GET"); -corsNoPreflight("Cross domain [POST]", "http", "www1", undefined, "POST"); -corsNoPreflight("Cross domain [HEAD]", "http", "www1", undefined, "HEAD"); -corsNoPreflight("Cross domain [GET] [Accept: */*]", "http", "www1", undefined, "GET" , "Accept", "*/*"); -corsNoPreflight("Cross domain [GET] [Accept-Language: fr]", "http", "www1", undefined, "GET" , "Accept-Language", "fr"); -corsNoPreflight("Cross domain [GET] [Content-Language: fr]", "http", "www1", undefined, "GET" , "Content-Language", "fr"); -corsNoPreflight("Cross domain [GET] [Content-Type: application/x-www-form-urlencoded]", "http", "www1", undefined, "GET" , "Content-Type", "application/x-www-form-urlencoded"); -corsNoPreflight("Cross domain [GET] [Content-Type: multipart/form-data]", "http", "www1", undefined, "GET" , "Content-Type", "multipart/form-data"); -corsNoPreflight("Cross domain [GET] [Content-Type: text/plain]", "http", "www1", undefined, "GET" , "Content-Type", "text/plain"); -corsNoPreflight("Cross domain [GET] [Content-Type: text/plain;charset=utf-8]", "http", "www1", undefined, "GET" , "Content-Type", "text/plain;charset=utf-8"); +var host_info = get_host_info(); + +corsNoPreflight("Cross domain basic usage [GET]", host_info.HTTP_REMOTE_ORIGIN, "GET"); +corsNoPreflight("Same domain different port [GET]", host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, "GET"); +corsNoPreflight("Cross domain different port [GET]", host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, "GET"); +corsNoPreflight("Cross domain different protocol [GET]", host_info.HTTPS_REMOTE_ORIGIN, "GET"); +corsNoPreflight("Same domain different protocol different port [GET]", host_info.HTTPS_ORIGIN, "GET"); +corsNoPreflight("Cross domain [POST]", host_info.HTTP_REMOTE_ORIGIN, "POST"); +corsNoPreflight("Cross domain [HEAD]", host_info.HTTP_REMOTE_ORIGIN, "HEAD"); +corsNoPreflight("Cross domain [GET] [Accept: */*]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Accept", "*/*"); +corsNoPreflight("Cross domain [GET] [Accept-Language: fr]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Accept-Language", "fr"); +corsNoPreflight("Cross domain [GET] [Content-Language: fr]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Language", "fr"); +corsNoPreflight("Cross domain [GET] [Content-Type: application/x-www-form-urlencoded]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Type", "application/x-www-form-urlencoded"); +corsNoPreflight("Cross domain [GET] [Content-Type: multipart/form-data]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Type", "multipart/form-data"); +corsNoPreflight("Cross domain [GET] [Content-Type: text/plain]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Type", "text/plain"); +corsNoPreflight("Cross domain [GET] [Content-Type: text/plain;charset=utf-8]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Type", "text/plain;charset=utf-8"); +corsNoPreflight("Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8]", host_info.HTTP_REMOTE_ORIGIN, "GET" , "Content-Type", "Text/Plain;charset=utf-8"); done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin-worker.html index f6145e6e3e1..e59a0b0bdec 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin-worker.html @@ -13,7 +13,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin.html index de7a0552acc..87f0dff8152 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin.html @@ -14,6 +14,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin.js index 36052742a5f..c3601eeab1b 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-origin.js @@ -1,27 +1,22 @@ if (this.document === undefined) { + importScripts("/common/utils.js"); importScripts("/resources/testharness.js"); importScripts("../resources/utils.js"); - importScripts("/common/utils.js"); + importScripts("/common/get-host-info.sub.js") } /* If origin is undefined, it is set to fetched url's origin*/ -function corsOrigin(desc, scheme, subdomain, port, method, origin, shouldPass) { - if (!port) - port = location.port; - if (subdomain) - subdomain = subdomain + "."; - else - subdomain = ""; +function corsOrigin(desc, baseURL, method, origin, shouldPass) { if (!origin) - origin = scheme + "://" + subdomain + "{{host}}" + ":" + port; + origin = baseURL; var uuid_token = token(); var urlParameters = "?token=" + uuid_token + "&max_age=0&origin=" + encodeURIComponent(origin) + "&allow_methods=" + method; - var url = scheme + "://" + subdomain + "{{host}}" + ":" + port + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; + var url = baseURL + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; var requestInit = {"mode": "cors", "method": method}; promise_test(function(test) { - fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { assert_equals(resp.status, 200, "Clean stash response's status is 200"); if (shouldPass) { return fetch(url + urlParameters, requestInit).then(function(resp) { @@ -34,28 +29,28 @@ function corsOrigin(desc, scheme, subdomain, port, method, origin, shouldPass) { }, desc); } -var port = "{{ports[http][0]}}"; -var port2 = "{{ports[http][1]}}"; -var httpsPort = "{{ports[https][0]}}"; -/* Actual origin */ -var origin = "http://{{host}}:{{ports[http][0]}}"; -corsOrigin("Cross domain different subdomain [origin OK]", "http", "www1", undefined, "GET", origin, true); -corsOrigin("Cross domain different subdomain [origin KO]", "http", "www1", undefined, "GET", undefined, false); -corsOrigin("Same domain different port [origin OK]", "http", undefined, port2, "GET", origin, true); -corsOrigin("Same domain different port [origin KO]", "http", undefined, port2, "GET", undefined, false); -corsOrigin("Cross domain different port [origin OK]", "http", "www1", port2, "GET", origin, true); -corsOrigin("Cross domain different port [origin KO]", "http", "www1", port2, "GET", undefined, false); -corsOrigin("Cross domain different protocol [origin OK]", "https", "www1", httpsPort, "GET", origin, true); -corsOrigin("Cross domain different protocol [origin KO]", "https", "www1", httpsPort, "GET", undefined, false); -corsOrigin("Same domain different protocol different port [origin OK]", "https", undefined, httpsPort, "GET", origin, true); -corsOrigin("Same domain different protocol different port [origin KO]", "https", undefined, httpsPort, "GET", undefined, false); -corsOrigin("Cross domain [POST] [origin OK]", "http", "www1", undefined, "POST", origin, true); -corsOrigin("Cross domain [POST] [origin KO]", "http", "www1", undefined, "POST", undefined, false); -corsOrigin("Cross domain [HEAD] [origin OK]", "http", "www1", undefined, "HEAD", origin, true); -corsOrigin("Cross domain [HEAD] [origin KO]", "http", "www1", undefined, "HEAD", undefined, false); -corsOrigin("CORS preflight [PUT] [origin OK]", "http", "www1", undefined, "PUT", origin, true); -corsOrigin("CORS preflight [PUT] [origin KO]", "http", "www1", undefined, "PUT", undefined, false); -corsOrigin("Allowed origin: \"\" [origin KO]", "http", "www1", undefined, "GET", "" , false); +var host_info = get_host_info(); + +/* Actual origin */ +var origin = host_info.HTTP_ORIGIN; + +corsOrigin("Cross domain different subdomain [origin OK]", host_info.HTTP_REMOTE_ORIGIN, "GET", origin, true); +corsOrigin("Cross domain different subdomain [origin KO]", host_info.HTTP_REMOTE_ORIGIN, "GET", undefined, false); +corsOrigin("Same domain different port [origin OK]", host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, "GET", origin, true); +corsOrigin("Same domain different port [origin KO]", host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, "GET", undefined, false); +corsOrigin("Cross domain different port [origin OK]", host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, "GET", origin, true); +corsOrigin("Cross domain different port [origin KO]", host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, "GET", undefined, false); +corsOrigin("Cross domain different protocol [origin OK]", host_info.HTTPS_REMOTE_ORIGIN, "GET", origin, true); +corsOrigin("Cross domain different protocol [origin KO]", host_info.HTTPS_REMOTE_ORIGIN, "GET", undefined, false); +corsOrigin("Same domain different protocol different port [origin OK]", host_info.HTTPS_ORIGIN, "GET", origin, true); +corsOrigin("Same domain different protocol different port [origin KO]", host_info.HTTPS_ORIGIN, "GET", undefined, false); +corsOrigin("Cross domain [POST] [origin OK]", host_info.HTTP_REMOTE_ORIGIN, "POST", origin, true); +corsOrigin("Cross domain [POST] [origin KO]", host_info.HTTP_REMOTE_ORIGIN, "POST", undefined, false); +corsOrigin("Cross domain [HEAD] [origin OK]", host_info.HTTP_REMOTE_ORIGIN, "HEAD", origin, true); +corsOrigin("Cross domain [HEAD] [origin KO]", host_info.HTTP_REMOTE_ORIGIN, "HEAD", undefined, false); +corsOrigin("CORS preflight [PUT] [origin OK]", host_info.HTTP_REMOTE_ORIGIN, "PUT", origin, true); +corsOrigin("CORS preflight [PUT] [origin KO]", host_info.HTTP_REMOTE_ORIGIN, "PUT", undefined, false); +corsOrigin("Allowed origin: \"\" [origin KO]", host_info.HTTP_REMOTE_ORIGIN, "GET", "" , false); done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html index 663f5d655c1..24066c08d8d 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html @@ -12,7 +12,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html index 6f136af76be..8f2534037e5 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html @@ -13,6 +13,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.js index 52a7bca3cd7..f375c0d6e51 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-redirect.js @@ -2,6 +2,7 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("../resources/utils.js"); importScripts("/common/utils.js"); + importScripts("/common/get-host-info.sub.js"); } function corsPreflightRedirect(desc, redirectUrl, redirectLocation, redirectStatus, redirectPreflight) { @@ -27,8 +28,8 @@ function corsPreflightRedirect(desc, redirectUrl, redirectLocation, redirectStat }, desc); } -var redirectUrl = "http://www1.{{host}}:{{ports[http][0]}}" + dirname(location.pathname) + RESOURCES_DIR + "redirect.py"; -var locationUrl = "http://www1.{{host}}:{{ports[http][0]}}" + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; +var redirectUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "redirect.py"; +var locationUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; for (var code of [301, 302, 303, 307, 308]) { /* preflight should not follow the redirection */ diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html index 4ed9072fb51..6913c7e69b4 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html @@ -12,7 +12,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer.html index a399a051cb1..62403caeea2 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer.html @@ -13,6 +13,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer.js index 2abda364fe4..1039fcd1351 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-referrer.js @@ -1,6 +1,7 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("/common/utils.js"); + importScripts("/common/get-host-info.sub.js"); importScripts("../resources/utils.js"); } @@ -15,23 +16,24 @@ function corsPreflightReferrer(desc, corsUrl, referrerPolicy, expectedReferrer) urlParameters += "&allow_headers=x-force-preflight"; promise_test(function(test) { - fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { assert_equals(resp.status, 200, "Clean stash response's status is 200"); return fetch(url + urlParameters, requestInit).then(function(resp) { assert_equals(resp.status, 200, "Response's status is 200"); assert_equals(resp.headers.get("x-did-preflight"), "1", "Preflight request has been made"); assert_equals(resp.headers.get("x-preflight-referrer"), expectedReferrer, "Preflight's referrer is correct"); - assert_equals(resp.headers.get("x-referrer"), expectedReferrer, "Request's refferer is correct"); + assert_equals(resp.headers.get("x-referrer"), expectedReferrer, "Request's referrer is correct"); }); }); }, desc); } -var corsUrl = "http://www1.{{host}}:{{ports[http][0]}}" + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; -var origin = "http://{{host}}:{{ports[http][0]}}"; +var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; +var origin = get_host_info().HTTP_ORIGIN + "/"; corsPreflightReferrer("Referrer policy: no-referrer", corsUrl, "no-referrer", ""); -corsPreflightReferrer("Referrer policy: \"\"", corsUrl, "", ""); +corsPreflightReferrer("Referrer policy: \"\"", corsUrl, "", location.toString()) + corsPreflightReferrer("Referrer policy: origin", corsUrl, "origin", origin); corsPreflightReferrer("Referrer policy: origin-when-cross-origin", corsUrl, "origin-when-cross-origin", origin); corsPreflightReferrer("Referrer policy: unsafe-url", corsUrl, "unsafe-url", location.toString()); diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html index 7650c37d1ea..281d7739697 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html @@ -12,7 +12,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status.html index bc11fb755e6..4b619d6d13a 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status.html @@ -12,6 +12,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status.js index 07bd23c9003..5b4b15a9a90 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-status.js @@ -2,6 +2,7 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("../resources/utils.js"); importScripts("/common/utils.js"); + importScripts("/common/get-host-info.sub.js"); } /* Check preflight is ok if status is ok status (200 to 299)*/ @@ -31,7 +32,7 @@ function corsPreflightStatus(desc, corsUrl, preflightStatus) { }, desc); } -var corsUrl = "http://www1.{{host}}:{{ports[http][0]}}" + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; +var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; for (status of [200, 201, 202, 203, 204, 205, 206, 300, 301, 302, 303, 304, 305, 306, 307, 308, 400, 401, 402, 403, 404, 405, diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-worker.html index bedef5d7751..c80d1e989bf 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight-worker.html @@ -14,7 +14,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight.html index c4a581a55c5..036f2f515ed 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight.html @@ -14,7 +14,8 @@ + - + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight.js index 87c60e605a7..d89c7b9b99d 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-preflight.js @@ -1,7 +1,16 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); - importScripts("../resources/utils.js"); importScripts("/common/utils.js"); + importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js"); +} + +function headerNames(headers) +{ + let names = []; + for (let header of headers) + names.push(header[0].toLowerCase()); + return names } /* @@ -9,54 +18,54 @@ if (this.document === undefined) { Control if server allows method and headers and check accordingly Check control access headers added by UA (for method and headers) */ -function corsPreflight(desc, corsUrl, method, allowed, headers) { - var uuid_token = token(); - fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(response) { +function corsPreflight(desc, corsUrl, method, allowed, headers, safeHeaders) { + return promise_test(function(test) { + var uuid_token = token(); + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(response) { + var url = corsUrl; + var urlParameters = "?token=" + uuid_token + "&max_age=0"; + var requestInit = {"mode": "cors", "method": method}; + var requestHeaders = []; + if (headers) + requestHeaders.push.apply(requestHeaders, headers); + if (safeHeaders) + requestHeaders.push.apply(requestHeaders, safeHeaders); + requestInit["headers"] = requestHeaders; - var url = corsUrl; - var urlParameters = "?token=" + uuid_token + "&max_age=0"; - var requestInit = {"mode": "cors", "method": method}; - if (headers) - requestInit["headers"] = headers; - - if (allowed) { - urlParameters += "&allow_methods=" + method; - if (headers) { - //Let's check prefligh request. - //Server will send back headers from Access-Control-Request-Headers in x-control-request-headers - urlParameters += "&control_request_headers" - //Make the server allow the headers - urlParameters += "&allow_headers=" - urlParameters += headers.map(function (x) { return x[0]; }).join("%2C%20"); - } - promise_test(function(test) { - test.add_cleanup(function() { - fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token); - }); + if (allowed) { + urlParameters += "&allow_methods=" + method; + if (headers) { + //Let's check prefligh request. + //Server will send back headers from Access-Control-Request-Headers in x-control-request-headers + urlParameters += "&control_request_headers" + //Make the server allow the headers + urlParameters += "&allow_headers=" + headerNames(headers).join("%20%2C"); + } return fetch(url + urlParameters, requestInit).then(function(resp) { assert_equals(resp.status, 200, "Response's status is 200"); assert_equals(resp.headers.get("x-did-preflight"), "1", "Preflight request has been made"); if (headers) { - var actualHeaders = resp.headers.get("x-control-request-headers").split(","); + var actualHeaders = resp.headers.get("x-control-request-headers").toLowerCase().split(","); for (var i in actualHeaders) actualHeaders[i] = actualHeaders[i].trim(); for (var header of headers) - assert_in_array(header[0], actualHeaders, "Preflight asked permission for header: " + header); + assert_in_array(header[0].toLowerCase(), actualHeaders, "Preflight asked permission for header: " + header); + + let accessControlAllowHeaders = headerNames(headers).sort().join(","); + assert_equals(resp.headers.get("x-control-request-headers").replace(new RegExp(" ", "g"), ""), accessControlAllowHeaders, "Access-Control-Allow-Headers value"); + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token); } }); - }, desc); - } else { - promise_test(function(test) { - test.add_cleanup(function() { - fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token); + } else { + return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit)).then(function(){ + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token); }); - return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit)); - }, desc); - } - }); + } + }); + }, desc); } -var corsUrl = "http://www1.{{host}}:{{ports[http][0]}}" + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; +var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; corsPreflight("CORS [DELETE], server allows", corsUrl, "DELETE", true); corsPreflight("CORS [DELETE], server refuses", corsUrl, "DELETE", false); @@ -70,10 +79,25 @@ corsPreflight("CORS [NEW], server refuses", corsUrl, "NEW", false); corsPreflight("CORS [GET] [x-test-header: allowed], server allows", corsUrl, "GET", true, [["x-test-header1", "allowed"]]); corsPreflight("CORS [GET] [x-test-header: refused], server refuses", corsUrl, "GET", false, [["x-test-header1", "refused"]]); -var headers = [["x-test-header1", "allowedOrRefused"], - ["x-test-header2", "allowedOrRefused"], - ["x-test-header3", "allowedOrRefused"]]; -corsPreflight("CORS [GET] [several headers], server allows", corsUrl, "GET", true, headers); -corsPreflight("CORS [GET] [several headers], server refuses", corsUrl, "GET", false, headers); -corsPreflight("CORS [PUT] [several headers], server allows", corsUrl, "PUT", true, headers); -corsPreflight("CORS [PUT] [several headers], server refuses", corsUrl, "PUT", false, headers); +var headers = [ + ["x-test-header1", "allowedOrRefused"], + ["x-test-header2", "allowedOrRefused"], + ["X-test-header3", "allowedOrRefused"], + ["x-test-header-b", "allowedOrRefused"], + ["x-test-header-D", "allowedOrRefused"], + ["x-test-header-C", "allowedOrRefused"], + ["x-test-header-a", "allowedOrRefused"], + ["Content-Type", "allowedOrRefused"], +]; +var safeHeaders= [ + ["Accept", "*"], + ["Accept-Language", "bzh"], + ["Content-Language", "eu"], +]; + +corsPreflight("CORS [GET] [several headers], server allows", corsUrl, "GET", true, headers, safeHeaders); +corsPreflight("CORS [GET] [several headers], server refuses", corsUrl, "GET", false, headers, safeHeaders); +corsPreflight("CORS [PUT] [several headers], server allows", corsUrl, "PUT", true, headers, safeHeaders); +corsPreflight("CORS [PUT] [several headers], server refuses", corsUrl, "PUT", false, headers, safeHeaders); + +done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-credentials.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-credentials.html index 2491f692d10..410c0e491d7 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-credentials.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-credentials.html @@ -10,6 +10,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-credentials.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-credentials.js index 5ffd9451736..1b3fe5d4bb4 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-credentials.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-credentials.js @@ -1,6 +1,7 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js") } function corsRedirectCredentials(desc, redirectUrl, redirectLocation, redirectStatus, locationCredentials) { @@ -19,12 +20,14 @@ function corsRedirectCredentials(desc, redirectUrl, redirectLocation, redirectSt var redirPath = dirname(location.pathname) + RESOURCES_DIR + "redirect.py"; var preflightPath = dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; -var localRedirect = "http://{{host}}:{{ports[http][0]}}" + redirPath; -var remoteRedirect = "http://{{host}}:{{ports[http][1]}}" + redirPath; +var host_info = get_host_info(); -var localLocation = "http://{{host}}:{{ports[http][0]}}" + preflightPath; -var remoteLocation = "http://{{host}}:{{ports[http][1]}}" + preflightPath; -var remoteLocation2 = "http://www.{{host}}:{{ports[http][0]}}" + preflightPath; +var localRedirect = host_info.HTTP_ORIGIN + redirPath; +var remoteRedirect = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + redirPath; + +var localLocation = host_info.HTTP_ORIGIN + preflightPath; +var remoteLocation = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + preflightPath; +var remoteLocation2 = host_info.HTTP_REMOTE_ORIGIN + preflightPath; for (var code of [301, 302, 303, 307, 308]) { corsRedirectCredentials("Redirect " + code + " from same origin to remote with user and password", localRedirect, remoteLocation, code, "user:password"); diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html new file mode 100644 index 00000000000..d7d83a51013 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html @@ -0,0 +1,15 @@ + + + + + Fetch in worker: CORS preflight after redirection + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html new file mode 100644 index 00000000000..172f52e794f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html @@ -0,0 +1,16 @@ + + + + + Fetch: CORS preflight after redirection + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight.js new file mode 100644 index 00000000000..9b9f8b92f67 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-preflight.js @@ -0,0 +1,50 @@ +if (this.document === undefined) { + importScripts("/resources/testharness.js"); + importScripts("/common/utils.js"); + importScripts("/common/get-host-info.sub.js"); + importScripts("../resources/utils.js"); +} + +function corsRedirect(desc, redirectUrl, redirectLocation, redirectStatus, expectSuccess) { + var urlBaseParameters = "&redirect_status=" + redirectStatus; + var urlParametersSuccess = urlBaseParameters + "&allow_headers=x-w3c&location=" + encodeURIComponent(redirectLocation + "?allow_headers=x-w3c"); + var urlParametersFailure = urlBaseParameters + "&location=" + encodeURIComponent(redirectLocation); + + var requestInit = {"mode": "cors", "redirect": "follow", "headers" : [["x-w3c", "test"]]}; + + promise_test(function(test) { + var uuid_token = token(); + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { + return fetch(redirectUrl + "?token=" + uuid_token + "&max_age=0" + urlParametersSuccess, requestInit).then(function(resp) { + assert_equals(resp.status, 200, "Response's status is 200"); + assert_equals(resp.headers.get("x-did-preflight"), "1", "Preflight request has been made"); + }); + }); + }, desc + " (preflight after redirection success case)"); + promise_test(function(test) { + var uuid_token = token(); + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { + return promise_rejects(test, new TypeError(), fetch(redirectUrl + "?token=" + uuid_token + "&max_age=0" + urlParametersFailure, requestInit)); + }); + }, desc + " (preflight after redirection failure case)"); +} + +var redirPath = dirname(location.pathname) + RESOURCES_DIR + "redirect.py"; +var preflightPath = dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; + +var host_info = get_host_info(); + +var localRedirect = host_info.HTTP_ORIGIN + redirPath; +var remoteRedirect = host_info.HTTP_REMOTE_ORIGIN + redirPath; + +var localLocation = host_info.HTTP_ORIGIN + preflightPath; +var remoteLocation = host_info.HTTP_REMOTE_ORIGIN + preflightPath; +var remoteLocation2 = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + preflightPath; + +for (var code of [301, 302, 303, 307, 308]) { + corsRedirect("Redirect " + code + ": same origin to cors", localRedirect, remoteLocation, code); + corsRedirect("Redirect " + code + ": cors to same origin", remoteRedirect, localLocation, code); + corsRedirect("Redirect " + code + ": cors to another cors", remoteRedirect, remoteLocation2, code); +} + +done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-worker.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-worker.html index bf7bd965272..9f8dfb022b7 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-worker.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect-worker.html @@ -11,7 +11,7 @@ - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect.html b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect.html index f88eacf7bc5..87424f43216 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect.html +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect.html @@ -12,6 +12,7 @@ - + + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect.js b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect.js index a818054ab10..75f67e7ee31 100644 --- a/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect.js +++ b/tests/wpt/web-platform-tests/fetch/api/cors/cors-redirect.js @@ -2,6 +2,7 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("/common/utils.js"); importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js"); } function corsRedirect(desc, redirectUrl, redirectLocation, redirectStatus, expectedOrigin) { @@ -13,7 +14,7 @@ function corsRedirect(desc, redirectUrl, redirectLocation, redirectStatus, expec var requestInit = {"mode": "cors", "redirect": "follow"}; - promise_test(function(test) { + return promise_test(function(test) { fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { return fetch(url + urlParameters, requestInit).then(function(resp) { assert_equals(resp.status, 200, "Response's status is 200"); @@ -27,12 +28,14 @@ function corsRedirect(desc, redirectUrl, redirectLocation, redirectStatus, expec var redirPath = dirname(location.pathname) + RESOURCES_DIR + "redirect.py"; var preflightPath = dirname(location.pathname) + RESOURCES_DIR + "preflight.py"; -var localRedirect = "http://{{host}}:{{ports[http][0]}}" + redirPath; -var remoteRedirect = "http://www1.{{host}}:{{ports[http][0]}}" + redirPath; +var host_info = get_host_info(); -var localLocation = "http://{{host}}:{{ports[http][0]}}" + preflightPath; -var remoteLocation = "http://www1.{{host}}:{{ports[http][0]}}" + preflightPath; -var remoteLocation2 = "http://www.{{host}}:{{ports[http][0]}}" + preflightPath; +var localRedirect = host_info.HTTP_ORIGIN + redirPath; +var remoteRedirect = host_info.HTTP_REMOTE_ORIGIN + redirPath; + +var localLocation = host_info.HTTP_ORIGIN + preflightPath; +var remoteLocation = host_info.HTTP_REMOTE_ORIGIN + preflightPath; +var remoteLocation2 = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + preflightPath; for (var code of [301, 302, 303, 307, 308]) { corsRedirect("Redirect " + code + ": cors to same cors", remoteRedirect, remoteLocation, code, location.origin); diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.html b/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.html index 26bbfe35935..90ba2b2a908 100644 --- a/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.html +++ b/tests/wpt/web-platform-tests/fetch/api/headers/headers-basic.html @@ -120,14 +120,29 @@ "Content-Types": "value6" }; var sortedHeaderDict = {}; + var headerValues = []; var sortedHeaderKeys = Object.keys(headerEntriesDict).map(function(value) { sortedHeaderDict[value.toLowerCase()] = headerEntriesDict[value]; + headerValues.push(headerEntriesDict[value]); return value.toLowerCase(); }).sort(); + var iteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([].values())); + function checkIteratorProperties(iterator) { + var prototype = Object.getPrototypeOf(iterator); + assert_equals(Object.getPrototypeOf(prototype), iteratorPrototype); + + var descriptor = Object.getOwnPropertyDescriptor(prototype, "next"); + assert_true(descriptor.configurable, "configurable"); + assert_true(descriptor.enumerable, "enumerable"); + assert_true(descriptor.writable, "writable"); + } + test(function() { var headers = new Headers(headerEntriesDict); var actual = headers.keys(); + checkIteratorProperties(actual); + sortedHeaderKeys.forEach(function(key) { entry = actual.next(); assert_false(entry.done); @@ -135,11 +150,15 @@ }); assert_true(actual.next().done); assert_true(actual.next().done); + + for (key of headers.keys()) + assert_true(sortedHeaderKeys.indexOf(key) != -1); }, "Check keys method"); test(function() { var headers = new Headers(headerEntriesDict); var actual = headers.values(); + checkIteratorProperties(actual); sortedHeaderKeys.forEach(function(key) { entry = actual.next(); @@ -148,11 +167,15 @@ }); assert_true(actual.next().done); assert_true(actual.next().done); + + for (value of headers.values()) + assert_true(headerValues.indexOf(value) != -1); }, "Check values method"); test(function() { var headers = new Headers(headerEntriesDict); var actual = headers.entries(); + checkIteratorProperties(actual); sortedHeaderKeys.forEach(function(key) { entry = actual.next(); @@ -162,6 +185,9 @@ }); assert_true(actual.next().done); assert_true(actual.next().done); + + for (entry of headers.entries()) + assert_equals(entry[1], sortedHeaderDict[entry[0]]); }, "Check entries method"); test(function() { diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/headers-combine.html b/tests/wpt/web-platform-tests/fetch/api/headers/headers-combine.html index ddcfdbee6eb..a0c15b0fed7 100644 --- a/tests/wpt/web-platform-tests/fetch/api/headers/headers-combine.html +++ b/tests/wpt/web-platform-tests/fetch/api/headers/headers-combine.html @@ -18,8 +18,8 @@ ["triple", "tripleValue3"] ]; var expectedDict = {"single": "singleValue", - "double": "doubleValue1, doubleValue2", - "triple": "tripleValue1, tripleValue2, tripleValue3" + "double": "doubleValue1,doubleValue2", + "triple": "tripleValue1,tripleValue2,tripleValue3" }; test(function() { @@ -51,7 +51,7 @@ for (name in expectedDict) { var value = headers.get(name); headers.append(name,"newSingleValue"); - assert_equals(headers.get(name), (value + ", " + "newSingleValue"), + assert_equals(headers.get(name), (value + "," + "newSingleValue"), "name: " + name + " has value: " + headers.get(name)); } }, "Check append methods when called with already used name"); diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-no-referrer.html.headers b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-no-referrer.html.headers index 6954766b475..7ffbf17d6be 100644 --- a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-no-referrer.html.headers +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-no-referrer.html.headers @@ -1 +1 @@ -Content-Security-Policy: referrer no-referrer; \ No newline at end of file +Referrer-Policy: no-referrer diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-no-referrer.js.headers b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-no-referrer.js.headers index 6954766b475..7ffbf17d6be 100644 --- a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-no-referrer.js.headers +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-no-referrer.js.headers @@ -1 +1 @@ -Content-Security-Policy: referrer no-referrer; \ No newline at end of file +Referrer-Policy: no-referrer diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker.html b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker.html new file mode 100644 index 00000000000..f95ae8cf081 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-worker.html @@ -0,0 +1,16 @@ + + + + + Fetch in worker: referrer with origin-when-cross-origin policy + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html new file mode 100644 index 00000000000..18de7364634 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html @@ -0,0 +1,15 @@ + + + + + Fetch: referrer with origin-when-cross-origin policy + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html.headers b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html.headers new file mode 100644 index 00000000000..ad768e63294 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html.headers @@ -0,0 +1 @@ +Referrer-Policy: origin-when-cross-origin diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js new file mode 100644 index 00000000000..2baf7d12593 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js @@ -0,0 +1,16 @@ +if (this.document === undefined) { + importScripts("/resources/testharness.js"); + importScripts("../resources/utils.js"); +} + +var referrerOrigin = "http://{{host}}:{{ports[http][0]}}/"; +var fetchedUrl = "http://{{host}}:{{ports[http][1]}}" + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=referer"; + +promise_test(function(test) { + return fetch(fetchedUrl).then(function(resp) { + assert_equals(resp.status, 200, "HTTP status is 200"); + assert_equals(resp.headers.get("x-request-referer"), referrerOrigin, "request's referrer is " + referrerOrigin); + }); +}, "Request's referrer is origin"); + +done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js.headers b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js.headers new file mode 100644 index 00000000000..ad768e63294 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js.headers @@ -0,0 +1 @@ +Referrer-Policy: origin-when-cross-origin diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin.html.headers b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin.html.headers index 9bb592a867d..5b29739bbdd 100644 --- a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin.html.headers +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin.html.headers @@ -1 +1 @@ -Content-Security-Policy: referrer origin; \ No newline at end of file +Referrer-Policy: origin diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin.js.headers b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin.js.headers index 9bb592a867d..5b29739bbdd 100644 --- a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin.js.headers +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin.js.headers @@ -1 +1 @@ -Content-Security-Policy: referrer origin; \ No newline at end of file +Referrer-Policy: origin diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-unsafe-url.html.headers b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-unsafe-url.html.headers index 8efcca15fe0..8e23770bd60 100644 --- a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-unsafe-url.html.headers +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-unsafe-url.html.headers @@ -1 +1 @@ -Content-Security-Policy: referrer unsafe-url; \ No newline at end of file +Referrer-Policy: unsafe-url diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-unsafe-url.js.headers b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-unsafe-url.js.headers index 8efcca15fe0..8e23770bd60 100644 --- a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-unsafe-url.js.headers +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-unsafe-url.js.headers @@ -1 +1 @@ -Content-Security-Policy: referrer unsafe-url; \ No newline at end of file +Referrer-Policy: unsafe-url diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.html b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.html index 2f68d2b70a0..20a0cd68a6c 100644 --- a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.html +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.html @@ -10,7 +10,7 @@ - + - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.js b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.js index f6832c49276..b59a8d57b0d 100644 --- a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.js +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.js @@ -1,6 +1,6 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); - importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js") } function redirectMode(desc, redirectUrl, redirectLocation, redirectStatus, redirectMode) { @@ -18,6 +18,7 @@ function redirectMode(desc, redirectUrl, redirectLocation, redirectStatus, redir assert_equals(resp.status, 0, "Response's status is 0"); assert_equals(resp.type, "opaqueredirect", "Response's type is opaqueredirect"); assert_equals(resp.statusText, "", "Response's statusText is \"\""); + assert_equals(resp.url, url + urlParameters, "Response URL should be the original one"); }); if (redirectMode === "follow") return fetch(url + urlParameters, requestInit).then(function(resp) { @@ -28,7 +29,7 @@ function redirectMode(desc, redirectUrl, redirectLocation, redirectStatus, redir }, desc); } -var redirUrl = RESOURCES_DIR + "redirect.py"; +var redirUrl = get_host_info().HTTP_ORIGIN + "/fetch/api/resources/redirect.py"; var locationUrl = "top.txt"; for (var statusCode of [301, 302, 303, 307, 308]) { diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin-worker.html b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin-worker.html new file mode 100644 index 00000000000..fdb542237d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin-worker.html @@ -0,0 +1,17 @@ + + + + + Fetch in worker: redirect mode handling + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin.html b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin.html new file mode 100644 index 00000000000..4cbe1c07d00 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin.html @@ -0,0 +1,18 @@ + + + + + Fetch: redirect mode handling + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin.js b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin.js new file mode 100644 index 00000000000..77f841e94b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-origin.js @@ -0,0 +1,40 @@ +if (this.document === undefined) { + importScripts("/common/utils.js"); + importScripts("/resources/testharness.js"); + importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js"); +} + +function testOriginAfterRedirection(desc, redirectUrl, redirectLocation, redirectStatus, expectedOrigin) { + var uuid_token = token(); + var url = redirectUrl; + var urlParameters = "?token=" + uuid_token + "&max_age=0"; + urlParameters += "&redirect_status=" + redirectStatus; + urlParameters += "&location=" + encodeURIComponent(redirectLocation); + + var requestInit = {"mode": "cors", "redirect": "follow"}; + + promise_test(function(test) { + return fetch(RESOURCES_DIR + "clean-stash.py?token=" + uuid_token).then(function(resp) { + assert_equals(resp.status, 200, "Clean stash response's status is 200"); + return fetch(url + urlParameters, requestInit).then(function(response) { + assert_equals(response.status, 200, "Inspect header response's status is 200"); + assert_equals(response.headers.get("x-request-origin"), expectedOrigin, "Check origin header"); + }); + }); + }, desc); +} + +var redirectUrl = RESOURCES_DIR + "redirect.py"; +var corsRedirectUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "redirect.py"; +var locationUrl = get_host_info().HTTP_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?headers=origin"; +var corsLocationUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=origin"; + +for (var code of [301, 302, 303, 307, 308]) { + testOriginAfterRedirection("Same origin to same origin redirection " + code, redirectUrl, locationUrl, code, null); + testOriginAfterRedirection("Same origin to other origin redirection " + code, redirectUrl, corsLocationUrl, code, get_host_info().HTTP_ORIGIN); + testOriginAfterRedirection("Other origin to other origin redirection " + code, corsRedirectUrl, corsLocationUrl, code, get_host_info().HTTP_ORIGIN); + testOriginAfterRedirection("Other origin to same origin redirection " + code, corsRedirectUrl, locationUrl + "&cors", code, "null"); +} + +done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-schemes.html b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-schemes.html index 2abb1203c1f..cffec19d56a 100644 --- a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-schemes.html +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-schemes.html @@ -6,18 +6,18 @@
    diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-worker.html b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-worker.html new file mode 100644 index 00000000000..428f5135e94 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl-worker.html @@ -0,0 +1,14 @@ + + + + + Fetch in worker: data URL loading after redirections + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.html b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.html new file mode 100644 index 00000000000..ed7159f4121 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.html @@ -0,0 +1,13 @@ + + + + + Fetch: data URL loading after redirections + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.js b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.js new file mode 100644 index 00000000000..89779c7d972 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-to-dataurl.js @@ -0,0 +1,35 @@ +if (this.document === undefined) { + importScripts("/common/get-host-info.sub.js") + importScripts("/resources/testharness.js"); +} + +var dataURL = "data:text/plain;base64,cmVzcG9uc2UncyBib2R5"; +var body = "response's body"; +var contentType = "text/plain"; + +function redirectDataURL(desc, redirectUrl, mode, isOK) { + var url = redirectUrl + "?cors&location=" + encodeURIComponent(dataURL); + + var requestInit = {"mode": mode}; + + promise_test(function(test) { + var promise = fetch(url, requestInit).then(function(response) { + assert_equals(response.type, "opaque", "Response's type should be opaque"); + assert_equals(response.url, "", "Response URL is empty"); + assert_equals(response.status, 0, "Response's status should be 0"); + }); + return isOK ? promise : promise_rejects(test, new TypeError(), promise); + }, desc); +} + +var redirUrl = get_host_info().HTTP_ORIGIN + "/fetch/api/resources/redirect.py"; +var corsRedirUrl = get_host_info().HTTP_REMOTE_ORIGIN + "/fetch/api/resources/redirect.py"; + +redirectDataURL("Testing data URL loading after same-origin redirection (cors mode)", redirUrl, "cors", false); +redirectDataURL("Testing data URL loading after same-origin redirection (no-cors mode)", redirUrl, "no-cors", true); +redirectDataURL("Testing data URL loading after same-origin redirection (same-origin mode)", redirUrl, "same-origin", false); + +redirectDataURL("Testing data URL loading after cross-origin redirection (cors mode)", corsRedirUrl, "cors", false); +redirectDataURL("Testing data URL loading after cross-origin redirection (no-cors mode)", corsRedirUrl, "no-cors", true); + +done(); diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-cache.html b/tests/wpt/web-platform-tests/fetch/api/request/request-cache.html index 9e9b8f4ed8d..f2c442a5409 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-cache.html +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-cache.html @@ -8,7 +8,7 @@ - + diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-headers.html b/tests/wpt/web-platform-tests/fetch/api/request/request-headers.html index 5bdd601cc46..1d54728b7da 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-headers.html +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-headers.html @@ -145,6 +145,29 @@ assert_equals(request.headers.get("Content-Type"), "potato"); }, "Request should get its content-type from init headers if one is provided"); + test(function() { + var array = [["hello", "worldAHH"]]; + var object = {"hello": 'worldOOH'}; + var headers = new Headers(array); + + assert_equals(headers.get("hello"), "worldAHH"); + + var request1 = new Request("", {"headers": headers}); + var request2 = new Request("", {"headers": array}); + var request3 = new Request("", {"headers": object}); + + assert_equals(request1.headers.get("hello"), "worldAHH"); + assert_equals(request2.headers.get("hello"), "worldAHH"); + assert_equals(request3.headers.get("hello"), "worldOOH"); + }, "Testing request header creations with various objects"); + + promise_test(function(test) { + var request = new Request("", {"headers" : [["Content-Type", ""]], "body" : "this is my plate", "method" : "POST"}); + return request.blob().then(function(blob) { + assert_equals(blob.type, "", "Blob type should be the empty string"); + }); + }, "Testing empty Request Content-Type header"); + diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-init-002.html b/tests/wpt/web-platform-tests/fetch/api/request/request-init-002.html index fa2fe18eac5..5d92b09c568 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-init-002.html +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-init-002.html @@ -31,9 +31,8 @@ promise_test(function(test) { var request = new Request("", makeRequestInit(body, "POST")); if (body) { - assert_throws(new TypeError(), - function() { new Request("", makeRequestInit(body, "GET")); } - ); + assert_throws(new TypeError(), function() { new Request("", makeRequestInit(body, "GET")); }); + assert_throws(new TypeError(), function() { new Request("", makeRequestInit(body, "HEAD")); }); } else { new Request("", makeRequestInit(body, "GET")); // should not throw } diff --git a/tests/wpt/web-platform-tests/fetch/api/request/resources/get-host-info.sub.js b/tests/wpt/web-platform-tests/fetch/api/request/resources/get-host-info.sub.js deleted file mode 100644 index 47fdef9c29d..00000000000 --- a/tests/wpt/web-platform-tests/fetch/api/request/resources/get-host-info.sub.js +++ /dev/null @@ -1,32 +0,0 @@ -// This file is duplicated verbatim from: -// service-workers/service-worker/resources/get-host-info.sub.js -// with the rationale that: -// - it's better to not reinvent this -// - at the same time, referencing tests deep inside a sibling test group is -// not a great idea and copying the file is the lesser evil. -function get_host_info() { - var ORIGINAL_HOST = '127.0.0.1'; - var REMOTE_HOST = 'localhost'; - var UNAUTHENTICATED_HOST = 'example.test'; - var HTTP_PORT = 8000; - var HTTPS_PORT = 8443; - try { - // In W3C test, we can get the hostname and port number in config.json - // using wptserve's built-in pipe. - // http://wptserve.readthedocs.org/en/latest/pipes.html#built-in-pipes - HTTP_PORT = eval('{{ports[http][0]}}'); - HTTPS_PORT = eval('{{ports[https][0]}}'); - ORIGINAL_HOST = eval('\'{{host}}\''); - REMOTE_HOST = 'www1.' + ORIGINAL_HOST; - } catch (e) { - } - return { - HTTP_ORIGIN: 'http://' + ORIGINAL_HOST + ':' + HTTP_PORT, - HTTPS_ORIGIN: 'https://' + ORIGINAL_HOST + ':' + HTTPS_PORT, - HTTPS_ORIGIN_WITH_CREDS: 'https://foo:bar@' + ORIGINAL_HOST + ':' + HTTPS_PORT, - HTTP_REMOTE_ORIGIN: 'http://' + REMOTE_HOST + ':' + HTTP_PORT, - HTTPS_REMOTE_ORIGIN: 'https://' + REMOTE_HOST + ':' + HTTPS_PORT, - HTTPS_REMOTE_ORIGIN_WITH_CREDS: 'https://foo:bar@' + REMOTE_HOST + ':' + HTTPS_PORT, - UNAUTHENTICATED_ORIGIN: 'http://' + UNAUTHENTICATED_HOST + ':' + HTTP_PORT - }; -} 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 3767b223aac..1465c56b09c 100644 --- a/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py +++ b/tests/wpt/web-platform-tests/fetch/api/resources/redirect.py @@ -1,3 +1,6 @@ +from urllib import urlencode +from urlparse import urlparse + def main(request, response): stashed_data = {'count': 0, 'preflight': "0"} status = 302 @@ -28,13 +31,19 @@ def main(request, response): stashed_data['count'] += 1 - #keep url parameters in location - url_parameters = "?" + "&".join(map(lambda x: x[0][0] + "=" + x[1][0], request.GET.items())) - #make sure location changes during redirection loop - url_parameters += "&count=" + str(stashed_data['count']) - if "location" in request.GET: - headers.append(("Location", request.GET['location'] + url_parameters)) + url = request.GET['location'] + scheme = urlparse(url).scheme + if scheme == "" or scheme == "http" or scheme == "https": + url += "&" if '?' in url else "?" + #keep url parameters in location + url_parameters = {} + for item in request.GET.items(): + url_parameters[item[0]] = item[1][0] + url += urlencode(url_parameters) + #make sure location changes during redirection loop + url += "&count=" + str(stashed_data['count']) + headers.append(("Location", url)) if token: request.server.stash.put(request.GET.first("token"), stashed_data) diff --git a/tests/wpt/web-platform-tests/fetch/api/resources/status.py b/tests/wpt/web-platform-tests/fetch/api/resources/status.py new file mode 100644 index 00000000000..5d72e10b24b --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/resources/status.py @@ -0,0 +1,9 @@ +def main(request, response): + code = int(request.GET.first("code", 200)) + text = request.GET.first("text", "OMG") + content = request.GET.first("content", "") + type = request.GET.first("type", "") + status = (code, text) + headers = [("Content-Type", type), + ("X-Request-Method", request.method)] + return status, headers, content diff --git a/tests/wpt/web-platform-tests/fetch/api/resources/utils.js b/tests/wpt/web-platform-tests/fetch/api/resources/utils.js index a0235fef99f..86542c7bc8f 100644 --- a/tests/wpt/web-platform-tests/fetch/api/resources/utils.js +++ b/tests/wpt/web-platform-tests/fetch/api/resources/utils.js @@ -53,12 +53,13 @@ function stringToArray(str) { function validateBufferFromString(buffer, expectedValue, message) { - return assert_array_equals(new Uint8Array(buffer), stringToArray(expectedValue), message); + return assert_array_equals(new Uint8Array(buffer !== undefined ? buffer : []), stringToArray(expectedValue), message); } function validateStreamFromString(reader, expectedValue, retrievedArrayBuffer) { return reader.read().then(function(data) { if (!data.done) { + assert_true(data.value instanceof Uint8Array, "Fetch ReadableStream chunks should be Uint8Array"); var newBuffer; if (retrievedArrayBuffer) { newBuffer = new ArrayBuffer(data.value.length + retrievedArrayBuffer.length); diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-clone.html b/tests/wpt/web-platform-tests/fetch/api/response/response-clone.html index 2d36d97685d..1efb4da5eef 100644 --- a/tests/wpt/web-platform-tests/fetch/api/response/response-clone.html +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-clone.html @@ -54,13 +54,45 @@ }, "Check cloned response's body"); promise_test(function(test) { - var disturbedResponse = new Response(); + var disturbedResponse = new Response("data"); return disturbedResponse.text().then(function() { assert_true(disturbedResponse.bodyUsed, "response is disturbed"); assert_throws(new TypeError() , function() { disturbedResponse.clone(); }, "Expect TypeError exception"); }); }, "Cannot clone a disturbed response"); + + promise_test(function(t) { + var clone; + var result; + var response; + return fetch('../resources/trickle.py?count=2&delay=100').then(function(res) { + clone = res.clone(); + response = res; + return clone.arrayBuffer(); + }).then(function(r) { + assert_equals(r.byteLength, 26); + result = r; + return response.arrayBuffer(); + }).then(function(r) { + assert_array_equals(r, result, "cloned responses should provide the same data"); + }); + }, 'Cloned responses should provide the same data'); + + promise_test(function(t) { + var clone; + return fetch('../resources/trickle.py?count=2&delay=100').then(function(res) { + clone = res.clone(); + res.body.cancel(); + assert_true(res.bodyUsed); + assert_false(clone.bodyUsed); + return clone.arrayBuffer(); + }).then(function(r) { + assert_equals(r.byteLength, 26); + assert_true(clone.bodyUsed); + }); + }, 'Cancelling stream should not affect cloned one'); + diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-consume-stream.html b/tests/wpt/web-platform-tests/fetch/api/response/response-consume-stream.html index ee332e1783c..f96192fa980 100644 --- a/tests/wpt/web-platform-tests/fetch/api/response/response-consume-stream.html +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-consume-stream.html @@ -39,6 +39,15 @@ promise_test(function(test) { return validateStreamFromString(response.body.getReader(), textData); }, "Read text response's body as readableStream"); +promise_test(function(test) { + var arrayBuffer = new ArrayBuffer(textData.length); + var int8Array = new Int8Array(arrayBuffer); + for (var cptr = 0; cptr < textData.length; cptr++) + int8Array[cptr] = textData.charCodeAt(cptr); + + return validateStreamFromString(new Response(arrayBuffer).body.getReader(), textData); +}, "Read array buffer response's body as readableStream"); + promise_test(function(test) { var response = new Response(formData); return validateStreamFromString(response.body.getReader(), "name=value"); diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-consume.html b/tests/wpt/web-platform-tests/fetch/api/response/response-consume.html index 02814ff5be9..56e234248c3 100644 --- a/tests/wpt/web-platform-tests/fetch/api/response/response-consume.html +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-consume.html @@ -19,8 +19,11 @@ }); } - function checkBodyBlob(response, expectedBody) { + function checkBodyBlob(response, expectedBody, checkContentType) { return response.blob().then(function(bodyAsBlob) { + if (checkContentType) + assert_equals(bodyAsBlob.type, "text/plain", "Blob body type should be computed from the response Content-Type"); + var promise = new Promise( function (resolve, reject) { var reader = new FileReader(); reader.onload = function(evt) { @@ -62,7 +65,7 @@ function checkResponseBody(body, bodyType, checkFunction) { promise_test(function(test) { - var response = new Response(body); + var response = new Response(body, { "headers": [["Content-Type", "text/PLAIN"]] }); assert_false(response.bodyUsed, "bodyUsed is false at init"); return checkFunction(response, body); }, "Consume response's body as " + bodyType); @@ -74,7 +77,7 @@ var blob = new Blob([textData], { "type" : "text/plain" }); checkResponseBody(textData, "text", checkBodyText); - checkResponseBody(textData, "blob", checkBodyBlob); + checkResponseBody(textData, "blob", function(response, body) { checkBodyBlob(response, body, true); }); checkResponseBody(textData, "arrayBuffer", checkBodyArrayBuffer); checkResponseBody(textData, "json", checkBodyJSON); checkResponseBody(formData, "formData", checkBodyFormData); @@ -92,6 +95,37 @@ checkBlobResponseBody(blob, textData, "json", checkBodyJSON); checkBlobResponseBody(blob, textData, "arrayBuffer", checkBodyArrayBuffer); + function checkReadableStreamResponseBody(streamData, bodyType, checkFunction) { + promise_test(function(test) { + var stream = new ReadableStream({ + start: function(controller) { + controller.enqueue((stringToArray(streamData))); + controller.close(); + } + }); + var response = new Response(stream); + assert_false(response.bodyUsed, "bodyUsed is false at init"); + return checkFunction(response, streamData); + }, "Consume stream response's body as " + bodyType); + } + + checkReadableStreamResponseBody(textData, "blob", checkBodyBlob); + checkReadableStreamResponseBody(textData, "text", checkBodyText); + checkReadableStreamResponseBody(textData, "json", checkBodyJSON); + checkReadableStreamResponseBody(textData, "arrayBuffer", checkBodyArrayBuffer); + + function checkFetchedResponseBody(bodyType, checkFunction) { + return promise_test(function(test) { + return fetch("../resources/top.txt").then(function(response) { + assert_false(response.bodyUsed, "bodyUsed is false at init"); + return checkFunction(response, "top"); + }); + }, "Consume fetched response's body as " + bodyType); + } + checkFetchedResponseBody("blob", checkBodyBlob); + checkFetchedResponseBody("text", checkBodyText); + checkFetchedResponseBody("arrayBuffer", checkBodyArrayBuffer); + diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-init-002.html b/tests/wpt/web-platform-tests/fetch/api/response/response-init-002.html index 37fcb6d2e3d..0bb2e8d0b3b 100644 --- a/tests/wpt/web-platform-tests/fetch/api/response/response-init-002.html +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-init-002.html @@ -57,6 +57,14 @@ var response = new Response(body); return validateStreamFromString(response.body.getReader(), body); }, "Read Response's body as readableStream"); + + promise_test(function(test) { + var response = new Response("This is my fork", {"headers" : [["Content-Type", ""]]}); + return response.blob().then(function(blob) { + assert_equals(blob.type, "", "Blob type should be the empty string"); + }); + }, "Testing empty Response Content-Type header"); + diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/resources/image.py b/tests/wpt/web-platform-tests/fetch/nosniff/resources/image.py index 32a07c197df..8fb05edc658 100644 --- a/tests/wpt/web-platform-tests/fetch/nosniff/resources/image.py +++ b/tests/wpt/web-platform-tests/fetch/nosniff/resources/image.py @@ -3,7 +3,7 @@ import os.path def main(request, response): type = request.GET.first("type", None) - body = open(os.path.join(os.path.dirname(__file__), "../../../images/blue96x96.png")).read() + body = open(os.path.join(os.path.dirname(__file__), "../../../images/blue96x96.png"), "rb").read() response.add_required_headers = False response.writer.write_status(200) diff --git a/tests/wpt/web-platform-tests/fetch/nosniff/stylesheet.html b/tests/wpt/web-platform-tests/fetch/nosniff/stylesheet.html index 07de819f8af..0ad04038e20 100644 --- a/tests/wpt/web-platform-tests/fetch/nosniff/stylesheet.html +++ b/tests/wpt/web-platform-tests/fetch/nosniff/stylesheet.html @@ -22,11 +22,7 @@ var link = document.createElement("link") link.rel = "stylesheet" link.onerror = t.unreached_func("Unexpected error event") - link.onload = t.step_func_done(function(){ - if(passes[passes.length-1] == urlpart) { - assert_equals(document.styleSheets.length, passes.length) - } - }) + link.onload = t.step_func_done(function(){}) link.href = "resources/css.py" + urlpart document.body.appendChild(link) }, "URL query: " + urlpart) diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html index 0159a36b22d..a277eccea81 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/history-traversal/browsing_context_name.html @@ -17,7 +17,7 @@ log = function(t) {l.textContent += ("\n" + t)} var steps = [ function() {f.src = "browsing_context_name-1.html"}, function() { - var navigated = true; + navigated = true; assert_equals(f.contentWindow.name, "test", "Initial load"); setTimeout(next, 0); }, diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html new file mode 100644 index 00000000000..bd2d9dfdb1e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-parent.html @@ -0,0 +1,17 @@ + + +Set location from a parent + + +
    + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html new file mode 100644 index 00000000000..4a15b3f0837 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function-src.html @@ -0,0 +1,17 @@ + + +Set src from a function called from a parent + + +
    + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html new file mode 100644 index 00000000000..b75062b8d93 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-function.html @@ -0,0 +1,18 @@ + + +Set location from a function called from a parent + + +
    + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html new file mode 100644 index 00000000000..dce6ab2f693 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/navigate-child-src-about-blank.html @@ -0,0 +1,17 @@ + + +Set the src attribute to about:blank and check referrer + + +
    + + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/dummy.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/dummy.html new file mode 100644 index 00000000000..0638657093c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/dummy.html @@ -0,0 +1,3 @@ + + +

    Hello. \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/location-set.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/location-set.html new file mode 100644 index 00000000000..ad733afac3e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/location-set.html @@ -0,0 +1,8 @@ + + + +

    Hello. Go. \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/set-parent-src.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/set-parent-src.html new file mode 100644 index 00000000000..9d45be8c8df --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/source/support/set-parent-src.html @@ -0,0 +1,8 @@ + + + +

    Hello. Go. \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/008.js b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/008.js new file mode 100644 index 00000000000..96a1fe5d4a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-history-interface/008.js @@ -0,0 +1,11 @@ +var beforehref = location.href; + +test(function () { + history.pushState('','','/testing_ignore_me_404'); + assert_equals(location.href,beforehref.replace(/^(\w*:\/\/[^\/]*\/)[\w\W]*$/,'$1testing_ignore_me_404')); +}, 'history.pushState URL resolving should be done relative to the document, not the script'); + +test(function () { + history.replaceState('','','/testing_ignore_me_404_2'); + assert_equals(location.href,beforehref.replace(/^(\w*:\/\/[^\/]*\/)[\w\W]*$/,'$1testing_ignore_me_404_2')); +}, 'history.replaceState URL resolving should be done relative to the document, not the script'); diff --git a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/security_location_0.sub.htm b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/security_location_0.sub.htm index b6ebbc28a45..f509c23b18c 100644 --- a/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/security_location_0.sub.htm +++ b/tests/wpt/web-platform-tests/html/browsers/history/the-location-interface/security_location_0.sub.htm @@ -11,13 +11,17 @@

    Access location object from different origins doesn't raise SECURITY_ERR exception

    + - + + diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html new file mode 100644 index 00000000000..3ad0de6a3a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html @@ -0,0 +1,25 @@ + + + +Cross-origin behavior of Window and Location on new Window + + + + + +
    + diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html similarity index 95% rename from tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html rename to tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html index ee7c7763663..99f944924bc 100644 --- a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.sub.html +++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html @@ -7,6 +7,7 @@ +
    @@ -16,13 +17,14 @@ * Setup boilerplate. This gives us a same-origin window "B" and a cross-origin * window "C". */ +var host_info = get_host_info(); setup({explicit_done: true}); path = location.pathname.substring(0, location.pathname.lastIndexOf('/')) + '/frame.html'; var B = document.getElementById('B').contentWindow; var C = document.getElementById('C').contentWindow; B.frameElement.uriToLoad = path; -C.frameElement.uriToLoad = '//{{domains[www1]}}:' + location.port + path; +C.frameElement.uriToLoad = get_host_info().HTTP_REMOTE_ORIGIN + path; function reloadSubframes(cb) { var iframes = document.getElementsByTagName('iframe'); @@ -51,7 +53,9 @@ function addTest(fun, desc) { testList.push([fun, desc]); } */ addTest(function() { - assert_equals(location.host, '{{domains[]}}:{{location[port]}}', 'Need to run the top-level test from {{domains[]}}:{{location[port]}}'); + // Note: we do not check location.host as its default port semantics are hard to reflect statically + assert_equals(location.hostname, host_info.ORIGINAL_HOST, 'Need to run the top-level test from domain ' + host_info.ORIGINAL_HOST); + assert_equals(location.port, host_info.HTTP_PORT, 'Need to run the top-level test from port ' + host_info.HTTP_PORT); assert_equals(B.parent, window, "window.parent works same-origin"); assert_equals(C.parent, window, "window.parent works cross-origin"); assert_equals(B.location.pathname, path, "location.href works same-origin"); @@ -189,6 +193,8 @@ addTest(function() { * [[Delete]] */ addTest(function() { + assert_throws(null, function() { delete C[0]; }, "Can't delete cross-origin indexed property"); + assert_throws(null, function() { delete C[100]; }, "Can't delete cross-origin indexed property"); assert_throws(null, function() { delete C.location; }, "Can't delete cross-origin property"); assert_throws(null, function() { delete C.parent; }, "Can't delete cross-origin property"); assert_throws(null, function() { delete C.length; }, "Can't delete cross-origin property"); @@ -306,20 +312,6 @@ addTest(function() { checkFunction(set_href_B, B.Function.prototype); }, "Same-origin observers get different accessors for cross-origin Location"); -function doDocumentDomainTest(cb) { - window.addEventListener('message', function onmessage(evt) { - window.removeEventListener('message', onmessage); - test(function() { - var results = evt.data; - assert_true(results.length > 0, 'Need results'); - results.forEach(function(r) { assert_true(r.pass, r.message); }); - }, "Cross-origin object identity preserved across document.domain"); - win.close(); - cb(); - }); - var win = window.open('win-documentdomain.sub.html'); -} - // We do a fresh load of the subframes for each test to minimize side-effects. // It would be nice to reload ourselves as well, but we can't do that without // disrupting the test harness. @@ -329,7 +321,7 @@ function runNextTest() { if (testList.length != 0) reloadSubframes(runNextTest); else - doDocumentDomainTest(done); // Asynchronous. + done(); } reloadSubframes(runNextTest); diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html index c3093ebdac3..046e49da73c 100644 --- a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html +++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/frame.html @@ -15,8 +15,12 @@ windowReferences.push(parent[i]); locationReferences.push(parent[i].location); } - document.domain = document.domain.substring(document.domain.indexOf('.') + 1); - evt.source.postMessage('', '*'); + try { + document.domain = document.domain.substring(document.domain.indexOf('.') + 1); + evt.source.postMessage('PASS', '*'); + } catch (e) { + evt.source.postMessage('FAIL: cannot trim off document.domain: ' + e, '*'); + } } function checkWindowReferences() { diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html index d1b0e0dd112..e05c4d9e5d4 100644 --- a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html +++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/win-documentdomain.sub.html @@ -19,23 +19,30 @@ if (++loadCount == 4) go(); } - Array.forEach(document.getElementsByTagName('iframe'), function(ifr) { ifr.onload = frameLoaded; }); + var iframes = document.getElementsByTagName('iframe'); + for (var i = 0; i < iframes.length; i++) { + iframes[i].onload = frameLoaded; + } } - var results = []; function assert(cond, msg) { results.push({pass: !!cond, message: msg}); } function go() { - window.onmessage = function() { - assert(B.checkWindowReferences(), "B's Window references are still self-consistent after document.domain"); - for (var i = 0; i < window.length; ++i) { - assert(window[i] === B.windowReferences[i], - "Window reference " + i + " consistent between globals after document.domain"); - assert(window[i].location === B.locationReferences[i], - "Location reference " + i + " consistent between globals after document.domain"); + window.onmessage = function(evt) { + try { + assert(evt.data == "PASS", "frame.html processing should be PASS but got " + evt.data); + assert(B.checkWindowReferences(), "B's Window references are still self-consistent after document.domain"); + for (var i = 0; i < window.length; ++i) { + assert(window[i] === B.windowReferences[i], + "Window reference " + i + " consistent between globals after document.domain"); + assert(window[i].location === B.locationReferences[i], + "Location reference " + i + " consistent between globals after document.domain"); + } + } catch(e) { + assert(false, "Should not receive exception: " + e); } opener.postMessage(results, '*'); }; diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.sub.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.sub.html index 213c7bdda84..9a9ef358ec1 100644 --- a/tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.sub.html +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.sub.html @@ -12,10 +12,9 @@ +
    - + diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html index a9fe824ef3c..f1d5581f689 100644 --- a/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html +++ b/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html @@ -4,6 +4,7 @@ + + diff --git a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html index c523bfb0ac3..b0e16274aaa 100644 --- a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html +++ b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/Document.currentScript.sub.html @@ -5,6 +5,7 @@ +
    diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-EN-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-EN-L-ref.html index 3dfe4db839c..de6e13b3a32 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-EN-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-EN-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with EN, then L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-EN-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-EN-R-ref.html index f91155bc898..15bd618dc18 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-EN-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-EN-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with EN, then R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-L-ref.html index 2e85732ec22..23da64ed9b1 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-L-ref.html index 818cd74f9fb..c7977d189f1 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with N, then EN, then L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-R-ref.html index 2b6b2fd7e18..aae50bc7218 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-EN-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with N, then EN, then R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-L-ref.html index 801eb83dd55..4bbaca1e317 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with N, then L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-R-ref.html index ded5977d573..7a1daeddde8 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-N-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with N, then R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-R-ref.html index 7b20566be62..c9dc5301b40 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-L-ref.html index 421c107acc5..4e42a11a919 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with L within contained element - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-R-ref.html index 04a286f1484..a3938bdf852 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with R within contained element - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-bdi-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-bdi-L-ref.html index 691e0bfd8c2..470220c80d5 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-bdi-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-bdi-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with bdi, then L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-bdi-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-bdi-R-ref.html index ff6532e02a8..94475aaa92a 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-bdi-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-bdi-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with bdi, then R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir-L-ref.html index f5a8a8a856c..7c9f931d3dd 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with dir, then L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir-R-ref.html index b34f43f0d28..c6748dc85fe 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with dir, then R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L-ref.html index f04559ba3fd..53c60421f86 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with dir=auto, then L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R-ref.html index e4104befb0a..41871f04a16 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-dir_auto-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with dir=auto, then R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-script-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-script-L-ref.html index 69d2ef6cbfb..aca07de7efb 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-script-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-script-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with script, then L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-script-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-script-R-ref.html index ea452c1ce8d..921f10a4c6c 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-script-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-script-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with script, then R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-style-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-style-L-ref.html index d9a73560539..2ec4f02ec2a 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-style-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-style-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with style, then L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-style-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-style-R-ref.html index 32c918f1026..9ad9d7109a9 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-style-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-style-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with style, then R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-textarea-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-textarea-L-ref.html index 4e0d0e10136..411099f7b4c 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-textarea-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-textarea-L-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with textarea, then L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-textarea-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-textarea-R-ref.html index f53d15ed5ca..351431fb2b5 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-textarea-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-contained-textarea-R-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, start with textarea, then R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-EN-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-EN-L-ref.html index 58937597d52..198d081c263 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-EN-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-EN-L-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, start with EN+L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-EN-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-EN-R-ref.html index 2a7eb7a1dba..303afc3c6b9 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-EN-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-EN-R-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, start with EN+R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-L-ref.html index 6e8643769b3..cb3621aa611 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-L-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, start with L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-L-ref.html index 5a442cdd381..3d0f2cf3cc0 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-L-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, start with N+EN+L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-R-ref.html index 36cb32f64e2..26bf27d6191 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-R-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, start with N+EN+R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-ref.html index b1a8a23c049..33f75b730b1 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-EN-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, all N+EN - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-L-ref.html index fcf594f02fe..b6a89a1d724 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-L-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, start with N+L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-R-ref.html index 28c0e4dd12f..bcd5430441f 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-N-R-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, start with N+R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-R-ref.html index 65fc8a80165..217972e82dd 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-R-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, start with R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-EN-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-EN-L-ref.html index a60e93ed5ad..879e20d6cf1 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-EN-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-EN-L-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, script assigns to start with EN+L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-EN-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-EN-R-ref.html index c58523b17a5..15781e25240 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-EN-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-EN-R-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, script assigns to start with EN+R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-L-ref.html index eec4fb959eb..0feef250478 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-L-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, script assigns to start with L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L-ref.html index 78591478c34..6d6902f314b 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-L-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, script assigns to start with N+EN+L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R-ref.html index 3b3f7b91d6a..53dd8920965 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-R-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, script assigns to start with N+EN+R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-ref.html index b0ab0710dda..11697e53ebf 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-EN-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, script assigns to all N+EN - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-L-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-L-ref.html index a807b2758c3..fd7cb10fbdf 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-L-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-L-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, script assigns to start with N+L - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-R-ref.html index c267f281c8d..0fa6da249ad 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-N-R-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, script assigns to start with N+R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-R-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-R-ref.html index 1cc14df38dc..12b2d1925f2 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-R-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-input-script-R-ref.html @@ -3,7 +3,6 @@ HTML Test: input with dir=auto, script assigns to start with R - diff --git a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-isolate-ref.html b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-isolate-ref.html index 442a2d3b895..858a7db2331 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-isolate-ref.html +++ b/tests/wpt/web-platform-tests/html/dom/elements/global-attributes/dir_auto-isolate-ref.html @@ -3,7 +3,6 @@ HTML Test: dir=auto, isolated in LTR text - diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.html b/tests/wpt/web-platform-tests/html/dom/interfaces.html index 7d6acb0f1c5..8e35f4175fa 100644 --- a/tests/wpt/web-platform-tests/html/dom/interfaces.html +++ b/tests/wpt/web-platform-tests/html/dom/interfaces.html @@ -84,8 +84,6 @@ interface ParentNode { [Unscopable] void prepend((Node or DOMString)... nodes); [Unscopable] void append((Node or DOMString)... nodes); - [Unscopable] Element? query(DOMString relativeSelectors); - [NewObject, Unscopable] Elements queryAll(DOMString relativeSelectors); Element? querySelector(DOMString selectors); [NewObject] NodeList querySelectorAll(DOMString selectors); }; @@ -167,7 +165,7 @@ interface Node : EventTarget { const unsigned short ELEMENT_NODE = 1; const unsigned short ATTRIBUTE_NODE = 2; // historical const unsigned short TEXT_NODE = 3; - const unsigned short CDATA_SECTION_NODE = 4; // historical + const unsigned short CDATA_SECTION_NODE = 4; const unsigned short ENTITY_REFERENCE_NODE = 5; // historical const unsigned short ENTITY_NODE = 6; // historical const unsigned short PROCESSING_INSTRUCTION_NODE = 7; @@ -239,6 +237,7 @@ interface Document : Node { [NewObject] Element createElementNS(DOMString? namespace, DOMString qualifiedName); [NewObject] DocumentFragment createDocumentFragment(); [NewObject] Text createTextNode(DOMString data); + [NewObject] CDATASection createCDATASection(DOMString data); [NewObject] Comment createComment(DOMString data); [NewObject] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data); @@ -354,6 +353,10 @@ interface Text : CharacterData { readonly attribute DOMString wholeText; }; +[Exposed=Window] +interface CDATASection : Text { +}; + interface ProcessingInstruction : CharacterData { readonly attribute DOMString target; }; @@ -443,7 +446,7 @@ callback interface NodeFilter { const unsigned long SHOW_ELEMENT = 0x1; const unsigned long SHOW_ATTRIBUTE = 0x2; // historical const unsigned long SHOW_TEXT = 0x4; - const unsigned long SHOW_CDATA_SECTION = 0x8; // historical + const unsigned long SHOW_CDATA_SECTION = 0x8; const unsigned long SHOW_ENTITY_REFERENCE = 0x10; // historical const unsigned long SHOW_ENTITY = 0x20; // historical const unsigned long SHOW_PROCESSING_INSTRUCTION = 0x40; @@ -460,14 +463,13 @@ interface DOMTokenList { readonly attribute unsigned long length; getter DOMString? item(unsigned long index); boolean contains(DOMString token); - void add(DOMString... tokens); - void remove(DOMString... tokens); - boolean toggle(DOMString token, optional boolean force); - void replace(DOMString token, DOMString newToken); + [CEReactions] void add(DOMString... tokens); + [CEReactions] void remove(DOMString... tokens); + [CEReactions] boolean toggle(DOMString token, optional boolean force); + [CEReactions] void replace(DOMString token, DOMString newToken); boolean supports(DOMString token); - attribute DOMString value; - stringifier; -// iterable; + [CEReactions] stringifier attribute DOMString value; + // iterable; }; + + + + + +
    Select and drag the blue text to rectangular box.
    +
    blue text
    +
    +
    + + + + diff --git a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js index 349e1619fd5..b1b78e7f472 100644 --- a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js +++ b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js @@ -299,7 +299,7 @@ onload = function() { async_test(function() { var elm = document.createElement(tag); var video_ext = ''; - if (elm.canPlayType('video/ogg; codecs="theora,vorbis"')) { + if (elm.canPlayType('video/ogg; codecs="theora,flac"')) { video_ext = 'ogv'; } else if (elm.canPlayType('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')) { video_ext = 'mp4'; diff --git a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html index 80a3970fc1a1c2b255afcef1b8279449b3b00f8e..06558fe388f08ad02ec977124dd96973dc9009dd 100644 GIT binary patch delta 11 ScmZ3$(ZxPt`(|Ip%S-?ofBxcNF00E*lZzW@LL diff --git a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html index 8d91dcbd8e024c426bb5fa2e745f8249680f65ac..86510b68525af982342aeaad9e35e5a70d169044 100644 GIT binary patch delta 11 ScmZ3+F@b%;p3OmwSC{}Bkpyl4 delta 74 zcmbQhzKmnS9>W}lOolv$Yz75}B8F6k90ps4VuliiN+2s0$jShcsX)F0kOh)YW3Zhp U%c#$q43sOL9LT7 Unrecognized type should fallback as text type - diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_href_specified.sub.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_href_specified.sub.html index e66a9caae46..83e71387a0b 100644 --- a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_href_specified.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-base-element/base_href_specified.sub.html @@ -5,7 +5,8 @@ - + +
    @@ -13,16 +14,20 @@ var testElement; var baseElement; + var otherOrigin = get_host_info().HTTP_REMOTE_ORIGIN; + setup(function() { testElement = document.getElementById("test"); baseElement = document.getElementById("base"); + + baseElement.setAttribute("href", otherOrigin); }); test(function() { - assert_equals(baseElement.href, "http://{{domains[www]}}:{{ports[http][0]}}/", "The href attribute of the base element is incorrect."); + assert_equals(baseElement.href, otherOrigin + "/", "The href attribute of the base element is incorrect."); }, "The href attribute of the base element is specified"); test(function() { - assert_equals(testElement.src, "http://{{domains[www]}}:{{ports[http][0]}}/test.ico", "The src attribute of the img element is incorrect."); + assert_equals(testElement.src, otherOrigin + "/test.ico", "The src attribute of the img element is incorrect."); }, "The src attribute of the img element must relative to the href attribute of the base element"); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-audio-element/audio_constructor.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-audio-element/audio_constructor.html index 995ea0ba056..2420988693a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-audio-element/audio_constructor.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-audio-element/audio_constructor.html @@ -11,18 +11,12 @@ test(function() { valueOf: function() { throw Error() } }; var tests = [ - [function() { return Audio() }, null, "No arguments, without new"], - [function() { return new Audio() }, null, "No arguments, with new"], - [function() { return Audio("") }, "", "Empty string argument, without new"], - [function() { return new Audio("") }, "", "Empty string argument, with new"], - [function() { return Audio("src") }, "src", "Non-empty string argument, without new"], - [function() { return new Audio("src") }, "src", "Non-empty string argument, with new"], - [function() { return Audio(null) }, "null", "Null argument, without new"], - [function() { return new Audio(null) }, "null", "Null argument, with new"], - [function() { return Audio(undefined) }, null, "Undefined argument, without new"], - [function() { return new Audio(undefined) }, null, "Undefined argument, with new"], - [function() { return Audio("", throwingObject) }, "", "Extra argument, without new"], - [function() { return new Audio("", throwingObject) }, "", "Extra argument, with new"], + [function() { return new Audio() }, null, "No arguments"], + [function() { return new Audio("") }, "", "Empty string argument"], + [function() { return new Audio("src") }, "src", "Non-empty string argument"], + [function() { return new Audio(null) }, "null", "Null argument"], + [function() { return new Audio(undefined) }, null, "Undefined argument"], + [function() { return new Audio("", throwingObject) }, "", "Extra argument"], ]; tests.forEach(function(t) { var fn = t[0], expectedSrc = t[1], description = t[2]; @@ -38,6 +32,11 @@ test(function() { }, description); }); }); +test(function() { + assert_throws(new TypeError(), function() { + Audio(); + }); +}, "Calling Audio should throw"); test(function() { assert_throws(new TypeError(), function() { HTMLAudioElement(); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.html similarity index 83% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.html index 301e93ba8b3..918bf8f8ff3 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.canvas.html @@ -1,13 +1,13 @@ -Canvas test: security.drawImage.canvas.sub +Canvas test: security.drawImage.canvas -

    security.drawImage.canvas.sub

    +

    security.drawImage.canvas

    drawImage of unclean canvas makes the canvas origin-unclean

    @@ -31,5 +31,6 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.html similarity index 81% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.html index e15eaa4e2ce..48f808aa652 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.drawImage.image.html @@ -1,13 +1,13 @@ -Canvas test: security.drawImage.image.sub +Canvas test: security.drawImage.image -

    security.drawImage.image.sub

    +

    security.drawImage.image

    drawImage of different-origin image makes the canvas origin-unclean

    @@ -26,5 +26,6 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.html similarity index 83% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.html index 0a48d9694c7..2997ef9bbb3 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.fillStyle.html @@ -1,13 +1,13 @@ -Canvas test: security.pattern.canvas.fillStyle.sub +Canvas test: security.pattern.canvas.fillStyle -

    security.pattern.canvas.fillStyle.sub

    +

    security.pattern.canvas.fillStyle

    Setting fillStyle to a pattern of an unclean canvas makes the canvas origin-unclean

    @@ -33,5 +33,6 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.html similarity index 83% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.html index a65e0621a49..8980d2d5393 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.strokeStyle.html @@ -1,13 +1,13 @@ -Canvas test: security.pattern.canvas.strokeStyle.sub +Canvas test: security.pattern.canvas.strokeStyle -

    security.pattern.canvas.strokeStyle.sub

    +

    security.pattern.canvas.strokeStyle

    Setting strokeStyle to a pattern of an unclean canvas makes the canvas origin-unclean

    @@ -33,5 +33,6 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.html similarity index 85% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.html index 5f20edc857f..bb5fd58e6a0 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.canvas.timing.html @@ -1,13 +1,13 @@ -Canvas test: security.pattern.canvas.timing.sub +Canvas test: security.pattern.canvas.timing -

    security.pattern.canvas.timing.sub

    +

    security.pattern.canvas.timing

    Pattern safety depends on whether the source was origin-clean, not on whether it still is clean

    Disagrees with spec on "is" vs "was" @@ -36,5 +36,6 @@ _assert(true, "true"); // okay if there was no exception }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.html similarity index 81% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.html index 41ed250eb5b..b81c6dfa51a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.create.html @@ -1,13 +1,13 @@ -Canvas test: security.pattern.create.sub +Canvas test: security.pattern.create -

    security.pattern.create.sub

    +

    security.pattern.create

    Creating an unclean pattern does not make the canvas origin-unclean

    @@ -27,5 +27,6 @@ _assert(true, "true"); // okay if there was no exception }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.html similarity index 85% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.html index 83ac1c71b6b..67e40bdaac9 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.cross.html @@ -1,13 +1,13 @@ -Canvas test: security.pattern.cross.sub +Canvas test: security.pattern.cross -

    security.pattern.cross.sub

    +

    security.pattern.cross

    Using an unclean pattern makes the target canvas origin-unclean, not the pattern canvas

    @@ -34,5 +34,6 @@ ctx2.getImageData(0, 0, 1, 1); }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.html similarity index 81% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.html index ba0904ec1d4..758c30a1201 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.html @@ -1,13 +1,13 @@ -Canvas test: security.pattern.image.fillStyle.sub +Canvas test: security.pattern.image.fillStyle -

    security.pattern.image.fillStyle.sub

    +

    security.pattern.image.fillStyle

    Setting fillStyle to a pattern of a different-origin image makes the canvas origin-unclean

    @@ -28,5 +28,6 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.html similarity index 81% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.html index d7f32a9484b..771523973e1 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.image.strokeStyle.html @@ -1,13 +1,13 @@ -Canvas test: security.pattern.image.strokeStyle.sub +Canvas test: security.pattern.image.strokeStyle -

    security.pattern.image.strokeStyle.sub

    +

    security.pattern.image.strokeStyle

    Setting strokeStyle to a pattern of a different-origin image makes the canvas origin-unclean

    @@ -28,5 +28,6 @@ assert_throws("SECURITY_ERR", function() { ctx.getImageData(0, 0, 1, 1); }); }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.html similarity index 83% rename from tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.sub.html rename to tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.html index 28693490ad3..28e65f90e57 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.reset.html @@ -1,13 +1,13 @@ -Canvas test: security.reset.sub +Canvas test: security.reset -

    security.reset.sub

    +

    security.reset

    Resetting the canvas state does not reset the origin-clean flag

    @@ -28,5 +28,6 @@ assert_throws("SECURITY_ERR", function() { canvas.toDataURL(); }); }); - + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html index 9071a0b89e5..da5791a2de9 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-allowfullscreen.html @@ -10,9 +10,8 @@
    + + +
    @@ -35,7 +44,27 @@
    - +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html b/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html index 79546eb5946..35ee9f44530 100644 --- a/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html +++ b/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/caption-methods.html @@ -36,6 +36,8 @@ + + diff --git a/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/tFoot.html b/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/tFoot.html index 52c6972fefd..d06e16f2005 100644 --- a/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/tFoot.html +++ b/tests/wpt/web-platform-tests/html/semantics/tabular-data/the-table-element/tFoot.html @@ -37,6 +37,15 @@ test(function() { assert_equals(t.tFoot.previousSibling, tbody2); assert_equals(t.tFoot.nextSibling, null); + t.deleteTFoot(); + assert_equals(t.tFoot, null); + + t.tFoot = tfoot; + assert_equals(t.tFoot, tfoot); + + assert_equals(t.tFoot.previousSibling, tbody2); + assert_equals(t.tFoot.nextSibling, null); + assert_throws(new TypeError(), function(){ t.tFoot = document.createElement("div"); }); diff --git a/tests/wpt/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm b/tests/wpt/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm index 6d1922971a7..8460f5ff18b 100644 --- a/tests/wpt/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm +++ b/tests/wpt/web-platform-tests/html/the-xhtml-syntax/parsing-xhtml-documents/xhtml-mathml-dtd-entity-support.htm @@ -9,9 +9,16 @@ var parser = new DOMParser(); var parse = parser.parseFromString.bind(parser); - function generateTestFunction(entitystring, expectedString, doctypeMarkupString, mimeType, friendlyMime) { + function generateTestFunction(entitystring, expectedString, publicId, systemId, mimeType, friendlyMime) { return function () { - var doc = parse(doctypeMarkupString + ""+entitystring+"", mimeType); + var doctypeString = ''; + else if (systemId != null) + doctypeString += ' SYSTEM "' + systemId + '">'; + else // both are null + doctypeString += '>'; + var doc = parse(doctypeString + ""+entitystring+"", mimeType); var root = doc.getElementById('test'); assert_not_equals(root, null, friendlyMime + " parsing the entity reference caused a parse error;"); assert_true(!!root.firstChild); @@ -24,10 +31,10 @@ } } - function setupTests(jsonEntities, doctypeMarkupString, mimeType, friendlyMime) { + function setupTests(jsonEntities, publicId, systemId, mimeType, friendlyMime) { for (entityName in jsonEntities) { if ((mimeType == "text/html") || /;$/.test(entityName)) { - test(generateTestFunction(entityName, jsonEntities[entityName].characters, doctypeMarkupString, mimeType, friendlyMime), friendlyMime + " parsing " + entityName); + test(generateTestFunction(entityName, jsonEntities[entityName].characters, publicId, systemId, mimeType, friendlyMime), friendlyMime + " parsing " + entityName); } } } @@ -37,22 +44,21 @@ var xhr = new XMLHttpRequest(); xhr.open("GET", "/common/entities.json"); xhr.onload = function () { - // Note: for proper XML parsing of the Doctype, Edge requires a non-empty string for url part var entitiesJSON = JSON.parse(xhr.response); [ - ["application/xhtml+xml", "", "XHTML1.0 Transitional"], - ["application/xhtml+xml", "", "XHTML1.1"], - ["application/xhtml+xml", "", "XHTML1.0 Strict"], - ["application/xhtml+xml", "", "XHTML1.0 Frameset"], - ["application/xhtml+xml", "", "XHTML Basic"], - ["application/xhtml+xml", "", "XHTML1.1+MathML"], - ["application/xhtml+xml", "", "XHTML1.1+MathML+SVG"], - ["application/xhtml+xml", "", "MathML"], - ["application/xhtml+xml", "", "XHTML Mobile"], -// ["application/xhtml+xml", "", "SYSTEM MathML"], // Experimental - ["text/html", "", "HTML"] + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Transitional//EN", "foo", "XHTML1.0 Transitional"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.1//EN", "foo", "XHTML1.1"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Strict//EN", "foo", "XHTML1.0 Strict"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.0 Frameset//EN", "foo", "XHTML1.0 Frameset"], + ["application/xhtml+xml", "-//W3C//DTD XHTML Basic 1.0//EN", "foo", "XHTML Basic"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN", "foo", "XHTML1.1+MathML"], + ["application/xhtml+xml", "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN", "foo", "XHTML1.1+MathML+SVG"], + ["application/xhtml+xml", "-//W3C//DTD MathML 2.0//EN", "foo", "MathML"], + ["application/xhtml+xml", "-//WAPFORUM//DTD XHTML Mobile 1.0//EN", "foo", "XHTML Mobile"], +// ["application/xhtml+xml", null, "mathml.dtd", "SYSTEM MathML"], // Experimental + ["text/html", null, null, "HTML"] ].forEach(function (row) { - setupTests(entitiesJSON, row[1], row[0], row[2]); + setupTests(entitiesJSON, row[1], row[2], row[0], row[3]); }); done(); } diff --git a/tests/wpt/web-platform-tests/html/tools/update_html5lib_tests.py b/tests/wpt/web-platform-tests/html/tools/update_html5lib_tests.py index ae08e82d3e4..2235ddffd1b 100644 --- a/tests/wpt/web-platform-tests/html/tools/update_html5lib_tests.py +++ b/tests/wpt/web-platform-tests/html/tools/update_html5lib_tests.py @@ -100,7 +100,7 @@ def write_test_file(script_dir, out_dir, tests, file_name, template_file_name): file_name = os.path.join(out_dir, file_name + ".html") short_name = os.path.split(file_name)[1] - with open(os.path.join(script_dir, template_file_name)) as f: + with open(os.path.join(script_dir, template_file_name), "r") as f: template = MarkupTemplate(f) stream = template.generate(file_name=short_name, tests=tests) diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_raf.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_raf.html new file mode 100644 index 00000000000..824dbc4b92e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_raf.html @@ -0,0 +1,57 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_script.html b/tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_script.html new file mode 100644 index 00000000000..799a0de605f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/scripting/event-loops/microtask_after_script.html @@ -0,0 +1,55 @@ + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/innerText/getter-tests.js b/tests/wpt/web-platform-tests/innerText/getter-tests.js index cc74890882e..d4511410b46 100644 --- a/tests/wpt/web-platform-tests/innerText/getter-tests.js +++ b/tests/wpt/web-platform-tests/innerText/getter-tests.js @@ -83,7 +83,6 @@ if (CSS.supports("display", "contents")) { testText("
    abc", "abc", "display:contents container"); testText("
    abc", "abc", "display:contents container"); testText("
    123abc", "123abc", "display:contents rendered"); - testText("
    123abc", "123abc", "display:contents rendered"); testText("
    ", "", "display:contents not processed via textContent"); testText("
    ", "", "display:contents not processed via textContent"); } @@ -127,10 +126,10 @@ testText("
    abc", "abc", "
    contents preserved"); testText("
    abc", "abc", "
    contents preserved"); testText("", "", " contents ignored"); testText("

    k|+e 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

  • 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:+rKMPWEtfsYCvaS{|wn_n+#7HwAFVSboVSH0zo_^nt&Q+}gRK zM0nvzcFYn9MauH@qNR(Sj!>IhpKkGn8&;!Tc8__Tx4e4BnvlxbT|88L@BgHj8B^&z zJTVnsnYW9GwYbrWp0z8I1hf_!4KS{|=erF#P&P)6iKAkB>=ls>@XJuh z?5d;t1~NWI@!TQnbe@#W{B~fXFtR!Nkd%*Gar7Q|C>Ea&p^y@+V_;|pi1LY+b+EFd zl`6{f*tqk2!H_37)uaAF6P6tcrM@68uF3^lClMY@>y151pebuw+A8xfz<~b-n%xM4 zOTlmzMGekjb3nI`>FbTWs04aeq6JDPrRjWk+oRuX)&uiwUeMm+MnZs#9fs$>=FK!^ zzIrAg(};qrc(P_s87ZK1Z6@R?m&z`{W|v!G$@KGxW2yQAfIp zJ^)Aej4*<>ch5Ug%xe0{<5=|hRK^NVubaXQyW^0Xi7RnvpjT)t@)~8Qo6# zD$%nqOxjS!Yb`}J8`U%^eOp6RbGg_bq#_ETsmLeRq+oCN6o4(o?#}luogH$ShYSWN ztvp$ub=tgkiP*yx=a10w+G>v~8qTW3IQ?EB0U4DDlZfRHKVFt)77>VP!14-U0+<{v z1#V9fLmcMw=e`kLMa=ZB90aqzoEP2kkG%upUQjIoKh4p$xf#}NTrwejXCK6TdN__E z@;E$A!25<3hZM=ccy40&q?iPaiSa3B$8?qYI>x2RDJ#6Ir2BUmc$Uf<6|{UrPe-Wo zHaVY^u)O`5`+W?zS_hRkSW6`;w#ifzMf$e~*R<}*7yDm*T-saJhXkp6Q5}G*k-I$0 z9o3utG2d*R4bE&bbeY&brhNWw?$%?ldBm+HpUz5NAj=$e?4M&T)K zSXzaQE~zn^lTMB1dD=Z^-e99eru?AQn1wJdrKR{fj{RfLOyZ>W`Uoh zLMse71#Q69Sl&{;Yun<{i8$I&GM<4F#Cj*^iWuUqDS)t)TO<#FSeeD)mf#DfuVFRa zCGqi(Y~}hzoPVv(ri(CDGt#h{916E7V4Nk+D#%l=XaL`p4QB)~AQyh)2LJVuT7LOP zRuwQQAA^KEY~34*w23WZec$FCa6Y`y_D)^(T**=-7F-nVcnlchvtU#*!{9Zni-vgnQNA1le! zUXxz=aqh@YW#VtaGg7Hj~e(Zk4LD+%go=dx?0)zE4t9dK)`i85_E`8YlR6_dZxB++!MVj{NXC5-pn8oU&Zy)BQ-_N0vh0)nPn)6l1r zpC!CqV6^qKU6T6YTq%ftzjWJX4a?9|qhAH_TYd^v9&nZK4^?!+AeF1}O$Rm$!me-w zMo!;OW|Q{$ex$m(HXHI85h&1T{hZYRBw^fNO}4zJF1e3mG!u0iZ49YP;fYnMh^Z(b z)ESE3K<78)OY15J!xZ|R21O?aCw$#RX5Kv(13XxTKH=3|9n8<@>%|4uwWI8~mf~en zP4BcKM|URNh|U`Kay(dM7vCFYLpyOVWOb75>sz0-4t(6FPGUg5;-;ias^EE zBh9IwM2{;XzI{!PmvoRnvLQ?M&2-r!=(eg2 zJb!i{=6ctwiF{7@+CHTLsd($35$;@WfC!E`f+O}KU3Y1R@pX*l_r3|jMj1N~g|Knw zCXI&mLKoRdkQ{$D$j%U#22Oq;@EC7T`0{GxqBP;Tl`Xx)NK+ejkMz7p9DdPTpP+YI*omw{d0JK`E~oi;<;t1kyuRF5^3kxp$uE z`4ld-Ety4;VazIPsc7aVc&EPn)Z2hhOKq3@&AF?XLV*2R?bM*?^Acv_s1PsY2gLG{ zb9dkbZZN{Fd`nA!82psQ%qN}+N`kHbB7Y5butlNzj3WA-*?0Rb*1-PIN!E$i$qo}o zKx8-xPi!E0jrL|@(JY-n;`q9t%U*Oy@4SqV1>DJ|W*_dE1G{A^`(}#U4&Ng%Tv}ZV_+gf^aXQkWTuNBh&3>cOQ_q{(ZvV=&kg=Z#?*HaIXk)#18 z`QKANX9W%q#lQD?pJyA>`{~m<$QPU!qz+>d_YYc*@u<#Yxiw@J_c|n9PyIx{S@rKf z=bEY%dQ&-b2yHPiv(rC+J(Vk0a?-;I-H>SC{d;n|SP=MP7=-GN!>v`QX#BicUbkwK zJZJX_!$M6&Mub4bH^k&#o$8TG-;2c56QX61r4>k#T1bkgWi^BXp7%_N zGznEoZn@(i+mbH}gJ#ro%~?*BB+C|}j|F4xu*fP#4)3BmQItSB7L-WT!{qG$Cd@(df9Fi1MA! zE~qf1yRx0Jii!9|Fg^>#?zlUNRi+T zxoznqgYFl;9|RiX?{YuxTmlC+eX9PO@TfV52B93!bntFCIId;(>3-aR<>YlRdlXGh zOHT2As8H$`<^wX6L=@&A(TT~FF1Epk5ho6_UBh$^aSRzX8DrD%UxnSNCw^zZPxkRo z(ZdfNnt>i9gDFUB(WQ`X`S?xv+gA(HMa6vV_&Q}RUk+hp`4#2)t;x99ve}VX1a=LmR!p*$7;3*fb4SNym2(KWh zJI^GRNcM*3&ls}(*n&{T)NR$e$CleJep+fhOq*N@!Uu-yc4}I2nv>a2n*vjrKhul` zjIjNdWWhiU)PLHx4l3c!BoKrLZ9kf?4-a0Yi8`H=kqi1ywLpK#+oDq^`~`nZQgEPA zcA#G=+hL%>35`IbR*KYf`&#y+jg?=CzHw$Oxt!)qMRPYY-|r$Rg|{%xLXI+#fT$m+y&Bt*5X8 zfI9a0{V}Bof5x2w9jeW6n8$O9U3qArPYCip;{zdfz(rxQ8|czxwC!g;EAX#)%dLsF z;u$qIeL^90I5zVZ0e@*^z)dQn7Y_;TS3TU`hH_(S$p{iWkESjKOGU^$hyKaxYahe*LOb9N!W($LR!J;g0tXK2h==_ zK<;o8+CMsfukPIZ_A2VQcM+2LY+o{S_cRqRqu0T(Laj7?(f$qTF;3We#u?N=>cO>d zIAY_^E0rApQ0U=06g5HQy+75u#OC%_`8R#(X5>Dk3N@Wl-j*@HHEk@0DlSy zsAYa%aKcpUDMreIY%};Trr`cCJ+t&Bi>ixgaHxnRj)kObm*S=n*8JVPp7)#P8FEEj z7ZcfH0Mow4Gc~ak$!4YbCjV`o-GKO6f&iM`>S3qpx*%nIZk3p^44KPmS^e}psR~`J ziP`7Lr+^3s`|>&T%Cc zFiqI5+}4%@hvW`o4#6)YQ_?XXmSnb;Shh!mxn&-q3r@{bfJbNDh3D6tA_I*2k;Js> zN#s5a&|j!DS`&=X3lhhK_|@Lua0xpm7}0`qTcpBD$nX&)jW5(M&T#bvbHzCHC|A`S zZgl%`qTuK0ET{V*8%+2#O%!?cX#wqIx~7p(&vVw8+s@NLw^)f_pD9Q3u}N|84|eq` z-VQu9bfXqu)`DISqqWCF0lESv`*jwt$#xt@98#o+TcC^PC zbP5=O$ulx&0vm^3_1s8$Op~*XnT<`=dAtC&e(a3Rw_DXb#xP#b?5t`h1M(pOzg;)3 z9Tic+b6vol3su7wN~{HYCu(OTu}=OL7)$eoC#B&lfd`kBgJK8rv=kX3UU)WCozor; ztND=Xv+3Cx-;uLL=5?0+W9dDLuLv41=yakZUcK1wRl(pc(w6QYPs|LT?z_USuP|%qYg!Tw{@Zg}G2!v@ zDwZ4EOkQK18yZ z_*3oW_{I4Ccwc=tDQyq5>Pt|+ti-10nX~cOtKRXnw7EYwMrNe|&5OGmEfxMw0kH>K z-HQ`tC{cu-wzq`$tA!NRGgfjFN3Jr;lVZ_b8hVF(F0n4R#Fm71iZ0IEi*7~|?*OMd zFN}YAY{(WNatxoE)@Dg3OD?LKZFH>21=k|%Dh9nT>=DRuOyW<%sLd>Ul!&5Sd(0mB zIAdHVJ@Z5e`)$A~dQaZLU*f{{v6RkQ+D8jWD`uwZQZ_s+1z6h7#EPP1EV(fLpqngU z4p-uSO#K$T(_yPHa_7Af`T^B9!EiGRI+06-Tyui)b&*jeFpS_xU-!Qg8X0&$<2ePu zgDvv}Aq^unn^Np_BPu3KnW@HAqpPkf8*mA-ui|vcR-L&s!r19ah+nI%n=0%WF$aZ_ zviZle>zT=~XKXl@3WwV-0ACN!B|e~XCoxItw@TB3U_i2sCe|d^Tc(0+A`lMoQfNA9kp+5uZsVz|on%9@0FyU_D~TyGB=4R4Ujs z*bVg>FMNHu=Ny@yB>Ye-h=Xz?K=TsL61@Bf()jxGRG<$RNahdU&O%MenBM6-%Gf^~x4*c3;O?xOHaQIe(47bV+Lcbh+01YIHOr za7@DcBS4-`z@`E+D4-%hH67G_k1$7Ha1Ur)KUxHLM$59a)8)sD*3 zxTKX2Cj669+_i{6AVy|EHYo1ZHg|EmPJZew!Pw!R0l|sjp!#&<+tysFaP6n!(A3$s zet~<=pYNFl2acC$&@tUBwBFtxH`lz!wl!cwcWShTA;QE*;EE~i&zjmNOs`GD{$^jl zVcY8ogYv5>$GC}vixNJ9=k|(wWHGW;SDvixG~iZw zEn9480cZKN`Ya2Ah9sjYPo?M+0!%8-KH2Q^;{|>Rn4CjG7!5b*Hd|0`cU&{!7<*3Y z03Hnp)_1ku`q)`MV0SdY@B#DilC;M2OuN%-W#@dGO5!h9rJWhR&tc+``f&yXTXbQ8 zKXA-DvIrF#Ag3aHNKJRodWAD!v!#Vdx|GJ+~E7WQh*O@ zNskjh&xLK-P$gvPEqIcJ$lqETijxb^v@V|~ew@D8aripnKIAYn5BNa{gKSAQlr}sk zr7;$=_<9%YA|<2t9*IWl!NsdiqLtc|PX0ub|HTgK1N!$_R5ioQaTx5tv9ulm(Sq>vhSjf3D+U!njQ$2mwCK! zU`wh-04m?`=fl(C=T8HhJD66=6lBLDPw5qP){drn8xh;>-P22#{YSMBbR$h3 zi6AHc^xAq7dS`LSY#Se#`X=`FS@F=>_W@x%m{DKqK*%@Xo$_~-aei(!IIlzr?ztz% z9!ue=k!ec1mI2jjuZ(<>kw*m7UkAnZKz$fRyph?x~WgYB7pE>s*SxgV)0(3=iB?U#q|_`Z~7tDg|`+<=NGK{t~a-Js0;#Z;r7FT0}4bE1W@GxXEgRjjm7q+4A-u>0-)6rqb z$_8{=fHeMgR-(GuE8I{6N>)?5;G6MrQuYf}&AOVC#2G7roFy-LBAPTb7PmBHn{WeZ zCxft_L9Je9c{fHgjp5P6@yDjr8}Q|YaY-nT%_u!Ly9n!Y4VZMh{OlfzW9m-OkXWZX z(xcEryjh~lom)`H`f;f)wpL|pjJeIzP1u2fA#E()?TGbbc2nbBL2r+razO#zD~%+e ze2Gxjn#dqTsB=ay?=XO&az0s-T>9In)q5c?DoSHZ!QNlsZD_uo9A|p5}gKBrEEnq{&pt*?^}~c zA3qN_9jpG#GwrMlRdBpJW}!7}-rJ#amPSoRJQCC5Y;eog!qm%w7?VKf&%JkW*}Zj; zFxvgkQI8WvxVnP=&{n;}TkHZbk4-X68C8;^X2x1tt?}+7Ug$)YFjgEw_U^GHH$smsLFM2Ut5VNd`h zf1x1`A4zLECcPp5@*dA2_=Nx~P$gZ70S2?2vkrQvL?-`sQNaP_z0$;65j`w}`%YM^ zk`~$WcY$lR`37=}rPGRn?5&ZB-2xYx4*mM>7Mo(ag1ml!CTS7@K#h$)S&yQoE(Qh%-2lnm`MnNPTWWI3eG6_##z^uXU@XwRa|r)`{HmcCQ5+7UCY7&75+9uL0l^OV^lVOx90Ouwi^KZ_M)D{320Xh*NSLUxhH++ zJw4zuSD2csSRX-e&q@siv0OqO1SW}tf4o!hCFPoK<`|PZ47-Wa^TSD_v?P4c_i%s4 zZRx$iq@7bFODbiwH^65x3dnMk-Ir5ZbvD6iJW#|v#Q~+WGmi`F1LWq-J>+kqvH9K} zi-36{Z0+%i0Ko?L2Zb;c7&WLRGKc!?D70Awj|8*;s!ORshxoaiD*-;B5c=Wpha15v z(k_jNJWdeklC?P&F>K;Y4O2f{62&g~YNnuZWu41a2|Sp&Y|WG}RgVvoy1c%(G{7RG z@z#u?ib(<}b3A!(0_VAml?7+&Z&G7BQI#UsYL(shgp)va8-#>OcpVRfa|!Hm`sNr9 zQV~MC=a1d$TzTwLp~p^py*qvB`YM4x6nR@4F%0wX2dWIYstJah%S3Iym$SVi-I#KBl6%O@yNp zDMFV9KMoKO`Y82(;`6JnPW+CRAXZOFL*$V z*Y&G#x@<)oc`cnGcDz#sc4E7}yef7gb=zRr?*Lx-A_xuV)_%u)zjo;$nF%x{I335D_v&Kq8IP|0>)uCT6BR8 z?imLV9V2m$2U1Z)X>e5^≪jG5btm4$-PS>m@P^pLO6# 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 literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/encrypted-media/content/content-metadata.js b/tests/wpt/web-platform-tests/encrypted-media/content/content-metadata.js new file mode 100644 index 00000000000..282b41f0ab0 --- /dev/null +++ b/tests/wpt/web-platform-tests/encrypted-media/content/content-metadata.js @@ -0,0 +1,199 @@ +content = addMemberListToObject( { + 'mp4-basic' : { initDataType: 'cenc', + audio : { type: 'audio/mp4;codecs="mp4a.40.2"', + path: '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' }, + video : { type: 'video/mp4;codecs="avc1.4d401e"', + path: '/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4' }, + keys : [ { kid: [ 0xad, 0x13, 0xf9, 0xea, 0x2b, 0xe6, 0x98, 0xb8, 0x75, 0xf5, 0x04, 0xa8, 0xe3, 0xcc, 0xea, 0x64 ], + key: [ 0xbe, 0x7d, 0xf8, 0xa3, 0x66, 0x7a, 0x6a, 0x8f, 0xd5, 0x64, 0xd0, 0xed, 0x81, 0x33, 0x9a, 0x95 ], + initDataType: 'cenc', + initData: 'AAAAcXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFEIARIQrRP56ivmmLh19QSo48zqZBoIY2FzdGxhYnMiKGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRjMmx1WjJ4bEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+ADYAdgBrAFQAcgBlAFkAcgB1AEoAaAAxADkAUQBTAG8ANAA4AHoAcQBaAEEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AagBZAEYATgBmADAAeQBmADQAaQBzAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' } ] + }, + + 'mp4-av-multikey' : { + initDataType: 'cenc', + associatedInitData: true, // indicates that initData for one key causes other keys to be returned as well + audio: { type: 'audio/mp4;codecs="mp4a.40.2"', + path: '/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4' }, + video : { type: 'video/mp4;codecs="avc1.4d401e"', + path: '/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4' }, + keys : [ { kid: [ 0xad, 0x13, 0xf9, 0xea, 0x2b, 0xe6, 0x98, 0xb8, 0x75, 0xf5, 0x04, 0xa8, 0xe3, 0xcc, 0xea, 0x64 ], + key: [ 0xbe, 0x7d, 0xf8, 0xa3, 0x66, 0x7a, 0x6a, 0x8f, 0xd5, 0x64, 0xd0, 0xed, 0x81, 0x33, 0x9a, 0x95 ], + initDataType: 'cenc', + initData: 'AAAAcXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFEIARIQrRP56ivmmLh19QSo48zqZBoIY2FzdGxhYnMiKGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRjMmx1WjJ4bEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+ADYAdgBrAFQAcgBlAFkAcgB1AEoAaAAxADkAUQBTAG8ANAA4AHoAcQBaAEEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AagBZAEYATgBmADAAeQBmADQAaQBzAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' }, + { kid: [ 0x55, 0x8e, 0xe5, 0x41, 0xb9, 0x0a, 0xb2, 0xf3, 0x95, 0x0d, 0x00, 0xad, 0xe3, 0x76, 0x0d, 0x45 ], + key: [ 0x91, 0x03, 0x92, 0x63, 0x01, 0x6d, 0xa6, 0x35, 0x77, 0x0d, 0x57, 0xdb, 0x92, 0xf9, 0x8b, 0xd0 ], + initDataType : 'cenc', + initData: 'AAAAcXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFEIARIQVY7lQbkKsvOVDQCt43YNRRoIY2FzdGxhYnMiKGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRjMmx1WjJ4bEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+AFEAZQBXAE8AVgBRAHEANQA4ADcASwBWAEQAUQBDAHQANAAzAFkATgBSAFEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AWQBpAE8ALwAxADYATABzADkANgBFAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' } ] + }, + + 'mp4-multikey' : { initDataType: 'cenc', + audio: { type: 'audio/mp4;codecs="mp4a.40.2"', + path: '/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4' }, + video: { type: 'video/mp4;codecs="avc1.4d401e"', + path: '/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4' }, + keys: [ { kid: [ 0x13, 0xa7, 0x53, 0x06, 0xd1, 0x18, 0x91, 0x7b, 0x47, 0xa6, 0xc1, 0x83, 0x64, 0x42, 0x51, 0x6f ], + key: [ 0x8a, 0xaa, 0xd8, 0xc4, 0xdb, 0xde, 0xac, 0xcd, 0xad, 0x26, 0x76, 0xa1, 0xed, 0x38, 0x95, 0x2e ], + initDataType: 'cenc', + initData: 'AAAAjXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAG0IARIQE6dTBtEYkXtHpsGDZEJRbxoIY2FzdGxhYnMiRGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRNbk5sYzNOcGIyNGlMQ0oyWVhKcFlXNTBTV1FpT2lKclpYa3hJbjA9MgdkZWZhdWx0AAADwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA6KiAwAAAQABAJgDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBCAGwATwBuAEUAeABqAFIAZQA1AEYASABwAHMARwBEAFoARQBKAFIAYgB3AD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAC4AcwB0AGEAZwBpAG4AZwAuAGQAcgBtAHQAbwBkAGEAeQAuAGMAbwBtAC8AbABpAGMAZQBuAHMAZQAtAHAAcgBvAHgAeQAtAGgAZQBhAGQAZQByAGEAdQB0AGgALwBkAHIAbQB0AG8AZABhAHkALwBSAGkAZwBoAHQAcwBNAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA8AC8ATABBAF8AVQBSAEwAPgA8AEwAVQBJAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAFUASQBfAFUAUgBMAD4APABDAEgARQBDAEsAUwBVAE0APgBJAEQAUgB0AFAAZwBVAEkALwBiAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=' }, + { kid: [ 0xee, 0x73, 0x56, 0x4e, 0xc8, 0xa8, 0x90, 0xf0, 0x78, 0xef, 0x68, 0x71, 0xfa, 0x4b, 0xe1, 0x8b ], + key: [ 0xe4, 0x4f, 0xe1, 0x45, 0x7c, 0x5e, 0xbc, 0xd8, 0x3e, 0xad, 0xdc, 0xd6, 0x2c, 0xaf, 0x55, 0x18 ], + initDataType: 'cenc', + initData: 'AAAAjXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAG0IARIQ7nNWTsiokPB472hx+kvhixoIY2FzdGxhYnMiRGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRNbk5sYzNOcGIyNGlMQ0oyWVhKcFlXNTBTV1FpT2lKclpYa3lJbjA9MgdkZWZhdWx0AAADwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA6KiAwAAAQABAJgDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBUAGwAWgB6ADcAcQBqAEkAOABKAEIANAA3ADIAaAB4ACsAawB2AGgAaQB3AD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAC4AcwB0AGEAZwBpAG4AZwAuAGQAcgBtAHQAbwBkAGEAeQAuAGMAbwBtAC8AbABpAGMAZQBuAHMAZQAtAHAAcgBvAHgAeQAtAGgAZQBhAGQAZQByAGEAdQB0AGgALwBkAHIAbQB0AG8AZABhAHkALwBSAGkAZwBoAHQAcwBNAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA8AC8ATABBAF8AVQBSAEwAPgA8AEwAVQBJAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAFUASQBfAFUAUgBMAD4APABDAEgARQBDAEsAUwBVAE0APgB4AEQASwBBAFkAMAB2AFoAaABVAFUAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=' } ] }, + + 'webm' : { audio : { type: 'audio/webm; codecs="opus"' }, + video : { type: 'video/webm; codecs="vp8"', + path: '/encrypted-media/content/test-encrypted.webm' }, + keys : [ { kid: [48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53], + key: [0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, + 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c ] } ] + }, + 'webm-multikey' : + { audio : { type: 'audio/webm; codecs="opus"' }, + video : { type: 'video/webm; codecs="vp8"', + path: '/encrypted-media/content/test-encrypted-different-av-keys.webm' }, + keys : [ { kid: [48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53], + key: [ 0x7A, 0x7A, 0x62, 0xF1, 0x68, 0x14, 0xD2, 0x7B, + 0x68, 0xEF, 0x12, 0x2A, 0xFC, 0xE4, 0xAE, 0x0A ] }, + { kid: [49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54], + key: [ 0x30, 0x30, 0x62, 0xF1, 0x68, 0x14, 0xD2, 0x7B, + 0x68, 0xEF, 0x12, 0x2A, 0xFC, 0xE4, 0xAE, 0x0A ] } ] + }, +} ); + +function addMemberListToObject( o ) +{ + var items = [ ]; + for( var item in o ) + { + if ( !o.hasOwnProperty( item ) ) continue; + + o[item].name = item; + items.push( o[item] ); + } + + o._items = items; + + return o; +} + +function getInitData( contentitem, initDataType ) +{ + if (initDataType == 'webm') { + return new Uint8Array( contentitem.keys[ 0 ].kid ); // WebM initData supports only a single key + } + + if (initDataType == 'cenc') { + + var size = 36 + contentitem.keys.length * 16, + kids = contentitem.keys.map( function( k ) { return k.kid; } ); + + return new Uint8Array(Array.prototype.concat.call( [ + 0x00, 0x00, size / 256, size % 256, // size + 0x70, 0x73, 0x73, 0x68, // 'pssh' + 0x01, // version = 1 + 0x00, 0x00, 0x00, // flags + 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID + 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, + 0x00, 0x00, 0x00, kids.length ], // key count ] + Array.prototype.concat.apply( [], kids ), + [ 0x00, 0x00, 0x00, 0x00 ]// datasize + )); + } + if (initDataType == 'keyids') { + + return toUtf8( { kids: contentitem.keys.map( function( k ) { return base64urlEncode( new Uint8Array( k.kid ) ); } ) } ); + } + throw 'initDataType ' + initDataType + ' not supported.'; +} + +function getSingleKeyInitData( kid, initDataType ) +{ + if (initDataType == 'webm') { + return new Uint8Array( kid ); + } + + if (initDataType == 'cenc') { + + var size = 52; + + return new Uint8Array(Array.prototype.concat.call( [ + 0x00, 0x00, size / 256, size % 256, // size + 0x70, 0x73, 0x73, 0x68, // 'pssh' + 0x01, // version = 1 + 0x00, 0x00, 0x00, // flags + 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID + 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, + 0x00, 0x00, 0x00, 0x01 ], // key count ] + kid, + [ 0x00, 0x00, 0x00, 0x00 ]// datasize + )); + } + if (initDataType == 'keyids') { + + return toUtf8( { kids: [ base64urlEncode( new Uint8Array( kid ) ) ] } ); + } + throw 'initDataType ' + initDataType + ' not supported.'; +} + +function getMultikeyInitDatas( contentitem, initDataType ) +{ + return contentitem.keys.map( function( k ) { return getSingleKeyInitData( k.kid, initDataType ); } ); +} + +function getProprietaryInitDatas( contentitem ) +{ + return { initDataType: contentitem.initDataType, + initDatas : contentitem.keys.filter( function( k ) { return k.initData; } ) + .map( function( k ) { return k.initData; } ) }; +} + +// Returns a promise that resolves to true or false depending on whether the content is supported with the key system and one of the initDataTypes +function isContentSupportedForInitDataTypes( keysystem, intiDataTypes, contentitem ) +{ + var configuration = { initDataTypes : intiDataTypes, + audioCapabilities: [ { contentType: contentitem.audio.type } ], + videoCapabilities: [ { contentType: contentitem.video.type } ] + }; + return navigator.requestMediaKeySystemAccess( keysystem, [ configuration ] ) + .then( function( access ) { + return { content: contentitem, supported: true, initDataTypes: access.getConfiguration().initDataTyes }; + }, + function() { + return { content: contentitem, supported: false }; + } ); +} + +// Returns a promise that resolves to { content:, supported:, initDataTypes: } object +function isContentSupported( keysystem, contentitem ) +{ + return isContentSupportedForInitDataTypes( keysystem, [ 'cenc', 'webm', 'keyids' ], contentitem ); +} + +// Returns a Promise resolving to an array of supported content for the key system +function getSupportedContent( keysystem ) +{ + return Promise.all( content._items.map( isContentSupported.bind( null, keysystem ) ) ). + then( function( results ) + { + return results.filter( function( r ) { return r.supported; } ).map( function( r ) { return r.content; } ); + } ); +} + +// Returns a Promise resolving to an array of { content:, initDataType: } pairs for the key system +function getSupportedContentAndInitDataTypes( keysystem ) +{ + return Promise.all( content._items.map( isContentSupported.bind( null, keysystem ) ) ). + then( function( results ) + { + return results.filter( function( r ) { return r.supported; } ); + } ); +} + +// gets a configuration object for provided piece of content +function getSimpleConfigurationForContent( contentitem ) +{ + return { initDataTypes: [ 'keyids', 'webm', 'cenc' ], + audioCapabilities: [ { contentType: contentitem.audio.type } ], + videoCapabilities: [ { contentType: contentitem.video.type } ] }; +} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_dashinit.mp4 b/tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_dashinit.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..53a461e8ae8df8af3cff8a7846e79a1d6ee934d6 GIT binary patch literal 1425859 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