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 00000000000..6c2138d4eca Binary files /dev/null and b/tests/wpt/web-platform-tests/encrypted-media/Google/webm/test.webm differ 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 00000000000..526998d6ac9 Binary files /dev/null and b/tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 differ diff --git a/tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4 b/tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4 new file mode 100644 index 00000000000..4daf4d5633e Binary files /dev/null and b/tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4 differ 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 00000000000..77e869f8084 Binary files /dev/null and b/tests/wpt/web-platform-tests/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4 differ 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 00000000000..53a461e8ae8 Binary files /dev/null and b/tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_dashinit.mp4 differ diff --git a/tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 b/tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 new file mode 100644 index 00000000000..d33f2a6c160 Binary files /dev/null and b/tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 differ diff --git a/tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4 b/tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4 new file mode 100644 index 00000000000..156a799a9db Binary files /dev/null and b/tests/wpt/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4 differ 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 80a3970fc1a..06558fe388f 100644 Binary files a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html and b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html differ 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 8d91dcbd8e0..86510b68525 100644 Binary files a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html and b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html differ diff --git a/tests/wpt/web-platform-tests/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type-ref.html b/tests/wpt/web-platform-tests/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type-ref.html index 9edfaa371e2..902c1724a64 100644 --- a/tests/wpt/web-platform-tests/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type-ref.html +++ b/tests/wpt/web-platform-tests/html/rendering/bindings/the-input-element-as-a-text-entry-widget/unrecognized-type-should-fallback-as-text-type-ref.html @@ -1,7 +1,6 @@ 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("