aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-04-23 21:13:37 -0400
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-04-23 23:10:53 -0400
commite891345f2650c4001773908b705d7ff23bbbc4e5 (patch)
tree3d822bae7c2d4e0b410466f262c61bd07270130c
parentc5f7c9ccf33fac4bf2c1750e7040b76216fc912c (diff)
downloadservo-e891345f2650c4001773908b705d7ff23bbbc4e5.tar.gz
servo-e891345f2650c4001773908b705d7ff23bbbc4e5.zip
Update web-platform-tests to revision 4a5223502fa660ce03e470af6a61c8bc26c5a8ee
-rw-r--r--tests/wpt/metadata/2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html.ini8
-rw-r--r--tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-transfer.html.ini34
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json6783
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/box-shadow-syntax-001.xht.ini3
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/css3-background-origin-padding-box.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/css3-background-size-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-attachment-valid.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-backgrounds/parsing/background-valid.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-flexbox/table-as-item-change-cell.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-fonts/font-variant-descriptor-01.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/at-font-face-descriptors.html.ini247
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini304
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-shorthand.html.ini46
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-stretch.html.ini97
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-style-interpolation.html.ini8
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-style-parsing.html.ini43
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-variation-settings-inherit.html.ini10
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-variation-settings-parsing.html.ini70
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-weight-interpolation.html.ini8
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-weight-lighter-bolder.html.ini40
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini34
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-weight-parsing.html.ini55
-rw-r--r--tests/wpt/metadata/css/css-text-decor/text-emphasis-style-001.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-transforms/css-transform-animate-translate-implied-y.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-transitions/transition-001.html.ini38
-rw-r--r--tests/wpt/metadata/css/css-transitions/transition-timing-function-001.html.ini38
-rw-r--r--tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-variables/variable-cssText.html.ini6
-rw-r--r--tests/wpt/metadata/css/css-variables/variable-substitution-shadow-properties.html.ini7
-rw-r--r--tests/wpt/metadata/css/cssom-view/cssom-getBoxQuads-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom/CSSStyleRule-set-selectorText.html.ini13
-rw-r--r--tests/wpt/metadata/css/cssom/css-style-reparse.html.ini7
-rw-r--r--tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-001.html.ini5
-rw-r--r--tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-002.html.ini5
-rw-r--r--tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-003.html.ini5
-rw-r--r--tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-004.html.ini5
-rw-r--r--tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-order.html.ini13
-rw-r--r--tests/wpt/metadata/css/cssom/getComputedStyle-detached-subtree.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom/index-002.html.ini35
-rw-r--r--tests/wpt/metadata/css/cssom/shorthand-values.html.ini37
-rw-r--r--tests/wpt/metadata/css/filter-effects/interfaces.any.js.ini9
-rw-r--r--tests/wpt/metadata/css/selectors/selection-image-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/selectors/selection-image-002.html.ini2
-rw-r--r--tests/wpt/metadata/custom-elements/HTMLElement-constructor.html.ini13
-rw-r--r--tests/wpt/metadata/custom-elements/htmlconstructor/newtarget.html.ini7
-rw-r--r--tests/wpt/metadata/dom/events/AddEventListenerOptions-passive.html.ini6
-rw-r--r--tests/wpt/metadata/dom/events/Event-constructors.html.ini7
-rw-r--r--tests/wpt/metadata/dom/events/Event-defaultPrevented-after-dispatch.html.ini7
-rw-r--r--tests/wpt/metadata/dom/events/Event-dispatch-detached-click.html.ini4
-rw-r--r--tests/wpt/metadata/dom/events/Event-dispatch-other-document.html.ini4
-rw-r--r--tests/wpt/metadata/dom/events/Event-initEvent.html.ini12
-rw-r--r--tests/wpt/metadata/dom/events/Event-returnValue.html.ini19
-rw-r--r--tests/wpt/metadata/dom/events/EventListener-handleEvent.html.ini4
-rw-r--r--tests/wpt/metadata/dom/events/EventTarget-dispatchEvent-returnvalue.html.ini7
-rw-r--r--tests/wpt/metadata/dom/lists/DOMTokenList-coverage-for-attributes.html.ini3
-rw-r--r--tests/wpt/metadata/dom/nodes/Node-cloneNode.html.ini5
-rw-r--r--tests/wpt/metadata/fetch/api/basic/mediasource.window.js.ini4
-rw-r--r--tests/wpt/metadata/fetch/api/basic/scheme-about.any.js.ini18
-rw-r--r--tests/wpt/metadata/fetch/api/redirect/redirect-mode-worker.html.ini60
-rw-r--r--tests/wpt/metadata/fetch/api/redirect/redirect-mode.html.ini60
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-init-003.sub.html.ini4
-rw-r--r--tests/wpt/metadata/fetch/api/request/request-structure.html.ini4
-rw-r--r--tests/wpt/metadata/fetch/content-encoding/bad-gzip-body.any.js.ini27
-rw-r--r--tests/wpt/metadata/hr-time/idlharness.html.ini6
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini (renamed from tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.html.ini)6
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini (renamed from tests/wpt/metadata/html/browsers/the-window-object/window-properties.html.ini)9
-rw-r--r--tests/wpt/metadata/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html.ini4
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.https.html.ini (renamed from tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.html.ini)3
-rw-r--r--tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini4
-rw-r--r--tests/wpt/metadata/html/dom/interfaces.html.ini14015
-rw-r--r--tests/wpt/metadata/html/dom/interfaces.https.html.ini5749
-rw-r--r--tests/wpt/metadata/html/semantics/document-metadata/the-link-element/link-rel-attribute.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini60
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini120
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html.ini7
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html.ini13
-rw-r--r--tests/wpt/metadata/url/urlsearchparams-foreach.html.ini4
-rw-r--r--tests/wpt/metadata/websockets/binary/001.html.ini2
-rw-r--r--tests/wpt/metadata/websockets/binary/002.html.ini2
-rw-r--r--tests/wpt/metadata/websockets/binary/004.html.ini2
-rw-r--r--tests/wpt/metadata/websockets/binary/005.html.ini2
-rw-r--r--tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html.ini2
-rw-r--r--tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html.ini2
-rw-r--r--tests/wpt/metadata/xhr/overridemimetype-blob.html.ini156
-rw-r--r--tests/wpt/metadata/xhr/overridemimetype-edge-cases.window.js.ini7
-rw-r--r--tests/wpt/metadata/xhr/send-content-type-charset.htm.ini21
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/canvas/rapid-resizing.html.ini (renamed from tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_001_to_008.html.ini)2
-rw-r--r--tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-with-workers.html.ini5
-rw-r--r--tests/wpt/web-platform-tests/.travis.yml2
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html41
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html43
-rw-r--r--tests/wpt/web-platform-tests/2dcontext/imagebitmap/transfer-worker.js3
-rw-r--r--tests/wpt/web-platform-tests/BackgroundSync/interfaces.any.js29
-rw-r--r--tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js21
-rw-r--r--tests/wpt/web-platform-tests/README.md4
-rw-r--r--tests/wpt/web-platform-tests/accelerometer/idlharness.https.html2
-rw-r--r--tests/wpt/web-platform-tests/accname/description_1.0_combobox-focusable-manual.html73
-rw-r--r--tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html13
-rw-r--r--tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html13
-rw-r--r--tests/wpt/web-platform-tests/accname/name_1.0_combobox-focusable-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-alternative-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_file-label-inline-hidden-elements-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_from_content-manual.html13
-rw-r--r--tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html13
-rw-r--r--tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html13
-rw-r--r--tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html5
-rw-r--r--tests/wpt/web-platform-tests/accname/name_link-mixed-content-manual.html13
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html8
-rw-r--r--tests/wpt/web-platform-tests/acid/OWNERS1
-rw-r--r--tests/wpt/web-platform-tests/background-fetch/interfaces.html22
-rw-r--r--tests/wpt/web-platform-tests/background-fetch/interfaces.worker.js22
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.https.html (renamed from tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.html)0
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothDevice.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/requestDevice/doesnt-consume-user-gesture.https.html (renamed from tests/wpt/web-platform-tests/bluetooth/requestDevice/consumes-user-gesture.https.html)9
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js236
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-before.js2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/script-tests/server/invalid-service-name.js2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-absent-service.js2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-for-any-service.js2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-present-service.js2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html2
-rw-r--r--tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html2
-rw-r--r--tests/wpt/web-platform-tests/budget-api/interfaces.any.js24
-rw-r--r--tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html26
-rw-r--r--tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py2
-rw-r--r--tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html16
-rw-r--r--tests/wpt/web-platform-tests/compat/interfaces.any.js17
-rw-r--r--tests/wpt/web-platform-tests/compat/webkit-background-origin-text-ref.html6
-rw-r--r--tests/wpt/web-platform-tests/compat/webkit-background-origin-text.html18
-rw-r--r--tests/wpt/web-platform-tests/console/console-tests-historical.any.js (renamed from tests/wpt/web-platform-tests/console/console-timeline-timelineEnd-historical.any.js)12
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js18
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-overrides-xfo.html5
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.html3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.html3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html3
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-allowed.html21
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/idl.html12
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/support/file-prefetch-allowed.html9
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieStore_set_expires_option.tentative.window.js59
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.tentative.html74
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.tentative.https.html41
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/expiration.tentative.html8
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/expiration.tentative.https.html8
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/idlharness.tentative.html29
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/one_simple_origin_cookie.tentative.html8
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/one_simple_origin_cookie.tentative.https.html8
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/resources/expiration.js89
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/resources/no_name_equals_in_value.js37
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/resources/one_simple_origin_cookie.js57
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/resources/secure_cookies.js46
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/secure_cookies.tentative.html8
-rw-r--r--tests/wpt/web-platform-tests/cookie-store/secure_cookies.tentative.https.html8
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html6
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html131
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js2
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-syntax-001.html79
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-syntax-001.xht147
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-origin-padding-box.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-size-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-attachment-invalid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-attachment-valid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-clip-invalid.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-clip-valid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-color-invalid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-color-valid.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-image-valid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-invalid.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-origin-invalid.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-origin-valid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-position-invalid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-position-valid.html43
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-repeat-invalid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-repeat-valid.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-size-invalid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-size-valid.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-valid.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-invalid.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-valid.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-invalid.html40
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-invalid.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-valid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-repeat-invalid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-repeat-valid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-invalid.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-valid.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-invalid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-valid.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-valid.html59
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-invalid.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-valid.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-invalid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-radius-invalid.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-radius-valid.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-invalid.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-valid.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-valid.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-invalid.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-valid.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/box-shadow-invalid.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/box-shadow-valid.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/parsing/resources/parsing-testcommon.js39
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/reference/box-shadow-syntax-001.xht52
-rw-r--r--tests/wpt/web-platform-tests/css/css-backgrounds/resources/parsing-testcommon.js39
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/OWNERS2
-rw-r--r--tests/wpt/web-platform-tests/css/css-content/attr-case-insensitive-ref.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-content/attr-case-insensitive.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-contents-details-001-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-contents-details-001.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-contents-suppression-dynamic-001-ref.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-contents-suppression-dynamic-001.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-change-cell.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-variant-05.xht3
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-variant-06.xht3
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01-ref.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01.html47
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors.html169
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-font-matching.html147
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-opentype-collections.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-shorthand.html69
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-stretch.html84
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-style-interpolation.html88
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-style-parsing.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-variation-settings-inherit.html48
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-variation-settings-parsing.html59
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-interpolation.html84
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-lighter-bolder.html58
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-matching-installed-fonts.html116
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-matching.html135
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-parsing.html53
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/ahem.ttcbin0 -> 16028 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-100-kerned.ttfbin0 -> 9044 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w1-kerned.ttfbin0 -> 9296 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w4-kerned.ttfbin0 -> 9232 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w7-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w9-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-15-w1-kerned.ttfbin0 -> 9252 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-15-w5-kerned.ttfbin0 -> 9200 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-200-kerned.ttfbin0 -> 9044 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-24-w2-kerned.ttfbin0 -> 9200 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-24-w4-kerned.ttfbin0 -> 9188 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w2-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w5-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w6-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w9-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w2-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w5-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w8-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-300-kerned.ttfbin0 -> 9044 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w3-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w5-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w8-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w9-kerned.ttfbin0 -> 9240 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-400-kerned.ttfbin0 -> 9044 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-47-w4-kerned.ttfbin0 -> 9188 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-47-w7-kerned.ttfbin0 -> 9200 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-500-kerned.ttfbin0 -> 9044 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-600-kerned.ttfbin0 -> 9044 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-700-kerned.ttfbin0 -> 9044 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-800-kerned.ttfbin0 -> 9044 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-900-kerned.ttfbin0 -> 9044 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w1-kerned.ttfbin0 -> 9272 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w2-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w3-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w4-kerned.ttfbin0 -> 9212 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w5-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w6-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w7-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w8-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w9-kerned.ttfbin0 -> 9220 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-layout-api/crash-multicol.https.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/going-out-of-flow-after-spanner.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-001.xht4
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-003.xht2
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/zero-column-width-computed-style.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/zero-column-width-layout.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-overflow/overflow-shorthand-001.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-page/OWNERS1
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/host-descendant-001.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/host-descendant-002.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/host-descendant-invalidation.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/host-dom-001.html16
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/host-functional-descendant-invalidation.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/host-multiple-001.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/host-nested-001.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/host-slotted-001.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/shadow-assign-dynamic-001.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/shadow-reassign-dynamic-001.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/all-hosts.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/chaining-invalid-selector.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/complex-matching.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/complex-non-matching.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/different-host.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/host-stylesheet.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/inner-host.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/simple.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/support/shadow-helper.js33
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/basic-shape-circle-ellipse-serialization.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-invalid-position.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-box-009.html71
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-005.html58
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-006.html58
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-007.html58
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-008.html58
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-002.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-005.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/support/animated.gifbin1816 -> 867 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/support/parsing-utils.js59
-rw-r--r--tests/wpt/web-platform-tests/css/css-sizing/OWNERS2
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/anonymous-table-ws-001-ref.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/anonymous-table-ws-001.html12
-rw-r--r--tests/wpt/web-platform-tests/css/css-text-decor/reference/text-emphasis-style-001-ref.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-timing/cubic-bezier-timing-functions-output.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/css-transform-animate-translate-implied-y-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/css-transform-animate-translate-implied-y.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-transforms/parsing/perspective-origin-parsing-invalid.html1
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-001.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html13
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/resources/testhelper.js3
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html5
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/all.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-delay.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-duration.html19
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-fill-mode.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-iteration-count.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-name.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-play-state.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-timing-function.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/backdrop-filter.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-attachment.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-blend-mode.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-clip.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-origin.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-position.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-size.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/baseline-shift.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-outset.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-repeat.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-slice.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-width.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-radius.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/box-shadow.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip-path.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip-rule.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/color-interpolation.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/color-rendering.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-count.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-rule-style.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-rule-width.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/contain.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/counter-increment.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/counter-reset.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/cursor.html59
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/d.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-color.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-rule.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/filter.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flood-color.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flood-opacity.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-feature-settings.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-kerning.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-caps.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-east-asian.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-ligatures.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-numeric.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-area.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-auto-columns-rows.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-auto-flow.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-gap.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-start-end.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template-areas.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template-columns-rows.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/hyphens.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/lighting-color.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/line-break.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/line-height-step.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mask-type.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mask.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html6
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/order.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/orphans.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/outline-offset.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/outline-width.html41
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/overscroll-behavior.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/page.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/paint-order.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/perspective.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/quotes.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js88
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-behavior.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html39
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-stop.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-image-threshold.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-margin.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-rendering.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/speak.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stop-color.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stop-opacity.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-width.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/tab-size.html42
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-align-last.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-anchor.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-indent.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-justify.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-rendering.html23
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-shadow.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-underline-position.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/touch-action.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transform-box.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transform-style.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-delay.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-property.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-timing-function.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/user-select.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/vector-effect.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/widows.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/will-change.html24
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-break.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/z-index.html37
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/calc-in-calc.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-variables/OWNERS1
-rw-r--r--tests/wpt/web-platform-tests/css/css-variables/variable-cssText.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-variables/variable-substitution-shadow-properties.html4
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/cssom-getBoxQuads-001.html51
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/interfaces.html10
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-shadow.html4
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/CSSStyleRule-set-selectorText-namespace.html60
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/CSSStyleRule-set-selectorText.html158
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/css-style-attribute-modifications.html3
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/css-style-reparse.html59
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-001.html20
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-002.html15
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-003.html16
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-004.html16
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-order.html108
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/font-shorthand-serialization.html16
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html44
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/getComputedStyle-dynamic-subdoc.html4
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html5
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/index-001.html28
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/index-002.html79
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/interfaces.html10
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/serialize-variable-reference.html8
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/shorthand-serialization.html10
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/shorthand-values.html50
-rw-r--r--tests/wpt/web-platform-tests/css/filter-effects/interfaces.any.js16
-rw-r--r--tests/wpt/web-platform-tests/css/motion/OWNERS3
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/child-indexed-pseudo-class.html20
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/resources/blue15x15.pngbin0 -> 185 bytes
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selection-image-001-no-selection-noref.html7
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selection-image-001-noref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selection-image-001.html24
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selection-image-002.html16
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002-ref.html44
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002.html62
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html13
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001.html30
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-002.html31
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-003.html38
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-004.html38
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001-ref.html77
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001a.html83
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001b.html83
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002-ref.html78
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002a.html84
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002b.html84
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003-ref.html103
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003a.html123
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003b.html124
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004-ref.html105
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004a.html129
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004b.html130
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list17
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1.html13
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2.html13
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3.html13
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4.html13
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1.html16
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1-ref.html6
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1.html13
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/reftest.list23
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-noib-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1.html23
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2.html23
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-noib-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3.html23
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-noib-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4.html25
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-noib-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5.html25
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-noib-ref.html20
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6.html25
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1-ref.html7
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1.html22
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1-ref.html8
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1.html18
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2-ref.html13
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2.html16
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1.html14
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1a.html16
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1b.html22
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list3
-rw-r--r--tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list2
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html153
-rw-r--r--tests/wpt/web-platform-tests/custom-elements/htmlconstructor/newtarget.html43
-rw-r--r--tests/wpt/web-platform-tests/docs/_running-tests/chrome.md41
-rw-r--r--tests/wpt/web-platform-tests/docs/_running-tests/index.md3
-rw-r--r--tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md3
-rw-r--r--tests/wpt/web-platform-tests/docs/_writing-tests/testdriver.md17
-rw-r--r--tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-passive.html28
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-constructors.html4
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented-after-dispatch.html22
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented.html12
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-dispatch-click.html3
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-dispatch-detached-click.html1
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-dispatch-other-document.html1
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-initEvent.html14
-rw-r--r--tests/wpt/web-platform-tests/dom/events/Event-returnValue.html64
-rw-r--r--tests/wpt/web-platform-tests/dom/events/EventListener-handleEvent.html1
-rw-r--r--tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html30
-rw-r--r--tests/wpt/web-platform-tests/dom/events/event-global.worker.js14
-rw-r--r--tests/wpt/web-platform-tests/dom/lists/DOMTokenList-coverage-for-attributes.html9
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js15
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagNameNS.js15
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/Document-getElementsByClassName.html26
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/Element-getElementsByClassName.html22
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/Node-childNodes.html18
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/Node-cloneNode.html14
-rw-r--r--tests/wpt/web-platform-tests/dom/nodes/ParentNode-children.html27
-rw-r--r--tests/wpt/web-platform-tests/dom/traversal/NodeIterator.html11
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html1
-rw-r--r--tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js2
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html18
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js7
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/abort/general.any.js2
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/basic/mediasource.window.js5
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.any.js37
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/headers/header-values-normalize.html6
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/headers/header-values.html2
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.js39
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/request/destination/fetch-destination-no-load-event.https.html6
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js10
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/request/request-init-002.html3
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/request/request-init-003.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/request/request-structure.html2
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/resources/cors-top.txt1
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/resources/cors-top.txt.headers1
-rw-r--r--tests/wpt/web-platform-tests/fetch/content-encoding/bad-gzip-body.any.js20
-rw-r--r--tests/wpt/web-platform-tests/fetch/content-encoding/resources/bad-gzip-body.py3
-rw-r--r--tests/wpt/web-platform-tests/fetch/data-urls/resources/base64.json1
-rw-r--r--tests/wpt/web-platform-tests/fonts/README.md4
-rw-r--r--tests/wpt/web-platform-tests/gamepad/idlharness.html3
-rw-r--r--tests/wpt/web-platform-tests/geolocation-sensor/idlharness.https.html2
-rw-r--r--tests/wpt/web-platform-tests/gyroscope/idlharness.https.html2
-rw-r--r--tests/wpt/web-platform-tests/hr-time/idlharness.html6
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/007.html10
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/appcache-worker.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/appcache-worker.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_idle.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_idle.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_uncached.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_uncached.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_swapcache_error.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_swapcache_error.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update_error.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update_error.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/secure_context.html23
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_event-manual.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_event-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_cached.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_cached.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_checking.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_checking.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_noupdate.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_noupdate.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_progress.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_progress.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/manifest_main_empty-manual.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/manifest_main_empty-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/manifest_notchanged_online-manual.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/manifest_notchanged_online-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_empty-manual.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_empty-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_many-manual.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_many-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/manifest_url_check.https.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/manifest_url_check.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/no-appcache-in-shared-workers-historical.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/no-appcache-in-shared-workers-historical.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/section_network_offline-manual.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/section_network_offline-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/offline/section_network_online-manual.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/offline/section_network_online-manual.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.html)2
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.https.html (renamed from tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.embeds-document.plugins-01.html32
-rw-r--r--tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.forms.html13
-rw-r--r--tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html26
-rw-r--r--tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.images.html14
-rw-r--r--tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.links.html27
-rw-r--r--tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.scripts.html21
-rw-r--r--tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.https.html (renamed from tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.html)0
-rw-r--r--tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext-subframe.txt1
-rw-r--r--tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext.window.js23
-rw-r--r--tests/wpt/web-platform-tests/html/dom/interfaces.https.html (renamed from tests/wpt/web-platform-tests/html/dom/interfaces.html)2
-rw-r--r--tests/wpt/web-platform-tests/html/editing/focus/focus-01.html (renamed from tests/wpt/web-platform-tests/html/editing/focus/focus-01-manual.html)15
-rw-r--r--tests/wpt/web-platform-tests/html/editing/focus/focus-02.html (renamed from tests/wpt/web-platform-tests/html/editing/focus/focus-02-manual.html)13
-rw-r--r--tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative.html (renamed from tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative-manual.html)14
-rw-r--r--tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order.html (renamed from tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order-manual.html)37
-rw-r--r--tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive.html (renamed from tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive-manual.html)14
-rw-r--r--tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero.html (renamed from tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero-manual.html)14
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/link-rel-attribute.html44
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/resources/link-load-error-events.sub.js9
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/resources/link-rel-attribute.css3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html14
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html13
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html17
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html2
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html10
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html17
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/rellist-feature-detection.html1
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html (renamed from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html (renamed from tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html)4
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html65
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/testdriver/send_keys.html23
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/webdriver/tests/conftest.py7
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/webdriver/tests/test_load_file.py4
-rw-r--r--tests/wpt/web-platform-tests/innerText/OWNERS1
-rw-r--r--tests/wpt/web-platform-tests/innerText/getter-tests.js2
-rw-r--r--tests/wpt/web-platform-tests/innerText/getter.html2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/BackgroundSync.idl28
-rw-r--r--tests/wpt/web-platform-tests/interfaces/FileAPI.idl26
-rw-r--r--tests/wpt/web-platform-tests/interfaces/ServiceWorker.idl220
-rw-r--r--tests/wpt/web-platform-tests/interfaces/budget-api.idl31
-rw-r--r--tests/wpt/web-platform-tests/interfaces/compat.idl12
-rw-r--r--tests/wpt/web-platform-tests/interfaces/cssom.idl5
-rw-r--r--tests/wpt/web-platform-tests/interfaces/dom.idl4
-rw-r--r--tests/wpt/web-platform-tests/interfaces/filter-effects.idl301
-rw-r--r--tests/wpt/web-platform-tests/interfaces/html.idl1
-rw-r--r--tests/wpt/web-platform-tests/interfaces/web-nfc.idl123
-rw-r--r--tests/wpt/web-platform-tests/intersection-observer/OWNERS2
-rw-r--r--tests/wpt/web-platform-tests/intersection-observer/shadow-content.html2
-rw-r--r--tests/wpt/web-platform-tests/js/OWNERS1
-rw-r--r--tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-parallel-requests.https.html8
-rw-r--r--tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-sequential-requests.https.html4
-rw-r--r--tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock.https.html2
-rw-r--r--tests/wpt/web-platform-tests/lint.whitelist9
-rw-r--r--tests/wpt/web-platform-tests/magnetometer/idlharness.https.html2
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-record/idlharness.html29
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html13
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html11
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-preload-none-manual.https.html (renamed from tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html)15
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-streams/historical.html5
-rw-r--r--tests/wpt/web-platform-tests/mediasession/setactionhandler.html4
-rw-r--r--tests/wpt/web-platform-tests/mimesniff/mime-types/resources/mime-types.json56
-rw-r--r--tests/wpt/web-platform-tests/navigation-timing/nav2_idlharness.html1
-rw-r--r--tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html10
-rw-r--r--tests/wpt/web-platform-tests/orientation-sensor/idlharness.https.html2
-rw-r--r--tests/wpt/web-platform-tests/payment-handler/interfaces.https.any.js8
-rw-r--r--tests/wpt/web-platform-tests/payment-handler/same-object-attributes.https.html19
-rw-r--r--tests/wpt/web-platform-tests/payment-handler/untrusted-event.https.html56
-rw-r--r--tests/wpt/web-platform-tests/payment-handler/untrusted-event.js59
-rw-r--r--tests/wpt/web-platform-tests/payment-request/change-shipping-option-select-last-manual.https.html2
-rw-r--r--tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html2
-rw-r--r--tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-rejects-manual.https.html2
-rw-r--r--tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-resolves-manual.https.html2
-rw-r--r--tests/wpt/web-platform-tests/payment-request/show-method-postmessage-iframe.html2
-rw-r--r--tests/wpt/web-platform-tests/payment-request/show-method-postmessage-manual.https.html2
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/extension/idlharness.html16
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-down-css_touch-manual.html (renamed from tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-down-css_touch-manual.html)4
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-left-css_touch-manual.html (renamed from tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-left-css_touch-manual.html)4
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-right-css_touch-manual.html (renamed from tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-right-css_touch-manual.html)4
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-up-css_touch-manual.html (renamed from tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-up-css_touch-manual.html)4
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-verification.html97
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/idlharness.html26
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js9
-rw-r--r--tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-verification.html13
-rw-r--r--tests/wpt/web-platform-tests/remote-playback/idlharness.html38
-rw-r--r--tests/wpt/web-platform-tests/resize-observer/eventloop.html2
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/resources/TAOResponse.py8
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/fake_bluetooth.mojom.js420
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/web-bluetooth-test.js24
-rw-r--r--tests/wpt/web-platform-tests/resources/idlharness.js31
-rw-r--r--tests/wpt/web-platform-tests/resources/test/config.test.json27
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlDictionary/get_inheritance_stack.html13
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlInterface/get_inheritance_stack.html7
-rw-r--r--tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlInterface/test_primary_interface_of_undefined.html29
-rw-r--r--tests/wpt/web-platform-tests/resources/test/wptserver.py10
-rw-r--r--tests/wpt/web-platform-tests/resources/testdriver.js47
-rw-r--r--tests/wpt/web-platform-tests/resources/testharness.js8
-rw-r--r--tests/wpt/web-platform-tests/server-timing/cross_origin.html11
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.html44
-rw-r--r--tests/wpt/web-platform-tests/service-workers/cache-storage/serviceworker/cache-abort.https.html1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-abort.https.html1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/cache-storage/worker/cache-abort.https.html1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/Service-Worker-Allowed-header.https.html104
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-redirect.https.html24
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html36
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-window.https.html58
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https.html21
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/broken-chunked-encoding-worker.js4
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/chunked-encoding-scope.py7
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js6
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js.headers1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-iframe.https.html9
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-worker.js3
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-idls.js121
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js42
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/redirect.py5
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope2/worker_interception_redirect_webworker.py5
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/simple-intercept-worker.js.headers1
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-client-id-worker.js25
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-redirect-serviceworker.js48
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-redirect-webworker.js42
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker_interception_redirect_webworker.py19
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/worker-client-id.https.html58
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception-redirect.https.html171
-rw-r--r--tests/wpt/web-platform-tests/shadow-dom/Extensions-to-Event-Interface.html10
-rw-r--r--tests/wpt/web-platform-tests/shadow-dom/resources/event-path-test-helpers.js3
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-streams/default-reader.js13
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-streams/patched-global.dedicatedworker.html11
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-streams/patched-global.html10
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-streams/patched-global.js67
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-streams/patched-global.serviceworker.https.html12
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-streams/patched-global.sharedworker.html11
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-dom-01-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-dom-02-f-manual.svg36
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-02-t-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-03-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-05-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-10-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-11-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-12-t-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-13-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-14-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-15-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-17-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-19-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-20-t-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-21-t-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-22-b-manual.svg14
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-23-t-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-24-t-manual.svg34
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-25-t-manual.svg30
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-27-t-manual.svg28
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-29-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-31-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-33-t-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-34-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-36-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-37-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-40-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-46-t-manual.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-62-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-64-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-66-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-70-t-manual.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-77-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-80-t-manual.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-81-t-manual.svg14
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-82-t-manual.svg3
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-83-t-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-84-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-85-t-manual.svg14
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-87-t-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-88-t-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-89-t-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-elem-90-b-manual.svg40
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-interact-events-01-t-manual.svg20
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-02-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-03-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-04-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-pservers-grad-01-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/animate-script-elem-01-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/color-prof-01-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/color-prop-01-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/color-prop-02-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/color-prop-03-t-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/color-prop-04-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/conform-viewers-02-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/conform-viewers-03-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-dom-01-f-manual.svg25
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-dom-02-f-manual.svg23
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-dom-04-f-manual.svg230
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-trans-10-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-trans-11-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-trans-12-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-trans-13-f-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-trans-14-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-transformattr-01-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-transformattr-03-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-transformattr-04-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-transformattr-05-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-units-02-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/coords-viewattr-03-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-background-01-f-manual.svg40
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-blend-01-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-composite-02-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-composite-03-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-composite-04-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-composite-05-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-conv-02-f-manual.svg52
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-conv-03-f-manual.svg86
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-conv-04-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-conv-05-f-manual.svg40
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-displace-01-f-manual.svg7
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-displace-02-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-felem-01-b-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-felem-02-f-manual.svg98
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-image-02-b-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-image-03-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-image-04-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-image-05-f-manual.svg162
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-light-02-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-light-03-f-manual.svg5
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-light-04-f-manual.svg54
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-light-05-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-offset-01-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-offset-02-b-manual.svg46
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-overview-02-b-manual.svg356
-rw-r--r--tests/wpt/web-platform-tests/svg/import/filters-turb-02-f-manual.svg22
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-desc-01-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-desc-02-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-desc-03-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-desc-04-t-manual.svg3
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-elem-01-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-elem-02-t-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-elem-03-b-manual.svg28
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-elem-04-b-manual.svg18
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-elem-05-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-elem-06-t-manual.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-elem-07-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-glyph-02-t-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-glyph-03-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-glyph-04-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/fonts-overview-201-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/imp-path-01-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-cursor-01-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-dom-01-b-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-events-202-f-manual.svg166
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-events-203-t-manual.svg20
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-order-01-b-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-order-02-b-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-pevents-05-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-pevents-07-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-pevents-08-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-pevents-09-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-pevents-10-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/interact-zoom-03-t-manual.svg5
-rw-r--r--tests/wpt/web-platform-tests/svg/import/linking-a-01-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/linking-a-03-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/linking-a-04-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/linking-a-07-t-manual.svg20
-rw-r--r--tests/wpt/web-platform-tests/svg/import/linking-a-08-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/linking-a-09-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/linking-a-10-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-mask-02-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-opacity-01-b-manual.svg7
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-02-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-03-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-06-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-07-b-manual.svg44
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-08-b-manual.svg163
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-10-b-manual.svg159
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-11-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-12-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-13-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/masking-path-14-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/metadata-example-01-t-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-control-01-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-control-02-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-control-04-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-control-05-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-control-06-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-fill-01-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-marker-01-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-marker-02-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-marker-06-f-manual.svg154
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-marker-07-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/painting-stroke-08-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-02-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-03-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-04-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-05-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-06-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-08-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-09-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-10-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-13-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-17-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-18-f-manual.svg14
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-19-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/paths-data-20-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-01-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-02-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-03-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-04-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-05-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-06-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-07-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-10-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-11-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-12-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-14-b-manual.svg1
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-15-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-18-b-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-20-b-manual.svg14
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-21-b-manual.svg24
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-grad-23-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-pattern-03-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-pattern-08-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/pservers-pattern-09-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/render-elems-01-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/render-elems-02-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/render-elems-03-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/render-elems-06-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/render-elems-07-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/render-elems-08-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/render-groups-01-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/render-groups-03-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/script-handle-01-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/script-handle-02-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/script-handle-03-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/script-handle-04-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/script-specify-01-f-manual.svg39
-rw-r--r--tests/wpt/web-platform-tests/svg/import/script-specify-02-f-manual.svg41
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-ellipse-03-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-grammar-01-f-manual.svg14
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-intro-02-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-line-02-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-polygon-02-t-manual.svg18
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-polyline-02-t-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-rect-03-t-manual.svg52
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-rect-04-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-rect-05-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-rect-06-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/shapes-rect-07-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-cond-02-t-manual.svg38
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-cond-03-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-cond-overview-05-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-defs-01-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-01-b-manual.svg376
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-02-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-04-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-05-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-08-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-11-f-manual.svg116
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-12-b-manual.svg3
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-13-f-manual.svg220
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-14-f-manual.svg16
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-15-f-manual.svg22
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-16-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-17-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-18-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-dom-20-f-manual.svg22
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-frag-01-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-frag-03-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-frag-04-t-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-group-01-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-image-02-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-image-13-f-manual.svg44
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-image-14-f-manual.svg44
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-image-15-f-manual.svg54
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-image-18-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-image-19-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-svg-01-f-manual.svg3
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-svg-02-f-manual.svg30
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-svg-03-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-use-01-t-manual.svg13
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-use-05-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-use-06-b-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-use-07-b-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-use-10-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-use-11-f-manual.svg12
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-use-12-f-manual.svg14
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-use-14-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/struct-use-15-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-class-01-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-css-01-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-css-02-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-css-03-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-css-04-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-css-06-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-css-07-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-css-08-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-css-09-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-css-10-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-elem-01-b-manual.svg18
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-pres-01-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-pres-02-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-pres-04-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/styling-pres-05-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/svgdom-over-01-f-manual.svg74
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-align-07-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-align-08-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-altglyph-02-b-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-altglyph-03-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-bidi-01-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-deco-01-b-manual.svg32
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-dom-02-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-dom-04-f-manual.svg208
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-dom-05-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-fonts-05-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-fonts-202-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-fonts-203-t-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-fonts-204-t-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-intro-02-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-intro-05-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-intro-06-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-intro-07-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-intro-10-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-intro-12-t-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-text-10-t-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-text-11-t-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-text-12-t-manual.svg144
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-tref-01-b-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-tref-02-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-tref-03-b-manual.svg5
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-tselect-03-f-manual.svg8
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-tspan-01-b-manual.svg48
-rw-r--r--tests/wpt/web-platform-tests/svg/import/text-tspan-02-b-manual.svg11
-rw-r--r--tests/wpt/web-platform-tests/svg/import/types-basic-01-f-manual.svg15
-rw-r--r--tests/wpt/web-platform-tests/svg/import/types-basic-02-f-manual.svg10
-rw-r--r--tests/wpt/web-platform-tests/svg/import/types-dom-05-b-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/types-dom-06-f-manual.svg146
-rw-r--r--tests/wpt/web-platform-tests/svg/import/types-dom-07-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/types-dom-08-f-manual.svg37
-rw-r--r--tests/wpt/web-platform-tests/svg/import/types-dom-svgfittoviewbox-01-f-manual.svg6
-rw-r--r--tests/wpt/web-platform-tests/svg/import/types-dom-svgnumberlist-01-f-manual.svg2
-rw-r--r--tests/wpt/web-platform-tests/svg/import/types-dom-svgstringlist-01-f-manual.svg4
-rw-r--r--tests/wpt/web-platform-tests/svg/linking/reftests/href-a-element-attr-change.html2
-rw-r--r--tests/wpt/web-platform-tests/tools/certs/README.md7
-rw-r--r--tests/wpt/web-platform-tests/tools/certs/cacert.key (renamed from tests/wpt/web-platform-tests/tools/certs/cakey.pem)0
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/make_hosts_file.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/conftest.py13
-rw-r--r--tests/wpt/web-platform-tests/tools/lint/lint.py5
-rw-r--r--tests/wpt/web-platform-tests/tools/manifest/manifest.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/manifest/sourcefile.py5
-rw-r--r--tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/serve/serve.py324
-rw-r--r--tests/wpt/web-platform-tests/tools/sslutils/openssl.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py6
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py66
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py7
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/tox.ini2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py8
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/edge-prerun.bat7
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/safari-prerun.sh1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py52
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py26
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py22
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py11
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py14
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testdriver-extra.js10
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py17
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py24
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py8
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py7
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash.sub.txt6
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash_subject.txt2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash_unrecognized.sub.txt1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_location.sub.txt8
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_url_base.sub.txt1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_uuid.sub.txt1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_var.sub.txt1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/subdir/example_module.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/subdir/import_handler.py5
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_handlers.py13
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_pipes.py44
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/test_config.py346
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/test_replacement_tokenizer.py37
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/config.py245
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py10
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py63
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py7
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py92
-rw-r--r--tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade.sub.https.html3
-rw-r--r--tests/wpt/web-platform-tests/url/urlsearchparams-foreach.html44
-rw-r--r--tests/wpt/web-platform-tests/user-timing/clearMarks.html72
-rw-r--r--tests/wpt/web-platform-tests/user-timing/clearMeasures.html73
-rw-r--r--tests/wpt/web-platform-tests/user-timing/mark.html54
-rw-r--r--tests/wpt/web-platform-tests/user-timing/mark_exceptions.html6
-rw-r--r--tests/wpt/web-platform-tests/user-timing/measure_associated_with_navigation_timing.html53
-rw-r--r--tests/wpt/web-platform-tests/user-timing/measure_exception.html32
-rw-r--r--tests/wpt/web-platform-tests/user-timing/measures.html62
-rw-r--r--tests/wpt/web-platform-tests/user-timing/resources/webperftestharnessextension.js31
-rw-r--r--tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js2
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html4
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html13
-rw-r--r--tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html82
-rw-r--r--tests/wpt/web-platform-tests/web-animations/testcommon.js4
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/nfc_insecure_context.html23
-rw-r--r--tests/wpt/web-platform-tests/webaudio/idlharness.https.html13
-rw-r--r--tests/wpt/web-platform-tests/webaudio/resources/biquad-testing.js171
-rw-r--r--tests/wpt/web-platform-tests/webaudio/resources/mixing-rules.js350
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html277
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html164
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html77
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html214
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect.html298
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode.html93
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html66
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html73
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/zero-output-processor.js42
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html42
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html406
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-bandpass.html44
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html134
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html335
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html42
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highshelf.html43
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowpass.html45
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowshelf.html43
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html43
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-peaking.html46
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html71
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquadfilternode-basic.html64
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html288
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/idl-test.html156
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-gainnode-interface/idl-test.html154
-rw-r--r--tests/wpt/web-platform-tests/webauthn/interfaces.https.any.js1
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/actions/modifier_click.py50
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/actions/mouse_dblclick.py81
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/actions/mouse_pause_dblclick.py52
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/actions/special_keys.py36
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py158
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/user_prompts.py28
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py136
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/execute_script/user_prompts.py28
-rw-r--r--tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py2
-rw-r--r--tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html17
-rw-r--r--tests/wpt/web-platform-tests/webmessaging/message-channels/close.html12
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html11
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html96
-rw-r--r--tests/wpt/web-platform-tests/webstorage/idlharness.html20
-rw-r--r--tests/wpt/web-platform-tests/webusb/usb.https.html20
-rw-r--r--tests/wpt/web-platform-tests/webvr/idlharness.https.html6
-rw-r--r--tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/WindowTimers/005.html23
-rw-r--r--tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/1.headers1
-rw-r--r--tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/null.headers1
-rw-r--r--tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/undefined.headers1
-rw-r--r--tests/wpt/web-platform-tests/x-frame-options/deny.sub.html4
-rw-r--r--tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html10
-rw-r--r--tests/wpt/web-platform-tests/x-frame-options/sameorigin.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/xhr/header-user-agent-async.htm26
-rw-r--r--tests/wpt/web-platform-tests/xhr/header-user-agent-sync.htm20
-rw-r--r--tests/wpt/web-platform-tests/xhr/overridemimetype-blob.html89
-rw-r--r--tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js40
-rw-r--r--tests/wpt/web-platform-tests/xhr/resources/header-user-agent.py15
-rw-r--r--tests/wpt/web-platform-tests/xhr/responsetext-decoding.htm1
-rw-r--r--tests/wpt/web-platform-tests/xhr/send-content-type-charset.htm40
-rw-r--r--tests/wpt/web-platform-tests/xhr/xmlhttprequest-closing-worker.html32
1328 files changed, 36642 insertions, 20598 deletions
diff --git a/tests/wpt/metadata/2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html.ini b/tests/wpt/metadata/2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html.ini
deleted file mode 100644
index 3c26f50e1d1..00000000000
--- a/tests/wpt/metadata/2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html.ini
+++ /dev/null
@@ -1,8 +0,0 @@
-[canvas_focus_drawCustomFocusRing_001.html]
- type: testharness
- [drawCustomFocusRing must return false for an element that is not focused.]
- expected: FAIL
-
- [drawCustomFocusRing must return false for an element that is not a descendant of the canvas element.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-transfer.html.ini b/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-transfer.html.ini
new file mode 100644
index 00000000000..72da108c5d4
--- /dev/null
+++ b/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-transfer.html.ini
@@ -0,0 +1,34 @@
+[createImageBitmap-transfer.html]
+ [Transfer ImageBitmap created from an HTMLCanvasElement]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from an HTMLVideoElement]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from an HTMLVideoElement from a data URL]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from a bitmap HTMLImageElement]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from a vector HTMLImageElement]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from a bitmap SVGImageElement]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from a vector SVGImageElement]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from an OffscreenCanvas]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from an ImageData]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from an ImageBitmap]
+ expected: FAIL
+
+ [Transfer ImageBitmap created from a Blob]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index e363bfabdfc..cac5158543c 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -6,3 +6,6 @@
[Fetching a blob URL immediately before revoking it works in <script> tags.]
expected: TIMEOUT
+ [Fetching a blob URL immediately before revoking it works in an iframe navigation.]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 27f49354c7e..f3181563ef1 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -139,6 +139,12 @@
{}
]
],
+ "accname/description_1.0_combobox-focusable-manual.html": [
+ [
+ "/accname/description_1.0_combobox-focusable-manual.html",
+ {}
+ ]
+ ],
"accname/description_from_content_of_describedby_element-manual.html": [
[
"/accname/description_from_content_of_describedby_element-manual.html",
@@ -9559,6 +9565,12 @@
{}
]
],
+ "css/css-fonts/variations/font-weight-matching-installed-fonts.html": [
+ [
+ "/css/css-fonts/variations/font-weight-matching-installed-fonts.html",
+ {}
+ ]
+ ],
"css/css-gcpm/leader-001.html": [
[
"/css/css-gcpm/leader-001.html",
@@ -13573,9 +13585,9 @@
{}
]
],
- "html/browsers/offline/browser-state/navigator_online_event-manual.html": [
+ "html/browsers/offline/browser-state/navigator_online_event-manual.https.html": [
[
- "/html/browsers/offline/browser-state/navigator_online_event-manual.html",
+ "/html/browsers/offline/browser-state/navigator_online_event-manual.https.html",
{}
]
],
@@ -13609,39 +13621,39 @@
{}
]
],
- "html/browsers/offline/manifest_main_empty-manual.html": [
+ "html/browsers/offline/manifest_main_empty-manual.https.html": [
[
- "/html/browsers/offline/manifest_main_empty-manual.html",
+ "/html/browsers/offline/manifest_main_empty-manual.https.html",
{}
]
],
- "html/browsers/offline/manifest_notchanged_online-manual.html": [
+ "html/browsers/offline/manifest_notchanged_online-manual.https.html": [
[
- "/html/browsers/offline/manifest_notchanged_online-manual.html",
+ "/html/browsers/offline/manifest_notchanged_online-manual.https.html",
{}
]
],
- "html/browsers/offline/manifest_section_empty-manual.html": [
+ "html/browsers/offline/manifest_section_empty-manual.https.html": [
[
- "/html/browsers/offline/manifest_section_empty-manual.html",
+ "/html/browsers/offline/manifest_section_empty-manual.https.html",
{}
]
],
- "html/browsers/offline/manifest_section_many-manual.html": [
+ "html/browsers/offline/manifest_section_many-manual.https.html": [
[
- "/html/browsers/offline/manifest_section_many-manual.html",
+ "/html/browsers/offline/manifest_section_many-manual.https.html",
{}
]
],
- "html/browsers/offline/section_network_offline-manual.html": [
+ "html/browsers/offline/section_network_offline-manual.https.html": [
[
- "/html/browsers/offline/section_network_offline-manual.html",
+ "/html/browsers/offline/section_network_offline-manual.https.html",
{}
]
],
- "html/browsers/offline/section_network_online-manual.html": [
+ "html/browsers/offline/section_network_online-manual.https.html": [
[
- "/html/browsers/offline/section_network_online-manual.html",
+ "/html/browsers/offline/section_network_online-manual.https.html",
{}
]
],
@@ -14191,42 +14203,6 @@
{}
]
],
- "html/editing/focus/focus-01-manual.html": [
- [
- "/html/editing/focus/focus-01-manual.html",
- {}
- ]
- ],
- "html/editing/focus/focus-02-manual.html": [
- [
- "/html/editing/focus/focus-02-manual.html",
- {}
- ]
- ],
- "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative-manual.html": [
- [
- "/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative-manual.html",
- {}
- ]
- ],
- "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order-manual.html": [
- [
- "/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order-manual.html",
- {}
- ]
- ],
- "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive-manual.html": [
- [
- "/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive-manual.html",
- {}
- ]
- ],
- "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero-manual.html": [
- [
- "/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero-manual.html",
- {}
- ]
- ],
"html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-direction-down-manual.html": [
[
"/html/obsolete/requirements-for-implementations/the-marquee-element-0/marquee-direction-down-manual.html",
@@ -14617,6 +14593,12 @@
{}
]
],
+ "mediacapture-streams/MediaStream-MediaElement-preload-none-manual.https.html": [
+ [
+ "/mediacapture-streams/MediaStream-MediaElement-preload-none-manual.https.html",
+ {}
+ ]
+ ],
"mediacapture-streams/MediaStream-id-manual.https.html": [
[
"/mediacapture-streams/MediaStream-id-manual.https.html",
@@ -14989,6 +14971,30 @@
{}
]
],
+ "pointerevents/extension/pointerevent_touch-action-pan-down-css_touch-manual.html": [
+ [
+ "/pointerevents/extension/pointerevent_touch-action-pan-down-css_touch-manual.html",
+ {}
+ ]
+ ],
+ "pointerevents/extension/pointerevent_touch-action-pan-left-css_touch-manual.html": [
+ [
+ "/pointerevents/extension/pointerevent_touch-action-pan-left-css_touch-manual.html",
+ {}
+ ]
+ ],
+ "pointerevents/extension/pointerevent_touch-action-pan-right-css_touch-manual.html": [
+ [
+ "/pointerevents/extension/pointerevent_touch-action-pan-right-css_touch-manual.html",
+ {}
+ ]
+ ],
+ "pointerevents/extension/pointerevent_touch-action-pan-up-css_touch-manual.html": [
+ [
+ "/pointerevents/extension/pointerevent_touch-action-pan-up-css_touch-manual.html",
+ {}
+ ]
+ ],
"pointerevents/html/pointerevent_drag_interaction-manual.html": [
[
"/pointerevents/html/pointerevent_drag_interaction-manual.html",
@@ -15319,30 +15325,6 @@
{}
]
],
- "pointerevents/pointerevent_touch-action-pan-down-css_touch-manual.html": [
- [
- "/pointerevents/pointerevent_touch-action-pan-down-css_touch-manual.html",
- {}
- ]
- ],
- "pointerevents/pointerevent_touch-action-pan-left-css_touch-manual.html": [
- [
- "/pointerevents/pointerevent_touch-action-pan-left-css_touch-manual.html",
- {}
- ]
- ],
- "pointerevents/pointerevent_touch-action-pan-right-css_touch-manual.html": [
- [
- "/pointerevents/pointerevent_touch-action-pan-right-css_touch-manual.html",
- {}
- ]
- ],
- "pointerevents/pointerevent_touch-action-pan-up-css_touch-manual.html": [
- [
- "/pointerevents/pointerevent_touch-action-pan-up-css_touch-manual.html",
- {}
- ]
- ],
"pointerevents/pointerevent_touch-action-pan-x-css_touch-manual.html": [
[
"/pointerevents/pointerevent_touch-action-pan-x-css_touch-manual.html",
@@ -20721,6 +20703,18 @@
{}
]
],
+ "compat/webkit-background-origin-text.html": [
+ [
+ "/compat/webkit-background-origin-text.html",
+ [
+ [
+ "/compat/webkit-background-origin-text-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"compat/webkit-linear-gradient-line-bottom.html": [
[
"/compat/webkit-linear-gradient-line-bottom.html",
@@ -104061,18 +104055,6 @@
{}
]
],
- "css/css-backgrounds/box-shadow-syntax-001.xht": [
- [
- "/css/css-backgrounds/box-shadow-syntax-001.xht",
- [
- [
- "/css/css-backgrounds/reference/box-shadow-syntax-001.xht",
- "=="
- ]
- ],
- {}
- ]
- ],
"css/css-backgrounds/css-border-radius-001.html": [
[
"/css/css-backgrounds/css-border-radius-001.html",
@@ -104186,7 +104168,7 @@
"/css/css-backgrounds/css3-background-origin-padding-box.html",
[
[
- "/css/css-backgrounds/reference/css3-background-origin-content-box-ref.html",
+ "/css/css-backgrounds/reference/css3-background-origin-padding-box-ref.html",
"=="
]
],
@@ -104198,7 +104180,7 @@
"/css/css-backgrounds/css3-background-size-001.html",
[
[
- "/css/css-backgrounds/reference/css3-background-size-ref.html",
+ "/css/css-backgrounds/reference/css3-background-size-001-ref.html",
"=="
]
],
@@ -106377,6 +106359,18 @@
{}
]
],
+ "css/css-content/attr-case-insensitive.html": [
+ [
+ "/css/css-content/attr-case-insensitive.html",
+ [
+ [
+ "/css/css-content/attr-case-insensitive-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-content/element-replacement.html": [
[
"/css/css-content/element-replacement.html",
@@ -106497,6 +106491,18 @@
{}
]
],
+ "css/css-display/display-contents-details-001.html": [
+ [
+ "/css/css-display/display-contents-details-001.html",
+ [
+ [
+ "/css/css-display/display-contents-details-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-display/display-contents-details.html": [
[
"/css/css-display/display-contents-details.html",
@@ -106965,6 +106971,18 @@
{}
]
],
+ "css/css-display/display-contents-suppression-dynamic-001.html": [
+ [
+ "/css/css-display/display-contents-suppression-dynamic-001.html",
+ [
+ [
+ "/css/css-display/display-contents-suppression-dynamic-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-display/display-contents-svg-elements.html": [
[
"/css/css-display/display-contents-svg-elements.html",
@@ -112989,6 +113007,18 @@
{}
]
],
+ "css/css-flexbox/table-as-item-change-cell.html": [
+ [
+ "/css/css-flexbox/table-as-item-change-cell.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-flexbox/table-as-item-narrow-content.html": [
[
"/css/css-flexbox/table-as-item-narrow-content.html",
@@ -114161,6 +114191,18 @@
{}
]
],
+ "css/css-fonts/font-variant-descriptor-01.html": [
+ [
+ "/css/css-fonts/font-variant-descriptor-01.html",
+ [
+ [
+ "/css/css-fonts/font-variant-descriptor-01-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-fonts/font-variant-east-asian-01.html": [
[
"/css/css-fonts/font-variant-east-asian-01.html",
@@ -121829,6 +121871,18 @@
{}
]
],
+ "css/css-multicol/zero-column-width-layout.html": [
+ [
+ "/css/css-multicol/zero-column-width-layout.html",
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-namespaces/prefix-001.xml": [
[
"/css/css-namespaces/prefix-001.xml",
@@ -125925,6 +125979,78 @@
{}
]
],
+ "css/css-scoping/host-descendant-001.html": [
+ [
+ "/css/css-scoping/host-descendant-001.html",
+ [
+ [
+ "/css/css-scoping/reference/green-box.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-scoping/host-descendant-002.html": [
+ [
+ "/css/css-scoping/host-descendant-002.html",
+ [
+ [
+ "/css/css-scoping/reference/green-box.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-scoping/host-multiple-001.html": [
+ [
+ "/css/css-scoping/host-multiple-001.html",
+ [
+ [
+ "/css/css-scoping/reference/green-box.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-scoping/host-nested-001.html": [
+ [
+ "/css/css-scoping/host-nested-001.html",
+ [
+ [
+ "/css/css-scoping/reference/green-box.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-scoping/host-slotted-001.html": [
+ [
+ "/css/css-scoping/host-slotted-001.html",
+ [
+ [
+ "/css/css-scoping/reference/green-box.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-scoping/shadow-assign-dynamic-001.html": [
+ [
+ "/css/css-scoping/shadow-assign-dynamic-001.html",
+ [
+ [
+ "/css/css-scoping/reference/green-box.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-scoping/shadow-disabled-sheet-001.html": [
[
"/css/css-scoping/shadow-disabled-sheet-001.html",
@@ -125997,6 +126123,18 @@
{}
]
],
+ "css/css-scoping/shadow-reassign-dynamic-001.html": [
+ [
+ "/css/css-scoping/shadow-reassign-dynamic-001.html",
+ [
+ [
+ "/css/css-scoping/reference/green-box.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-scoping/shadow-root-insert-into-document.html": [
[
"/css/css-scoping/shadow-root-insert-into-document.html",
@@ -126105,6 +126243,18 @@
{}
]
],
+ "css/css-shapes/shape-outside/shape-box/shape-outside-box-009.html": [
+ [
+ "/css/css-shapes/shape-outside/shape-box/shape-outside-box-009.html",
+ [
+ [
+ "/css/css-shapes/shape-outside/shape-box/reference/shape-outside-box-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html": [
[
"/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-001.html",
@@ -126153,6 +126303,54 @@
{}
]
],
+ "css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-005.html": [
+ [
+ "/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-005.html",
+ [
+ [
+ "/css/css-shapes/shape-outside/shape-image/gradients/reference/shape-outside-linear-gradient-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-006.html": [
+ [
+ "/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-006.html",
+ [
+ [
+ "/css/css-shapes/shape-outside/shape-image/gradients/reference/shape-outside-linear-gradient-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-007.html": [
+ [
+ "/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-007.html",
+ [
+ [
+ "/css/css-shapes/shape-outside/shape-image/gradients/reference/shape-outside-linear-gradient-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-008.html": [
+ [
+ "/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-008.html",
+ [
+ [
+ "/css/css-shapes/shape-outside/shape-image/gradients/reference/shape-outside-linear-gradient-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-shapes/shape-outside/shape-image/shape-image-000.html": [
[
"/css/css-shapes/shape-outside/shape-image/shape-image-000.html",
@@ -127377,6 +127575,18 @@
{}
]
],
+ "css/css-tables/anonymous-table-ws-001.html": [
+ [
+ "/css/css-tables/anonymous-table-ws-001.html",
+ [
+ [
+ "/css/css-tables/anonymous-table-ws-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-tables/fixup-dynamic-anonymous-inline-table-001.html": [
[
"/css/css-tables/fixup-dynamic-anonymous-inline-table-001.html",
@@ -135885,6 +136095,18 @@
{}
]
],
+ "css/css-transforms/css-transform-animate-translate-implied-y.html": [
+ [
+ "/css/css-transforms/css-transform-animate-translate-implied-y.html",
+ [
+ [
+ "/css/css-transforms/css-transform-animate-translate-implied-y-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-transforms/css-transform-inherit-scale.html": [
[
"/css/css-transforms/css-transform-inherit-scale.html",
@@ -162345,6 +162567,30 @@
{}
]
],
+ "css/selectors/selection-image-001.html": [
+ [
+ "/css/selectors/selection-image-001.html",
+ [
+ [
+ "/css/selectors/selection-image-001-noref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/selectors/selection-image-002.html": [
+ [
+ "/css/selectors/selection-image-002.html",
+ [
+ [
+ "/css/selectors/selection-image-001-no-selection-noref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/selectors/selector-placeholder-shown-type-change-001.html": [
[
"/css/selectors/selector-placeholder-shown-type-change-001.html",
@@ -165021,6 +165267,18 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-horiz-001a.xhtml": [
[
"/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-horiz-001a.xhtml",
@@ -165933,6 +166191,150 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-002.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-002.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-003.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-003.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-004.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-004.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001a.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001a.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001b.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001b.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002a.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002a.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002b.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002b.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003a.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003a.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003b.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003b.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004a.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004a.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004b.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004b.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-flow-001.html": [
[
"/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-flow-001.html",
@@ -167229,6 +167631,222 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1a.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1a.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1b.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1b.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/images3/object-fit-contain-png-001c.html": [
[
"/css/vendor-imports/mozilla/mozilla-central-reftests/images3/object-fit-contain-png-001c.html",
@@ -185639,6 +186257,66 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-ref.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-ref.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-noib-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-ref.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-ref.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-noib-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-ref.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-ref.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-noib-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-ref.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-ref.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-noib-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-ref.html": [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-ref.html",
+ [
+ [
+ "/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-noib-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"html/dom/elements/global-attributes/dir_auto-N-EN-ref.html": [
[
"/html/dom/elements/global-attributes/dir_auto-N-EN-ref.html",
@@ -186954,6 +187632,11 @@
{}
]
],
+ "2dcontext/imagebitmap/transfer-worker.js": [
+ [
+ {}
+ ]
+ ],
"2dcontext/line-styles/.gitkeep": [
[
{}
@@ -188024,6 +188707,11 @@
{}
]
],
+ "acid/OWNERS": [
+ [
+ {}
+ ]
+ ],
"acid/README.md": [
[
{}
@@ -191134,6 +191822,11 @@
{}
]
],
+ "compat/webkit-background-origin-text-ref.html": [
+ [
+ {}
+ ]
+ ],
"compat/webkit-text-fill-color-property-001-ref.html": [
[
{}
@@ -213954,6 +214647,11 @@
{}
]
],
+ "content-security-policy/support/file-prefetch-allowed.html": [
+ [
+ {}
+ ]
+ ],
"content-security-policy/support/fonts.css": [
[
{}
@@ -214134,11 +214832,6 @@
{}
]
],
- "cookie-store/resources/expiration.js": [
- [
- {}
- ]
- ],
"cookie-store/resources/get_set_get_all.js": [
[
{}
@@ -214164,21 +214857,11 @@
{}
]
],
- "cookie-store/resources/one_simple_origin_cookie.js": [
- [
- {}
- ]
- ],
"cookie-store/resources/ordering.js": [
[
{}
]
],
- "cookie-store/resources/secure_cookies.js": [
- [
- {}
- ]
- ],
"cookie-store/serviceworker_cookieStore_arguments.js": [
[
{}
@@ -237119,6 +237802,11 @@
{}
]
],
+ "css/css-backgrounds/parsing/resources/parsing-testcommon.js": [
+ [
+ {}
+ ]
+ ],
"css/css-backgrounds/reference/60x60-green-background.html": [
[
{}
@@ -237299,11 +237987,6 @@
{}
]
],
- "css/css-backgrounds/reference/box-shadow-syntax-001.xht": [
- [
- {}
- ]
- ],
"css/css-backgrounds/reference/css-border-radius-ref-001.html": [
[
{}
@@ -237414,6 +238097,11 @@
{}
]
],
+ "css/css-backgrounds/resources/parsing-testcommon.js": [
+ [
+ {}
+ ]
+ ],
"css/css-backgrounds/support/100x100-blue-and-orange.png": [
[
{}
@@ -238124,11 +238812,21 @@
{}
]
],
+ "css/css-contain/OWNERS": [
+ [
+ {}
+ ]
+ ],
"css/css-contain/contain-style-counters-ref.html": [
[
{}
]
],
+ "css/css-content/attr-case-insensitive-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-content/element-replacement-ref.html": [
[
{}
@@ -238174,6 +238872,11 @@
{}
]
],
+ "css/css-display/display-contents-details-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-display/display-contents-dynamic-generated-content-fieldset-001-ref.html": [
[
{}
@@ -238239,6 +238942,11 @@
{}
]
],
+ "css/css-display/display-contents-suppression-dynamic-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-display/display-contents-svg-elements-ref.html": [
[
{}
@@ -240059,6 +240767,11 @@
{}
]
],
+ "css/css-fonts/font-variant-descriptor-01-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-fonts/font-variant-east-asian-01-ref.html": [
[
{}
@@ -247894,6 +248607,206 @@
{}
]
],
+ "css/css-fonts/variations/resources/ahem.ttc": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-100-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-1479-w1-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-1479-w4-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-1479-w7-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-1479-w9-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-15-w1-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-15-w5-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-200-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-24-w2-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-24-w4-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-2569-w2-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-2569-w5-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-2569-w6-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-2569-w9-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-258-w2-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-258-w5-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-258-w8-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-300-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-3589-w3-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-3589-w5-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-3589-w8-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-3589-w9-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-400-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-47-w4-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-47-w7-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-500-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-600-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-700-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-800-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-900-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w1-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w2-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w3-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w4-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w5-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w6-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w7-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w8-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w9-kerned.ttf": [
+ [
+ {}
+ ]
+ ],
"css/css-fonts/variations/resources/variabletest_box.ttf": [
[
{}
@@ -251364,6 +252277,11 @@
{}
]
],
+ "css/css-shadow-parts/support/shadow-helper.js": [
+ [
+ {}
+ ]
+ ],
"css/css-shapes/OWNERS": [
[
{}
@@ -251859,6 +252777,11 @@
{}
]
],
+ "css/css-sizing/OWNERS": [
+ [
+ {}
+ ]
+ ],
"css/css-sizing/intrinsic-percent-non-replaced-001-ref.html": [
[
{}
@@ -252214,6 +253137,11 @@
{}
]
],
+ "css/css-tables/anonymous-table-ws-001-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-tables/floats/floats-wrap-bfc-006b-ref.xht": [
[
{}
@@ -255774,6 +256702,11 @@
{}
]
],
+ "css/css-transforms/css-transform-animate-translate-implied-y-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-transforms/css3-transform-rotateY-ref.html": [
[
{}
@@ -262749,6 +263682,11 @@
{}
]
],
+ "css/motion/OWNERS": [
+ [
+ {}
+ ]
+ ],
"css/motion/animation/resources/interpolation-testcommon.js": [
[
{}
@@ -264564,6 +265502,11 @@
{}
]
],
+ "css/selectors/resources/blue15x15.png": [
+ [
+ {}
+ ]
+ ],
"css/selectors/selector-placeholder-shown-type-change-001-ref.html": [
[
{}
@@ -266199,6 +267142,11 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-horiz-001-ref.xhtml": [
[
{}
@@ -266499,6 +267447,31 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-flow-001-ref.html": [
[
{}
@@ -266954,6 +267927,96 @@
{}
]
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/reftest.list": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-noib-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-noib-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-noib-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-noib-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-noib-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/images3/object-fit-contain-png-001-ref.html": [
[
{}
@@ -269334,6 +270397,11 @@
{}
]
],
+ "docs/_running-tests/chrome.md": [
+ [
+ {}
+ ]
+ ],
"docs/_running-tests/chrome_android.md": [
[
{}
@@ -272144,6 +273212,16 @@
{}
]
],
+ "fetch/api/resources/cors-top.txt": [
+ [
+ {}
+ ]
+ ],
+ "fetch/api/resources/cors-top.txt.headers": [
+ [
+ {}
+ ]
+ ],
"fetch/api/resources/data.json": [
[
{}
@@ -272249,6 +273327,11 @@
{}
]
],
+ "fetch/content-encoding/resources/bad-gzip-body.py": [
+ [
+ {}
+ ]
+ ],
"fetch/corb/README.md": [
[
{}
@@ -275299,6 +276382,11 @@
{}
]
],
+ "html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext-subframe.txt": [
+ [
+ {}
+ ]
+ ],
"html/dom/elements-embedded.js": [
[
{}
@@ -281584,6 +282672,11 @@
{}
]
],
+ "html/semantics/document-metadata/the-link-element/resources/link-rel-attribute.css": [
+ [
+ {}
+ ]
+ ],
"html/semantics/document-metadata/the-link-element/resources/stylesheet.css": [
[
{}
@@ -285664,6 +286757,16 @@
{}
]
],
+ "infrastructure/webdriver/tests/conftest.py": [
+ [
+ {}
+ ]
+ ],
+ "innerText/OWNERS": [
+ [
+ {}
+ ]
+ ],
"innerText/getter-tests.js": [
[
{}
@@ -285679,6 +286782,11 @@
{}
]
],
+ "interfaces/BackgroundSync.idl": [
+ [
+ {}
+ ]
+ ],
"interfaces/FileAPI.idl": [
[
{}
@@ -285694,6 +286802,11 @@
{}
]
],
+ "interfaces/ServiceWorker.idl": [
+ [
+ {}
+ ]
+ ],
"interfaces/WebCryptoAPI.idl": [
[
{}
@@ -285714,11 +286827,21 @@
{}
]
],
+ "interfaces/budget-api.idl": [
+ [
+ {}
+ ]
+ ],
"interfaces/clipboard-apis.idl": [
[
{}
]
],
+ "interfaces/compat.idl": [
+ [
+ {}
+ ]
+ ],
"interfaces/console.idl": [
[
{}
@@ -285779,6 +286902,11 @@
{}
]
],
+ "interfaces/filter-effects.idl": [
+ [
+ {}
+ ]
+ ],
"interfaces/fullscreen.idl": [
[
{}
@@ -285949,6 +287077,11 @@
{}
]
],
+ "intersection-observer/OWNERS": [
+ [
+ {}
+ ]
+ ],
"intersection-observer/observer-in-iframe.html": [
[
{}
@@ -285979,6 +287112,11 @@
{}
]
],
+ "js/OWNERS": [
+ [
+ {}
+ ]
+ ],
"js/builtins/Math.maxmin.js": [
[
{}
@@ -287674,6 +288812,11 @@
{}
]
],
+ "payment-handler/untrusted-event.js": [
+ [
+ {}
+ ]
+ ],
"payment-method-basic-card/OWNERS": [
[
{}
@@ -292374,6 +293517,11 @@
{}
]
],
+ "service-workers/service-worker/resources/dummy-shared-worker-interceptor.js.headers": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/dummy-worker-interceptor.js": [
[
{}
@@ -293269,6 +294417,16 @@
{}
]
],
+ "service-workers/service-worker/resources/scope1/redirect.py": [
+ [
+ {}
+ ]
+ ],
+ "service-workers/service-worker/resources/scope2/worker_interception_redirect_webworker.py": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/service-worker-csp-worker.py": [
[
{}
@@ -293294,6 +294452,11 @@
{}
]
],
+ "service-workers/service-worker/resources/simple-intercept-worker.js.headers": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/simple.html": [
[
{}
@@ -293414,11 +294577,26 @@
{}
]
],
+ "service-workers/service-worker/resources/worker-client-id-worker.js": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/worker-interception-iframe.https.html": [
[
{}
]
],
+ "service-workers/service-worker/resources/worker-interception-redirect-serviceworker.js": [
+ [
+ {}
+ ]
+ ],
+ "service-workers/service-worker/resources/worker-interception-redirect-webworker.js": [
+ [
+ {}
+ ]
+ ],
"service-workers/service-worker/resources/worker-load-interceptor.js": [
[
{}
@@ -293429,6 +294607,11 @@
{}
]
],
+ "service-workers/service-worker/resources/worker_interception_redirect_webworker.py": [
+ [
+ {}
+ ]
+ ],
"service-workers/specgen.json": [
[
{}
@@ -293694,6 +294877,11 @@
{}
]
],
+ "streams/readable-streams/patched-global.js": [
+ [
+ {}
+ ]
+ ],
"streams/readable-streams/reentrant-strategies.js": [
[
{}
@@ -295189,6 +296377,11 @@
{}
]
],
+ "webaudio/resources/biquad-testing.js": [
+ [
+ {}
+ ]
+ ],
"webaudio/resources/convolution-testing.js": [
[
{}
@@ -295209,6 +296402,11 @@
{}
]
],
+ "webaudio/resources/mixing-rules.js": [
+ [
+ {}
+ ]
+ ],
"webaudio/resources/panner-formulas.js": [
[
{}
@@ -295324,6 +296522,11 @@
{}
]
],
+ "webaudio/the-audio-api/the-audioworklet-interface/processors/zero-output-processor.js": [
+ [
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-biquadfilternode-interface/.gitkeep": [
[
{}
@@ -298279,16 +299482,31 @@
{}
]
],
+ "workers/interfaces/WorkerUtils/importScripts/1.headers": [
+ [
+ {}
+ ]
+ ],
"workers/interfaces/WorkerUtils/importScripts/null": [
[
{}
]
],
+ "workers/interfaces/WorkerUtils/importScripts/null.headers": [
+ [
+ {}
+ ]
+ ],
"workers/interfaces/WorkerUtils/importScripts/undefined": [
[
{}
]
],
+ "workers/interfaces/WorkerUtils/importScripts/undefined.headers": [
+ [
+ {}
+ ]
+ ],
"workers/modules/resources/dynamic-import-and-then-static-import-worker.js": [
[
{}
@@ -299019,6 +300237,11 @@
{}
]
],
+ "xhr/resources/header-user-agent.py": [
+ [
+ {}
+ ]
+ ],
"xhr/resources/headers-basic.asis": [
[
{}
@@ -300087,12 +301310,6 @@
{}
]
],
- "2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html": [
- [
- "/2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html",
- {}
- ]
- ],
"2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.html": [
[
"/2dcontext/drawing-paths-to-the-canvas/drawFocusIfNeeded_001.html",
@@ -301875,6 +303092,12 @@
{}
]
],
+ "2dcontext/imagebitmap/createImageBitmap-transfer.html": [
+ [
+ "/2dcontext/imagebitmap/createImageBitmap-transfer.html",
+ {}
+ ]
+ ],
"2dcontext/line-styles/2d.line.cap.butt.html": [
[
"/2dcontext/line-styles/2d.line.cap.butt.html",
@@ -303981,6 +305204,16 @@
{}
]
],
+ "BackgroundSync/interfaces.any.js": [
+ [
+ "/BackgroundSync/interfaces.any.html",
+ {}
+ ],
+ [
+ "/BackgroundSync/interfaces.any.worker.html",
+ {}
+ ]
+ ],
"FileAPI/FileReader/Progress_event_bubbles_cancelable.html": [
[
"/FileAPI/FileReader/Progress_event_bubbles_cancelable.html",
@@ -307787,9 +309020,9 @@
}
]
],
- "bluetooth/idl/idl-Bluetooth.html": [
+ "bluetooth/idl/idl-Bluetooth.https.html": [
[
- "/bluetooth/idl/idl-Bluetooth.html",
+ "/bluetooth/idl/idl-Bluetooth.https.html",
{}
]
],
@@ -308013,25 +309246,25 @@
}
]
],
- "bluetooth/requestDevice/consumes-user-gesture.https.html": [
+ "bluetooth/requestDevice/cross-origin-iframe.sub.https.html": [
[
- "/bluetooth/requestDevice/consumes-user-gesture.https.html",
+ "/bluetooth/requestDevice/cross-origin-iframe.sub.https.html",
{
"testdriver": true
}
]
],
- "bluetooth/requestDevice/cross-origin-iframe.sub.https.html": [
+ "bluetooth/requestDevice/discovery-succeeds.https.html": [
[
- "/bluetooth/requestDevice/cross-origin-iframe.sub.https.html",
+ "/bluetooth/requestDevice/discovery-succeeds.https.html",
{
"testdriver": true
}
]
],
- "bluetooth/requestDevice/discovery-succeeds.https.html": [
+ "bluetooth/requestDevice/doesnt-consume-user-gesture.https.html": [
[
- "/bluetooth/requestDevice/discovery-succeeds.https.html",
+ "/bluetooth/requestDevice/doesnt-consume-user-gesture.https.html",
{
"testdriver": true
}
@@ -308773,6 +310006,16 @@
}
]
],
+ "budget-api/interfaces.any.js": [
+ [
+ "/budget-api/interfaces.any.html",
+ {}
+ ],
+ [
+ "/budget-api/interfaces.any.worker.html",
+ {}
+ ]
+ ],
"clear-site-data/navigation-insecure.html": [
[
"/clear-site-data/navigation-insecure.html",
@@ -308833,6 +310076,16 @@
{}
]
],
+ "compat/interfaces.any.js": [
+ [
+ "/compat/interfaces.any.html",
+ {}
+ ],
+ [
+ "/compat/interfaces.any.worker.html",
+ {}
+ ]
+ ],
"compat/webkit-appearance.tentative.html": [
[
"/compat/webkit-appearance.tentative.html",
@@ -308865,23 +310118,23 @@
{}
]
],
- "console/console-time-label-conversion.any.js": [
+ "console/console-tests-historical.any.js": [
[
- "/console/console-time-label-conversion.any.html",
+ "/console/console-tests-historical.any.html",
{}
],
[
- "/console/console-time-label-conversion.any.worker.html",
+ "/console/console-tests-historical.any.worker.html",
{}
]
],
- "console/console-timeline-timelineEnd-historical.any.js": [
+ "console/console-time-label-conversion.any.js": [
[
- "/console/console-timeline-timelineEnd-historical.any.html",
+ "/console/console-time-label-conversion.any.html",
{}
],
[
- "/console/console-timeline-timelineEnd-historical.any.worker.html",
+ "/console/console-time-label-conversion.any.worker.html",
{}
]
],
@@ -309794,13 +311047,17 @@
"content-security-policy/navigate-to/child-navigates-parent-allowed.html": [
[
"/content-security-policy/navigate-to/child-navigates-parent-allowed.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"content-security-policy/navigate-to/child-navigates-parent-blocked.html": [
[
"/content-security-policy/navigate-to/child-navigates-parent-blocked.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"content-security-policy/navigate-to/form-action/form-action-allows-navigate-to-allows.html": [
@@ -309902,37 +311159,49 @@
"content-security-policy/navigate-to/link-click-allowed.html": [
[
"/content-security-policy/navigate-to/link-click-allowed.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"content-security-policy/navigate-to/link-click-blocked.html": [
[
"/content-security-policy/navigate-to/link-click-blocked.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html": [
[
"/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html": [
[
"/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"content-security-policy/navigate-to/link-click-redirected-allowed.html": [
[
"/content-security-policy/navigate-to/link-click-redirected-allowed.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"content-security-policy/navigate-to/link-click-redirected-blocked.sub.html": [
[
"/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"content-security-policy/navigate-to/meta-refresh-allowed.html": [
@@ -311309,12 +312578,24 @@
{}
]
],
+ "cookie-store/cookieStore_set_expires_option.tentative.window.js": [
+ [
+ "/cookie-store/cookieStore_set_expires_option.tentative.window.html",
+ {}
+ ]
+ ],
"cookie-store/cookieStore_special_names.tentative.html": [
[
"/cookie-store/cookieStore_special_names.tentative.html",
{}
]
],
+ "cookie-store/cookieStore_special_names.tentative.https.html": [
+ [
+ "/cookie-store/cookieStore_special_names.tentative.https.html",
+ {}
+ ]
+ ],
"cookie-store/delete_cookies.tentative.html": [
[
"/cookie-store/delete_cookies.tentative.html",
@@ -311345,18 +312626,6 @@
{}
]
],
- "cookie-store/expiration.tentative.html": [
- [
- "/cookie-store/expiration.tentative.html",
- {}
- ]
- ],
- "cookie-store/expiration.tentative.https.html": [
- [
- "/cookie-store/expiration.tentative.https.html",
- {}
- ]
- ],
"cookie-store/get_set_get_all.tentative.html": [
[
"/cookie-store/get_set_get_all.tentative.html",
@@ -311429,36 +312698,12 @@
{}
]
],
- "cookie-store/one_simple_origin_cookie.tentative.html": [
- [
- "/cookie-store/one_simple_origin_cookie.tentative.html",
- {}
- ]
- ],
- "cookie-store/one_simple_origin_cookie.tentative.https.html": [
- [
- "/cookie-store/one_simple_origin_cookie.tentative.https.html",
- {}
- ]
- ],
"cookie-store/ordering.tentative.https.html": [
[
"/cookie-store/ordering.tentative.https.html",
{}
]
],
- "cookie-store/secure_cookies.tentative.html": [
- [
- "/cookie-store/secure_cookies.tentative.html",
- {}
- ]
- ],
- "cookie-store/secure_cookies.tentative.https.html": [
- [
- "/cookie-store/secure_cookies.tentative.https.html",
- {}
- ]
- ],
"cookie-store/serviceworker_cookieStore_arguments.tentative.https.html": [
[
"/cookie-store/serviceworker_cookieStore_arguments.tentative.https.html",
@@ -311935,6 +313180,12 @@
{}
]
],
+ "css/css-align/default-alignment/shorthand-serialization-001.html": [
+ [
+ "/css/css-align/default-alignment/shorthand-serialization-001.html",
+ {}
+ ]
+ ],
"css/css-align/gaps/column-gap-animation-001.html": [
[
"/css/css-align/gaps/column-gap-animation-001.html",
@@ -312213,6 +313464,264 @@
{}
]
],
+ "css/css-backgrounds/box-shadow-syntax-001.html": [
+ [
+ "/css/css-backgrounds/box-shadow-syntax-001.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-attachment-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-attachment-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-attachment-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-attachment-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-clip-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-clip-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-clip-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-clip-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-color-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-color-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-color-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-color-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-image-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-image-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-image-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-image-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-origin-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-origin-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-origin-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-origin-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-position-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-position-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-position-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-position-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-repeat-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-repeat-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-repeat-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-repeat-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-size-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-size-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-size-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-size-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/background-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/background-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-color-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-color-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-color-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-color-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-outset-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-outset-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-outset-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-outset-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-repeat-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-repeat-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-repeat-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-repeat-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-slice-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-slice-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-slice-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-slice-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-source-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-source-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-source-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-source-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-width-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-width-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-image-width-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-image-width-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-radius-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-radius-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-radius-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-radius-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-style-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-style-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-style-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-style-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-width-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-width-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/border-width-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/border-width-valid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/box-shadow-invalid.html": [
+ [
+ "/css/css-backgrounds/parsing/box-shadow-invalid.html",
+ {}
+ ]
+ ],
+ "css/css-backgrounds/parsing/box-shadow-valid.html": [
+ [
+ "/css/css-backgrounds/parsing/box-shadow-valid.html",
+ {}
+ ]
+ ],
"css/css-cascade/inherit-initial.html": [
[
"/css/css-cascade/inherit-initial.html",
@@ -312911,12 +314420,90 @@
{}
]
],
+ "css/css-fonts/variations/at-font-face-descriptors.html": [
+ [
+ "/css/css-fonts/variations/at-font-face-descriptors.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/at-font-face-font-matching.html": [
+ [
+ "/css/css-fonts/variations/at-font-face-font-matching.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-opentype-collections.html": [
+ [
+ "/css/css-fonts/variations/font-opentype-collections.html",
+ {}
+ ]
+ ],
"css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html": [
[
"/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html",
{}
]
],
+ "css/css-fonts/variations/font-shorthand.html": [
+ [
+ "/css/css-fonts/variations/font-shorthand.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-stretch.html": [
+ [
+ "/css/css-fonts/variations/font-stretch.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-style-interpolation.html": [
+ [
+ "/css/css-fonts/variations/font-style-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-style-parsing.html": [
+ [
+ "/css/css-fonts/variations/font-style-parsing.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-variation-settings-inherit.html": [
+ [
+ "/css/css-fonts/variations/font-variation-settings-inherit.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-variation-settings-parsing.html": [
+ [
+ "/css/css-fonts/variations/font-variation-settings-parsing.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-weight-interpolation.html": [
+ [
+ "/css/css-fonts/variations/font-weight-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-weight-lighter-bolder.html": [
+ [
+ "/css/css-fonts/variations/font-weight-lighter-bolder.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-weight-matching.html": [
+ [
+ "/css/css-fonts/variations/font-weight-matching.html",
+ {}
+ ]
+ ],
+ "css/css-fonts/variations/font-weight-parsing.html": [
+ [
+ "/css/css-fonts/variations/font-weight-parsing.html",
+ {}
+ ]
+ ],
"css/css-grid/abspos/absolute-positioning-definite-sizes-001.html": [
[
"/css/css-grid/abspos/absolute-positioning-definite-sizes-001.html",
@@ -314273,6 +315860,12 @@
{}
]
],
+ "css/css-layout-api/crash-multicol.https.html": [
+ [
+ "/css/css-layout-api/crash-multicol.https.html",
+ {}
+ ]
+ ],
"css/css-layout-api/inline-style-layout-function.https.html": [
[
"/css/css-layout-api/inline-style-layout-function.https.html",
@@ -314357,6 +315950,12 @@
{}
]
],
+ "css/css-multicol/going-out-of-flow-after-spanner.html": [
+ [
+ "/css/css-multicol/going-out-of-flow-after-spanner.html",
+ {}
+ ]
+ ],
"css/css-multicol/multicol-gap-animation-001.html": [
[
"/css/css-multicol/multicol-gap-animation-001.html",
@@ -314381,12 +315980,24 @@
{}
]
],
+ "css/css-multicol/zero-column-width-computed-style.html": [
+ [
+ "/css/css-multicol/zero-column-width-computed-style.html",
+ {}
+ ]
+ ],
"css/css-overflow/logical-overflow-001.html": [
[
"/css/css-overflow/logical-overflow-001.html",
{}
]
],
+ "css/css-overflow/overflow-shorthand-001.html": [
+ [
+ "/css/css-overflow/overflow-shorthand-001.html",
+ {}
+ ]
+ ],
"css/css-position/position-sticky-bottom.html": [
[
"/css/css-position/position-sticky-bottom.html",
@@ -314591,6 +316202,24 @@
{}
]
],
+ "css/css-scoping/host-descendant-invalidation.html": [
+ [
+ "/css/css-scoping/host-descendant-invalidation.html",
+ {}
+ ]
+ ],
+ "css/css-scoping/host-dom-001.html": [
+ [
+ "/css/css-scoping/host-dom-001.html",
+ {}
+ ]
+ ],
+ "css/css-scoping/host-functional-descendant-invalidation.html": [
+ [
+ "/css/css-scoping/host-functional-descendant-invalidation.html",
+ {}
+ ]
+ ],
"css/css-scoping/shadow-cascade-order-001.html": [
[
"/css/css-scoping/shadow-cascade-order-001.html",
@@ -314759,6 +316388,54 @@
{}
]
],
+ "css/css-shadow-parts/all-hosts.html": [
+ [
+ "/css/css-shadow-parts/all-hosts.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/chaining-invalid-selector.html": [
+ [
+ "/css/css-shadow-parts/chaining-invalid-selector.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/complex-matching.html": [
+ [
+ "/css/css-shadow-parts/complex-matching.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/complex-non-matching.html": [
+ [
+ "/css/css-shadow-parts/complex-non-matching.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/different-host.html": [
+ [
+ "/css/css-shadow-parts/different-host.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/host-stylesheet.html": [
+ [
+ "/css/css-shadow-parts/host-stylesheet.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/inner-host.html": [
+ [
+ "/css/css-shadow-parts/inner-host.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/simple.html": [
+ [
+ "/css/css-shadow-parts/simple.html",
+ {}
+ ]
+ ],
"css/css-shapes/basic-shape-circle-ellipse-serialization.html": [
[
"/css/css-shapes/basic-shape-circle-ellipse-serialization.html",
@@ -317615,18 +319292,102 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/all.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/all.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-delay.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/animation-delay.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/animation-direction.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/animation-direction.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-duration.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/animation-duration.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-fill-mode.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/animation-fill-mode.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-iteration-count.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/animation-iteration-count.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-name.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/animation-name.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-play-state.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/animation-play-state.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-timing-function.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/animation-timing-function.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/animation.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/backdrop-filter.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/backdrop-filter.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/backface-visibility.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/backface-visibility.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/background-attachment.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/background-attachment.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-blend-mode.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/background-blend-mode.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-clip.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/background-clip.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/background-color.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/background-color.html",
@@ -317639,12 +319400,42 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/background-origin.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/background-origin.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-position.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/background-position.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-repeat.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-size.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/background-size.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/background.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/background.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/baseline-shift.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/baseline-shift.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/block-size.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/block-size.html",
@@ -317663,12 +319454,42 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/border-image-outset.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/border-image-outset.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/border-image-repeat.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/border-image-repeat.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/border-image-slice.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/border-image-slice.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/border-image-source.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/border-image-source.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/border-image-width.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/border-image-width.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/border-radius.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/border-radius.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/border-style.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/border-style.html",
@@ -317687,6 +319508,12 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/box-shadow.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/box-shadow.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/box-sizing.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/box-sizing.html",
@@ -317723,18 +319550,66 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/clip-path.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/clip-path.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/clip-rule.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/clip-rule.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/clip.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/clip.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/color-interpolation.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/color-interpolation.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/color-rendering.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/color-rendering.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/color.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/color.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/column-count.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/column-count.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/column-rule-color.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/column-rule-color.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/column-rule-style.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/column-rule-style.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/column-rule-width.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/column-rule-width.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/column-span.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/column-span.html",
@@ -317747,12 +319622,42 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/contain.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/contain.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/coordinate.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/coordinate.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/counter-increment.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/counter-increment.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/counter-reset.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/counter-reset.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/cursor.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/cursor.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/d.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/d.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/direction.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/direction.html",
@@ -317765,12 +319670,48 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/empty-cells.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/empty-cells.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/fill-color.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/fill-color.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/fill-rule.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/fill-rule.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/fill.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/fill.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/filter.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/filter.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/flex-basis.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/flex-basis.html",
@@ -317819,12 +319760,36 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/flood-color.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/flood-color.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/flood-opacity.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/flood-opacity.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/font-family.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/font-family.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/font-feature-settings.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/font-feature-settings.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/font-kerning.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/font-kerning.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/font-language-override.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/font-language-override.html",
@@ -317885,12 +319850,36 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/font-variant-caps.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/font-variant-caps.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/font-variant-east-asian.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/font-variant-east-asian.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/font-variant-ligatures.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/font-variant-ligatures.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/font-variant-numeric.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/font-variant-numeric.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/font-variant.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/font-variant.html",
@@ -317921,12 +319910,78 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-area.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/grid-area.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-auto-columns-rows.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/grid-auto-columns-rows.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-auto-flow.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/grid-auto-flow.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-gap.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/grid-gap.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-start-end.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/grid-start-end.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-template-areas.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/grid-template-areas.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-template-columns-rows.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/grid-template-columns-rows.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-template.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/grid-template.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/grid.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/height.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/height.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/hyphens.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/hyphens.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/image-rendering.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/inline-size.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/inline-size.html",
@@ -317945,6 +320000,30 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/lighting-color.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/lighting-color.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/line-break.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/line-break.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/line-height-step.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/line-height-step.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/line-height.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/line-height.html",
@@ -317963,6 +320042,12 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/list-style-type.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/margin.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/margin.html",
@@ -317981,6 +320066,18 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/mask-type.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/mask-type.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/mask.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/mask.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html",
@@ -318041,36 +320138,96 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/order.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/order.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/orphans.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/orphans.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/outline-color.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/outline-color.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/outline-offset.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/outline-offset.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/outline-style.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/outline-style.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/outline-width.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/outline-width.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/overflow-anchor.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/overflow-anchor.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/overflow.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/overflow.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/overscroll-behavior.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/overscroll-behavior.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/padding.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/padding.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/page.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/page.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/paint-order.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/paint-order.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/perspective.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/perspective.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/pointer-events.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/pointer-events.html",
@@ -318083,6 +320240,12 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/quotes.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/quotes.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/radius.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/radius.html",
@@ -318101,6 +320264,12 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/scroll-behavior.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/scroll-behavior.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/scroll-margin.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/scroll-margin.html",
@@ -318113,24 +320282,150 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/scroll-snap-stop.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-stop.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/shape-image-threshold.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/shape-image-threshold.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/shape-margin.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/shape-margin.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/shape-outside.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/shape-outside.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/shape-rendering.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/shape-rendering.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/speak.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/speak.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stop-color.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stop-color.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stop-opacity.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stop-opacity.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-width.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stroke-width.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/stroke.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/tab-size.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/tab-size.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/table-layout.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/table-layout.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-align-last.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-align-last.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-align.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/text-align.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-anchor.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-anchor.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-combine-upright.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-decoration-color.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/text-decoration-color.html",
@@ -318179,48 +320474,144 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-indent.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-indent.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-justify.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-justify.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-orientation.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/text-orientation.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-overflow.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-rendering.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-rendering.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-shadow.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-shadow.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-transform.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/text-transform.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-underline-position.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/text-underline-position.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/top.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/top.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/touch-action.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/touch-action.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/transform-box.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/transform-box.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/transform-interpolated.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/transform-interpolated.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/transform-style.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/transform-style.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/transform.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/transform.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/transition-delay.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/transition-delay.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/transition-duration.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/transition-duration.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/transition-property.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/transition-property.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/transition-timing-function.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/transition-timing-function.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/transition.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/transition.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/unicode-bidi.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/unicode-bidi.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/user-select.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/user-select.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/vector-effect.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/vector-effect.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/vertical-align.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/vertical-align.html",
@@ -318239,18 +320630,54 @@
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/widows.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/widows.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/width.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/width.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/will-change.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/will-change.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/word-break.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/word-break.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/word-spacing.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html",
+ {}
+ ]
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/word-wrap.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html",
+ {}
+ ]
+ ],
"css/css-typed-om/the-stylepropertymap/properties/writing-mode.html": [
[
"/css/css-typed-om/the-stylepropertymap/properties/writing-mode.html",
{}
]
],
+ "css/css-typed-om/the-stylepropertymap/properties/z-index.html": [
+ [
+ "/css/css-typed-om/the-stylepropertymap/properties/z-index.html",
+ {}
+ ]
+ ],
"css/css-ui/box-sizing-027.html": [
[
"/css/css-ui/box-sizing-027.html",
@@ -319037,6 +321464,12 @@
{}
]
],
+ "css/cssom-view/cssom-getBoxQuads-001.html": [
+ [
+ "/css/cssom-view/cssom-getBoxQuads-001.html",
+ {}
+ ]
+ ],
"css/cssom-view/cssom-getClientRects-002.html": [
[
"/css/cssom-view/cssom-getClientRects-002.html",
@@ -319349,6 +321782,18 @@
{}
]
],
+ "css/cssom/CSSStyleRule-set-selectorText-namespace.html": [
+ [
+ "/css/cssom/CSSStyleRule-set-selectorText-namespace.html",
+ {}
+ ]
+ ],
+ "css/cssom/CSSStyleRule-set-selectorText.html": [
+ [
+ "/css/cssom/CSSStyleRule-set-selectorText.html",
+ {}
+ ]
+ ],
"css/cssom/CSSStyleRule.html": [
[
"/css/cssom/CSSStyleRule.html",
@@ -319421,6 +321866,12 @@
{}
]
],
+ "css/cssom/css-style-reparse.html": [
+ [
+ "/css/cssom/css-style-reparse.html",
+ {}
+ ]
+ ],
"css/cssom/cssimportrule.html": [
[
"/css/cssom/cssimportrule.html",
@@ -319487,39 +321938,69 @@
{}
]
],
+ "css/cssom/cssstyledeclaration-mutationrecord-001.html": [
+ [
+ "/css/cssom/cssstyledeclaration-mutationrecord-001.html",
+ {}
+ ]
+ ],
+ "css/cssom/cssstyledeclaration-mutationrecord-002.html": [
+ [
+ "/css/cssom/cssstyledeclaration-mutationrecord-002.html",
+ {}
+ ]
+ ],
+ "css/cssom/cssstyledeclaration-mutationrecord-003.html": [
+ [
+ "/css/cssom/cssstyledeclaration-mutationrecord-003.html",
+ {}
+ ]
+ ],
+ "css/cssom/cssstyledeclaration-mutationrecord-004.html": [
+ [
+ "/css/cssom/cssstyledeclaration-mutationrecord-004.html",
+ {}
+ ]
+ ],
+ "css/cssom/cssstyledeclaration-setter-order.html": [
+ [
+ "/css/cssom/cssstyledeclaration-setter-order.html",
+ {}
+ ]
+ ],
"css/cssom/escape.html": [
[
"/css/cssom/escape.html",
{}
]
],
- "css/cssom/getComputedStyle-dynamic-subdoc.html": [
+ "css/cssom/font-shorthand-serialization.html": [
[
- "/css/cssom/getComputedStyle-dynamic-subdoc.html",
+ "/css/cssom/font-shorthand-serialization.html",
{}
]
],
- "css/cssom/getComputedStyle-pseudo.html": [
+ "css/cssom/getComputedStyle-detached-subtree.html": [
[
- "/css/cssom/getComputedStyle-pseudo.html",
+ "/css/cssom/getComputedStyle-detached-subtree.html",
{}
]
],
- "css/cssom/historical.html": [
+ "css/cssom/getComputedStyle-dynamic-subdoc.html": [
[
- "/css/cssom/historical.html",
+ "/css/cssom/getComputedStyle-dynamic-subdoc.html",
{}
]
],
- "css/cssom/index-001.html": [
+ "css/cssom/getComputedStyle-pseudo.html": [
[
- "/css/cssom/index-001.html",
+ "/css/cssom/getComputedStyle-pseudo.html",
{}
]
],
- "css/cssom/index-002.html": [
+ "css/cssom/historical.html": [
[
- "/css/cssom/index-002.html",
+ "/css/cssom/historical.html",
{}
]
],
@@ -319643,6 +322124,12 @@
{}
]
],
+ "css/cssom/shorthand-values.html": [
+ [
+ "/css/cssom/shorthand-values.html",
+ {}
+ ]
+ ],
"css/cssom/style-sheet-interfaces-001.html": [
[
"/css/cssom/style-sheet-interfaces-001.html",
@@ -319685,6 +322172,16 @@
{}
]
],
+ "css/filter-effects/interfaces.any.js": [
+ [
+ "/css/filter-effects/interfaces.any.html",
+ {}
+ ],
+ [
+ "/css/filter-effects/interfaces.any.worker.html",
+ {}
+ ]
+ ],
"css/filter-effects/parsing/color-interpolation-filters-parsing-invalid.html": [
[
"/css/filter-effects/parsing/color-interpolation-filters-parsing-invalid.html",
@@ -320941,6 +323438,12 @@
{}
]
],
+ "dom/events/Event-returnValue.html": [
+ [
+ "/dom/events/Event-returnValue.html",
+ {}
+ ]
+ ],
"dom/events/Event-subclasses-constructors.html": [
[
"/dom/events/Event-subclasses-constructors.html",
@@ -321041,6 +323544,12 @@
{}
]
],
+ "dom/events/event-global.worker.js": [
+ [
+ "/dom/events/event-global.worker.html",
+ {}
+ ]
+ ],
"dom/events/relatedTarget.window.js": [
[
"/dom/events/relatedTarget.window.html",
@@ -321397,6 +323906,12 @@
{}
]
],
+ "dom/nodes/Document-getElementsByClassName.html": [
+ [
+ "/dom/nodes/Document-getElementsByClassName.html",
+ {}
+ ]
+ ],
"dom/nodes/Document-getElementsByTagName-xhtml.xhtml": [
[
"/dom/nodes/Document-getElementsByTagName-xhtml.xhtml",
@@ -321949,6 +324464,12 @@
{}
]
],
+ "dom/nodes/ParentNode-children.html": [
+ [
+ "/dom/nodes/ParentNode-children.html",
+ {}
+ ]
+ ],
"dom/nodes/ParentNode-prepend.html": [
[
"/dom/nodes/ParentNode-prepend.html",
@@ -325273,6 +327794,12 @@
{}
]
],
+ "fetch/api/basic/mediasource.window.js": [
+ [
+ "/fetch/api/basic/mediasource.window.html",
+ {}
+ ]
+ ],
"fetch/api/basic/mode-no-cors-worker.html": [
[
"/fetch/api/basic/mode-no-cors-worker.html",
@@ -326193,6 +328720,16 @@
{}
]
],
+ "fetch/content-encoding/bad-gzip-body.any.js": [
+ [
+ "/fetch/content-encoding/bad-gzip-body.any.html",
+ {}
+ ],
+ [
+ "/fetch/content-encoding/bad-gzip-body.any.worker.html",
+ {}
+ ]
+ ],
"fetch/corb/img-mime-types-coverage.tentative.sub.html": [
[
"/fetch/corb/img-mime-types-coverage.tentative.sub.html",
@@ -327829,81 +330366,87 @@
{}
]
],
- "html/browsers/offline/appcache/workers/appcache-worker.html": [
+ "html/browsers/offline/appcache/workers/appcache-worker.https.html": [
[
- "/html/browsers/offline/appcache/workers/appcache-worker.html",
+ "/html/browsers/offline/appcache/workers/appcache-worker.https.html",
{}
]
],
- "html/browsers/offline/application-cache-api/api_status_idle.html": [
+ "html/browsers/offline/application-cache-api/api_status_idle.https.html": [
[
- "/html/browsers/offline/application-cache-api/api_status_idle.html",
+ "/html/browsers/offline/application-cache-api/api_status_idle.https.html",
{}
]
],
- "html/browsers/offline/application-cache-api/api_status_uncached.html": [
+ "html/browsers/offline/application-cache-api/api_status_uncached.https.html": [
[
- "/html/browsers/offline/application-cache-api/api_status_uncached.html",
+ "/html/browsers/offline/application-cache-api/api_status_uncached.https.html",
{}
]
],
- "html/browsers/offline/application-cache-api/api_swapcache_error.html": [
+ "html/browsers/offline/application-cache-api/api_swapcache_error.https.html": [
[
- "/html/browsers/offline/application-cache-api/api_swapcache_error.html",
+ "/html/browsers/offline/application-cache-api/api_swapcache_error.https.html",
{}
]
],
- "html/browsers/offline/application-cache-api/api_update.html": [
+ "html/browsers/offline/application-cache-api/api_update.https.html": [
[
- "/html/browsers/offline/application-cache-api/api_update.html",
+ "/html/browsers/offline/application-cache-api/api_update.https.html",
{}
]
],
- "html/browsers/offline/application-cache-api/api_update_error.html": [
+ "html/browsers/offline/application-cache-api/api_update_error.https.html": [
[
- "/html/browsers/offline/application-cache-api/api_update_error.html",
+ "/html/browsers/offline/application-cache-api/api_update_error.https.html",
{}
]
],
- "html/browsers/offline/browser-state/navigator_online_online.html": [
+ "html/browsers/offline/application-cache-api/secure_context.html": [
[
- "/html/browsers/offline/browser-state/navigator_online_online.html",
+ "/html/browsers/offline/application-cache-api/secure_context.html",
{}
]
],
- "html/browsers/offline/introduction-4/event_cached.html": [
+ "html/browsers/offline/browser-state/navigator_online_online.https.html": [
[
- "/html/browsers/offline/introduction-4/event_cached.html",
+ "/html/browsers/offline/browser-state/navigator_online_online.https.html",
{}
]
],
- "html/browsers/offline/introduction-4/event_checking.html": [
+ "html/browsers/offline/introduction-4/event_cached.https.html": [
[
- "/html/browsers/offline/introduction-4/event_checking.html",
+ "/html/browsers/offline/introduction-4/event_cached.https.html",
{}
]
],
- "html/browsers/offline/introduction-4/event_noupdate.html": [
+ "html/browsers/offline/introduction-4/event_checking.https.html": [
[
- "/html/browsers/offline/introduction-4/event_noupdate.html",
+ "/html/browsers/offline/introduction-4/event_checking.https.html",
{}
]
],
- "html/browsers/offline/introduction-4/event_progress.html": [
+ "html/browsers/offline/introduction-4/event_noupdate.https.html": [
[
- "/html/browsers/offline/introduction-4/event_progress.html",
+ "/html/browsers/offline/introduction-4/event_noupdate.https.html",
{}
]
],
- "html/browsers/offline/manifest_url_check.html": [
+ "html/browsers/offline/introduction-4/event_progress.https.html": [
[
- "/html/browsers/offline/manifest_url_check.html",
+ "/html/browsers/offline/introduction-4/event_progress.https.html",
{}
]
],
- "html/browsers/offline/no-appcache-in-shared-workers-historical.html": [
+ "html/browsers/offline/manifest_url_check.https.https.html": [
[
- "/html/browsers/offline/no-appcache-in-shared-workers-historical.html",
+ "/html/browsers/offline/manifest_url_check.https.https.html",
+ {}
+ ]
+ ],
+ "html/browsers/offline/no-appcache-in-shared-workers-historical.https.html": [
+ [
+ "/html/browsers/offline/no-appcache-in-shared-workers-historical.https.html",
{}
]
],
@@ -328223,9 +330766,9 @@
{}
]
],
- "html/browsers/the-window-object/security-window/window-security.html": [
+ "html/browsers/the-window-object/security-window/window-security.https.html": [
[
- "/html/browsers/the-window-object/security-window/window-security.html",
+ "/html/browsers/the-window-object/security-window/window-security.https.html",
{}
]
],
@@ -328259,9 +330802,9 @@
{}
]
],
- "html/browsers/the-window-object/window-properties.html": [
+ "html/browsers/the-window-object/window-properties.https.html": [
[
- "/html/browsers/the-window-object/window-properties.html",
+ "/html/browsers/the-window-object/window-properties.https.html",
{}
]
],
@@ -328559,6 +331102,12 @@
{}
]
],
+ "html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html": [
+ [
+ "/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html",
+ {}
+ ]
+ ],
"html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml.xhtml": [
[
"/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml.xhtml",
@@ -328631,6 +331180,18 @@
{}
]
],
+ "html/dom/documents/dom-tree-accessors/document.links.html": [
+ [
+ "/html/dom/documents/dom-tree-accessors/document.links.html",
+ {}
+ ]
+ ],
+ "html/dom/documents/dom-tree-accessors/document.scripts.html": [
+ [
+ "/html/dom/documents/dom-tree-accessors/document.scripts.html",
+ {}
+ ]
+ ],
"html/dom/documents/dom-tree-accessors/document.title-01.html": [
[
"/html/dom/documents/dom-tree-accessors/document.title-01.html",
@@ -329321,9 +331882,9 @@
{}
]
],
- "html/dom/dynamic-markup-insertion/opening-the-input-stream/009.html": [
+ "html/dom/dynamic-markup-insertion/opening-the-input-stream/009.https.html": [
[
- "/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.html",
+ "/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.https.html",
{}
]
],
@@ -329387,6 +331948,12 @@
{}
]
],
+ "html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext.window.js": [
+ [
+ "/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext.window.html",
+ {}
+ ]
+ ],
"html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument.window.js": [
[
"/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument.window.html",
@@ -329585,9 +332152,9 @@
{}
]
],
- "html/dom/interfaces.html": [
+ "html/dom/interfaces.https.html": [
[
- "/html/dom/interfaces.html",
+ "/html/dom/interfaces.https.html",
{
"timeout": "long"
}
@@ -329801,6 +332368,22 @@
{}
]
],
+ "html/editing/focus/focus-01.html": [
+ [
+ "/html/editing/focus/focus-01.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "html/editing/focus/focus-02.html": [
+ [
+ "/html/editing/focus/focus-02.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"html/editing/focus/focus-management/focus-event-targets-simple.html": [
[
"/html/editing/focus/focus-management/focus-event-targets-simple.html",
@@ -329831,6 +332414,38 @@
{}
]
],
+ "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative.html": [
+ [
+ "/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order.html": [
+ [
+ "/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive.html": [
+ [
+ "/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero.html": [
+ [
+ "/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"html/editing/focus/tabindex-focus-flag.html": [
[
"/html/editing/focus/tabindex-focus-flag.html",
@@ -330383,6 +332998,12 @@
{}
]
],
+ "html/semantics/document-metadata/the-link-element/link-rel-attribute.html": [
+ [
+ "/html/semantics/document-metadata/the-link-element/link-rel-attribute.html",
+ {}
+ ]
+ ],
"html/semantics/document-metadata/the-link-element/link-rellist.html": [
[
"/html/semantics/document-metadata/the-link-element/link-rellist.html",
@@ -332921,6 +335542,12 @@
{}
]
],
+ "html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html": [
+ [
+ "/html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-embed-element/embed-dimension.html": [
[
"/html/semantics/embedded-content/the-embed-element/embed-dimension.html",
@@ -332957,6 +335584,12 @@
{}
]
],
+ "html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html": [
+ [
+ "/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-iframe-element/change_parentage.html": [
[
"/html/semantics/embedded-content/the-iframe-element/change_parentage.html",
@@ -332975,6 +335608,12 @@
{}
]
],
+ "html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html": [
+ [
+ "/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-iframe-element/historical.html": [
[
"/html/semantics/embedded-content/the-iframe-element/historical.html",
@@ -333477,6 +336116,12 @@
{}
]
],
+ "html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html": [
+ [
+ "/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-object-element/historical.html": [
[
"/html/semantics/embedded-content/the-object-element/historical.html",
@@ -336009,15 +338654,15 @@
{}
]
],
- "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html": [
+ "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html": [
[
- "/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html",
+ "/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html",
{}
]
],
- "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html": [
+ "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html": [
[
- "/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html",
+ "/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html",
{}
]
],
@@ -336039,6 +338684,12 @@
{}
]
],
+ "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html": [
+ [
+ "/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html",
+ {}
+ ]
+ ],
"html/semantics/scripting-1/the-script-element/module/error-and-slow-dependency.html": [
[
"/html/semantics/scripting-1/the-script-element/module/error-and-slow-dependency.html",
@@ -339055,6 +341706,14 @@
}
]
],
+ "infrastructure/testdriver/send_keys.html": [
+ [
+ "/infrastructure/testdriver/send_keys.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"innerText/getter.html": [
[
"/innerText/getter.html",
@@ -340075,12 +342734,6 @@
{}
]
],
- "mediacapture-streams/MediaStream-MediaElement-preload-none.https.html": [
- [
- "/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html",
- {}
- ]
- ],
"mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [
[
"/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html",
@@ -351091,6 +353744,18 @@
{}
]
],
+ "payment-handler/same-object-attributes.https.html": [
+ [
+ "/payment-handler/same-object-attributes.https.html",
+ {}
+ ]
+ ],
+ "payment-handler/untrusted-event.https.html": [
+ [
+ "/payment-handler/untrusted-event.https.html",
+ {}
+ ]
+ ],
"payment-method-basic-card/payment-request-canmakepayment-method.https.html": [
[
"/payment-method-basic-card/payment-request-canmakepayment-method.https.html",
@@ -351467,6 +354132,12 @@
{}
]
],
+ "pointerevents/extension/pointerevent_touch-action-verification.html": [
+ [
+ "/pointerevents/extension/pointerevent_touch-action-verification.html",
+ {}
+ ]
+ ],
"pointerevents/idlharness.html": [
[
"/pointerevents/idlharness.html",
@@ -360552,7 +363223,9 @@
"service-workers/cache-storage/serviceworker/cache-abort.https.html": [
[
"/service-workers/cache-storage/serviceworker/cache-abort.https.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"service-workers/cache-storage/serviceworker/cache-add.https.html": [
@@ -360636,7 +363309,9 @@
"service-workers/cache-storage/window/cache-abort.https.html": [
[
"/service-workers/cache-storage/window/cache-abort.https.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"service-workers/cache-storage/window/cache-add.https.html": [
@@ -360722,7 +363397,9 @@
"service-workers/cache-storage/worker/cache-abort.https.html": [
[
"/service-workers/cache-storage/worker/cache-abort.https.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"service-workers/cache-storage/worker/cache-add.https.html": [
@@ -360797,6 +363474,12 @@
}
]
],
+ "service-workers/service-worker/Service-Worker-Allowed-header.https.html": [
+ [
+ "/service-workers/service-worker/Service-Worker-Allowed-header.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/ServiceWorkerGlobalScope/close.https.html": [
[
"/service-workers/service-worker/ServiceWorkerGlobalScope/close.https.html",
@@ -361873,12 +364556,24 @@
{}
]
],
+ "service-workers/service-worker/worker-client-id.https.html": [
+ [
+ "/service-workers/service-worker/worker-client-id.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/worker-in-sandboxed-iframe-by-csp-fetch-event.https.html": [
[
"/service-workers/service-worker/worker-in-sandboxed-iframe-by-csp-fetch-event.https.html",
{}
]
],
+ "service-workers/service-worker/worker-interception-redirect.https.html": [
+ [
+ "/service-workers/service-worker/worker-interception-redirect.https.html",
+ {}
+ ]
+ ],
"service-workers/service-worker/worker-interception.https.html": [
[
"/service-workers/service-worker/worker-interception.https.html",
@@ -363103,6 +365798,30 @@
{}
]
],
+ "streams/readable-streams/patched-global.dedicatedworker.html": [
+ [
+ "/streams/readable-streams/patched-global.dedicatedworker.html",
+ {}
+ ]
+ ],
+ "streams/readable-streams/patched-global.html": [
+ [
+ "/streams/readable-streams/patched-global.html",
+ {}
+ ]
+ ],
+ "streams/readable-streams/patched-global.serviceworker.https.html": [
+ [
+ "/streams/readable-streams/patched-global.serviceworker.https.html",
+ {}
+ ]
+ ],
+ "streams/readable-streams/patched-global.sharedworker.html": [
+ [
+ "/streams/readable-streams/patched-global.sharedworker.html",
+ {}
+ ]
+ ],
"streams/readable-streams/reentrant-strategies.dedicatedworker.html": [
[
"/streams/readable-streams/reentrant-strategies.dedicatedworker.html",
@@ -364402,7 +367121,9 @@
"upgrade-insecure-requests/link-upgrade.sub.https.html": [
[
"/upgrade-insecure-requests/link-upgrade.sub.https.html",
- {}
+ {
+ "timeout": "long"
+ }
]
],
"upgrade-insecure-requests/websocket-upgrade.https.html": [
@@ -364563,6 +367284,18 @@
{}
]
],
+ "user-timing/clearMarks.html": [
+ [
+ "/user-timing/clearMarks.html",
+ {}
+ ]
+ ],
+ "user-timing/clearMeasures.html": [
+ [
+ "/user-timing/clearMeasures.html",
+ {}
+ ]
+ ],
"user-timing/clear_all_marks.any.js": [
[
"/user-timing/clear_all_marks.any.html",
@@ -364667,6 +367400,12 @@
{}
]
],
+ "user-timing/mark.html": [
+ [
+ "/user-timing/mark.html",
+ {}
+ ]
+ ],
"user-timing/mark_exceptions.html": [
[
"/user-timing/mark_exceptions.html",
@@ -364679,6 +367418,18 @@
{}
]
],
+ "user-timing/measure_associated_with_navigation_timing.html": [
+ [
+ "/user-timing/measure_associated_with_navigation_timing.html",
+ {}
+ ]
+ ],
+ "user-timing/measure_exception.html": [
+ [
+ "/user-timing/measure_exception.html",
+ {}
+ ]
+ ],
"user-timing/measure_exceptions_navigation_timing.html": [
[
"/user-timing/measure_exceptions_navigation_timing.html",
@@ -364701,6 +367452,12 @@
{}
]
],
+ "user-timing/measures.html": [
+ [
+ "/user-timing/measures.html",
+ {}
+ ]
+ ],
"user-timing/user_timing_exists.any.js": [
[
"/user-timing/user_timing_exists.any.html",
@@ -365431,12 +368188,54 @@
{}
]
],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html": [
+ [
+ "/webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html": [
+ [
+ "/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html": [
+ [
+ "/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html",
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-audionode-interface/audionode-connect-return-value.html": [
[
"/webaudio/the-audio-api/the-audionode-interface/audionode-connect-return-value.html",
{}
]
],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html": [
+ [
+ "/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-disconnect.html": [
+ [
+ "/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/audionode.html": [
+ [
+ "/webaudio/the-audio-api/the-audionode-interface/audionode.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html": [
+ [
+ "/webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html",
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-audioparam-interface/idl-test.html": [
[
"/webaudio/the-audio-api/the-audioparam-interface/idl-test.html",
@@ -365515,6 +368314,12 @@
{}
]
],
+ "webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html": [
+ [
+ "/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html",
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html": [
[
"/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html",
@@ -365557,6 +368362,90 @@
{}
]
],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-bandpass.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-bandpass.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highshelf.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highshelf.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowpass.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowpass.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowshelf.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowshelf.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-peaking.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-peaking.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquadfilternode-basic.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/biquadfilternode-basic.html",
+ {}
+ ]
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html": [
+ [
+ "/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html",
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html": [
[
"/webaudio/the-audio-api/the-channelmergernode-interface/audiochannelmerger-basic.html",
@@ -365689,12 +368578,6 @@
{}
]
],
- "webaudio/the-audio-api/the-delaynode-interface/idl-test.html": [
- [
- "/webaudio/the-audio-api/the-delaynode-interface/idl-test.html",
- {}
- ]
- ],
"webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html": [
[
"/webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html",
@@ -365719,12 +368602,6 @@
{}
]
],
- "webaudio/the-audio-api/the-gainnode-interface/idl-test.html": [
- [
- "/webaudio/the-audio-api/the-gainnode-interface/idl-test.html",
- {}
- ]
- ],
"webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html": [
[
"/webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html",
@@ -370411,6 +373288,12 @@
{}
]
],
+ "workers/interfaces/WorkerUtils/WindowTimers/005.html": [
+ [
+ "/workers/interfaces/WorkerUtils/WindowTimers/005.html",
+ {}
+ ]
+ ],
"workers/interfaces/WorkerUtils/importScripts/001.worker.js": [
[
"/workers/interfaces/WorkerUtils/importScripts/001.worker.html",
@@ -371543,6 +374426,18 @@
{}
]
],
+ "xhr/header-user-agent-async.htm": [
+ [
+ "/xhr/header-user-agent-async.htm",
+ {}
+ ]
+ ],
+ "xhr/header-user-agent-sync.htm": [
+ [
+ "/xhr/header-user-agent-sync.htm",
+ {}
+ ]
+ ],
"xhr/headers-normalize-response.htm": [
[
"/xhr/headers-normalize-response.htm",
@@ -371795,6 +374690,12 @@
{}
]
],
+ "xhr/overridemimetype-edge-cases.window.js": [
+ [
+ "/xhr/overridemimetype-edge-cases.window.html",
+ {}
+ ]
+ ],
"xhr/overridemimetype-headers-received-state-force-shiftjis.htm": [
[
"/xhr/overridemimetype-headers-received-state-force-shiftjis.htm",
@@ -372475,12 +375376,6 @@
{}
]
],
- "xhr/xmlhttprequest-closing-worker.html": [
- [
- "/xhr/xmlhttprequest-closing-worker.html",
- {}
- ]
- ],
"xhr/xmlhttprequest-eventtarget.htm": [
[
"/xhr/xmlhttprequest-eventtarget.htm",
@@ -391674,9 +394569,27 @@
"/css/mediaqueries/media-queries-003.xht",
{}
]
+ ],
+ "css/selectors/selection-image-001-no-selection-noref.html": [
+ [
+ "/css/selectors/selection-image-001-no-selection-noref.html",
+ {}
+ ]
+ ],
+ "css/selectors/selection-image-001-noref.html": [
+ [
+ "/css/selectors/selection-image-001-noref.html",
+ {}
+ ]
]
},
"wdspec": {
+ "infrastructure/webdriver/tests/test_load_file.py": [
+ [
+ "/infrastructure/webdriver/tests/test_load_file.py",
+ {}
+ ]
+ ],
"webdriver/tests/actions/key.py": [
[
"/webdriver/tests/actions/key.py",
@@ -391692,9 +394605,7 @@
"webdriver/tests/actions/modifier_click.py": [
[
"/webdriver/tests/actions/modifier_click.py",
- {
- "timeout": "long"
- }
+ {}
]
],
"webdriver/tests/actions/mouse.py": [
@@ -391709,6 +394620,12 @@
{}
]
],
+ "webdriver/tests/actions/mouse_pause_dblclick.py": [
+ [
+ "/webdriver/tests/actions/mouse_pause_dblclick.py",
+ {}
+ ]
+ ],
"webdriver/tests/actions/pointer_origin.py": [
[
"/webdriver/tests/actions/pointer_origin.py",
@@ -391843,12 +394760,24 @@
{}
]
],
+ "webdriver/tests/execute_async_script/collections.py": [
+ [
+ "/webdriver/tests/execute_async_script/collections.py",
+ {}
+ ]
+ ],
"webdriver/tests/execute_async_script/user_prompts.py": [
[
"/webdriver/tests/execute_async_script/user_prompts.py",
{}
]
],
+ "webdriver/tests/execute_script/collections.py": [
+ [
+ "/webdriver/tests/execute_script/collections.py",
+ {}
+ ]
+ ],
"webdriver/tests/execute_script/cyclic.py": [
[
"/webdriver/tests/execute_script/cyclic.py",
@@ -392063,7 +394992,7 @@
"support"
],
"./.travis.yml": [
- "6aeadb7da2f5fa8d09762a07b3a874b306e1fc22",
+ "951cf036d724f429965f091fdfa5a0ea0028f3bf",
"support"
],
"./CONTRIBUTING.md": [
@@ -392079,7 +395008,7 @@
"support"
],
"./README.md": [
- "4efe0e6f320c51a8e67d04b52f14c0b0ef167432",
+ "df1ef73d62520c3e74159cd94889484b2070b68f",
"support"
],
"./check_stability.ini": [
@@ -392091,7 +395020,7 @@
"support"
],
"./lint.whitelist": [
- "697da251dd64d990c1ec0603fd252ba6ea11ad26",
+ "93f2328f5f3d43122505f201ddcb53c8d3d231bf",
"support"
],
"./serve.py": [
@@ -393002,10 +395931,6 @@
"1154b14a36ad59dfd9f091b28bec58e840287a88",
"testharness"
],
- "2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html": [
- "1d5a1f0a469e4c2bf7c36a405306686754f0acda",
- "testharness"
- ],
"2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawFocusIfNeeded_AAPI_001-manual.html": [
"e3606dfbcaebb914ccfc28e427215692e17858c5",
"manual"
@@ -394602,6 +397527,14 @@
"977be16edd03dcfa70f3c6f987bad1455e44b93f",
"testharness"
],
+ "2dcontext/imagebitmap/createImageBitmap-transfer.html": [
+ "b4c2badaa7fe69a209fd49cb136fde0e4f56d487",
+ "testharness"
+ ],
+ "2dcontext/imagebitmap/transfer-worker.js": [
+ "a4d7a168004e741c5b723b7a758f20822f9fd2d0",
+ "support"
+ ],
"2dcontext/line-styles/.gitkeep": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
@@ -396210,6 +399143,10 @@
"73f0071c06f429c3d47eac8d0863e11f1d6e8c25",
"support"
],
+ "BackgroundSync/interfaces.any.js": [
+ "2a158ca33b93b78a581341d885150d252a0e4555",
+ "testharness"
+ ],
"FileAPI/BlobURL/support/file_test2.txt": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
@@ -396475,7 +399412,7 @@
"testharness"
],
"FileAPI/url/url-in-tags-revoke.window.js": [
- "b1f54096cb0350066239ec1633be2be6ecb3af00",
+ "4d314e8f231158a8a216ecefd6a3ffa20cf31680",
"testharness"
],
"FileAPI/url/url-in-tags.window.js": [
@@ -398971,19 +401908,23 @@
"support"
],
"accelerometer/idlharness.https.html": [
- "f6da2046a4bc1c31a7ad2169c51e22c74105b989",
+ "93a78732bf63dcdd30ca1004f7ab850d5e7faaae",
"testharness"
],
"accname/OWNERS": [
"3a6002295ea2893ba74763e46965bd2d1291d55b",
"support"
],
+ "accname/description_1.0_combobox-focusable-manual.html": [
+ "4d68bb9b9a50d4db1bcbcd9d273ef1406a940061",
+ "manual"
+ ],
"accname/description_from_content_of_describedby_element-manual.html": [
- "9bf362dc2f578e507bf8d0f7133f7256e061e1d2",
+ "8e96e4d80581fadd56434a85745b9411cc0af841",
"manual"
],
"accname/description_from_content_of_describedby_element_which_is_hidden-manual.html": [
- "51e770a781330c01ef8ac607a8ceae8fbd9d84fd",
+ "4d253f206ccefa7f3db9bc96a4f710a2bc62971d",
"manual"
],
"accname/description_link-with-label-manual.html": [
@@ -399043,7 +401984,7 @@
"manual"
],
"accname/name_1.0_combobox-focusable-manual.html": [
- "3d6b70b4994608289b7fa1c70ea4e4ec905bc76a",
+ "100366728ba5032fadb632ca855795d114c7d87b",
"manual"
],
"accname/name_checkbox-label-embedded-combobox-manual.html": [
@@ -399075,11 +402016,11 @@
"manual"
],
"accname/name_checkbox-label-multiple-label-alternative-manual.html": [
- "b9bf65a6c3f2f073d419c418fae5c236a67b448a",
+ "efe7a0506abeac9e54aee8fcd9b11d5e9a9dbae2",
"manual"
],
"accname/name_checkbox-label-multiple-label-manual.html": [
- "b93e50d1551b6ad7f617535c704817f7c0f1805b",
+ "31fd1209d82562b2ae0966af448df85357d69d1c",
"manual"
],
"accname/name_checkbox-title-manual.html": [
@@ -399115,7 +402056,7 @@
"manual"
],
"accname/name_file-label-inline-hidden-elements-manual.html": [
- "562e670c4090233ece67a481e13ca63e6dfafc57",
+ "7b7c1f54e98c21aff89427fee9dc963a68df84f7",
"manual"
],
"accname/name_file-label-owned-combobox-manual.html": [
@@ -399131,19 +402072,19 @@
"manual"
],
"accname/name_from_content-manual.html": [
- "3553e365861c933b7b6789663e5b868e26748b88",
+ "a210d33ca9e562fae37f60de8e6212e279da375c",
"manual"
],
"accname/name_from_content_of_label-manual.html": [
- "f14085504a2008a4b82eddde2b41a05f465a47ae",
+ "958c2fa1501dfb3a7152e63cd56f47a481b95020",
"manual"
],
"accname/name_from_content_of_labelledby_element-manual.html": [
- "e917c6412966976e4eb6eae1e379a7e01bfcb5d1",
+ "e18596656eebf15f2e02974f1be00500dbb6a87f",
"manual"
],
"accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html": [
- "0e1d91be218401271e573e6bd93260caa1f9e842",
+ "006376e2c39418d0205601ef58d65287a8c8794b",
"manual"
],
"accname/name_heading-combobox-focusable-alternative-manual.html": [
@@ -399155,7 +402096,7 @@
"manual"
],
"accname/name_link-mixed-content-manual.html": [
- "d83619ac255e546e019272e103f03d50dc4b9c36",
+ "950f238d319e7da811ba3a8923e43e76b612d38c",
"manual"
],
"accname/name_link-with-label-manual.html": [
@@ -399243,7 +402184,7 @@
"manual"
],
"accname/name_test_case_548-manual.html": [
- "05f2d69e7b9299d8c31385c614ffda7850e64bd3",
+ "26232c6bdad6ff0cdcaa67bf587d050c2a68b3ea",
"manual"
],
"accname/name_test_case_549-manual.html": [
@@ -399275,7 +402216,7 @@
"manual"
],
"accname/name_test_case_558-manual.html": [
- "1e8136849dc177d72556c76c9d89ac5582efbc68",
+ "1d1ebf12d2ef73a01d581017d0feb20a4828413d",
"manual"
],
"accname/name_test_case_559-manual.html": [
@@ -399283,7 +402224,7 @@
"manual"
],
"accname/name_test_case_560-manual.html": [
- "8bdb7b3b0ec4c9ee72e29db04500a59a38850073",
+ "9f66ecbc9617ed12248a3037c508036d6c6eeddd",
"manual"
],
"accname/name_test_case_561-manual.html": [
@@ -399479,23 +402420,23 @@
"manual"
],
"accname/name_test_case_733-manual.html": [
- "20531ef7e48c757f07d25f8f7902c7f079ebec92",
+ "bd7e1d6b944646ad378873075991b5a16d56d3bf",
"manual"
],
"accname/name_test_case_734-manual.html": [
- "9d2598ba74be4a81e66f83cfc7bbfe84e705f46b",
+ "1fcb7f9ee490e63df4050eb2cae97c03a7a2021a",
"manual"
],
"accname/name_test_case_735-manual.html": [
- "132f73f40f7e2a7d906df53488cec5960cd91cf0",
+ "027854b92e9d8fddaac391e68f1f482ed0f32559",
"manual"
],
"accname/name_test_case_736-manual.html": [
- "091a489064a2ebdd831315a91c0c82dc9383392a",
+ "455089b41e48c2b4ee4a2d7c983f20ddb398fc02",
"manual"
],
"accname/name_test_case_737-manual.html": [
- "f991830430c445d70bdadcd018644fdaf30228ad",
+ "44fc37258df0cf8c343c37949778844c4b6e9367",
"manual"
],
"accname/name_test_case_738-manual.html": [
@@ -399626,6 +402567,10 @@
"ffb117851422ea6e86b7f8c2a225ef74d2bc271b",
"support"
],
+ "acid/OWNERS": [
+ "2f2ebade885163422acf865163165b3f4730566b",
+ "support"
+ ],
"acid/README.md": [
"76f4f73365670ecc3f97c560141a280a52b46807",
"support"
@@ -401843,11 +404788,11 @@
"testharness"
],
"background-fetch/interfaces.html": [
- "d95f416256134d8c4e50946c39668849c7f66298",
+ "dc48b3e0bff00fed4a0e846e35f2499d6579dcd8",
"testharness"
],
"background-fetch/interfaces.worker.js": [
- "b1c9c41179028dc432b3a1bb988df4b23b3105af",
+ "f1013d140f361226c81c24926548860d975ec3b2",
"testharness"
],
"background-fetch/mixed-content-and-allowed-schemes.https.window.js": [
@@ -402151,19 +405096,19 @@
"testharness"
],
"bluetooth/device/gattserverdisconnected-event/disconnected.https.html": [
- "ee14803683f17133c6147c2eaf250befbaaf0be1",
+ "709429f27f57c27319fd14bf419dca46e5f8cee8",
"testharness"
],
"bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html": [
- "6b4676f3b9b34ffa45ff616eb9d3c514e33ad471",
+ "4414277635ef6d8fb5fc941635e89587f3615436",
"testharness"
],
"bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html": [
- "a0fbabe94fe246c2031fe4baf30ba52b58a17b36",
+ "fbb48d3173b0a35aa517b4c2ffb649a5a9280870",
"testharness"
],
"bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html": [
- "a66e1df2d870876d06ad0990ea523153539eff0e",
+ "c0142db0ee3a784184fd78b5255054539ae8b880",
"testharness"
],
"bluetooth/generate.py": [
@@ -402174,12 +405119,12 @@
"b8749e25c58da9a903feb5edc84c2d6ed8ebda67",
"support"
],
- "bluetooth/idl/idl-Bluetooth.html": [
+ "bluetooth/idl/idl-Bluetooth.https.html": [
"9ef91a8214b3a46278d8b9b442b34d9052342342",
"testharness"
],
"bluetooth/idl/idl-BluetoothDevice.https.html": [
- "b4c78ec760b61420a82f4a1a2951fb2eaa6af10d",
+ "19d0c7b6e08ada8f3ed58921e662fe2d06ed55a4",
"testharness"
],
"bluetooth/idl/idl-BluetoothUUID.html": [
@@ -402199,7 +405144,7 @@
"testharness"
],
"bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html": [
- "c6e28d2c8509ea2f0e3633b2517ad68631119ffe",
+ "1e4a408d0497db72b1f1dc201f278ae7a701e0ab",
"testharness"
],
"bluetooth/requestDevice/acceptAllDevices/optional-services-present.https.html": [
@@ -402211,7 +405156,7 @@
"testharness"
],
"bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html": [
- "c3fbd786e7cf05f72eb0afadba8924c43f2fdc11",
+ "5e3c7ac81089d9a44d07812b43e2ed63e1d39f11",
"testharness"
],
"bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.html": [
@@ -402290,16 +405235,16 @@
"084ec334261ed7c584a0888ff3dfdec0f3538bad",
"testharness"
],
- "bluetooth/requestDevice/consumes-user-gesture.https.html": [
- "c76d7e37417a7db3043b761989eebbfded6e6804",
- "testharness"
- ],
"bluetooth/requestDevice/cross-origin-iframe.sub.https.html": [
- "dc9df7886d4a020b1853d7a54d67a8b1249c56c7",
+ "e5e22c1b7811699bb8bfd2b6593edf78a270a658",
"testharness"
],
"bluetooth/requestDevice/discovery-succeeds.https.html": [
- "da1be25f068cdb9602d6207b6af0170e232e68cd",
+ "0b75576a4742cc7496a890b273f2bb1c1f56017c",
+ "testharness"
+ ],
+ "bluetooth/requestDevice/doesnt-consume-user-gesture.https.html": [
+ "f7dfed31210d9e498648a3063313cb804a9a6879",
"testharness"
],
"bluetooth/requestDevice/filter-matches.https.html": [
@@ -402327,7 +405272,7 @@
"testharness"
],
"bluetooth/requestDevice/request-from-sandboxed-iframe.https.html": [
- "917a1be9111f04e67231c92921b1f856685deb55",
+ "fe1db81b730c5facaf45718e4536793f6c10f72a",
"testharness"
],
"bluetooth/requestDevice/same-device.https.html": [
@@ -402339,7 +405284,7 @@
"testharness"
],
"bluetooth/resources/bluetooth-helpers.js": [
- "9d2b233c511627f6a4fe93bdaf16ba28c4a6ead9",
+ "337417e818d3e722bf16643fc779850bc44c1e92",
"support"
],
"bluetooth/resources/health-thermometer-iframe.html": [
@@ -402367,7 +405312,7 @@
"support"
],
"bluetooth/script-tests/server/disconnect-called-before.js": [
- "3ea0ed09ee2197401437b4d89c335181b2983b17",
+ "e8c31819a1250ec08217766f4b8228aa195a2d97",
"support"
],
"bluetooth/script-tests/server/disconnect-called-during-error.js": [
@@ -402411,19 +405356,19 @@
"support"
],
"bluetooth/script-tests/server/invalid-service-name.js": [
- "0c2b3d759291d4e247df131f82daa2be847cb1d9",
+ "b7f6b5db7334b6467ec446fa5b0ea637306c8911",
"support"
],
"bluetooth/script-tests/server/no-permission-absent-service.js": [
- "78388409359e9e5bc36b304865e6e14d30769e12",
+ "8b0fb54dfffb7855923c51031969d0b5f9276918",
"support"
],
"bluetooth/script-tests/server/no-permission-for-any-service.js": [
- "f9230d7d66815561f575ba55409f2ca4fc0a67b8",
+ "81d9589206bbe46c784b415e3b250f9b05443e60",
"support"
],
"bluetooth/script-tests/server/no-permission-present-service.js": [
- "0f2e002be9842eb06f31f63de31c96fcd2820258",
+ "3200cee17040440cfe67a354c1fbc90fe537de81",
"support"
],
"bluetooth/script-tests/server/service-not-found.js": [
@@ -402491,7 +405436,7 @@
"testharness"
],
"bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html": [
- "d1f9a8a640ae96589e7406e6c296137a08c4ea01",
+ "f4d97a6bd746c3d127378ad9c692b542c114d4e7",
"testharness"
],
"bluetooth/server/getPrimaryService/gen-disconnect-called-during-error.https.html": [
@@ -402535,19 +405480,19 @@
"testharness"
],
"bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html": [
- "5728e27aba6861ddfc7cb4278b116ee9d94fbb7a",
+ "4886cfde2f041edb7445c170b1a6c1a61b37f075",
"testharness"
],
"bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html": [
- "ed7a5e4ab959f5d8b5e72154c68e397128c4d071",
+ "e40e8af7de38257160e5e4ef38f9c85667c5c274",
"testharness"
],
"bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html": [
- "86fab4a334c37e61ff9acbeafba071fd0aab5d30",
+ "1b87eb365022aec9c1f30fea557c996f232f6331",
"testharness"
],
"bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html": [
- "46717e75f676ff426773a79c4c01b2412b2c70ee",
+ "2ea2cff3588b10a387a182b31dac40dea52ab7b4",
"testharness"
],
"bluetooth/server/getPrimaryService/gen-service-not-found.https.html": [
@@ -402563,7 +405508,7 @@
"testharness"
],
"bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html": [
- "a58240662db7a01866c144e95d828cbeb6340a49",
+ "cb92cf7ba078851ccda73c6b069de825af05286b",
"testharness"
],
"bluetooth/server/getPrimaryServices/blocklisted-services.https.html": [
@@ -402575,11 +405520,11 @@
"testharness"
],
"bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html": [
- "ff1af939fa2b5b77523712a4281839349f00e43b",
+ "18aca22776caae36b47a58866f78a72ecc7f9f79",
"testharness"
],
"bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html": [
- "b579d5e4ea1762930d2831b082fa6d92810e59c3",
+ "c98a723569159c5a139fd74fac0672590106f258",
"testharness"
],
"bluetooth/server/getPrimaryServices/gen-disconnect-called-during-error-with-uuid.https.html": [
@@ -402655,23 +405600,23 @@
"testharness"
],
"bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html": [
- "878c93bcea918a0d008ab44552f7b26ff6f7a151",
+ "819b61b51d4f9ed60fdedcb3a719aa81c11d0d1b",
"testharness"
],
"bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html": [
- "f96b80beb4c79a2bda3cc06bc11d6aa5fb392ada",
+ "bec664d2805d7c98dccf83b93a6d49a145f06e19",
"testharness"
],
"bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html": [
- "96a195a1b25cf1985ccbc949431a28226f3ee684",
+ "4cda505124cfe20c8b8e3630774b4f734eea10fe",
"testharness"
],
"bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html": [
- "618cf409fffba7679abe515982695db4bb1a5f68",
+ "3a9ed522982b890296f926759954d463915818e9",
"testharness"
],
"bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html": [
- "3126e3b157670506442b0032de53e6d29e4c30f6",
+ "6148df8814a7f9bc7bbad6cb278cffded99bcb9d",
"testharness"
],
"bluetooth/server/getPrimaryServices/gen-service-not-found-with-uuid.https.html": [
@@ -402790,6 +405735,10 @@
"417d39a317f55a95180c806d28047c85dd959d65",
"testharness"
],
+ "budget-api/interfaces.any.js": [
+ "7532e03a56725728052d4b5a973630e2b86686da",
+ "testharness"
+ ],
"clear-site-data/navigation-insecure.html": [
"97c069cf7c938e1ebdba3f243ad48369a7fb5542",
"testharness"
@@ -402835,7 +405784,7 @@
"support"
],
"client-hints/accept_ch.sub.https.html": [
- "4e3f60751fbbc8f58bbf6fb7eadd1f334c9789ad",
+ "7d5a8d7d6ffb78f99d17fc0c41abf26718c6b6b0",
"testharness"
],
"client-hints/accept_ch.sub.https.html.headers": [
@@ -402843,7 +405792,7 @@
"support"
],
"client-hints/echo_client_hints_received.py": [
- "3d3b57376cbacbd2118fe4fe07abad5bd9ad95fd",
+ "a6cf24dc7d02b044a27813f50737bb3aff4af8bf",
"support"
],
"clipboard-apis/OWNERS": [
@@ -402851,7 +405800,7 @@
"support"
],
"clipboard-apis/async-interfaces.https.html": [
- "f0b8b999ac1a99d956fcfdd3ee52b4875d453974",
+ "ffc8726b7afa6dc3e58745bd0dac525a570970ef",
"testharness"
],
"clipboard-apis/async-navigator-clipboard-basics.https.html": [
@@ -403086,10 +406035,22 @@
"2d71e7532fc32af61d2410927b6405a9e79279a4",
"testharness"
],
+ "compat/interfaces.any.js": [
+ "b96341f909d00d6d1f3ee244f174dbe576bc0780",
+ "testharness"
+ ],
"compat/webkit-appearance.tentative.html": [
"19f5d49ab9383759357d9b7cd73f15fe7fff2939",
"testharness"
],
+ "compat/webkit-background-origin-text-ref.html": [
+ "35b0175a64f38fb1e3723f7f634c18d7974a131f",
+ "support"
+ ],
+ "compat/webkit-background-origin-text.html": [
+ "56118dcce579c8a326d2cbe3690d0704d16f75f6",
+ "reftest"
+ ],
"compat/webkit-linear-gradient-line-bottom.html": [
"af59a0aa3b8a195ba7ef401b582be9384a23a388",
"reftest"
@@ -420730,12 +423691,12 @@
"9ad845184a6dd40b1ab64992ca514dbf4736c930",
"testharness"
],
- "console/console-time-label-conversion.any.js": [
- "5e2ca9e9dca88c6de32408b461f3f4c54c586031",
+ "console/console-tests-historical.any.js": [
+ "ee18f8a672534b478ca15990026638a73588fcf4",
"testharness"
],
- "console/console-timeline-timelineEnd-historical.any.js": [
- "ca938829b5946f26348e237379a4f3e9ec945e40",
+ "console/console-time-label-conversion.any.js": [
+ "5e2ca9e9dca88c6de32408b461f3f4c54c586031",
"testharness"
],
"content-security-policy/OWNERS": [
@@ -421007,7 +423968,7 @@
"support"
],
"content-security-policy/embedded-enforcement/support/testharness-helper.sub.js": [
- "23feae559098474ba96b15f07619b9d7dba12dec",
+ "009dfb8482f20ce57121406d675fa83315cbd2d6",
"support"
],
"content-security-policy/font-src/font-match-allowed.sub.html": [
@@ -421179,7 +424140,7 @@
"testharness"
],
"content-security-policy/frame-ancestors/frame-ancestors-overrides-xfo.html": [
- "53ecb1ec56471ef236ca760437f16ed758c539f8",
+ "988cf59388b862631a33dfab0565c937e9515763",
"testharness"
],
"content-security-policy/frame-ancestors/frame-ancestors-self-allow.html": [
@@ -421551,7 +424512,7 @@
"support"
],
"content-security-policy/navigate-to/child-navigates-parent-allowed.html": [
- "bacb9cd495aa4309349a4f80b3f886ee94542027",
+ "54f517e54260d444bce9866204172e6272c8f284",
"testharness"
],
"content-security-policy/navigate-to/child-navigates-parent-allowed.html.headers": [
@@ -421559,7 +424520,7 @@
"support"
],
"content-security-policy/navigate-to/child-navigates-parent-blocked.html": [
- "fceb74d2ed4e5279da6455bff9abafb00c4f97cb",
+ "1e35f9b195940f9134d53849de6fafef370f0744",
"testharness"
],
"content-security-policy/navigate-to/child-navigates-parent-blocked.html.headers": [
@@ -421631,27 +424592,27 @@
"testharness"
],
"content-security-policy/navigate-to/link-click-allowed.html": [
- "a4200a991a2e6d93ccf9f6dfedcaa5e5d75ead9e",
+ "133c29674edc3a53e5bc65f5f2e8b72a8ccc7bdf",
"testharness"
],
"content-security-policy/navigate-to/link-click-blocked.html": [
- "04fafa60b6934d119997c37058605007cc8f2632",
+ "14861dffd89d889059d30f54a698ecff60a6c950",
"testharness"
],
"content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html": [
- "b1805390dada0f11c4dc45adf647133237934c45",
+ "55f36a1c3965f6acdc93fa23dba543608d9912d2",
"testharness"
],
"content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html": [
- "1f1def5a103caf71d8cd5ddc870f3050d98ec9f2",
+ "7247d779fa3729a9118859dd41e94aae7505afbd",
"testharness"
],
"content-security-policy/navigate-to/link-click-redirected-allowed.html": [
- "d89312685c3022438a2e55a025d330bb73eeedc0",
+ "f8a0f0646b5493be62ffeb541edbb039c1321d06",
"testharness"
],
"content-security-policy/navigate-to/link-click-redirected-blocked.sub.html": [
- "0b0c2c02fde1ea8aad7c25db210ea5fdd6f391e5",
+ "46ac39a0a5eb10fbb18ac6b19a087c81b66427f6",
"testharness"
],
"content-security-policy/navigate-to/meta-refresh-allowed.html": [
@@ -421851,7 +424812,7 @@
"testharness"
],
"content-security-policy/prefetch-src/prefetch-allowed.html": [
- "8c88fefbffb6f5270b64cd8d81b405857a9c1123",
+ "45e002cde6f0e61cfc4876fad6d5af7341fec346",
"testharness"
],
"content-security-policy/prefetch-src/prefetch-blocked.html": [
@@ -422511,7 +425472,7 @@
"testharness"
],
"content-security-policy/securitypolicyviolation/idl.html": [
- "fb8f2938d76a29cc68c46fb49a12feebc0031e54",
+ "266180135d8167bc47d6c7a73798e87aa1082bee",
"testharness"
],
"content-security-policy/securitypolicyviolation/img-src-redirect-upgrade-reporting.https.html": [
@@ -422802,6 +425763,10 @@
"13c3f17f61fa30ac6d7c5c54bd73a6f93d1611c1",
"support"
],
+ "content-security-policy/support/file-prefetch-allowed.html": [
+ "13e9e4ef7ad82d1f9404381a3eeb2a00c319b52a",
+ "support"
+ ],
"content-security-policy/support/fonts.css": [
"4577fb4f580bfd9c723e1a5ee0f9d8438ce41ac9",
"support"
@@ -423162,8 +426127,16 @@
"27019d0e79b6754715a292f40e064de53daaf5e8",
"testharness"
],
+ "cookie-store/cookieStore_set_expires_option.tentative.window.js": [
+ "1eb72c6868686177a34fdb69158d184f096887b5",
+ "testharness"
+ ],
"cookie-store/cookieStore_special_names.tentative.html": [
- "d1cfe7619cc915b17dbf4d358363b16ec8ba9666",
+ "f839e2825dd18a6f54639fc2b7d4a18ce9906b25",
+ "testharness"
+ ],
+ "cookie-store/cookieStore_special_names.tentative.https.html": [
+ "4d53aaecbf9fea2865ca6492bc69b2ec3a47af79",
"testharness"
],
"cookie-store/delete_cookies.tentative.html": [
@@ -423186,14 +426159,6 @@
"179f3ffe69715f9767ec2d2ef661c429fef52bc6",
"testharness"
],
- "cookie-store/expiration.tentative.html": [
- "a4e8764c12e39068a4008ad0f12c982540565dbf",
- "testharness"
- ],
- "cookie-store/expiration.tentative.https.html": [
- "fff43dd4b66455e493c06d2a1e98333e8e9b2437",
- "testharness"
- ],
"cookie-store/get_set_get_all.tentative.html": [
"89c72f73d511ab3510653baebb7c77aab6441f35",
"testharness"
@@ -423211,7 +426176,7 @@
"testharness"
],
"cookie-store/idlharness.tentative.html": [
- "8654087597cc0c11b880b0144897dab26691d12a",
+ "2a588a0b80a3cee80af52b9109770fe8ec17becd",
"testharness"
],
"cookie-store/idlharness_serviceworker.js": [
@@ -423246,14 +426211,6 @@
"aa3ed15714a1ed2b7cac4ba2fc7998d9792b7339",
"testharness"
],
- "cookie-store/one_simple_origin_cookie.tentative.html": [
- "1ba5278aa3725c8e27bb486388b5456045f735a0",
- "testharness"
- ],
- "cookie-store/one_simple_origin_cookie.tentative.https.html": [
- "e86d324bf8a771b7f7deb6c4e2e64da088baef69",
- "testharness"
- ],
"cookie-store/ordering.tentative.https.html": [
"e40eb0cdca00826731e9242682105b76baea9a03",
"testharness"
@@ -423274,10 +426231,6 @@
"b34ad56a2afd7f52c52dd0777b15eac2d77c4856",
"support"
],
- "cookie-store/resources/expiration.js": [
- "483b923b03a0a0787b73118fd3f3b9f5d269f5ae",
- "support"
- ],
"cookie-store/resources/get_set_get_all.js": [
"235f22721a73a617d0b14068c8e639e93232526a",
"support"
@@ -423291,33 +426244,17 @@
"support"
],
"cookie-store/resources/no_name_equals_in_value.js": [
- "37b510261b203717fccaf6917c38ea3d0f24151f",
+ "8a5b87568d36dde7093b1bc6aae02ffe556887ca",
"support"
],
"cookie-store/resources/no_name_multiple_values.js": [
"028a1c2e9b82299eef5f383886f2a1cb008c65ee",
"support"
],
- "cookie-store/resources/one_simple_origin_cookie.js": [
- "c5a3cc58200f8c160e50a0ca03a5d763dd96c635",
- "support"
- ],
"cookie-store/resources/ordering.js": [
"822567b7eb113c809379dff5b62a2e24c9e9e171",
"support"
],
- "cookie-store/resources/secure_cookies.js": [
- "c4ddb9a024d0fc0d370891e587ed8aba54c5709e",
- "support"
- ],
- "cookie-store/secure_cookies.tentative.html": [
- "0d0b2324cbf5439491ea9f8fddd4ef7ca4b8eed6",
- "testharness"
- ],
- "cookie-store/secure_cookies.tentative.https.html": [
- "bcfbbd7ae2e9ae85deefbf284f6cf76901975a93",
- "testharness"
- ],
"cookie-store/serviceworker_cookieStore_arguments.js": [
"a90956237d63fd51556f2d9e50967522870816d4",
"support"
@@ -441555,7 +444492,7 @@
"reftest"
],
"css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html": [
- "d4b2bf3b4b6761c9531859e6cedb9d08a928880f",
+ "b2f18a06134a432553d90928491d09053aee8534",
"reftest"
],
"css/CSS2/floats-clear/clear-on-parent-with-margins.html": [
@@ -483167,11 +486104,11 @@
"testharness"
],
"css/css-align/content-distribution/place-content-shorthand-001.html": [
- "1f79fe2f2d0fc474c4a9376dde022042d5ff935c",
+ "b1f99c949cd51604af6a287b4d2d46c051ff82b5",
"testharness"
],
"css/css-align/content-distribution/place-content-shorthand-002.html": [
- "f5f4f2279506dc6106de38080a639979ad7e05d0",
+ "3dbb97d21b837b8b439f8e6735f230b6e1674074",
"testharness"
],
"css/css-align/content-distribution/place-content-shorthand-003.html": [
@@ -483179,7 +486116,7 @@
"testharness"
],
"css/css-align/content-distribution/place-content-shorthand-004.html": [
- "17c135945710d209b2e410d36867f6244ac358a0",
+ "52566e7e88edf9f57f441498b9d366b66be50fd7",
"testharness"
],
"css/css-align/content-distribution/place-content-shorthand-005.html": [
@@ -483223,7 +486160,7 @@
"testharness"
],
"css/css-align/default-alignment/parse-justify-items-001.html": [
- "a60f7ed4a16ad9e6c12c8004b90bb1f88083af31",
+ "ca23cdc9299743545f24b4a0ba0240adb3c1e3cf",
"testharness"
],
"css/css-align/default-alignment/parse-justify-items-002.html": [
@@ -483231,7 +486168,7 @@
"testharness"
],
"css/css-align/default-alignment/parse-justify-items-003.html": [
- "3a66f7c4d618f0ea0ff112ac7dce8e5d6257084a",
+ "4d8157db890641020846e85f71e2bcb0881495dc",
"testharness"
],
"css/css-align/default-alignment/parse-justify-items-004.html": [
@@ -483247,11 +486184,11 @@
"testharness"
],
"css/css-align/default-alignment/place-items-shorthand-001.html": [
- "d3905233affe9d6e138ef96d0f025fc23585fc44",
+ "ecd583fda7e26909255ed5cd73821cfcb54c66c6",
"testharness"
],
"css/css-align/default-alignment/place-items-shorthand-002.html": [
- "a087659c5fa60012fa11b685701b64a14fdda4ea",
+ "484b1c499a9717a697e0897f7948698f01cdc8c7",
"testharness"
],
"css/css-align/default-alignment/place-items-shorthand-003.html": [
@@ -483259,7 +486196,7 @@
"testharness"
],
"css/css-align/default-alignment/place-items-shorthand-004.html": [
- "51b0eff81deca9f5e056f5db1d49f3e9be80435b",
+ "3e5bc4f510eb66f38be839120ae521111f269c3a",
"testharness"
],
"css/css-align/default-alignment/place-items-shorthand-005.html": [
@@ -483270,6 +486207,10 @@
"b7106d0ee863673c0d9a6160d035706edb3c67a8",
"testharness"
],
+ "css/css-align/default-alignment/shorthand-serialization-001.html": [
+ "6ac628c6278f7ae552c4a2a824dcd6ac52a10cc4",
+ "testharness"
+ ],
"css/css-align/distribution-values/space-evenly-001.html": [
"6fd28a5bf615ce822ed935de90ce5c1a41d39104",
"reftest"
@@ -483355,7 +486296,7 @@
"support"
],
"css/css-align/resources/alignment-parsing-utils.js": [
- "8dcde745c0e5b0832ff748c117bbbf1af3d6a829",
+ "781efd5fa00a82130094ec1787efab98f12a0c25",
"support"
],
"css/css-align/self-alignment/parse-align-self-001.html": [
@@ -483399,11 +486340,11 @@
"testharness"
],
"css/css-align/self-alignment/place-self-shorthand-001.html": [
- "54de5a9e58b94bce85c58f25ffeee754acd32f36",
+ "5ece107d00775914dcad23063d5cd90aa95891bb",
"testharness"
],
"css/css-align/self-alignment/place-self-shorthand-002.html": [
- "a266e09207859b058f445acb7c472156e525dd21",
+ "a0e2d3394d980eaa9cf886283c030d143ee06236",
"testharness"
],
"css/css-align/self-alignment/place-self-shorthand-003.html": [
@@ -483411,7 +486352,7 @@
"testharness"
],
"css/css-align/self-alignment/place-self-shorthand-004.html": [
- "4f153c62e5d1eecf9eb4678036123d0460d7ecf1",
+ "7971bcc593d4fd136e743a78aa2330496ec5de73",
"testharness"
],
"css/css-align/self-alignment/place-self-shorthand-005.html": [
@@ -486310,9 +489251,9 @@
"1e710427338cc278a36ee18861c1e5dd0bf1eaea",
"reftest"
],
- "css/css-backgrounds/box-shadow-syntax-001.xht": [
- "e5d83b2b030e91a11ff61a817edcf3cd18411851",
- "reftest"
+ "css/css-backgrounds/box-shadow-syntax-001.html": [
+ "90c15e29e3675b2dada46ea9d9d940fcb37c5b79",
+ "testharness"
],
"css/css-backgrounds/box-shadow/box-shadow-blur-definition-001.xht": [
"dd9faf27381c80ab0b5a8f5a706e4ede4a1352e8",
@@ -486371,11 +489312,11 @@
"reftest"
],
"css/css-backgrounds/css3-background-origin-padding-box.html": [
- "ac859dfb47379cca21e83b196db3224cef3cde9f",
+ "96e3a35dff509a2409b7b802c770d38a338c7a39",
"reftest"
],
"css/css-backgrounds/css3-background-size-001.html": [
- "a11a88981efe0379dc0158adff4e0cc98909a17c",
+ "0b5430700b89540f9ca5d6989ea82d5e286c1d74",
"reftest"
],
"css/css-backgrounds/css3-background-size-contain.html": [
@@ -486418,6 +489359,178 @@
"4c59462c60dc556562c8acf71c77266993003cbd",
"visual"
],
+ "css/css-backgrounds/parsing/background-attachment-invalid.html": [
+ "f3479c12b4c3fb596877e06a1055d0790f2d916d",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-attachment-valid.html": [
+ "96c140513e4e6dfd99a69ebea422b19eda9f98a5",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-clip-invalid.html": [
+ "c3f8bc72eccd2321acdc8253d15c4a3324d0cf87",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-clip-valid.html": [
+ "24f905fce13d982a0c1337ba55d557b6cad777ca",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-color-invalid.html": [
+ "ca5f8bc490fe1cdb83df34304e26e100a3c10bfb",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-color-valid.html": [
+ "cb9f0f31a7e4bc9f4b23c7e6240e377b05b14154",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-image-invalid.html": [
+ "a5e459fe22426cb6dccbc91f67b649806967e47a",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-image-valid.html": [
+ "f251b9f16bece823fe92ef4952f8e7da46a7a41d",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-invalid.html": [
+ "88412ff025301663a689a806f35ac4cdbbb7fe24",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-origin-invalid.html": [
+ "8337afbb2ac2ab37caa57d97a85f3d278c8a65ad",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-origin-valid.html": [
+ "0144aef6f80d1594665300244338af3a6740a4f0",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-position-invalid.html": [
+ "4153736473996f62128d73591516718bb649510d",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-position-valid.html": [
+ "6df1aeb1091a51952aafc8f9e48deed5e7a483c3",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-repeat-invalid.html": [
+ "4f3b85fde314433c80d2b6c5d6f6906fa4cdc208",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-repeat-valid.html": [
+ "77d68bd03014d3f1898d1a05ed371a68f071ce3d",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-size-invalid.html": [
+ "b7389e94e0d05c8799b27fbf1ac5a4480e184c15",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-size-valid.html": [
+ "ee41ea05c486306e2aac58e6a9dfadd3497bc230",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/background-valid.html": [
+ "f382689c8f1d86cccadaab9f80d0ecd41e21757d",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-color-invalid.html": [
+ "f7440a1fc56d993b54d900263876bf5760ed73af",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-color-valid.html": [
+ "a8df09796083692c802b5a48bd7761f474f14ef5",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-invalid.html": [
+ "0d54df14c6d198fa6c7110b387a57ff1386a2d3f",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-outset-invalid.html": [
+ "722a5b88b693db18cb6d20433d44641b41eb6695",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-outset-valid.html": [
+ "d80773f48312a0ff60a6a490b8e9158f3f72b114",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-repeat-invalid.html": [
+ "fb3440ba2b0ec3c0ed202cb40fa20aa5d0a8f044",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-repeat-valid.html": [
+ "405c18cf0407ac680cd0102348089a72c884fbe2",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-slice-invalid.html": [
+ "ef665af3a5630c712144870cb2560569b0d75cf3",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-slice-valid.html": [
+ "d9adf2b34e093fb1fcdff71cc9be6c549cdf0551",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-source-invalid.html": [
+ "a9bf80e5e2c518d27cc410f045c56dd803c2d548",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-source-valid.html": [
+ "4dfd11f340a5c624ebdbdf991d1064f256440620",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-valid.html": [
+ "dcd67e89a4a80500122902ac42718d88995d62d7",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-width-invalid.html": [
+ "920cca15379699b52c6bf98358275e9ad861c60b",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-image-width-valid.html": [
+ "03d01fa1b4210afdb925a7557a7dcb565c8fae1b",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-invalid.html": [
+ "7d440d3407b30ceeadd86ff988ceed0fc15a16cd",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-radius-invalid.html": [
+ "6f4acda31231fe132b0c34170f325113ab2cdb57",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-radius-valid.html": [
+ "2a0b1292725876317c83cbe17550c7f3f37b02e8",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-style-invalid.html": [
+ "439ff8f51e6049a23dc2176c0f2ea539ccdd7e69",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-style-valid.html": [
+ "34986ad639f32cc55b606726f184341dfd101f73",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-valid.html": [
+ "446db991ee8f51268ce5762a656680163e351a67",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-width-invalid.html": [
+ "44d2cadf99230b809e0924329696bf07d3679850",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/border-width-valid.html": [
+ "fc062b103669d1e10fcf88aa5ba82c50d341e66d",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/box-shadow-invalid.html": [
+ "7488f7843c2c85f377682810631b6d3a0ff64b54",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/box-shadow-valid.html": [
+ "67fe66d643369d20f1f30d04d6ae0306be4be80b",
+ "testharness"
+ ],
+ "css/css-backgrounds/parsing/resources/parsing-testcommon.js": [
+ "b5cc6f7c0c7729328bbbc45ec2a8147dae8d8668",
+ "support"
+ ],
"css/css-backgrounds/reference/60x60-green-background.html": [
"edd089b01a18e6884de3a6b20d9a8e6931c8fd63",
"support"
@@ -486562,10 +489675,6 @@
"c372b6c821f526e614c72f8ac2d172f6a238a5f0",
"support"
],
- "css/css-backgrounds/reference/box-shadow-syntax-001.xht": [
- "9e7f09a041ab438ced1d4f3b1b656cce19eaf2e4",
- "support"
- ],
"css/css-backgrounds/reference/css-border-radius-ref-001.html": [
"e2d07f229d4ad8f1734a09305950ca03582729a0",
"support"
@@ -486654,6 +489763,10 @@
"121d1dcc21d4fb64b984bf54456bbe40d10f5dd9",
"support"
],
+ "css/css-backgrounds/resources/parsing-testcommon.js": [
+ "b5cc6f7c0c7729328bbbc45ec2a8147dae8d8668",
+ "support"
+ ],
"css/css-backgrounds/scroll-positioned-multiple-background-images.html": [
"2fafa8d282711ae7b4a996ca5fe0fd9079c350c6",
"reftest"
@@ -488018,6 +491131,10 @@
"c805d45e2361bd67ebf1ca0605807d7384b09a7d",
"testharness"
],
+ "css/css-contain/OWNERS": [
+ "119f04385b8f8cc78366523870ed199d3e4f427e",
+ "support"
+ ],
"css/css-contain/contain-style-counters-ref.html": [
"295abc8d8c2490f3ff16566e49e9c77bf125461f",
"support"
@@ -488026,6 +491143,14 @@
"056b3597f3555c803c74a8f6277a06626efd12ea",
"reftest"
],
+ "css/css-content/attr-case-insensitive-ref.html": [
+ "30577fc39afb6ac028e25be11f363e060c0850b2",
+ "support"
+ ],
+ "css/css-content/attr-case-insensitive.html": [
+ "6b6cf2c15295940fb8831d17209635dc4e31cd78",
+ "reftest"
+ ],
"css/css-content/element-replacement-ref.html": [
"f1ad3fca133b1b671e45ae1307fbe9454c40e3ec",
"support"
@@ -488734,6 +491859,14 @@
"bf523ee19c5ff481a3f91f8eb124eb83301738c5",
"testharness"
],
+ "css/css-display/display-contents-details-001-ref.html": [
+ "e0007ee36bb388a8ca7bfb9845a77fec8503197e",
+ "support"
+ ],
+ "css/css-display/display-contents-details-001.html": [
+ "7eb2da8b522cddb5f66f9957fa113dabfbfa84af",
+ "reftest"
+ ],
"css/css-display/display-contents-details.html": [
"d1f62084c5adc3ba7a86306704f804d4cbe0428c",
"reftest"
@@ -488946,6 +492079,14 @@
"0a689fbe90be794772c66d59b033d15336e6dfe3",
"reftest"
],
+ "css/css-display/display-contents-suppression-dynamic-001-ref.html": [
+ "ec636e00c73939e04d5bc8be6f9963a32c970c7c",
+ "support"
+ ],
+ "css/css-display/display-contents-suppression-dynamic-001.html": [
+ "fa1406cc302f6763ef6a85913d5f26470797c677",
+ "reftest"
+ ],
"css/css-display/display-contents-svg-anchor-child.html": [
"1debf3811cad0a1ef22a06744c9906cf96c2d990",
"testharness"
@@ -492271,7 +495412,7 @@
"testharness"
],
"css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html": [
- "35e80571b466457a17e340224b07b326fad24d21",
+ "5a58afbc37389283f974e5c59509b6616d3005de",
"testharness"
],
"css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-stretch.html": [
@@ -492295,7 +495436,7 @@
"testharness"
],
"css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html": [
- "59886b47d780f67e63cd5718daf48c5b53cd71fd",
+ "dc6b4357a4b13c57fab7198e97414454c13824cb",
"testharness"
],
"css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-stretch.html": [
@@ -493098,6 +496239,10 @@
"d70cb1447c942c9f66f6503b6c769b2db188b5dc",
"reftest"
],
+ "css/css-flexbox/table-as-item-change-cell.html": [
+ "4acd7c336e8ded76d84f5320b17f991382712caa",
+ "reftest"
+ ],
"css/css-flexbox/table-as-item-narrow-content.html": [
"ccee1a24278c3177809a09009c2f15973908fa83",
"reftest"
@@ -493683,7 +496828,7 @@
"support"
],
"css/css-fonts/font-variant-05.xht": [
- "b83b63950f36fcfff48b395a6bfe97d7b600f5ce",
+ "fee9c5cac5d976d2e92e7dd05f15b1d275260dc8",
"reftest"
],
"css/css-fonts/font-variant-06-ref.xht": [
@@ -493691,7 +496836,7 @@
"support"
],
"css/css-fonts/font-variant-06.xht": [
- "2452e37602f11bfb2711e371206588d9dfd403ac",
+ "8806f2b09635860dd7908758002385ea4d6db070",
"reftest"
],
"css/css-fonts/font-variant-alternates-01-ref.html": [
@@ -493910,6 +497055,14 @@
"6bfe93950a49b850166ff0ec2a05cd7da0644c0d",
"support"
],
+ "css/css-fonts/font-variant-descriptor-01-ref.html": [
+ "34cf574e1487330578060a83394bef776ceee7a4",
+ "support"
+ ],
+ "css/css-fonts/font-variant-descriptor-01.html": [
+ "283cff53934f570387e025af366147b18fe6ad09",
+ "reftest"
+ ],
"css/css-fonts/font-variant-east-asian-01-ref.html": [
"66f107ee9d92c8b669b522c17db93c2c22d266f5",
"support"
@@ -500382,10 +503535,226 @@
"055e3c8b6452650f598c25cdc22201ff2b2171b6",
"support"
],
+ "css/css-fonts/variations/at-font-face-descriptors.html": [
+ "3d0373ab9db1641f5a6f91066b7ff1237674ffa8",
+ "testharness"
+ ],
+ "css/css-fonts/variations/at-font-face-font-matching.html": [
+ "1cde22de011c102163c14a44ac686e97e075b934",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-opentype-collections.html": [
+ "6ef4e5f8931764e1609a7e2c0ccde63092d7c4fc",
+ "testharness"
+ ],
"css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html": [
- "b9aa593e5fcba0d7af8f66446d473608a7025f1c",
+ "1e116cfb42e4e52fd714ec07c5bce6b9d5dceeda",
"testharness"
],
+ "css/css-fonts/variations/font-shorthand.html": [
+ "683248c8b0e361e82d59df2ba3b94b4d9ee20479",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-stretch.html": [
+ "b6d7409267cba17569ddd1caa654f3ab515e85eb",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-style-interpolation.html": [
+ "97f4993c16ac98cf7322b033b75f795d2e1839e0",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-style-parsing.html": [
+ "9a54da41382b9ff65c59151f715d1dd601031d8c",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-variation-settings-inherit.html": [
+ "ec4b475a9bd04601161398ae21207967881a8f28",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-variation-settings-parsing.html": [
+ "0b43e98e0151065bc60d82fd6f00ae0fbeb966d5",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-weight-interpolation.html": [
+ "7835bf1d586129db05d17d126e68345bcd6166bf",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-weight-lighter-bolder.html": [
+ "9a6663c0141e047b0cc91eb819f2a02ab4a4c0dd",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-weight-matching-installed-fonts.html": [
+ "f0362338e6a16a1c3cd2823f2da30651ba63b567",
+ "manual"
+ ],
+ "css/css-fonts/variations/font-weight-matching.html": [
+ "3e40c3f6d48096cbebe2a5c5becc627b17ed35a2",
+ "testharness"
+ ],
+ "css/css-fonts/variations/font-weight-parsing.html": [
+ "3cf6476257a47f8518ad19079cab4923598dc7da",
+ "testharness"
+ ],
+ "css/css-fonts/variations/resources/ahem.ttc": [
+ "080a0ba9f29b221d575d23eed0e7f85ad9d402ef",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-100-kerned.ttf": [
+ "64d1f19e0a06e4c551f264e3da227a024c52e5cb",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-1479-w1-kerned.ttf": [
+ "ee72ac72646cd206fcbe93a6e5e2a45f8c31048b",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-1479-w4-kerned.ttf": [
+ "44fba35aab365b00ccd3952719536166e137ce4e",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-1479-w7-kerned.ttf": [
+ "64684053eb378f92517c8d071a16dc358a1b4242",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-1479-w9-kerned.ttf": [
+ "d7e941da8b2758ff597f7b11ea7502a6243bd1e3",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-15-w1-kerned.ttf": [
+ "0637c02df7d46b22873ee5aafcf98d45ce30a182",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-15-w5-kerned.ttf": [
+ "d65e63ecb057c2d5ba5c3424bcb681e4112c8ac0",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-200-kerned.ttf": [
+ "3448d5137039730c16b5145118b1208ae22055b8",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-24-w2-kerned.ttf": [
+ "c1c6ceb90bf49199e9c75f6d924bf901edab3ed7",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-24-w4-kerned.ttf": [
+ "b8f56619215cea44d7ba6914cdb8623d132cfbad",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-2569-w2-kerned.ttf": [
+ "d208de59a5218d05a622152f0e0996b7b17942a6",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-2569-w5-kerned.ttf": [
+ "d951aead92d6d30a7696d6bd7ad86b25d58d4d69",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-2569-w6-kerned.ttf": [
+ "56b5fd539a6832cff8e87ede865e8eaa4262d354",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-2569-w9-kerned.ttf": [
+ "6fb1c681c5552fea6c12cc630770375bfe489743",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-258-w2-kerned.ttf": [
+ "0947c099e66b976cd5acf07cf9ca73eecd5e0482",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-258-w5-kerned.ttf": [
+ "e8f82b981b7e4bddfcb5790c2a168423db3e9a81",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-258-w8-kerned.ttf": [
+ "104c1dae09da5756fe61e40b57390cbddeda5555",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-300-kerned.ttf": [
+ "3176467afb4ed5d3704752672893e5e5eec673d3",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-3589-w3-kerned.ttf": [
+ "30bf39aad7eb0cfdad51ac2f12085a896c04a576",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-3589-w5-kerned.ttf": [
+ "50a60953aeac39949393760e0ccab2fcff9b73a4",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-3589-w8-kerned.ttf": [
+ "dd84c31655f10ae362d4981b5a8163d1f7752267",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-3589-w9-kerned.ttf": [
+ "0456a1d3533bf0a94f4183a5c06c6e18b87b119d",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-400-kerned.ttf": [
+ "4d0050eadf19b0cfd709c61ed7c38ab5f393a253",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-47-w4-kerned.ttf": [
+ "fd7865a2a068ff58351bff131af0c669c3e96be2",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-47-w7-kerned.ttf": [
+ "b7e28e755a98b8c14fcb528df3b09b1796138b33",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-500-kerned.ttf": [
+ "5640d9e85a628dd79bb9e3f0aeded45d2653f454",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-600-kerned.ttf": [
+ "52e1c3a8f8c900bad597323807f7ab8669fcb130",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-700-kerned.ttf": [
+ "a0833d01de5a63ec2aa42bbf35c9db977840fe25",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-800-kerned.ttf": [
+ "ffeb4d186925e9538707719e8374d217e1030943",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-900-kerned.ttf": [
+ "9f327e6d223dbedd13b4034a639fb627b0635e97",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w1-kerned.ttf": [
+ "977803476691588d8dc66546f9c33f3b095ee6a4",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w2-kerned.ttf": [
+ "fc52e60f7266a00687e5a24d9b7f016aeb796ab1",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w3-kerned.ttf": [
+ "0cd77603965e8e9bfe04d7ae8df6efd5e7c12076",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w4-kerned.ttf": [
+ "ec3e6ee5b6a1a2ca155fe4193b11fbf23f002f6f",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w5-kerned.ttf": [
+ "78e96ed0aaa8d8569844a10c0e0d3309bfbc7c85",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w6-kerned.ttf": [
+ "49bfa30ed62e4467b4be5ca81ff6203c0863a050",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w7-kerned.ttf": [
+ "5ec9845bc84e9398fbeba64b0f5ba2dd655136fa",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w8-kerned.ttf": [
+ "d4718494bbcb5f92f218e416c2b7053d43ee0a73",
+ "support"
+ ],
+ "css/css-fonts/variations/resources/csstest-weights-full-w9-kerned.ttf": [
+ "bc5d00d8de2ad1c882ec62c7b9001ba47ae0c807",
+ "support"
+ ],
"css/css-fonts/variations/resources/variabletest_box.ttf": [
"2fc122ff444d3ddef1f29ebde9a87827244ceeb0",
"support"
@@ -503050,6 +506419,10 @@
"1d7de325448b3132ec04b8788665829ff5d1fb02",
"support"
],
+ "css/css-layout-api/crash-multicol.https.html": [
+ "efe476654107b6d01db2b75c2faeaa268d49efdc",
+ "testharness"
+ ],
"css/css-layout-api/fallback-constructor-error.https.html": [
"fdb9954e12f4628c114499a5e69f257b60377617",
"reftest"
@@ -504110,6 +507483,10 @@
"435614e6d5dcdbd8325687f70014bea0e3dea5f7",
"reftest"
],
+ "css/css-multicol/going-out-of-flow-after-spanner.html": [
+ "d76366e15dd552c4c013c98e2de70ce6b38f0202",
+ "testharness"
+ ],
"css/css-multicol/multicol-basic-001.html": [
"7cb568d75ea3fec9046ec69770fe59b8539beb02",
"reftest"
@@ -504463,7 +507840,7 @@
"support"
],
"css/css-multicol/multicol-gap-001.xht": [
- "df60ea8599762b30a4b2c8e9d1e8164e5275a8fa",
+ "3d38feef824413b93cf65b2955044b1929390138",
"reftest"
],
"css/css-multicol/multicol-gap-002-ref.xht": [
@@ -504475,7 +507852,7 @@
"reftest"
],
"css/css-multicol/multicol-gap-003.xht": [
- "16067366a3c1922e9c8415b21e513edd47c2305f",
+ "2cca63f39c97fd2f4de46bc0f892f07ad12b91ef",
"reftest"
],
"css/css-multicol/multicol-gap-animation-001.html": [
@@ -505246,6 +508623,14 @@
"078e1dd6dd61d36cec239ed75d02051f61fe60a5",
"support"
],
+ "css/css-multicol/zero-column-width-computed-style.html": [
+ "4128e1f5451a0e68d9a51eb23a7e8c3f409cbd80",
+ "testharness"
+ ],
+ "css/css-multicol/zero-column-width-layout.html": [
+ "15842618bf084ccc9aa5025ffd28ec978017f140",
+ "reftest"
+ ],
"css/css-namespaces/OWNERS": [
"2800c1b3fc3e3cc24ed318c374dd3ad0c312234a",
"support"
@@ -505414,12 +508799,16 @@
"2fe3c96c09faaa25baa2d7e88215a2ccd47e9381",
"testharness"
],
+ "css/css-overflow/overflow-shorthand-001.html": [
+ "a32d1b270f62b9d563ed397c2c4cd6e87b9405e1",
+ "testharness"
+ ],
"css/css-overflow/reference/input-scrollable-region-001-ref.html": [
"31e24bb1a2cb6f42703cc05e055fcb345c770a22",
"support"
],
"css/css-page/OWNERS": [
- "d4ee6029cc9c064e0e8b2c76becf3b59c4f7b62b",
+ "e688a08e2ffe39d459e470d3fed7c12654b39fd9",
"support"
],
"css/css-page/forced-page-breaks-002.xht": [
@@ -508654,10 +512043,46 @@
"69774c51e6df49c891ecaaf2c384552106a1eb32",
"reftest"
],
+ "css/css-scoping/host-descendant-001.html": [
+ "703ba0d07ece44f4cc017b5351dea3057337f234",
+ "reftest"
+ ],
+ "css/css-scoping/host-descendant-002.html": [
+ "c96ebd0da1c7b2ce00e56bbef54bdd382789e2f2",
+ "reftest"
+ ],
+ "css/css-scoping/host-descendant-invalidation.html": [
+ "33ad555cd243bb5cd486b6ffb776f657d1185228",
+ "testharness"
+ ],
+ "css/css-scoping/host-dom-001.html": [
+ "33f34152fff538f6080b6fa36de337dca8a2b694",
+ "testharness"
+ ],
+ "css/css-scoping/host-functional-descendant-invalidation.html": [
+ "891d852131c37fd2148d46f5b6dfe32e1fc45bf3",
+ "testharness"
+ ],
+ "css/css-scoping/host-multiple-001.html": [
+ "eb45ceb8c80d2cfbeb5bd317ab906f0881a13435",
+ "reftest"
+ ],
+ "css/css-scoping/host-nested-001.html": [
+ "a0b74d2e6bf24e9142904a925f95e969d206db20",
+ "reftest"
+ ],
+ "css/css-scoping/host-slotted-001.html": [
+ "918bd04b95a276c6035383f2fe4dcfe4274bceeb",
+ "reftest"
+ ],
"css/css-scoping/reference/green-box.html": [
"a736f68dc602c0fccab56ec5cc6234cb3298c88d",
"support"
],
+ "css/css-scoping/shadow-assign-dynamic-001.html": [
+ "c57e0fd5aa5be63e1cadf65a4e382798c5e05ec4",
+ "reftest"
+ ],
"css/css-scoping/shadow-cascade-order-001.html": [
"46913ea7e47811b11be898de5c3bd0a330ea6637",
"testharness"
@@ -508686,6 +512111,10 @@
"ab3c3d205e59df800ba5b4217245b83685521c31",
"reftest"
],
+ "css/css-scoping/shadow-reassign-dynamic-001.html": [
+ "11ed4da2e6ce88d8a2b98a8f1c814417ef7770dd",
+ "reftest"
+ ],
"css/css-scoping/shadow-root-insert-into-document.html": [
"2cee9fff35c9222074f4ef78dcfcb8a3e02bbc98",
"reftest"
@@ -508814,12 +512243,48 @@
"dfaf8675bec557c9f2178ad48b29c803f94056b5",
"testharness"
],
+ "css/css-shadow-parts/all-hosts.html": [
+ "a92019bba916ed3242dcdf66184d73b915f2689d",
+ "testharness"
+ ],
+ "css/css-shadow-parts/chaining-invalid-selector.html": [
+ "f578d6766e7e20c31c677b6dfe1aea201f24ef65",
+ "testharness"
+ ],
+ "css/css-shadow-parts/complex-matching.html": [
+ "abb39240874b2354afd80486da48285add6962b8",
+ "testharness"
+ ],
+ "css/css-shadow-parts/complex-non-matching.html": [
+ "776604de1368139bc460e6376372ecfcea4ccdb5",
+ "testharness"
+ ],
+ "css/css-shadow-parts/different-host.html": [
+ "040c22ffe6521d29be545e00a2b80d0e870426c3",
+ "testharness"
+ ],
+ "css/css-shadow-parts/host-stylesheet.html": [
+ "fe3affed81f2edea4e72f9e006ef81ab360f9555",
+ "testharness"
+ ],
+ "css/css-shadow-parts/inner-host.html": [
+ "4330af8042042c73a6cc590c38cd32613e2b9db3",
+ "testharness"
+ ],
+ "css/css-shadow-parts/simple.html": [
+ "76bea5867f75428345b105a813b7510f0492b2d2",
+ "testharness"
+ ],
+ "css/css-shadow-parts/support/shadow-helper.js": [
+ "00de7ed5660dd4e1b37710aba7cf2664c4773749",
+ "support"
+ ],
"css/css-shapes/OWNERS": [
"d26aa70436055346420fd8bae6fd174daf090124",
"support"
],
"css/css-shapes/basic-shape-circle-ellipse-serialization.html": [
- "b0841c5c1e328846aaa95376ae62178173cdf5a5",
+ "4794db47539ddd9fece83ccd6974e3d1018798a0",
"testharness"
],
"css/css-shapes/parsing/resources/parsing-testcommon.js": [
@@ -508843,7 +512308,7 @@
"testharness"
],
"css/css-shapes/parsing/shape-outside-invalid-position.html": [
- "3f9db0d5ae274b76c5474a097560f97b7f32d80d",
+ "3b7e01bf56a8c3d8afaa600ba027502f716fddcc",
"testharness"
],
"css/css-shapes/parsing/shape-outside-invalid.html": [
@@ -508958,6 +512423,10 @@
"0db53921502e89cb89da1170087254c18f2b6339",
"reftest"
],
+ "css/css-shapes/shape-outside/shape-box/shape-outside-box-009.html": [
+ "dcbc65caff9f44278347a92148b79f2577f7a91f",
+ "reftest"
+ ],
"css/css-shapes/shape-outside/shape-image/gradients/reference/shape-outside-linear-gradient-001-ref.html": [
"95e219e19a947fd2e0d27d1a4c553ebae7fe3e71",
"support"
@@ -508986,6 +512455,22 @@
"1e5377c120916557dc1525b38c9cf7eb86ae0151",
"reftest"
],
+ "css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-005.html": [
+ "7d6563a162ba640b77801c5c8280078d4b087649",
+ "reftest"
+ ],
+ "css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-006.html": [
+ "72267d3bfbdbeb438f32266334bb5e4a9c91c1bf",
+ "reftest"
+ ],
+ "css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-007.html": [
+ "c1093645f439fc86272e7e5f71e62daf37240a3f",
+ "reftest"
+ ],
+ "css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-008.html": [
+ "2f2b95904fad670919fae32cb94284118a45566c",
+ "reftest"
+ ],
"css/css-shapes/shape-outside/shape-image/gradients/shape-outside-radial-gradient-001.html": [
"b13df2df3be12ac74a7933794d91558c416b412c",
"testharness"
@@ -509071,11 +512556,11 @@
"reftest"
],
"css/css-shapes/shape-outside/shape-image/shape-image-001.html": [
- "d97482f9149c68fff971e383ffb72f1371e898ef",
+ "f69cd2483ed81b496fb5d1c0024b6a16df7375b1",
"reftest"
],
"css/css-shapes/shape-outside/shape-image/shape-image-002.html": [
- "1f3ace2827629f37439108e43f6528d8d728e5a2",
+ "299635765004bd1cf9cff8a0888678a2331d7b19",
"reftest"
],
"css/css-shapes/shape-outside/shape-image/shape-image-003.html": [
@@ -509087,7 +512572,7 @@
"reftest"
],
"css/css-shapes/shape-outside/shape-image/shape-image-005.html": [
- "274932a778268e3fda90b289e7f5ca22ee0f9adc",
+ "38883b770a73cc4eac3170a356b272edb6a5c483",
"reftest"
],
"css/css-shapes/shape-outside/shape-image/shape-image-006.html": [
@@ -509171,7 +512656,7 @@
"reftest"
],
"css/css-shapes/shape-outside/shape-image/support/animated.gif": [
- "d7fa8b47fef48732b1e01143a714409443ff307f",
+ "c5252926d8dbf82c06cdb615fda708ca7728f0bb",
"support"
],
"css/css-shapes/shape-outside/shape-image/support/left-half-rectangle-20.png": [
@@ -509739,7 +513224,7 @@
"testharness"
],
"css/css-shapes/shape-outside/values/support/parsing-utils.js": [
- "9ef646aa7352e94c2b2e43b0031d3fb654ac2985",
+ "159b330eb6571af860bcf5da8bc0ad281272f776",
"support"
],
"css/css-shapes/spec-examples/reference/shape-outside-001-ref.html": [
@@ -509986,6 +513471,10 @@
"5bb192165bcb7d9a619d86dbff61831fc8de71cb",
"support"
],
+ "css/css-sizing/OWNERS": [
+ "aab1ef47c5d434edc3d17b0c2bb6c8846a372b94",
+ "support"
+ ],
"css/css-sizing/intrinsic-percent-non-replaced-001-ref.html": [
"67a4540f6b7de22155226b39e948c7a7e2c33f1b",
"support"
@@ -510454,6 +513943,14 @@
"eccf10a7909e2358ac6425140e87c323ed786296",
"support"
],
+ "css/css-tables/anonymous-table-ws-001-ref.html": [
+ "90019ee8161096455c9266672a2a90ac203f6f23",
+ "support"
+ ],
+ "css/css-tables/anonymous-table-ws-001.html": [
+ "88bb6c8ab9f30133f4b8a2f3628c4384b2f08f7e",
+ "reftest"
+ ],
"css/css-tables/bounding-box-computation-1.html": [
"9402c84e354540f5b4e6dfb764cd199c55b30475",
"testharness"
@@ -510899,7 +514396,7 @@
"support"
],
"css/css-text-decor/reference/text-emphasis-style-001-ref.html": [
- "9d9fbec55489f155eeabe381c97f4cd9bc4e398a",
+ "29ac4a00a1e4a2174778d268e6063068f64a724f",
"support"
],
"css/css-text-decor/reference/text-emphasis-style-002-ref.html": [
@@ -517027,7 +520524,7 @@
"support"
],
"css/css-timing/cubic-bezier-timing-functions-output.html": [
- "77a45437209844f7e5128bd6aa2efeeacf876187",
+ "2d60e1bcdad1f454373ecde2367bb9a9a223cd12",
"testharness"
],
"css/css-timing/frames-timing-functions-output.html": [
@@ -517166,6 +520663,14 @@
"755aa03cd4767e0874e33bcbe6028dab96c3ffb1",
"reftest"
],
+ "css/css-transforms/css-transform-animate-translate-implied-y-ref.html": [
+ "48d0696cd6b9e9b7ae2b95ab9ada46a6437b3419",
+ "support"
+ ],
+ "css/css-transforms/css-transform-animate-translate-implied-y.html": [
+ "69be5da747b26e3ce762391dd5997a5bf697cd6e",
+ "reftest"
+ ],
"css/css-transforms/css-transform-inherit-rotate.html": [
"bd9040254b9d7747d86d63b7a6ea706e813bd1a1",
"visual"
@@ -518155,7 +521660,7 @@
"reftest"
],
"css/css-transforms/parsing/perspective-origin-parsing-invalid.html": [
- "f12960646ce37cbce073602129d93d72bcc68cbf",
+ "90c8004a65f712acfeb60368bdda84fc85952567",
"testharness"
],
"css/css-transforms/parsing/perspective-origin-parsing-valid.html": [
@@ -522723,7 +526228,7 @@
"support"
],
"css/css-transitions/transition-001.html": [
- "2068fe442683e6242633527409c89940d4e04bda",
+ "91af4820cfc8d56c19af19904c975b397b7c0ff8",
"testharness"
],
"css/css-transitions/transition-background-position-with-edge-offset.html": [
@@ -522947,7 +526452,7 @@
"reftest"
],
"css/css-transitions/transition-timing-function-001.html": [
- "4b2e7ebb296da03f72f509e3cbc8d647c162c449",
+ "c17b8db21183649d761de66fd13b0be450172813",
"testharness"
],
"css/css-transitions/transition-timing-function-002.html": [
@@ -523035,7 +526540,7 @@
"testharness"
],
"css/css-typed-om/resources/testhelper.js": [
- "8721d62337a2183c1911a9818f65a32f13c50275",
+ "007f0644280e7274db2a6193fab1ed90453ed5b9",
"support"
],
"css/css-typed-om/stylevalue-normalization/normalize-ident.tentative.html": [
@@ -523055,7 +526560,7 @@
"testharness"
],
"css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html": [
- "9334ee684f4a2897f6a191d9217e63af5630cc0d",
+ "dece9feb0c66e2830d47e712891feaa11c80809e",
"testharness"
],
"css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html": [
@@ -523418,14 +526923,70 @@
"65c9c20da930fd46136d4dd5706524ae05118807",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html": [
+ "5fd5a58d2bd89222d1109c9c303b9299415c715f",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/all.html": [
+ "5f3173a72f54ddb8a5252e1f755c8f9f2882e99b",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-delay.html": [
+ "74240b29a90431d95199838ed8d8767382bb05c9",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/animation-direction.html": [
"6c988281b4773fa25ef0d811ff6e0cd37a1e0fae",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-duration.html": [
+ "aaf4d4d1652feab4848bfe0cc8b8bf0d7a5c8e55",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-fill-mode.html": [
+ "c0fe298e357b4b9c64f48fdee9c25bc21d60335c",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-iteration-count.html": [
+ "0e41fba01660809dfae86a2b92ea2f149ac744a4",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-name.html": [
+ "4f3eb1c91120556071c27608c4fa5b3ffa8a8312",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-play-state.html": [
+ "15773ef5076bbfe85cfc5d991d8ea721b1470bad",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation-timing-function.html": [
+ "f1822d277351570e200c29b9710426c2a1d5c814",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/animation.html": [
+ "2ab3c2c4495bf88359c758d7537d0afd414e79f4",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/backdrop-filter.html": [
+ "71fa35cf808aa926535666cc65542223fd9f01ed",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/backface-visibility.html": [
"d880e41674d468fe364c74941a8ae0921b9bdfac",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/background-attachment.html": [
+ "024166d038e4982b56fd7d7221e82e9458f7e84e",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-blend-mode.html": [
+ "701b6878c4fc175ee06ad2c626396c81d89e4f50",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-clip.html": [
+ "4e21edae338e7b5bb4c037b8f33300cd2f95fc06",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/background-color.html": [
"f52a2182afc7107a9f411a27aab81c4c4c90ef1e",
"testharness"
@@ -523434,10 +526995,30 @@
"08055b88eca1f841f3b8a9867d8ffeb93d214d1f",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/background-origin.html": [
+ "93730d54f961f28a88fde1c00d44e2a9be64b742",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-position.html": [
+ "8b409700195cf670b29333f719f073044474c5c6",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-repeat.html": [
+ "49c91e1a014ea784ef0417865e0cd2c37255bc59",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/background-size.html": [
+ "0867d73b9e4beb8c0152a214cef87aa636287575",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/background.html": [
"32d684e452a4bafd7b58a0b33d42d32aa51ac091",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/baseline-shift.html": [
+ "469c1e917aafba93c71ef9b03ecf9d4e4accb5f1",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/block-size.html": [
"4dc26a97d56a24c053efac27b5988456d750d186",
"testharness"
@@ -523450,10 +527031,30 @@
"5b8adde602ac79d8b1ea92bd29f25d8756d72f8a",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/border-image-outset.html": [
+ "d884ef177bd0966ffa3935aabb2494e305738bd9",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/border-image-repeat.html": [
+ "c8fcdad32a801fde33554fb49ad5b3f66d73d953",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/border-image-slice.html": [
+ "26fa7f01d3fb41e8e20e09c3be2ee669c4b136bc",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/border-image-source.html": [
"08934e205f88aecda9809ff98d63f2d8784080c3",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/border-image-width.html": [
+ "16ae049c907d5a139c09423d1e08017c3a4ec838",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/border-radius.html": [
+ "dfb1ac911d906b9700076657fc0ff354e1d3683d",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/border-style.html": [
"5d258827fb6a26d07efbdf5b47a440300f0aa307",
"testharness"
@@ -523466,6 +527067,10 @@
"e710943711544b28d07676df15966950c0d76efa",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/box-shadow.html": [
+ "ef043c04afd507effcf99ea7e66ebbf4c8bbcde7",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/box-sizing.html": [
"6fb5b014ffbbe4fe9c0019cea618a001fefdbedd",
"testharness"
@@ -523490,14 +527095,46 @@
"376585635ab5752db4b2078f6247fa621a954282",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/clip-path.html": [
+ "687ddc658e6812e90071e591ab7ba4aff4c5b4f1",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/clip-rule.html": [
+ "e639f0e1ebfc2b3497312314ae190584c7ad3ed4",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/clip.html": [
+ "935ac21521a45f1b002aa1230bc25ab40373280e",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/color-interpolation.html": [
+ "5bae5cfda4b2a846db735aa6f1b65bfefb1c53f8",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/color-rendering.html": [
+ "3bef7a7daf59dba5b1c5d0a54fe5b22fbe8c7bb7",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/color.html": [
"291f8e058d1fa6e342f4316c0760ec4cbdbc403c",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/column-count.html": [
+ "a96fe325dcc3d53507f2db9b8b3eb5c8166eb121",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/column-rule-color.html": [
"ec00a4b773f2ae421b8f688908925e28d2281614",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/column-rule-style.html": [
+ "759d47179fbe31bccb273ad8467e970e0b6d19fc",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/column-rule-width.html": [
+ "6d4fe09b07c4a83e8fc905f5f1cfc1b2fcd679fa",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/column-span.html": [
"276ec2870bc105b046669daa0bdbeffdb080479c",
"testharness"
@@ -523506,10 +527143,30 @@
"3f6faf5b2371d8be9483148f3bfa562710c9c3ef",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/contain.html": [
+ "7f126e5303fe27db566bf9afc4c1de8b9509d916",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/coordinate.html": [
"f03d1956798b3bbf5d4ed421cea55b274b7fecc7",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/counter-increment.html": [
+ "ec384702b7bb9212ec5cadd33cd30f73b169e8f0",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/counter-reset.html": [
+ "a8d18b265b5fc681f1be14dbecdf26f4e2173e44",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/cursor.html": [
+ "547f80e526a4b6bb91a6c9212704bd189f31e090",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/d.html": [
+ "b3b77c4dcb255848fe8f212e5ea41f24612f4da0",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/direction.html": [
"b7c49aba4e8785f819beeb444c113d937d441089",
"testharness"
@@ -523518,10 +527175,34 @@
"26ba44d8d5146b9d606a1668659ee16876b371c5",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html": [
+ "ce4051faa3a40688cd279c8cf901b3c99272589a",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/empty-cells.html": [
"d7424e7fb7c27cfa31fb0e40ee9045129ed96c03",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/fill-color.html": [
+ "9792c30707b9871b541fc2a5a6e2efffc5266b31",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html": [
+ "bcdbc55b099562c6449c9b095fa37ad95bde41cb",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/fill-rule.html": [
+ "35bb9208558e038369ee543c3d9590db328e2dad",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/fill.html": [
+ "3009ff7b3a817f92c78d66e0482857c82a0ce202",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/filter.html": [
+ "9b83b7a66a5b18ccf726a5a447468ce90b28b239",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/flex-basis.html": [
"87f3eed7306a43a312c95fd8b525fcd5d3e167cc",
"testharness"
@@ -523554,10 +527235,26 @@
"1dfca0045c2b57f36d5165139087301ffe54c63a",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/flood-color.html": [
+ "29df9ae9ff737e88a07cb1797acfbfebced15a61",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/flood-opacity.html": [
+ "28e0a69f20e9ff94454a74ce256b56ad91642efc",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/font-family.html": [
"72e8dd4dd54081fe9b2278c860f2752e2d17de74",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/font-feature-settings.html": [
+ "9486209e5f3735d51ab0992f34391e83ae55303a",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/font-kerning.html": [
+ "a04e705cfc9dafe844d77fddfec821068c421ee2",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/font-language-override.html": [
"e43730c10c85fc5bbed8e6a32c594f5c643e4786",
"testharness"
@@ -523598,10 +527295,26 @@
"141eab85e1a4bcbc051d61dc502bb90613eae996",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/font-variant-caps.html": [
+ "86a6b27a7e9e2900af200bab2a70ed11feb1052f",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/font-variant-east-asian.html": [
+ "45b30732482f82a3ab798fa362c44c36471a6ee3",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/font-variant-emoji.html": [
"737a0494625e9d22c16f791fbb437c47d4a2923b",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/font-variant-ligatures.html": [
+ "5c7467f673ce53ab3067810baa938fe548b064d3",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/font-variant-numeric.html": [
+ "8583375c33d63ca94f61ca34b4a4142dd4967d85",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/font-variant.html": [
"b538f2ed407c8cfd4718c28082da3de237cd9953",
"testharness"
@@ -523622,10 +527335,54 @@
"e113dfd152548c6ba612d40af13ba5877673b043",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-area.html": [
+ "3f139dfec90a4ed0a460530fe5736475b6c25540",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-auto-columns-rows.html": [
+ "ff3e9e2b1186aed0e9ecf17cebe40316880d447d",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-auto-flow.html": [
+ "25af714f7993ad00a36cf9a96cc0218aaed9f53f",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-gap.html": [
+ "1fbe50656f4d598f3baed2116c51b47fe3187b92",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-start-end.html": [
+ "12c4d77ab5df2b6e9f673a9f83ffcb583ccb9fe1",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-template-areas.html": [
+ "5bcd38d13e904ca4e74aef5701f10f325c1f702f",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-template-columns-rows.html": [
+ "1f6e412eb1a862b8c3bdd2d4fa30e6495ebfdbb0",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid-template.html": [
+ "f1bb1330c555ffdedcd0b53c879d18f0b4ddedea",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/grid.html": [
+ "13ec601464ba9935b2167493c77d6189737f5380",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/height.html": [
"617ec941ab1cbd02b31b8a9bb7ce6da311109476",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/hyphens.html": [
+ "847c72cd8422cf0cddac12df61a05a6bbf356a5f",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/image-rendering.html": [
+ "6d1fffc1886bf0318487e7b51d48a30a467d55dd",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/inline-size.html": [
"531ad3bba92bfdb60377dc755d40f3300d0843e0",
"testharness"
@@ -523638,6 +527395,22 @@
"354512fcb071a863f11305f36cf3605ceef733b8",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html": [
+ "2bcb0a1dcc04e0693525d3f435be6d56f1e4c199",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/lighting-color.html": [
+ "e7b3bf3b6f16d7485f043b75b3aba7bd3ab4af05",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/line-break.html": [
+ "d6ddc99d14b441faa9f20888e148a9e9a10884ae",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/line-height-step.html": [
+ "568f77a65d5af8e20e4a7aca15cb6497134cf553",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/line-height.html": [
"8b28d0af963cd08b63a446107af4bd476b239531",
"testharness"
@@ -523650,6 +527423,10 @@
"d1644d7633a8fa097caa5d52f81a84c5cd62f9d0",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/list-style-type.html": [
+ "05668d09367de8a7993a46a08656923fdeb4deef",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/margin.html": [
"268e2a2844439f1175199034d89d60a56e0e11fd",
"testharness"
@@ -523662,6 +527439,14 @@
"8400ca1a6caf399c5914df06028d6616fb9f9571",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/mask-type.html": [
+ "26bfb9cfead4283d998ffc58bf9a891ae157dc64",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/mask.html": [
+ "1fcc7e22edcdb631fab44be96a4fe341ab8470ce",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/mix-blend-mode.html": [
"43a29c4680d0f93c586f3e7d772fe64a56947d87",
"testharness"
@@ -523691,7 +527476,7 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html": [
- "f405f78977c3521f2dfd78316b78ad2bbe61845d",
+ "0372ca67d2d93029b86aed9a189922bfe234922c",
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/offset.html": [
@@ -523702,26 +527487,66 @@
"3812b01e648e3b043abbd2fe82c3733309da49ad",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/order.html": [
+ "74d281e0efefaea5dd7b3a9015d9b49b8f3982a2",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/orphans.html": [
+ "5a50f0ee7cee47c2bac35e8bb5d8a714697bdb9b",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/outline-color.html": [
"612e77914108dbba0b271b20eb3e9e80199349b3",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/outline-offset.html": [
+ "557c9d1e08ec616c28bf4ec20d647c28e5fbc515",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/outline-style.html": [
"c9a622aacc8c61581110670cb7044a89b11956d4",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/outline-width.html": [
+ "8c83cdd0dcc508c6392b424a7ed85696915d961b",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/overflow-anchor.html": [
"7f7518700368b9414101ff4f58b91776eb2ecb04",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html": [
+ "42fab7853a73270d46eb2e60a12491107637c73c",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/overflow.html": [
"b6ba9ba8ebc6433caffe0c8f83e1f679a26ba7c4",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/overscroll-behavior.html": [
+ "02f28718ae9056e78a606f09b64b8f0bfa9a8d28",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/padding.html": [
"70c2e29badef7528469bcf11e1cb7bbc6cd519ea",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/page.html": [
+ "14d99a727464f689350cceb004628bb54887a5c8",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/paint-order.html": [
+ "e5305090f3e6b5420198a65ab7e5da75285f813d",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html": [
+ "bd06e5f7d25b1613dc9a134f0e8ad35282169c66",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/perspective.html": [
+ "7b1270980b304a14e97d5d793f331ec9e77831e4",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/pointer-events.html": [
"71b42cb53d950eb62309b4567d3c7bc62dd1e28e",
"testharness"
@@ -523730,6 +527555,10 @@
"4e3eccee58cec470febe4cd9a9149f4b4436487e",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/quotes.html": [
+ "65c15e9d3e74ca284b1b6367d070f3ded9a9087a",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/radius.html": [
"ae21056fb993efb7112e0bc42fe1269f6bc0c72e",
"testharness"
@@ -523739,13 +527568,17 @@
"testharness"
],
"css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js": [
- "7dad4e140a70b28cde65ff1c23c5f843223eee6f",
+ "c3eda7402e5175b127d11f2ba610a04b45547a27",
"support"
],
"css/css-typed-om/the-stylepropertymap/properties/right.html": [
"68a2611eaf9eecb7393c2b0db0f4378ebe285f22",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/scroll-behavior.html": [
+ "a50ff312ff22f3d26fb22764d2da8689887dcb20",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/scroll-margin.html": [
"7d4636be3e35639b915917412465b443241e95b1",
"testharness"
@@ -523754,18 +527587,102 @@
"d37d336e4695e5055706a7822572b81b943fdbd4",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html": [
+ "cf8850534ad2f8e2ea75d8783f0871b345535c06",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/scroll-snap-stop.html": [
+ "6c2d1a024a017fb21427286a1e750be000b3168a",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type.html": [
+ "98d8d0e13352b31cce143894d9e1c6562985818d",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/shape-image-threshold.html": [
+ "3e36cb94f7a08533b87e01e21fd7a9885eec2df5",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/shape-margin.html": [
+ "5bb5ed9144d09c046f3ef675a089255c0fb02676",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/shape-outside.html": [
"3189c7b3903d30f31836ea845aebecf599198c79",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/shape-rendering.html": [
+ "fc8eb7dc50fb534c1f351a1b5336aff8979e87c2",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/speak.html": [
+ "2cfc25904ab1fd82f0544a5df9bcfd3fed8e8847",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stop-color.html": [
+ "680f87fb2a86b0eda5617cb81d8a1c869dc5677b",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stop-opacity.html": [
+ "cf3237c28b0f00c203f447dc958ffbaf888fae54",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html": [
+ "5869084f1ea9acb9a2ebb8aa3aecf1635dad0e2a",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html": [
+ "d352d871150c457fc40d3167f599cf8e19d44059",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html": [
+ "840c2316724bc89393a528f54a7fb2a7f88a975c",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html": [
+ "cdb4fd178e378a707f9982d862e11f4a8ed9517c",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html": [
+ "ecee806cfc5a5b9b6b17e722134b6ede7cd8eb9f",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html": [
+ "b75becab8ce2f1fc54db8ee7b0016f3d42358e99",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke-width.html": [
+ "da0dd5f0927edb751a376d791e123d482979c375",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/stroke.html": [
+ "bc7e4ca86e93b8e44b1b985d4a97b5303d26dad9",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/tab-size.html": [
+ "b7b6f76bcb46daff1060ffe5edbc0e05d5044dc0",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/table-layout.html": [
"e56449111778ad18152a42d54fc88097950f15f0",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-align-last.html": [
+ "108445e8afbb9f4166067878e54109a7edc98035",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-align.html": [
"88a1f5866a767c25dec2ef75728c68c5631d371f",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-anchor.html": [
+ "84258638bb77a8d001570dc1751ce80ed8506a54",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-combine-upright.html": [
+ "a0bc476f703a11611f74af5e1ee813373842b614",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-decoration-color.html": [
"fe6d3765ca8fea1c1963a310d0aa35fa68089a9b",
"testharness"
@@ -523798,34 +527715,98 @@
"9419ab219034d1fb732965ebd3a03934bcaddf5a",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-indent.html": [
+ "dfdb2013d33f261abc2c91aa3bdf77bbf4191e5f",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-justify.html": [
+ "5705d782672f1b1adde9f8801581732c0e574d3b",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-orientation.html": [
"919ebc1fadf6e097071a0f1618afeed0849f18e6",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-overflow.html": [
+ "f0aab5cd85a0a63f3c3d2ac2cbd8721cdffdc0dd",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-rendering.html": [
+ "2e18286848b05dda619c9708d858d19b7dbcd8d2",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-shadow.html": [
+ "3631b4a967396e5d46951bba7bee1bf49cc9662b",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html": [
+ "1fc58df229e950646f8f3c930b002b4f4e088b81",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/text-transform.html": [
"53f0482b667f049170dcdfb5de29dedc6897d09a",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/text-underline-position.html": [
+ "1ac67f9d349955181bb8f9ccff7c236bde9cfb26",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/top.html": [
"218b50f6b7d8209514bca8d0a8121263b07ab1e2",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/touch-action.html": [
+ "2441643db4691458fb96eefe43ce35737b386317",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/transform-box.html": [
+ "618dd7dfca611dfaca9f6ea2c593e8f0c128388e",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/transform-interpolated.html": [
"85cbf6daa2686a518566e4ccbfc2ba39197b190e",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/transform-style.html": [
+ "b36e671f379b935611a0c29348c469115b204488",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/transform.html": [
"2723b6d3e9a213a1b33e9ecfafd5fd42eb8bca33",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/transition-delay.html": [
+ "f3f9128692e9a03dfc736d6f8c20828ab42eb75d",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/transition-duration.html": [
"fe613a427b8c057fb859eb70a58d506c6a0b3cde",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/transition-property.html": [
+ "befb1e72a7a49241b78cefbc7887cc8f029c80e0",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/transition-timing-function.html": [
+ "3b2be1a6295128a13c01d2020014eff27ffc037c",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/transition.html": [
+ "b1457248f516d2e02edb668eb1a0ccafaf0127d8",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/unicode-bidi.html": [
"b676714807b4fcdfd5ba7555f7c2ee3d1d9590d2",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/user-select.html": [
+ "a4c544daf99e01d99b9115fb575248f8dad337df",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/vector-effect.html": [
+ "5c8c72511c67a35f982b5c6331936a6f8470d7d0",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/vertical-align.html": [
"41ae6fd66b5a0e6f3b5f154d839362a4921712cc",
"testharness"
@@ -523838,14 +527819,38 @@
"b51dea7a7d0f93f13fda93c0f27e5084fa4c3b3e",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/widows.html": [
+ "f9634536ce7bbb038dbdc079c68ce93ae0b065da",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/width.html": [
"205915eb7162e23fd5600488304dd8dfa8e51ee2",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/will-change.html": [
+ "a47b7e6800a23d7528a6226ed4f1ae49ff0bbd81",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/word-break.html": [
+ "c9881c4d7ebff22f896ebfb66a3e2b9fc1742e7d",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/word-spacing.html": [
+ "beda072fe09e5b409c41f0a623a26a14ea1d149d",
+ "testharness"
+ ],
+ "css/css-typed-om/the-stylepropertymap/properties/word-wrap.html": [
+ "bc9dcf534d595b93ec0ffd7a0be24b64c4f7ef40",
+ "testharness"
+ ],
"css/css-typed-om/the-stylepropertymap/properties/writing-mode.html": [
"3867e6c80011aaccb4b18efa37dea27d62dcf428",
"testharness"
],
+ "css/css-typed-om/the-stylepropertymap/properties/z-index.html": [
+ "c42bd1d12a53972c49529513747ddc35aceb9531",
+ "testharness"
+ ],
"css/css-ui/OWNERS": [
"beeb8a77d396e48731fd1e69a922b6e2c84c2caa",
"support"
@@ -526195,11 +530200,11 @@
"reftest"
],
"css/css-values/attr-invalid-type-001.html": [
- "5e7d8492b333a12aaf365e69e239ec090c7be4e8",
+ "cc257aebc686241d679ae5d82ae90730cd87372e",
"reftest"
],
"css/css-values/attr-invalid-type-002.html": [
- "595100ad77485fe61bba6f186dc1ce255c133a4e",
+ "63e352760b21695aa1e72e58f37bbc88f55dfce5",
"reftest"
],
"css/css-values/attr-length-invalid-cast.html": [
@@ -526243,7 +530248,7 @@
"reftest"
],
"css/css-values/calc-in-calc.html": [
- "be08a1510714e8b4fbc4d35582db5708924d06b2",
+ "d7965316b956182d40aa5dd9b9026d089fa56e9a",
"reftest"
],
"css/css-values/calc-in-color-001.html": [
@@ -526639,7 +530644,7 @@
"testharness"
],
"css/css-variables/OWNERS": [
- "087d064f7aa35f7c780785af721d629412793195",
+ "d7a340b32ab83ecda200817c2ed36e63fa7bb6c8",
"support"
],
"css/css-variables/css-vars-custom-property-case-sensitive-001.html": [
@@ -526727,7 +530732,7 @@
"testharness"
],
"css/css-variables/variable-cssText.html": [
- "601a35a06498f52982dbce18531fb8e12ab292ba",
+ "c61df48b0ccce3d136ec15755dfc4efa35c209ac",
"testharness"
],
"css/css-variables/variable-definition-border-shorthand-serialize.html": [
@@ -526823,7 +530828,7 @@
"testharness"
],
"css/css-variables/variable-substitution-shadow-properties.html": [
- "0febbaa27e8692583fa2cc29fc8a1523eea9be43",
+ "b02099a4131127140d023351faacec69527688dd",
"testharness"
],
"css/css-variables/variable-substitution-shorthands.html": [
@@ -533442,6 +537447,10 @@
"8dfaa313b4abad30281d07ce22ac06a61754cc06",
"testharness"
],
+ "css/cssom-view/cssom-getBoxQuads-001.html": [
+ "6236946f2eb29b2fdb3e7b3c1152ef275d921759",
+ "testharness"
+ ],
"css/cssom-view/cssom-getClientRects-002.html": [
"da348da01e09474f652ff1dfb6869665740668d5",
"testharness"
@@ -533531,7 +537540,7 @@
"support"
],
"css/cssom-view/interfaces.html": [
- "d74bbaf34040d130444915b4432c529a73d9604c",
+ "84067e6095d184488dc1c44a7ba17792d946976b",
"testharness"
],
"css/cssom-view/matchMedia.xht": [
@@ -533595,7 +537604,7 @@
"testharness"
],
"css/cssom-view/scrollIntoView-shadow.html": [
- "3c4a18992105fd7bf19cbf29f0b6d80cb12ca98c",
+ "17543f0228c100f1d9def2b28ff58a0e80207c6f",
"testharness"
],
"css/cssom-view/scrollIntoView-smooth.html": [
@@ -533870,6 +537879,14 @@
"4d0b19a6e29ae7a721574e36b47985233ddc8bae",
"testharness"
],
+ "css/cssom/CSSStyleRule-set-selectorText-namespace.html": [
+ "77e5def2b8be9b7fb19e81bd3630a333f45fb39b",
+ "testharness"
+ ],
+ "css/cssom/CSSStyleRule-set-selectorText.html": [
+ "a4ac01a34f185fdea811733d1994070cb309be82",
+ "testharness"
+ ],
"css/cssom/CSSStyleRule.html": [
"9fe62d2e23709b77e9b5cda4522ec1c04d2940cf",
"testharness"
@@ -533915,13 +537932,17 @@
"testharness"
],
"css/cssom/css-style-attribute-modifications.html": [
- "9199534f3b6cc473832562b1701ade3a05dde172",
+ "935cae926defd9fe2203ef37af25288b9fdf92e1",
"testharness"
],
"css/cssom/css-style-declaration-modifications.html": [
"c169d758c1d91b75697b04cf72750f8ac1650e1a",
"testharness"
],
+ "css/cssom/css-style-reparse.html": [
+ "d83b1fde05df64628f67b7773757c12d213f566b",
+ "testharness"
+ ],
"css/cssom/cssimportrule.html": [
"c7a70c7836b5a31631b12cc47f280d507542571d",
"testharness"
@@ -533966,28 +537987,48 @@
"5f29436964d01c57f61d513cee5b83281643ac54",
"testharness"
],
+ "css/cssom/cssstyledeclaration-mutationrecord-001.html": [
+ "5d455757e4c80b4781ea4263fa78bced1d6b8632",
+ "testharness"
+ ],
+ "css/cssom/cssstyledeclaration-mutationrecord-002.html": [
+ "f21e4ba8d5195a66a0a5e64c72731bab75a44ea4",
+ "testharness"
+ ],
+ "css/cssom/cssstyledeclaration-mutationrecord-003.html": [
+ "a7968f4e7d85d778425f584d2a42bf74b8583bdb",
+ "testharness"
+ ],
+ "css/cssom/cssstyledeclaration-mutationrecord-004.html": [
+ "958b71b8f1c58a809590459e6f085f3e1217e9c7",
+ "testharness"
+ ],
+ "css/cssom/cssstyledeclaration-setter-order.html": [
+ "3e0e768c466011bb3d91b3f0eff55e029a2aec0f",
+ "testharness"
+ ],
"css/cssom/escape.html": [
"c9ed57c7ef7a035c25feff4ea60547a57d727f31",
"testharness"
],
- "css/cssom/getComputedStyle-dynamic-subdoc.html": [
- "45d94c17f0a88877a8218135c94d331afcdf7df4",
+ "css/cssom/font-shorthand-serialization.html": [
+ "9d0bce1c0d74bf90aca1eb8ee6aa2e2ed2b92b30",
"testharness"
],
- "css/cssom/getComputedStyle-pseudo.html": [
- "a2033405d6852cdeb4c3b8cf628f7c1d8f7cd1aa",
+ "css/cssom/getComputedStyle-detached-subtree.html": [
+ "72b04b3245851e5a5ac26429986074e07ad369d9",
"testharness"
],
- "css/cssom/historical.html": [
- "02b135e62439d775d7e8de7ca94c831a8d00e077",
+ "css/cssom/getComputedStyle-dynamic-subdoc.html": [
+ "3f379487727d9730de9e3569b26632c35d602d9d",
"testharness"
],
- "css/cssom/index-001.html": [
- "ab9e9f102f5909d9b5587f2c0ea54c0c6b59868d",
+ "css/cssom/getComputedStyle-pseudo.html": [
+ "d3ef09fb6092078562f8923879b9ece97938df47",
"testharness"
],
- "css/cssom/index-002.html": [
- "fe12bc0005ccfccfafd4f23644b28fbb5f5e33d1",
+ "css/cssom/historical.html": [
+ "02b135e62439d775d7e8de7ca94c831a8d00e077",
"testharness"
],
"css/cssom/inline-style-001.html": [
@@ -534015,7 +538056,7 @@
"testharness"
],
"css/cssom/interfaces.html": [
- "c1dfd96239986c9c57d7b07caebbd1fc9654e0b9",
+ "42e325d3d7f6be7f557915072f61900ff611cef8",
"testharness"
],
"css/cssom/medialist-dynamic-001-ref.html": [
@@ -534075,7 +538116,7 @@
"testharness"
],
"css/cssom/serialize-variable-reference.html": [
- "85a25fcb99fe433e3f71bc1b6fec92815da2704d",
+ "65054797d336c1a4b77c6f66e7b466dc24095517",
"testharness"
],
"css/cssom/setproperty-null-undefined.html": [
@@ -534083,7 +538124,11 @@
"testharness"
],
"css/cssom/shorthand-serialization.html": [
- "0240668113cb5c280dcb76d8eabfa28d0ed9cb52",
+ "eac49bf894c81813d3763828cbd1c103b388869d",
+ "testharness"
+ ],
+ "css/cssom/shorthand-values.html": [
+ "8bfc0dff5da1859e17df31ceeca710d17a982109",
"testharness"
],
"css/cssom/style-sheet-interfaces-001.html": [
@@ -534562,6 +538607,10 @@
"53dc9a1f675b5212979fc2dc45afbefa0add6721",
"reftest"
],
+ "css/filter-effects/interfaces.any.js": [
+ "c9622ba9d03cc389a766631998a69279c620725a",
+ "testharness"
+ ],
"css/filter-effects/parsing/color-interpolation-filters-parsing-invalid.html": [
"ef9797feb7854f7b5e664c3cdf86d6557b2491de",
"testharness"
@@ -535046,6 +539095,10 @@
"1c2ba1a9116942599804ed29553e85628afadb04",
"reftest"
],
+ "css/motion/OWNERS": [
+ "444abc47c8273ed515cd280f96c9849a4c720a85",
+ "support"
+ ],
"css/motion/animation/offset-anchor-interpolation.html": [
"30eb3ea68aa502d93125d4e54ff15c0a96458cfa",
"testharness"
@@ -535323,7 +539376,7 @@
"testharness"
],
"css/selectors/child-indexed-pseudo-class.html": [
- "879a5f48d8a06514d457f29d245cd407321366ee",
+ "893cff0344fd832c885c5ab12d881cc321eb23e8",
"testharness"
],
"css/selectors/css3-modsel-1.xml": [
@@ -536934,6 +540987,10 @@
"607553f41a33ce3630752cdf027c9f904833a19d",
"reftest"
],
+ "css/selectors/resources/blue15x15.png": [
+ "eb48032c07bfeb1d3b6be6e5c9c34d2fe2180767",
+ "support"
+ ],
"css/selectors/root-siblings.htm": [
"0d6e67589dab95d5362f82a99565947ebb487658",
"reftest"
@@ -536942,6 +540999,22 @@
"f70b8d60543c5a28fcf955b1780f15c03d60991a",
"reftest"
],
+ "css/selectors/selection-image-001-no-selection-noref.html": [
+ "b9a627630a8dcfaa70c74fc11ac9635aa00ac32c",
+ "visual"
+ ],
+ "css/selectors/selection-image-001-noref.html": [
+ "add1c00be4957ffef599aee52d061be7c09607bc",
+ "visual"
+ ],
+ "css/selectors/selection-image-001.html": [
+ "25631dab274b96811bc2641f4de6619df9bc1250",
+ "reftest"
+ ],
+ "css/selectors/selection-image-002.html": [
+ "5e2d33709b654a1f66eedcff995c8a3e9a8e01c5",
+ "reftest"
+ ],
"css/selectors/selector-placeholder-shown-type-change-001-ref.html": [
"92303d06943581738f58ff5d342ef1336539f66a",
"support"
@@ -539326,6 +543399,14 @@
"4eff7ada840bc140d4ba2a115169f19855e0acec",
"reftest"
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002-ref.html": [
+ "5e341aaf001f17249f7307552d0bc639021a4a25",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002.html": [
+ "5ba69f0e2b5d2308c553a5a6e1c6a6eeb19528a4",
+ "reftest"
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-horiz-001-ref.xhtml": [
"812712adfc932b89afaae066b464562f4bddf7a9",
"support"
@@ -539870,6 +543951,74 @@
"95154acaff08d7d3f999afe1ea1979017fdcc115",
"reftest"
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html": [
+ "bf136f86366ee98f217086d5803adbf3b5a45027",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001.html": [
+ "a741f6f5a352f6cd2fba61f8097175045a5ef819",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-002.html": [
+ "5c8fef2f62e501e2161ba10bcbfba2eadfa3a728",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-003.html": [
+ "e7be9dc25f5c64b202a30493a5ee2839c1808a04",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-004.html": [
+ "12d1adb25ab7061086d56910aac162d68a46d4bd",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001-ref.html": [
+ "89fd3533c50deabebc3742ee839e7ac820da2a0e",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001a.html": [
+ "777b5ec16a9e01bcb24aaba36aa4f427ed76b666",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001b.html": [
+ "0c94fe7294a1b2f9e629f86281cdb479776516bb",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002-ref.html": [
+ "79b75f4761f6433fd02b9595afd652e22e2887c2",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002a.html": [
+ "2516ae40d90a58510a89caabce2ce80cd1eccea3",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002b.html": [
+ "6dc70e9530748c19bcff41bdaaee961adf327e5d",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003-ref.html": [
+ "ae6744bb5b3bf9f97348a94103f77ba42c82a918",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003a.html": [
+ "f786eecf2a88f94faf821ede174a24918d42f9e9",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003b.html": [
+ "86ac9cecd93eee4f042210b19c06334cfa584c9a",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004-ref.html": [
+ "be5fb86d3c2dc02da44cc1e1db52996e06518d32",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004a.html": [
+ "c12a718b213a4b156c32c350588fb3d88c93c96b",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004b.html": [
+ "1fbddaf2aa5cf3aa81a3b5241988f7818d9d3458",
+ "reftest"
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-flow-001-ref.html": [
"b1e21a6a3e12afbf1602aec0888f6f9c7ba9e97d",
"support"
@@ -540623,7 +544772,7 @@
"reftest"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list": [
- "0b19718ef925228b80173687da6c368713b374b6",
+ "d0843c4f0db3bbd437a99ec2d9281841febfa47e",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/support/Ahem.ttf": [
@@ -540670,6 +544819,170 @@
"f6a613df9118dd71edbb9d2b05d2c26822ec4edd",
"support"
],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1-ref.html": [
+ "723eaa5f6be7d2967442585871d8c9d8fa7072a8",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1.html": [
+ "ce80b3369791e0f6cdde0cbed07f04e64004b239",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2-ref.html": [
+ "6864eec3e7d5339d87030853fbcdf31978a9b765",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2.html": [
+ "af5338f552a656a26e212f9b1e7bb3f4c998b502",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3-ref.html": [
+ "5211855e9d69fbc2f9bae1f4978ef01e2c684717",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3.html": [
+ "20afdcedc37d0b99cf9cdd98a86c78f95cf6d4a7",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4-ref.html": [
+ "e3f0dc6dff9ac940e8d296ed679fa6574f8d12c0",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4.html": [
+ "a7d94c112dbc957107a0825999786b9cc88f56dd",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1-ref.html": [
+ "947d8adf16a6c571d1abe5cd59ad6f9a626591e4",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1.html": [
+ "5bce69f9d7ac80ffdd2495489f3b49676f476517",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1-ref.html": [
+ "975592fc5b29520b97a65d3069aaa6a9717a0b9f",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1.html": [
+ "c2fe3915eadc468b9b6f6339e7463631f713fdd8",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/reftest.list": [
+ "e3cfef68bd6895c30514c8eee0f98b05bd14d111",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-noib-ref.html": [
+ "e70b26a600a2c8c0a065f2bc8db5f1f464acecb3",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-ref.html": [
+ "3b23a663e2e78696dbaf4da8c03181bfb571227a",
+ "reftest_node"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1.html": [
+ "d31d8b480ba076cb7f7a0490154cdf81b3761260",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2-ref.html": [
+ "9a5fd40125650785c63b077a1429326d60f0b56a",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2.html": [
+ "f566272e266a403e2485f4c03b75fa8b9fc2ef05",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-noib-ref.html": [
+ "dc582d27ce0a2b915765b535c828ba05f62fd5fc",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-ref.html": [
+ "f6b4ddc178ec3ee18003247b5b94ba05400f2192",
+ "reftest_node"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3.html": [
+ "b01b1a4875b75f66fc143d24a712e61823deb855",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-noib-ref.html": [
+ "3dce69d97997e192ee3924117261057689448f8d",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-ref.html": [
+ "fd37c157dbeaa7de94420aa6fc5e7443b967bf19",
+ "reftest_node"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4.html": [
+ "1a03094278feb23ef673ad4272372a061585b13a",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-noib-ref.html": [
+ "6a7264bc70d95bb891831a263bc99f2dc7849398",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-ref.html": [
+ "4b7331a148bfcfc053cb4a12a88f69f97e8ccb5c",
+ "reftest_node"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5.html": [
+ "0a8e63a9f595969ac3a63c09e915916bbe4605d6",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-noib-ref.html": [
+ "35784b345c0159e5527440aa29f2afec57a09151",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-ref.html": [
+ "8df23d9fcb46fd4f8afa3c6fd245b10801afbc91",
+ "reftest_node"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6.html": [
+ "fb867c4adcd286fa2d8fe31145d466e92bf38be5",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1-ref.html": [
+ "173eca738ed9b1ad4fce26e1144deae0e11008b6",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1.html": [
+ "68381dbd17f3ae77f989047504ab804a8e1e0b1d",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1-ref.html": [
+ "de19bd984d43ca731d6bfde8f62fb8508bd2fa56",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1.html": [
+ "c66897c10ab3b471e2df366d21cc6d29b62ab573",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2-ref.html": [
+ "3a62c60c05c806a799f302da2aa51a62ce4b9882",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2.html": [
+ "086bb634e17471f534347772b73e5d88be6eef23",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1-ref.html": [
+ "a4863e4868c6d339339e317f3e7b7805f2357cf1",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1.html": [
+ "6c4cc35ee35dde04c9eb72a0debafd7b7dad5c92",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1-ref.html": [
+ "7a7c8f36d2928420ceb0fd98a33f70c1bdb721e3",
+ "support"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1a.html": [
+ "e1bb5162969bc949283959c34d77f3b9b5450078",
+ "reftest"
+ ],
+ "css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1b.html": [
+ "c4564a71046cd295ba2cee0c4796ab71551a534a",
+ "reftest"
+ ],
"css/vendor-imports/mozilla/mozilla-central-reftests/images3/object-fit-contain-png-001-ref.html": [
"98d77a61e8b6559e1779eecb95ecb7ee49a2cc09",
"support"
@@ -542323,7 +546636,7 @@
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list": [
- "268d37d0765f2f82ac6dcd6924f0ccce24863e8a",
+ "2674d28c45716ad1469066f528d632a180502bf5",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/ruby/nested-ruby-pairing-001-ref.html": [
@@ -544519,7 +548832,7 @@
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list": [
- "a5c020f3f28e25a1540fde327c56df33b89be873",
+ "791816169df64e27949974a29a47805c91592dc5",
"support"
],
"css/vendor-imports/mozilla/mozilla-central-reftests/transforms/transform-containing-block-dynamic-1a.html": [
@@ -545931,7 +550244,7 @@
"testharness"
],
"custom-elements/HTMLElement-constructor.html": [
- "64522527ef425b90c704b20b000c8feef0d1ca25",
+ "4dc04a8b026538bddee52586f2df50206abc9334",
"testharness"
],
"custom-elements/OWNERS": [
@@ -545979,7 +550292,7 @@
"testharness"
],
"custom-elements/htmlconstructor/newtarget.html": [
- "11b7927c9a2946c752f56e5b44cfb4051ab8b6d6",
+ "39a7331d37056d0203fd771d797fd8da3d2bbefb",
"testharness"
],
"custom-elements/microtasks-and-constructors.html": [
@@ -546258,12 +550571,16 @@
"e1b4b49cbd7ea1fd703c7ab3814deee0669e9336",
"support"
],
+ "docs/_running-tests/chrome.md": [
+ "a09c8a0ea4d5d2abfd93843176b3c81e22fdbf22",
+ "support"
+ ],
"docs/_running-tests/chrome_android.md": [
"082b7697eed61caefcc0a280cba6cee24ff12e7d",
"support"
],
"docs/_running-tests/index.md": [
- "ab0156e7fea2e4e462065c458dd8aaf56298150a",
+ "350437f8d19af554887d519013b4bed38fcb1a62",
"support"
],
"docs/_running-tests/safari.md": [
@@ -546303,7 +550620,7 @@
"support"
],
"docs/_writing-tests/lint-tool.md": [
- "96cf62f747c7367e81c6001831bd3f22ae62f0fa",
+ "82f91a06062c3acd7f9e73471206bdde163cc808",
"support"
],
"docs/_writing-tests/manual.md": [
@@ -546327,7 +550644,7 @@
"support"
],
"docs/_writing-tests/testdriver.md": [
- "72383e28f07286308a7c6233535536a9a4edeb5e",
+ "2ffb3871fb13e6acd3171205bf80517dca06bcfe",
"support"
],
"docs/_writing-tests/testharness-api.md": [
@@ -546463,7 +550780,7 @@
"testharness"
],
"dom/events/AddEventListenerOptions-passive.html": [
- "e239d31a5ec5b30fca8a0ffa1a77be535c714dfb",
+ "93ddf62011e2ff4dd34f4d9b3a54e73757300882",
"testharness"
],
"dom/events/CustomEvent.html": [
@@ -546479,15 +550796,15 @@
"testharness"
],
"dom/events/Event-constructors.html": [
- "8a9b15eef1901d48829577b1294fbd1825448eb9",
+ "6935abeaacf5e36fbfc7dc20fba476cecbc5d961",
"testharness"
],
"dom/events/Event-defaultPrevented-after-dispatch.html": [
- "d0d6e4cac50bd4a0ab1a39e0873b4c7d0bbb45b3",
+ "5cea7306112505596226962dc15e3071f28cf9c2",
"testharness"
],
"dom/events/Event-defaultPrevented.html": [
- "47a15a9120d9612d522641f723cffb31aa0a8b58",
+ "cfd5d4815a12d59a212b7948bb58c6ce854afcc1",
"testharness"
],
"dom/events/Event-dispatch-bubble-canceled.html": [
@@ -546503,11 +550820,11 @@
"testharness"
],
"dom/events/Event-dispatch-click.html": [
- "e76875443d33790f017e1ee6163f5ffe200b2b78",
+ "8379a7b827cdeb96c2dfad620abc8cdd5c28258b",
"testharness"
],
"dom/events/Event-dispatch-detached-click.html": [
- "b7d9b1ed68a2dbbddeb1181ffa771e8b676333d9",
+ "3e381d859536b2401181d085068a592ff8b66b91",
"testharness"
],
"dom/events/Event-dispatch-handlers-changed.html": [
@@ -546531,7 +550848,7 @@
"testharness"
],
"dom/events/Event-dispatch-other-document.html": [
- "7fd30b3801ba4d8c574df9f25eb3260e206fa951",
+ "b359a2eaf23313fb566c788c2649790cf5c7ab41",
"testharness"
],
"dom/events/Event-dispatch-propagation-stopped.html": [
@@ -546563,13 +550880,17 @@
"testharness"
],
"dom/events/Event-initEvent.html": [
- "a01aa825e0905a0efc3afe9bc3015d448e9618f1",
+ "2fa55ddfd906a7cbc5e3e23419b6bf7fd3ca9158",
"testharness"
],
"dom/events/Event-propagation.html": [
"43ec5c9e681c20864a932635889e05969fd7b8f1",
"testharness"
],
+ "dom/events/Event-returnValue.html": [
+ "93aed4161f60e8f9a2348dd29659f93ac7bd087f",
+ "testharness"
+ ],
"dom/events/Event-subclasses-constructors.html": [
"52382c89b67be3c3fbb8bccccb6f75a4aaa7975b",
"testharness"
@@ -546591,7 +550912,7 @@
"testharness"
],
"dom/events/EventListener-handleEvent.html": [
- "ab486987bcf7b723ff5abddcf972251413bbb1ac",
+ "14a81fd77a931116494a59b816c14fefc688db95",
"testharness"
],
"dom/events/EventListener-incumbent-global-1.sub.html": [
@@ -546631,7 +550952,7 @@
"testharness"
],
"dom/events/EventTarget-dispatchEvent-returnvalue.html": [
- "70fedeb118930fdc57292ce5f2bfe621f63c2563",
+ "9e138a0332fb1cea51af3be345ca00ef9299ec86",
"testharness"
],
"dom/events/EventTarget-dispatchEvent.html": [
@@ -546646,6 +550967,10 @@
"40ab5636653dfd105738ab38e7d22316132eb630",
"testharness"
],
+ "dom/events/event-global.worker.js": [
+ "084a6f752edee6578113035fece6d0eb85a2fdf7",
+ "testharness"
+ ],
"dom/events/relatedTarget.window.js": [
"0426d2ecae3f3562be175e4364353d979365ed1c",
"testharness"
@@ -546667,7 +550992,7 @@
"testharness"
],
"dom/lists/DOMTokenList-coverage-for-attributes.html": [
- "ef209cd9285ddaaaa1c09d3448607070332bedf7",
+ "d6cfd9d336f8933c0080126864bbb465bfff2ced",
"testharness"
],
"dom/lists/DOMTokenList-iteration.html": [
@@ -546767,11 +551092,11 @@
"testharness"
],
"dom/nodes/Document-Element-getElementsByTagName.js": [
- "df4c41917cd6bd047a11cea390fa075e6a01fe03",
+ "cd457938b1a4ef6c82dc992f739d5e142e90582c",
"support"
],
"dom/nodes/Document-Element-getElementsByTagNameNS.js": [
- "e34e5db66000a8aa51caa26b0725bd171ee4ceb5",
+ "4442c3a7aba3d1a9ead2a08d312dd221c0bade90",
"support"
],
"dom/nodes/Document-URL.sub.html": [
@@ -547126,6 +551451,10 @@
"622f70a9123e23fb28339b98b24d95fa54def236",
"testharness"
],
+ "dom/nodes/Document-getElementsByClassName.html": [
+ "9379a41650aef0a9a83dd1551b78326537c35b15",
+ "testharness"
+ ],
"dom/nodes/Document-getElementsByTagName-xhtml.xhtml": [
"c2ed3b4aa2f3dbdf979f31232120c929b472a7d8",
"testharness"
@@ -547263,7 +551592,7 @@
"testharness"
],
"dom/nodes/Element-getElementsByClassName.html": [
- "ca63b57d7c11907c316f4c6bf95ea0b007370cfb",
+ "9054ea6a532ce3478667ddca98f6d067705ff774",
"testharness"
],
"dom/nodes/Element-getElementsByTagName-change-document-HTMLNess-iframe.xml": [
@@ -547407,11 +551736,11 @@
"testharness"
],
"dom/nodes/Node-childNodes.html": [
- "29ae8fe6e50a9080aea5710ff96b253d6b4a77e0",
+ "56c9c134e67d130575cd0c76a0e801918360bc6b",
"testharness"
],
"dom/nodes/Node-cloneNode.html": [
- "d4ab5a700e36fa6b8c26ffc6703d2a9020b5336e",
+ "379f329130dfe4a56794c954083d84a126458015",
"testharness"
],
"dom/nodes/Node-compareDocumentPosition.html": [
@@ -547518,6 +551847,10 @@
"b296c6d2500ff9c3a7d3ec6deefbbafd428cd2f2",
"testharness"
],
+ "dom/nodes/ParentNode-children.html": [
+ "d5fd7b0858ac6df0c7d3aedf78af16fc0e0dbdd5",
+ "testharness"
+ ],
"dom/nodes/ParentNode-prepend.html": [
"2b746fc8edbbce6c2ac50d5d8c4200bfd29035e9",
"testharness"
@@ -547891,7 +552224,7 @@
"testharness"
],
"dom/traversal/NodeIterator.html": [
- "eb86c6666fc081eb37edaca8f53adb72993faf8e",
+ "2eb75363c75bb8d6a15fafe61fd9ec402abcc276",
"testharness"
],
"dom/traversal/TreeWalker-acceptNode-filter.html": [
@@ -550275,7 +554608,7 @@
"testharness"
],
"encrypted-media/idlharness.https.html": [
- "49b0c8508501b73ba979f7c86ebcc40de0073caf",
+ "29f3c9774b623413c4127ea0e5a915e67f24cd24",
"testharness"
],
"encrypted-media/polyfill/cast-polyfill.js": [
@@ -550447,7 +554780,7 @@
"support"
],
"encrypted-media/scripts/requestmediakeysystemaccess.js": [
- "022356b6f89ddbda4c2341ff3411a725260c5494",
+ "ee68c7973d18ffd07c5b1b8bf4f4120bd63e3343",
"support"
],
"encrypted-media/scripts/reset-src-after-setmediakeys.js": [
@@ -551019,7 +555352,7 @@
"support"
],
"feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html": [
- "7a68af16b8cb8292185997cefdfeb3be295813a7",
+ "fdc37b6a3d16b35095a05b2857faeaf3d28c1feb",
"testharness"
],
"feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html.sub.headers": [
@@ -551199,7 +555532,7 @@
"support"
],
"feature-policy/resources/featurepolicy.js": [
- "87607362a81716400d9fee10958893e7a785f74e",
+ "a95ee6fc23217f5fc271763f5363a09b0ff04537",
"support"
],
"feature-policy/resources/picture-in-picture.js": [
@@ -551231,7 +555564,7 @@
"testharness"
],
"fetch/api/abort/general.any.js": [
- "a0b775a19b3046336c45289f5a87ea57e476f084",
+ "e7a735978af073066872021580ececcb7f465512",
"testharness"
],
"fetch/api/abort/serviceworker-intercepted.https.html": [
@@ -551274,6 +555607,10 @@
"1ecdcb478b65b258e79242ae17af79ba903db412",
"testharness"
],
+ "fetch/api/basic/mediasource.window.js": [
+ "5e2e35f820982002b967d7444507a2bfc0d3aa34",
+ "testharness"
+ ],
"fetch/api/basic/mode-no-cors-worker.html": [
"39992b8abf3ab30182dfbaa5816cc154a22ae0ad",
"testharness"
@@ -551335,7 +555672,7 @@
"support"
],
"fetch/api/basic/scheme-about.any.js": [
- "5e4ce2650ed422ae032f27d8aa1fb6f2b6fe7298",
+ "68b11deaa95a691a8e0c76bdc9b7a07b5dea9868",
"testharness"
],
"fetch/api/basic/scheme-blob-worker.html": [
@@ -551475,11 +555812,11 @@
"testharness"
],
"fetch/api/headers/header-values-normalize.html": [
- "889c328c2677763c352ec9aa0264218e01a523d4",
+ "14c2700ac0ed8bd0f086eceb14fd1e1536ae1e3a",
"testharness"
],
"fetch/api/headers/header-values.html": [
- "c360fd3d220fc13b35e5858dd9c7ddb49256ae72",
+ "ef067a80fb2fb89437e194ddbf5dc18741dca4e6",
"testharness"
],
"fetch/api/headers/headers-basic.html": [
@@ -551699,7 +556036,7 @@
"testharness"
],
"fetch/api/redirect/redirect-mode.js": [
- "d5aa056ebb91e7d57ffc3cf801c9e70f0b58d3ab",
+ "8553fa7a2d2df7e4b14b6fdd9dedd5856645beb4",
"support"
],
"fetch/api/redirect/redirect-origin-worker.html": [
@@ -551747,7 +556084,7 @@
"testharness"
],
"fetch/api/request/destination/fetch-destination-no-load-event.https.html": [
- "df03c7ad35e9fcae0287c57d9fd18f741a35833c",
+ "343618faf06d5809b0f782191566b36037277c31",
"testharness"
],
"fetch/api/request/destination/fetch-destination-worker.https.html": [
@@ -551807,7 +556144,7 @@
"support"
],
"fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js": [
- "26aedd2a95b90728af7aaa3dc9c5d11153343a7e",
+ "894f421753d61685faec672219964b599c7016f8",
"support"
],
"fetch/api/request/destination/resources/fetch-destination-worker.js": [
@@ -551903,11 +556240,11 @@
"testharness"
],
"fetch/api/request/request-init-002.html": [
- "e6647394acca551e354b27c16013ef713c8ba64e",
+ "3a0e29dacdea8256a57293f8256c881d307cd4f6",
"testharness"
],
"fetch/api/request/request-init-003.sub.html": [
- "f3084c91090e9c86c5586e947e63baf4990b582e",
+ "98e47b378d13b9b94601eb7c6035c457d53151ca",
"testharness"
],
"fetch/api/request/request-keepalive-quota.html": [
@@ -551919,7 +556256,7 @@
"testharness"
],
"fetch/api/request/request-structure.html": [
- "cc2471d809fcf7842c38762614c656bb45bb0fc7",
+ "b01d5ae0d56c22d2b86e0efd2cf64ac938770b11",
"testharness"
],
"fetch/api/request/request-type-attribute-historical.html": [
@@ -551954,6 +556291,14 @@
"beeda08c43c04dcef5c8d0f4f5d4f2c661bbee57",
"support"
],
+ "fetch/api/resources/cors-top.txt": [
+ "af2c7b4ca07ae6c74d261bc745e174df8ab3ffef",
+ "support"
+ ],
+ "fetch/api/resources/cors-top.txt.headers": [
+ "90d51a5e46cc58404dd5ec1e9e4e10934a6c0707",
+ "support"
+ ],
"fetch/api/resources/data.json": [
"6418064de426ecf8f0e508c751e60a0079ba044d",
"support"
@@ -552118,6 +556463,14 @@
"aba9a9168c083a18a85336948c1ba72ca827562f",
"testharness"
],
+ "fetch/content-encoding/bad-gzip-body.any.js": [
+ "e44dd96e3b44815ff44551b6682ed6640f905928",
+ "testharness"
+ ],
+ "fetch/content-encoding/resources/bad-gzip-body.py": [
+ "b6053e53d641cd7f6575096cbf6854c52be82d20",
+ "support"
+ ],
"fetch/corb/README.md": [
"7f3ebd888c16f457c7f137362cff620ae2cc82b3",
"support"
@@ -552279,7 +556632,7 @@
"testharness"
],
"fetch/data-urls/resources/base64.json": [
- "8079b52c59420f924df9dfb7d99d1ac49265a315",
+ "6d3d2983e6e3d8e91ec7dfcc1f0f16e1d78383b7",
"support"
],
"fetch/data-urls/resources/data-urls.json": [
@@ -552659,7 +557012,7 @@
"support"
],
"fonts/README.md": [
- "eb192c5fe03811a1b69578c92bf77d8abab89f29",
+ "7267d3c356ff8e59a1dc71cf3c11f3eeafa318bf",
"support"
],
"fonts/Revalia.woff": [
@@ -553287,7 +557640,7 @@
"manual"
],
"gamepad/idlharness.html": [
- "302f0796746f252a1a851d306d7e96cf86d7d402",
+ "acf9bec9b03479458c4b8b17a1d4ef9f87d15d7b",
"testharness"
],
"gamepad/timestamp-manual.html": [
@@ -553427,7 +557780,7 @@
"support"
],
"geolocation-sensor/idlharness.https.html": [
- "8e22460ccb5e31bdcf9c9d3fc135abc55345e7ab",
+ "38c75b8946de5be961435045007b8af9a4627cd2",
"testharness"
],
"graphics-aam/OWNERS": [
@@ -553507,7 +557860,7 @@
"support"
],
"gyroscope/idlharness.https.html": [
- "c6c627cc2e250664e174edf90aa9b402ea5c0500",
+ "8b9b8fcdc6d33fb20c174b67306a182bdbb707fd",
"testharness"
],
"hr-time/OWNERS": [
@@ -553519,7 +557872,7 @@
"testharness"
],
"hr-time/idlharness.html": [
- "579176cad14656ca5cdc616dd1323dc38a5b62ba",
+ "17353579d4224ac08fd90453fd065acee56d7621",
"testharness"
],
"hr-time/monotonic-clock.any.js": [
@@ -554607,7 +558960,7 @@
"support"
],
"html/browsers/browsing-the-web/unloading-documents/unload/007.html": [
- "bfb39279cb1e49176f4c77e0253dd92642f53f34",
+ "ac12d25b792d284b377e889565351f626df7627e",
"testharness"
],
"html/browsers/browsing-the-web/unloading-documents/unload/008-1.html": [
@@ -555358,7 +559711,7 @@
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
- "html/browsers/offline/appcache/workers/appcache-worker.html": [
+ "html/browsers/offline/appcache/workers/appcache-worker.https.html": [
"d4dc559a600b1d197e7b31f960b396da3faa4e42",
"testharness"
],
@@ -555398,7 +559751,7 @@
"69e5b07d754512fc91a1da7500ede3986a1587d4",
"manual"
],
- "html/browsers/offline/application-cache-api/api_status_idle.html": [
+ "html/browsers/offline/application-cache-api/api_status_idle.https.html": [
"b93f97a03166e627a13acf64a3a540501f375c2e",
"testharness"
],
@@ -555406,7 +559759,7 @@
"deb510a40b8a8ec9f2bc51ddaf4775123d1fdd5e",
"manual"
],
- "html/browsers/offline/application-cache-api/api_status_uncached.html": [
+ "html/browsers/offline/application-cache-api/api_status_uncached.https.html": [
"52685e57f8b19694baae135c5adc9f5385d23ead",
"testharness"
],
@@ -555418,27 +559771,31 @@
"dcb706b598132b1b216a066f279e9aef5fa568ca",
"manual"
],
- "html/browsers/offline/application-cache-api/api_swapcache_error.html": [
+ "html/browsers/offline/application-cache-api/api_swapcache_error.https.html": [
"43bd16e925b002e4bc562326b4d2fc00aeb3b933",
"testharness"
],
- "html/browsers/offline/application-cache-api/api_update.html": [
+ "html/browsers/offline/application-cache-api/api_update.https.html": [
"99e4b5d9ebec73a932fe522aceece7fb3b94ef26",
"testharness"
],
- "html/browsers/offline/application-cache-api/api_update_error.html": [
+ "html/browsers/offline/application-cache-api/api_update_error.https.html": [
"a08540b1a71a7512a8b9cc2b0af28fd5c64bfe25",
"testharness"
],
+ "html/browsers/offline/application-cache-api/secure_context.html": [
+ "fd1eea1cc64dcc5d816545ac3420351d5e8cb317",
+ "testharness"
+ ],
"html/browsers/offline/browser-state/.gitkeep": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
- "html/browsers/offline/browser-state/navigator_online_event-manual.html": [
+ "html/browsers/offline/browser-state/navigator_online_event-manual.https.html": [
"6ad5311783547501b80d05eea9b7a414348b151a",
"manual"
],
- "html/browsers/offline/browser-state/navigator_online_online.html": [
+ "html/browsers/offline/browser-state/navigator_online_online.https.html": [
"a06d993d34908fb332aca34a3a2002a917db9ee5",
"testharness"
],
@@ -555470,11 +559827,11 @@
"c63851b0649b98d8aa06fd82934ca8356ffa13f0",
"support"
],
- "html/browsers/offline/introduction-4/event_cached.html": [
+ "html/browsers/offline/introduction-4/event_cached.https.html": [
"5bb7aeb2bdc2223966fc507feb1abbee6d3b8aa9",
"testharness"
],
- "html/browsers/offline/introduction-4/event_checking.html": [
+ "html/browsers/offline/introduction-4/event_checking.https.html": [
"c54edd9e042e00ee5d9929c54748e2eb55cdfabf",
"testharness"
],
@@ -555486,7 +559843,7 @@
"a8fa81ea83fe33040e5c61d956fd8286b0ed8c4e",
"manual"
],
- "html/browsers/offline/introduction-4/event_noupdate.html": [
+ "html/browsers/offline/introduction-4/event_noupdate.https.html": [
"2f93ca32a46957612008705bdea4a63c04e73c17",
"testharness"
],
@@ -555494,7 +559851,7 @@
"66767643eec64b39c5eeee8557ef71893be42ed4",
"manual"
],
- "html/browsers/offline/introduction-4/event_progress.html": [
+ "html/browsers/offline/introduction-4/event_progress.https.html": [
"1558fa802305fe5238fac58f47203f901805ea53",
"testharness"
],
@@ -555506,23 +559863,23 @@
"ce0d28bb7c3689439e8b4d46484214ad8b2f811e",
"manual"
],
- "html/browsers/offline/manifest_main_empty-manual.html": [
+ "html/browsers/offline/manifest_main_empty-manual.https.html": [
"92ec1cd83c5a9509d19763f33720aa256e199ce2",
"manual"
],
- "html/browsers/offline/manifest_notchanged_online-manual.html": [
+ "html/browsers/offline/manifest_notchanged_online-manual.https.html": [
"f3228a9349a536ece39789a6625eb2d53444181a",
"manual"
],
- "html/browsers/offline/manifest_section_empty-manual.html": [
+ "html/browsers/offline/manifest_section_empty-manual.https.html": [
"da1aff7c25acc12be27193a52b5c173e2ddcf87b",
"manual"
],
- "html/browsers/offline/manifest_section_many-manual.html": [
+ "html/browsers/offline/manifest_section_many-manual.https.html": [
"54c51d8c86cc5378ebde985570dca89c20a24fa0",
"manual"
],
- "html/browsers/offline/manifest_url_check.html": [
+ "html/browsers/offline/manifest_url_check.https.https.html": [
"0959d9811748aa674d4863bd31a5cca2d2db0d15",
"testharness"
],
@@ -555534,7 +559891,7 @@
"f844a4d122bf6a46e2ccd4725483a72f8ebb9f42",
"support"
],
- "html/browsers/offline/no-appcache-in-shared-workers-historical.html": [
+ "html/browsers/offline/no-appcache-in-shared-workers-historical.https.html": [
"2c48e76225b084b3a13b7d9f52c95a98463e4bee",
"testharness"
],
@@ -555582,11 +559939,11 @@
"302b651285dd9e4367a90ce48070a3854ad3d0a2",
"support"
],
- "html/browsers/offline/section_network_offline-manual.html": [
+ "html/browsers/offline/section_network_offline-manual.https.html": [
"e63dc04a5b870d923689cc892168f0cd22b72405",
"manual"
],
- "html/browsers/offline/section_network_online-manual.html": [
+ "html/browsers/offline/section_network_online-manual.https.html": [
"6a403d69ed90abeea5a4c61f6f09778224a5c184",
"manual"
],
@@ -555986,8 +560343,8 @@
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
- "html/browsers/the-window-object/security-window/window-security.html": [
- "a590848d52c2ed7d66e9889957d58828566717c1",
+ "html/browsers/the-window-object/security-window/window-security.https.html": [
+ "16f41760b88216c36fbdfba95d249cf99f33b8a3",
"testharness"
],
"html/browsers/the-window-object/support/noopener-target.html": [
@@ -556042,7 +560399,7 @@
"2e20bfcd1dfe9bee00a9747b87cdaf42004d6415",
"testharness"
],
- "html/browsers/the-window-object/window-properties.html": [
+ "html/browsers/the-window-object/window-properties.https.html": [
"ee0ade0a8de422597c362d15cf4a9dd446e4af00",
"testharness"
],
@@ -556443,11 +560800,11 @@
"support"
],
"html/dom/documents/dom-tree-accessors/document.embeds-document.plugins-01.html": [
- "ef1b94e91aa27775e28a7ed47af5e2da5121a1d9",
+ "d5eb89e2511e7660650823d3f1aa54897dbc09ea",
"testharness"
],
"html/dom/documents/dom-tree-accessors/document.forms.html": [
- "49f2c03f580ce51aa409699877d712163b91a086",
+ "c639061fe9234c8ca3180c2d5a63d4aa144925d8",
"testharness"
],
"html/dom/documents/dom-tree-accessors/document.getElementsByClassName-same.html": [
@@ -556474,6 +560831,10 @@
"413e146cd4f509834736b60ad14613ff770714d1",
"testharness"
],
+ "html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html": [
+ "8df11ad97aa6b127afe9bc5272b090fb022c2f8e",
+ "testharness"
+ ],
"html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-namespace-xhtml.xhtml": [
"f3c4f1f114a40f9705b6a38948a10717a2867ba4",
"testharness"
@@ -556519,7 +560880,15 @@
"testharness"
],
"html/dom/documents/dom-tree-accessors/document.images.html": [
- "a56a1a40de89b2da44f52136dc6157809a165674",
+ "83007edc65b4eeeb362c7989c90f58f045392efc",
+ "testharness"
+ ],
+ "html/dom/documents/dom-tree-accessors/document.links.html": [
+ "9f1e7703207c5505b269e1a74332697f707aeda5",
+ "testharness"
+ ],
+ "html/dom/documents/dom-tree-accessors/document.scripts.html": [
+ "bd87c79ce737c13c0480947f69b1741e88042330",
"testharness"
],
"html/dom/documents/dom-tree-accessors/document.title-01.html": [
@@ -557098,7 +561467,7 @@
"1c813722dd68b1a13348aa8071d99cf358ab9eca",
"testharness"
],
- "html/dom/dynamic-markup-insertion/opening-the-input-stream/009.html": [
+ "html/dom/dynamic-markup-insertion/opening-the-input-stream/009.https.html": [
"02278f0ed00b2392afcbcacd56ddd750b7204241",
"testharness"
],
@@ -557178,6 +561547,14 @@
"a2a5acc9dfe53c7482eeaa4be3a4819238f8e120",
"testharness"
],
+ "html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext-subframe.txt": [
+ "8d06cea05d408d70c59b1dbc5df3bda374d869a4",
+ "support"
+ ],
+ "html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext.window.js": [
+ "1f440ff93300a0ab715982feb067dd3162c8fce9",
+ "testharness"
+ ],
"html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument.window.js": [
"0f0020e1d7d8050892ef146d687178cfe8eedcd2",
"testharness"
@@ -558022,8 +562399,8 @@
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
- "html/dom/interfaces.html": [
- "c937f2d908ecfae269b95ade6c830414acf0a005",
+ "html/dom/interfaces.https.html": [
+ "80050746d7869d52bfe7926fa259300ce05db79e",
"testharness"
],
"html/dom/interfaces.worker.js": [
@@ -562086,13 +566463,13 @@
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
- "html/editing/focus/focus-01-manual.html": [
- "de1a12925eabf37f14016bf48dd16c55732f87dc",
- "manual"
+ "html/editing/focus/focus-01.html": [
+ "c56d32acddaf11643f61e40dafc3f75ba18dbda6",
+ "testharness"
],
- "html/editing/focus/focus-02-manual.html": [
- "adbca2e8e3cdaa58c33d452cf153fd70013c9f4b",
- "manual"
+ "html/editing/focus/focus-02.html": [
+ "c92495d043403d6b480d27f3ce8925f52ed3a856",
+ "testharness"
],
"html/editing/focus/focus-management/.gitkeep": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
@@ -562126,21 +566503,21 @@
"ce71f8ce99dab96131be4e7850bd1aa29500f4fc",
"testharness"
],
- "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative-manual.html": [
- "ebd6be993d35f3b33b9b88a6ea25a9a643ae1a6f",
- "manual"
+ "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative.html": [
+ "2fbfb129b2d6761337ea70762da79bd67949e4cf",
+ "testharness"
],
- "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order-manual.html": [
- "387d251cd78e58058824a443df1bf48ff3d29842",
- "manual"
+ "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order.html": [
+ "8371b48d1a4d53833af585f044d8ea4964485a60",
+ "testharness"
],
- "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive-manual.html": [
- "da6bceef7dd10c11bc424e1adf6db6e0d4a2e83e",
- "manual"
+ "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive.html": [
+ "82b84014241726ba38977a1efc7f09c2fdc6b725",
+ "testharness"
],
- "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero-manual.html": [
- "aed703113e44497f460012b955d8dda598acf57f",
- "manual"
+ "html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero.html": [
+ "162f0678fe4eb9a694d8fd83138309c5ec51e964",
+ "testharness"
],
"html/editing/focus/tabindex-focus-flag.html": [
"ec7110ae00a54dfa39027ada9152647570cb86bc",
@@ -563970,6 +568347,10 @@
"628527090c78d90d831cb80ea8eee7ffa66722f5",
"testharness"
],
+ "html/semantics/document-metadata/the-link-element/link-rel-attribute.html": [
+ "45824076fb8696f775582c7bcfab093ebfb3055c",
+ "testharness"
+ ],
"html/semantics/document-metadata/the-link-element/link-rellist.html": [
"e18655ffb90bb039c50b262d145d63ca5efc22ca",
"testharness"
@@ -563991,7 +568372,11 @@
"support"
],
"html/semantics/document-metadata/the-link-element/resources/link-load-error-events.sub.js": [
- "0c45045a1db6958751dfe112aa3234ca936263e7",
+ "1c5d8fe0b94b033b8e6ee7bcf54bd35ba2febd36",
+ "support"
+ ],
+ "html/semantics/document-metadata/the-link-element/resources/link-rel-attribute.css": [
+ "7439a846bece4561d9b17494aaae4c7b2aef6a2f",
"support"
],
"html/semantics/document-metadata/the-link-element/resources/stylesheet.css": [
@@ -566502,6 +570887,10 @@
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
+ "html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html": [
+ "3d75c8c998b3f98f2023311826dcd1d4c21d3361",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-embed-element/embed-dimension.html": [
"6f8443aada05e8ab3cbb81d81d7053a81fe0dcfe",
"testharness"
@@ -566554,6 +570943,10 @@
"4d8505e600b470d8804edd354cb6c2e85e8a1701",
"testharness"
],
+ "html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html": [
+ "c77b4fd64e831e7dff8def0d5c0c851f2a0bc235",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-iframe-element/.gitkeep": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
@@ -566586,6 +570979,10 @@
"30f590a975529a8975bea659be46192c755f2bac",
"testharness"
],
+ "html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html": [
+ "87392a410d9ce76febe6ea3f5b2e15568e457b1a",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-iframe-element/historical.html": [
"cf6e961b764d5c6e7e1289f3db988fe94efaf030",
"testharness"
@@ -567171,11 +571568,11 @@
"support"
],
"html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html": [
- "f1168816d51a74b2dc93cc64a123f1c13e3fb00d",
+ "22040d8543a29c1e4f1708017096a5f9de478549",
"testharness"
],
"html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html": [
- "686615e33fbfcc9e92c706a92f7e572978c833d0",
+ "aa99ece8022ddd68be6b8350a51c77647a0a19f7",
"support"
],
"html/semantics/embedded-content/the-img-element/srcset/common.js": [
@@ -567218,6 +571615,10 @@
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
+ "html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html": [
+ "f9f22673579147c7591d5f71467d6655140702b9",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-object-element/historical.html": [
"3efc9442872199305ef71c7c29331ae465fb8395",
"testharness"
@@ -568807,7 +573208,7 @@
"support"
],
"html/semantics/rellist-feature-detection.html": [
- "382371297d71a43de804453a6f40b9d63e08ee3f",
+ "be3d2ceedd65adc2a7ff496ee5980492c42a6b94",
"testharness"
],
"html/semantics/scripting-1/.gitkeep": [
@@ -569834,12 +574235,12 @@
"e22e6f200162000f043d114c89def6667097d13d",
"testharness"
],
- "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html": [
- "0295db34d953b716151726188ac467a948f0d955",
+ "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html": [
+ "68b065c3462e663b10d09e140a733e01271cf834",
"testharness"
],
- "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html": [
- "cfc2375f7a8abe67eae4213b2f0c5224ba25337d",
+ "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html": [
+ "cbf05c10d041abe6b3769b474e0be58f4b56e627",
"testharness"
],
"html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-module.html": [
@@ -569854,6 +574255,10 @@
"93f2cc8f3e88e0cbf508acd64f9a28bdcaff25b0",
"testharness"
],
+ "html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html": [
+ "b579ff5a32f582bc6baf42bfff08d36dafc94c8f",
+ "testharness"
+ ],
"html/semantics/scripting-1/the-script-element/module/error-and-slow-dependency.html": [
"32455a1418d94fa68368bae3b1c0291204f6b4e3",
"testharness"
@@ -573082,12 +577487,28 @@
"afb1a08faa639bdd1ee4387069d76803c5e38d54",
"testharness"
],
+ "infrastructure/testdriver/send_keys.html": [
+ "f2ede647416d150d7cd3720719f386b9f4d5fb6c",
+ "testharness"
+ ],
+ "infrastructure/webdriver/tests/conftest.py": [
+ "6d9586273b0fd6c4bc1cc697402bb86af58f4d8c",
+ "support"
+ ],
+ "infrastructure/webdriver/tests/test_load_file.py": [
+ "c11d6b875af47f6134c98a23a7d2ce4fe4baa8c2",
+ "wdspec"
+ ],
+ "innerText/OWNERS": [
+ "3a52efa37cb05c353bb8ce78146c42db6a238b74",
+ "support"
+ ],
"innerText/getter-tests.js": [
- "e5ec1c1fd4777a1a1c25720047a955ec04c0d014",
+ "42f3e48763297d3360c1074a7c2b706a6f539d37",
"support"
],
"innerText/getter.html": [
- "28fc321d84fac1173da328bdfb65b052000fcb4d",
+ "bfcd91955e1645278f7825d472bcce03dbc8f773",
"testharness"
],
"innerText/multiple-text-nodes.window.js": [
@@ -573126,8 +577547,12 @@
"f585014db144083ee2f70f6fd65f78bf2e289093",
"manual"
],
+ "interfaces/BackgroundSync.idl": [
+ "f4812cb04b153d5f39e12e373b184c04d29b00fd",
+ "support"
+ ],
"interfaces/FileAPI.idl": [
- "2a12d457a38d00109c0f6423bf3e3f16fcc700c9",
+ "3fb06078e603a6010c2eb0fb45715c8cbda35678",
"support"
],
"interfaces/IndexedDB.idl": [
@@ -573138,6 +577563,10 @@
"389275a34cb76282af66797b3cd06b72a3b9ddbe",
"support"
],
+ "interfaces/ServiceWorker.idl": [
+ "7884feabcb4c9d0a447cccfa2359e3c45eef5455",
+ "support"
+ ],
"interfaces/WebCryptoAPI.idl": [
"1fa169a6badb1c21608f1e1a68075939e913603f",
"support"
@@ -573154,10 +577583,18 @@
"f2c8fc84af7bf785ba42f1398181e2ab08c3826a",
"support"
],
+ "interfaces/budget-api.idl": [
+ "99f4eacad964a3ca3bcc034b48a2f4c4a2bd6f72",
+ "support"
+ ],
"interfaces/clipboard-apis.idl": [
"66b014c6a2ba5cd8e0fbc83081d4c16ac4d46d39",
"support"
],
+ "interfaces/compat.idl": [
+ "5169148beaeb622da36a824a892421e86bf36c15",
+ "support"
+ ],
"interfaces/console.idl": [
"43ced34008dc73d05c79140d8dc33c60e2d9df3a",
"support"
@@ -573179,7 +577616,7 @@
"support"
],
"interfaces/cssom.idl": [
- "fbd624297dbfaa5e0fc2144b701c38eda41537ac",
+ "65a8a0ef05cce0b09bf685dedab3540a7593f5a4",
"support"
],
"interfaces/dedicated-workers.idl": [
@@ -573187,7 +577624,7 @@
"support"
],
"interfaces/dom.idl": [
- "f5881beeeaa7e990e9b889182989d6d0fb0ba8a3",
+ "86ea69e6432ac3e4172129591f4aeac69e336a82",
"support"
],
"interfaces/encoding.idl": [
@@ -573206,6 +577643,10 @@
"cba4a18b5a6b69c467067dc4a7ac7449f39be6a1",
"support"
],
+ "interfaces/filter-effects.idl": [
+ "901c6d05e91de736ae1d627eca584e5c024786fa",
+ "support"
+ ],
"interfaces/fullscreen.idl": [
"fda57b55aabdc54d674851851451c6c69c514ed1",
"support"
@@ -573231,7 +577672,7 @@
"support"
],
"interfaces/html.idl": [
- "7b9b8b054ad2848e7c5983e46222fbdf8b3b8da8",
+ "297268c7debe3d8ee741c4b1abd86a1e64f65e03",
"support"
],
"interfaces/keyboard-lock.idl": [
@@ -573307,7 +577748,7 @@
"support"
],
"interfaces/web-nfc.idl": [
- "105e771bdd9587f029091a5ed590187ed6e86e2a",
+ "c81f70e3dd5a703ce38211227017a56a6262cadf",
"support"
],
"interfaces/web-share.idl": [
@@ -573342,6 +577783,10 @@
"00b3847513bf63b69f94a75662f31bc71f16b597",
"support"
],
+ "intersection-observer/OWNERS": [
+ "790de8196097ee91b4e5c4ec394d734a53a03392",
+ "support"
+ ],
"intersection-observer/bounding-box.html": [
"a3ac1b70ba26234b7c968055171e652f3a8a14d8",
"testharness"
@@ -573439,7 +577884,7 @@
"testharness"
],
"intersection-observer/shadow-content.html": [
- "11681640d5c8b2c62229ed5a717172f917d75ba4",
+ "0d1d4ccf6c2fce47a6470dbe21a382828dcaa6c4",
"testharness"
],
"intersection-observer/timestamp.html": [
@@ -573458,6 +577903,10 @@
"f3e1fbeb1a912be412724cec47a6aa981664ff7d",
"testharness"
],
+ "js/OWNERS": [
+ "2f2ebade885163422acf865163165b3f4730566b",
+ "support"
+ ],
"js/behaviours/SetPrototypeOf-window.html": [
"92efe1a4f3910a32097fb3cbeef0019d82a0e78a",
"testharness"
@@ -573531,15 +577980,15 @@
"testharness"
],
"keyboard-lock/navigator-keyboard-lock-two-parallel-requests.https.html": [
- "b594f75f5b0c89c2a5f2b934d170b8ff81ad9839",
+ "8d0517d7f78890aead8376dfa314220180d48b3e",
"testharness"
],
"keyboard-lock/navigator-keyboard-lock-two-sequential-requests.https.html": [
- "8990cc5772cdba1281c0a05c6a3c2a80b08b810e",
+ "3bb9f7f6103efd0d58d394e65071d3aedb02035d",
"testharness"
],
"keyboard-lock/navigator-keyboard-lock.https.html": [
- "f95f8408986d73501ec7cce09106a8536bd891b4",
+ "6162fc3da9b7b104453e24b5da10d816a1a9425e",
"testharness"
],
"keyboard-lock/navigator-keyboard-unlock.https.html": [
@@ -573659,7 +578108,7 @@
"support"
],
"magnetometer/idlharness.https.html": [
- "2a08a46bc2fa6e5b75c3c05c0396b48280075892",
+ "d5ba7fe95ed2740eec56757dfe3b0a900f3ea4c4",
"testharness"
],
"mathml/OWNERS": [
@@ -574699,7 +579148,7 @@
"support"
],
"mediacapture-record/idlharness.html": [
- "d96f50512a47fed449151b716d838ac10d23f47f",
+ "99adc299359aad8cdd4f08ba920dde780bd06063",
"testharness"
],
"mediacapture-streams/GUM-api.https.html": [
@@ -574731,11 +579180,11 @@
"testharness"
],
"mediacapture-streams/MediaDevices-IDL-all.html": [
- "2d9b604f3039fd5bebbe0491f0bb31d5b0b47722",
+ "42f245551c0d64377f949efda4cfad4934323b48",
"testharness"
],
"mediacapture-streams/MediaDevices-IDL-enumerateDevices.html": [
- "8382c7e6be38bad808be950b14d80fe59513ff0d",
+ "cea6395d985eadd8340a4f3d64df2bb266a7f793",
"testharness"
],
"mediacapture-streams/MediaDevices-enumerateDevices.https.html": [
@@ -574746,9 +579195,9 @@
"a515deeec87c394b4a826b538df6dd0baa05cae6",
"testharness"
],
- "mediacapture-streams/MediaStream-MediaElement-preload-none.https.html": [
- "374f9942ebd05d866340981469ceb28bddf83727",
- "testharness"
+ "mediacapture-streams/MediaStream-MediaElement-preload-none-manual.https.html": [
+ "6f3e8911d8b0fc74519bf046567e079d22a2e50c",
+ "manual"
],
"mediacapture-streams/MediaStream-MediaElement-srcObject.https.html": [
"f2958c6965640ff9e9dc2c038a593bdd41c6759c",
@@ -574831,7 +579280,7 @@
"support"
],
"mediacapture-streams/historical.html": [
- "96a34ddfb393f19df98b2334a71e78b40e333e26",
+ "f30bde11122411931ad98ef49047bd3755047fda",
"testharness"
],
"mediasession/README.md": [
@@ -574851,7 +579300,7 @@
"testharness"
],
"mediasession/setactionhandler.html": [
- "70a1f9e81faa3dbbe320a71a008e4594a29878a8",
+ "ab3482a22dd713ce7c71ce4b5efeb3cb201e76e6",
"testharness"
],
"mimesniff/OWNERS": [
@@ -574887,7 +579336,7 @@
"support"
],
"mimesniff/mime-types/resources/mime-types.json": [
- "e036eb74e27d8f35c411bb4d29d0b0621778e882",
+ "b214e6025adc09d310f47eea34f2ea316f6132ec",
"support"
],
"mixed-content/OWNERS": [
@@ -576391,7 +580840,7 @@
"support"
],
"navigation-timing/nav2_idlharness.html": [
- "ffc5d6f4a11a4bf2ad72404fc62d88be1c45a5f5",
+ "935c963cbec9f000ea0564a0e0c4ce872da40ea8",
"testharness"
],
"navigation-timing/nav2_test_attributes_exist.html": [
@@ -576443,7 +580892,7 @@
"testharness"
],
"navigation-timing/nav2_test_redirect_server.html": [
- "fab304c2f896c156d3374073c8f870219f3e0246",
+ "788929e77d0f3979aeb5e05892ec069aeed6fb02",
"testharness"
],
"navigation-timing/nav2_test_redirect_xserver.html": [
@@ -582799,7 +587248,7 @@
"support"
],
"orientation-sensor/idlharness.https.html": [
- "05a95e835ce72800601fcd18007eaec0c05dc79a",
+ "1f94329cb330a1a904d409a6e158a5fe9f8dd709",
"testharness"
],
"page-visibility/OWNERS": [
@@ -582971,7 +587420,7 @@
"testharness"
],
"payment-handler/interfaces.https.any.js": [
- "66f067e3988546afc0796dcbc276b04b5a5615fc",
+ "4d1e2360e69d2c2f1664e73a79c1d893c6ee10fb",
"testharness"
],
"payment-handler/manifest.json": [
@@ -582994,6 +587443,18 @@
"be0cc9201508bb936dc87307b12ee7545020778b",
"support"
],
+ "payment-handler/same-object-attributes.https.html": [
+ "f958f6be0f76707271f5caff8767c72f4bb899de",
+ "testharness"
+ ],
+ "payment-handler/untrusted-event.https.html": [
+ "0de348d157bc45eaf54afffad257dfd72db0a468",
+ "testharness"
+ ],
+ "payment-handler/untrusted-event.js": [
+ "b46f1952420558f315241b048ebf68568c6f4fd6",
+ "support"
+ ],
"payment-method-basic-card/OWNERS": [
"ee0b02c59588d15b6efdb983c492ebbf50127e1c",
"support"
@@ -583115,7 +587576,7 @@
"manual"
],
"payment-request/change-shipping-option-select-last-manual.https.html": [
- "644f9b275f175c6297f4bd0e93f8039b7d202257",
+ "2f219eaf8287790fc73700b1cd92fd4fd1970aca",
"manual"
],
"payment-request/historical.https.html": [
@@ -583187,7 +587648,7 @@
"manual"
],
"payment-request/payment-request-show-method.https.html": [
- "676d99be4ce55ab42061921255657c3ab4e458ac",
+ "d11b121987240d9d2cb4a5f3f6814f83d45f52e6",
"testharness"
],
"payment-request/payment-response/complete-method-manual.https.html": [
@@ -583243,19 +587704,19 @@
"manual"
],
"payment-request/show-method-optional-promise-rejects-manual.https.html": [
- "a8dde7fa5b501688a51f23b330e4cd25273a6146",
+ "6d3d14e0c238ae83944625f4623c7a44ac0b4c46",
"manual"
],
"payment-request/show-method-optional-promise-resolves-manual.https.html": [
- "a19166fd1366f8510bec53b4e9fc1033a129c44b",
+ "ec7d847f9623fcafb0a74903dc2dcefbf0175755",
"manual"
],
"payment-request/show-method-postmessage-iframe.html": [
- "05167546e8763cb39873de4ca8f4e8e758ba0147",
+ "0a2746f8a46a55ba3c244db27092f3ae490db7c5",
"support"
],
"payment-request/show-method-postmessage-manual.https.html": [
- "e9ca854ea9e13e7b662f0fa66890832bb2f13b69",
+ "39aa1ef2cb62f122749f55373964315014e29dc7",
"manual"
],
"payment-request/updateWith-method-pmi-handling-manual.https.html": [
@@ -583387,7 +587848,7 @@
"manual"
],
"pointerevents/extension/idlharness.html": [
- "83ee5397ece0126d71c235cecb554b024e3515d1",
+ "1337bbb65f4748a7d5a076cbe73e4aa48a2a1eb8",
"testharness"
],
"pointerevents/extension/pointerevent_coalesced_events_attributes-manual.html": [
@@ -583398,12 +587859,32 @@
"11d5baa9206313270be6289205b002b623af85db",
"testharness"
],
+ "pointerevents/extension/pointerevent_touch-action-pan-down-css_touch-manual.html": [
+ "4743453e64f6d2006f7e4034a5e2e6729b2f3ff8",
+ "manual"
+ ],
+ "pointerevents/extension/pointerevent_touch-action-pan-left-css_touch-manual.html": [
+ "07c68a3e30fed012a6eb5a33e9548e516e4ea027",
+ "manual"
+ ],
+ "pointerevents/extension/pointerevent_touch-action-pan-right-css_touch-manual.html": [
+ "dd4ad4a8060ae08d3fdd013b299e5cc8ca0906bc",
+ "manual"
+ ],
+ "pointerevents/extension/pointerevent_touch-action-pan-up-css_touch-manual.html": [
+ "5470d896c20335be39b3276d4dc6a49b00923e25",
+ "manual"
+ ],
+ "pointerevents/extension/pointerevent_touch-action-verification.html": [
+ "f3188cc408b651f05ad946768c8233d0f7586b38",
+ "testharness"
+ ],
"pointerevents/html/pointerevent_drag_interaction-manual.html": [
"1eb570dbed48373f9e840b7694b774448b689879",
"manual"
],
"pointerevents/idlharness.html": [
- "7db1757e519a8ebb9123dd150f17bf5c6f23e311",
+ "5d54a0bb419e989db76a2d4333e73d9ccbce511b",
"testharness"
],
"pointerevents/pointerevent_attributes_hoverable_pointers-manual.html": [
@@ -583583,7 +588064,7 @@
"support"
],
"pointerevents/pointerevent_support.js": [
- "a804ecbe4c7d1723b2a7eaee11e3c869cd5f56a7",
+ "26b82a24b87a7995f697d080edc2869f163c0d80",
"support"
],
"pointerevents/pointerevent_suppress_compat_events_on_click-manual.html": [
@@ -583642,22 +588123,6 @@
"d60ccd5a174204dd5baf8ad1db690b1b67b969fe",
"manual"
],
- "pointerevents/pointerevent_touch-action-pan-down-css_touch-manual.html": [
- "e400167599193b73aca776bb49fa372094b560ec",
- "manual"
- ],
- "pointerevents/pointerevent_touch-action-pan-left-css_touch-manual.html": [
- "e940ad98c2e63c82ec2977e0bbc87364d24aaf88",
- "manual"
- ],
- "pointerevents/pointerevent_touch-action-pan-right-css_touch-manual.html": [
- "48ed6d4e7966fad84479eaf5990136154e31242c",
- "manual"
- ],
- "pointerevents/pointerevent_touch-action-pan-up-css_touch-manual.html": [
- "9f63a5efe3fe642ce6787fdb1bf9d68184d7ce96",
- "manual"
- ],
"pointerevents/pointerevent_touch-action-pan-x-css_touch-manual.html": [
"e3adda44b02879ead5681d0e1bb8fc6bc47e4f39",
"manual"
@@ -583691,7 +588156,7 @@
"manual"
],
"pointerevents/pointerevent_touch-action-verification.html": [
- "c2c952d562f601f2104014f6236368a7f6b84801",
+ "66e0cde3be274124cc2a015bbce59e8e42e5de69",
"testharness"
],
"pointerevents/pointerlock/pointerevent_movementxy-manual.html": [
@@ -591739,7 +596204,7 @@
"testharness"
],
"remote-playback/idlharness.html": [
- "70cfb1603b69e1daff48682cf41e746221158a55",
+ "5a780e9fcdc2215b4f5fb9d81347ef804ed88f71",
"testharness"
],
"remote-playback/watch-availability-initial-callback.html": [
@@ -591811,7 +596276,7 @@
"support"
],
"resize-observer/eventloop.html": [
- "f356e188c1a873c9058c17143463c8397ed33689",
+ "a508a8bd68ef64bd826f76cc6f0967d2a5f1d3e9",
"testharness"
],
"resize-observer/notify.html": [
@@ -591987,7 +596452,7 @@
"testharness"
],
"resource-timing/resources/TAOResponse.py": [
- "9e8051a2ff8fff72b36ed1cecb61f9e7bba29071",
+ "8d195488cb76f1c17da16d06893d5ebc65550465",
"support"
],
"resource-timing/resources/all_resource_types.htm": [
@@ -592427,7 +596892,7 @@
"testharness"
],
"server-timing/cross_origin.html": [
- "74333db517babacbb84bb20c91ccfc8b2627b934",
+ "661cf7f329590a89aa2644a102a10d1ba34feb75",
"testharness"
],
"server-timing/resources/blue.png": [
@@ -592447,7 +596912,7 @@
"support"
],
"server-timing/resources/parsing/0.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/0.js.sub.headers": [
@@ -592455,7 +596920,7 @@
"support"
],
"server-timing/resources/parsing/1.js": [
- "1a6924ba411a7f92aef048336bd117ece499f90a",
+ "db03fe36244bd2c07fc92720fd1d24825f9a4d11",
"support"
],
"server-timing/resources/parsing/1.js.sub.headers": [
@@ -592463,7 +596928,7 @@
"support"
],
"server-timing/resources/parsing/10.js": [
- "1a6924ba411a7f92aef048336bd117ece499f90a",
+ "db03fe36244bd2c07fc92720fd1d24825f9a4d11",
"support"
],
"server-timing/resources/parsing/10.js.sub.headers": [
@@ -592471,7 +596936,7 @@
"support"
],
"server-timing/resources/parsing/11.js": [
- "1a6924ba411a7f92aef048336bd117ece499f90a",
+ "db03fe36244bd2c07fc92720fd1d24825f9a4d11",
"support"
],
"server-timing/resources/parsing/11.js.sub.headers": [
@@ -592479,7 +596944,7 @@
"support"
],
"server-timing/resources/parsing/12.js": [
- "1c6ca0aa58035fba39cfe8284c04468787149469",
+ "aca5ff6a4ec3da6fcd8f537e75f189ab52396576",
"support"
],
"server-timing/resources/parsing/12.js.sub.headers": [
@@ -592487,7 +596952,7 @@
"support"
],
"server-timing/resources/parsing/13.js": [
- "266ee41ae7b440ab43e87a087d10fa2b1e193a8f",
+ "3e2173bd78dca0e60e6fee7ad9e893010195234e",
"support"
],
"server-timing/resources/parsing/13.js.sub.headers": [
@@ -592495,7 +596960,7 @@
"support"
],
"server-timing/resources/parsing/14.js": [
- "b45df4c8581d127f4738887a009611092e06fae9",
+ "2016e06fed61d3375251e0cb832bb1141cf62a2e",
"support"
],
"server-timing/resources/parsing/14.js.sub.headers": [
@@ -592503,7 +596968,7 @@
"support"
],
"server-timing/resources/parsing/15.js": [
- "57529824e71a124c2ff69e9153163de9f4c3433d",
+ "e3a2150ea44b2abb27b5640cd85bf299973dafcf",
"support"
],
"server-timing/resources/parsing/15.js.sub.headers": [
@@ -592511,7 +596976,7 @@
"support"
],
"server-timing/resources/parsing/16.js": [
- "8d82b5abff0bfc1884a350836cb27c8b124129bd",
+ "010f58074c2169b7cec8fcf175bd8168182ba7a0",
"support"
],
"server-timing/resources/parsing/16.js.sub.headers": [
@@ -592519,7 +596984,7 @@
"support"
],
"server-timing/resources/parsing/17.js": [
- "b45df4c8581d127f4738887a009611092e06fae9",
+ "2016e06fed61d3375251e0cb832bb1141cf62a2e",
"support"
],
"server-timing/resources/parsing/17.js.sub.headers": [
@@ -592527,7 +596992,7 @@
"support"
],
"server-timing/resources/parsing/18.js": [
- "e37a27e8de7cb0d7da20de4b4738f868321f4f7d",
+ "c818182cc29f9bbefa7b3ebd403b7b1520fee25d",
"support"
],
"server-timing/resources/parsing/18.js.sub.headers": [
@@ -592535,7 +597000,7 @@
"support"
],
"server-timing/resources/parsing/19.js": [
- "945c0786a390786f6bc648fb80ffe2da2c14c4b1",
+ "0d95ec03d3f26555f3063a0f41eb643e83a1ed0d",
"support"
],
"server-timing/resources/parsing/19.js.sub.headers": [
@@ -592543,7 +597008,7 @@
"support"
],
"server-timing/resources/parsing/2.js": [
- "1bc5932490ce45826ee11e124924c9588b3e8c4d",
+ "b40f75f2522ae8277f5c391472fe285a9b504a02",
"support"
],
"server-timing/resources/parsing/2.js.sub.headers": [
@@ -592551,7 +597016,7 @@
"support"
],
"server-timing/resources/parsing/20.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/20.js.sub.headers": [
@@ -592559,7 +597024,7 @@
"support"
],
"server-timing/resources/parsing/21.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/21.js.sub.headers": [
@@ -592567,7 +597032,7 @@
"support"
],
"server-timing/resources/parsing/22.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/22.js.sub.headers": [
@@ -592575,7 +597040,7 @@
"support"
],
"server-timing/resources/parsing/23.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/23.js.sub.headers": [
@@ -592583,7 +597048,7 @@
"support"
],
"server-timing/resources/parsing/24.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/24.js.sub.headers": [
@@ -592591,7 +597056,7 @@
"support"
],
"server-timing/resources/parsing/25.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/25.js.sub.headers": [
@@ -592599,7 +597064,7 @@
"support"
],
"server-timing/resources/parsing/26.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/26.js.sub.headers": [
@@ -592607,7 +597072,7 @@
"support"
],
"server-timing/resources/parsing/27.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/27.js.sub.headers": [
@@ -592615,7 +597080,7 @@
"support"
],
"server-timing/resources/parsing/28.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/28.js.sub.headers": [
@@ -592623,7 +597088,7 @@
"support"
],
"server-timing/resources/parsing/29.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/29.js.sub.headers": [
@@ -592631,7 +597096,7 @@
"support"
],
"server-timing/resources/parsing/3.js": [
- "1bc5932490ce45826ee11e124924c9588b3e8c4d",
+ "b40f75f2522ae8277f5c391472fe285a9b504a02",
"support"
],
"server-timing/resources/parsing/3.js.sub.headers": [
@@ -592639,7 +597104,7 @@
"support"
],
"server-timing/resources/parsing/30.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/30.js.sub.headers": [
@@ -592647,7 +597112,7 @@
"support"
],
"server-timing/resources/parsing/31.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/31.js.sub.headers": [
@@ -592655,7 +597120,7 @@
"support"
],
"server-timing/resources/parsing/32.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/32.js.sub.headers": [
@@ -592663,7 +597128,7 @@
"support"
],
"server-timing/resources/parsing/33.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/33.js.sub.headers": [
@@ -592671,7 +597136,7 @@
"support"
],
"server-timing/resources/parsing/34.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/34.js.sub.headers": [
@@ -592679,7 +597144,7 @@
"support"
],
"server-timing/resources/parsing/35.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/35.js.sub.headers": [
@@ -592687,7 +597152,7 @@
"support"
],
"server-timing/resources/parsing/36.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/36.js.sub.headers": [
@@ -592695,7 +597160,7 @@
"support"
],
"server-timing/resources/parsing/37.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/37.js.sub.headers": [
@@ -592703,7 +597168,7 @@
"support"
],
"server-timing/resources/parsing/38.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/38.js.sub.headers": [
@@ -592711,7 +597176,7 @@
"support"
],
"server-timing/resources/parsing/39.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/39.js.sub.headers": [
@@ -592719,7 +597184,7 @@
"support"
],
"server-timing/resources/parsing/4.js": [
- "b45df4c8581d127f4738887a009611092e06fae9",
+ "2016e06fed61d3375251e0cb832bb1141cf62a2e",
"support"
],
"server-timing/resources/parsing/4.js.sub.headers": [
@@ -592727,7 +597192,7 @@
"support"
],
"server-timing/resources/parsing/40.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/40.js.sub.headers": [
@@ -592735,7 +597200,7 @@
"support"
],
"server-timing/resources/parsing/41.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/41.js.sub.headers": [
@@ -592743,7 +597208,7 @@
"support"
],
"server-timing/resources/parsing/42.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/42.js.sub.headers": [
@@ -592751,7 +597216,7 @@
"support"
],
"server-timing/resources/parsing/43.js": [
- "dcf2d8477422cfa60c7eb5da68629925fcc653e2",
+ "26b6479e14f035125f95f6a979d65883e16c2755",
"support"
],
"server-timing/resources/parsing/43.js.sub.headers": [
@@ -592759,7 +597224,7 @@
"support"
],
"server-timing/resources/parsing/44.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/44.js.sub.headers": [
@@ -592767,7 +597232,7 @@
"support"
],
"server-timing/resources/parsing/45.js": [
- "72dcb467c3d7fb4a2491a0ba68b612a4033738f3",
+ "2d92b3d068a2be9688eb5897c12c852c58fbb684",
"support"
],
"server-timing/resources/parsing/45.js.sub.headers": [
@@ -592775,7 +597240,7 @@
"support"
],
"server-timing/resources/parsing/46.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/46.js.sub.headers": [
@@ -592783,7 +597248,7 @@
"support"
],
"server-timing/resources/parsing/47.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/47.js.sub.headers": [
@@ -592791,7 +597256,7 @@
"support"
],
"server-timing/resources/parsing/48.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/48.js.sub.headers": [
@@ -592799,7 +597264,7 @@
"support"
],
"server-timing/resources/parsing/49.js": [
- "6c2c1b45ab69ed8b1da28849accaa69a99d07340",
+ "d8de868c77f5926b438c4740c8f30e01bc6a714f",
"support"
],
"server-timing/resources/parsing/49.js.sub.headers": [
@@ -592807,7 +597272,7 @@
"support"
],
"server-timing/resources/parsing/5.js": [
- "b45df4c8581d127f4738887a009611092e06fae9",
+ "2016e06fed61d3375251e0cb832bb1141cf62a2e",
"support"
],
"server-timing/resources/parsing/5.js.sub.headers": [
@@ -592815,7 +597280,7 @@
"support"
],
"server-timing/resources/parsing/50.js": [
- "71068640ee55f176c283ce788237e26059c043c5",
+ "020df20a8afdf2d67ff37f017e400a90247f510e",
"support"
],
"server-timing/resources/parsing/50.js.sub.headers": [
@@ -592823,7 +597288,7 @@
"support"
],
"server-timing/resources/parsing/51.js": [
- "1c6ca0aa58035fba39cfe8284c04468787149469",
+ "aca5ff6a4ec3da6fcd8f537e75f189ab52396576",
"support"
],
"server-timing/resources/parsing/51.js.sub.headers": [
@@ -592831,7 +597296,7 @@
"support"
],
"server-timing/resources/parsing/52.js": [
- "d0a406b076d345dc36d1792781bd078fb9b65ef3",
+ "84e265d2e41da883a09eacc7c0448fb55068cfe2",
"support"
],
"server-timing/resources/parsing/52.js.sub.headers": [
@@ -592839,7 +597304,7 @@
"support"
],
"server-timing/resources/parsing/53.js": [
- "235f1ee6973489be765e8edec753b94c9f6d5773",
+ "0ab0b4d6a9b95a749e9292da467f0fb58a729012",
"support"
],
"server-timing/resources/parsing/53.js.sub.headers": [
@@ -592847,7 +597312,7 @@
"support"
],
"server-timing/resources/parsing/54.js": [
- "235f1ee6973489be765e8edec753b94c9f6d5773",
+ "0ab0b4d6a9b95a749e9292da467f0fb58a729012",
"support"
],
"server-timing/resources/parsing/54.js.sub.headers": [
@@ -592855,7 +597320,7 @@
"support"
],
"server-timing/resources/parsing/55.js": [
- "2209fc9eff24dc4f0d7df2f31e5911dd4e05d78d",
+ "ad58eaac1a11e8b6daa4a6f29fa33e85d6a1003e",
"support"
],
"server-timing/resources/parsing/55.js.sub.headers": [
@@ -592863,7 +597328,7 @@
"support"
],
"server-timing/resources/parsing/56.js": [
- "1bc5932490ce45826ee11e124924c9588b3e8c4d",
+ "b40f75f2522ae8277f5c391472fe285a9b504a02",
"support"
],
"server-timing/resources/parsing/56.js.sub.headers": [
@@ -592871,7 +597336,7 @@
"support"
],
"server-timing/resources/parsing/57.js": [
- "235f1ee6973489be765e8edec753b94c9f6d5773",
+ "0ab0b4d6a9b95a749e9292da467f0fb58a729012",
"support"
],
"server-timing/resources/parsing/57.js.sub.headers": [
@@ -592879,7 +597344,7 @@
"support"
],
"server-timing/resources/parsing/58.js": [
- "3fddff4eee055bf54f23be4ddd0e277cb79d492d",
+ "c708c93be1d25301433f97ff41973115f5441990",
"support"
],
"server-timing/resources/parsing/58.js.sub.headers": [
@@ -592887,7 +597352,7 @@
"support"
],
"server-timing/resources/parsing/59.js": [
- "63d1c9fc862e586f387e1715c47c14075b9dc39e",
+ "888df69076ddb4e5f86219fad670dbe7df290716",
"support"
],
"server-timing/resources/parsing/59.js.sub.headers": [
@@ -592895,7 +597360,7 @@
"support"
],
"server-timing/resources/parsing/6.js": [
- "1c6ca0aa58035fba39cfe8284c04468787149469",
+ "aca5ff6a4ec3da6fcd8f537e75f189ab52396576",
"support"
],
"server-timing/resources/parsing/6.js.sub.headers": [
@@ -592903,7 +597368,7 @@
"support"
],
"server-timing/resources/parsing/60.js": [
- "63d1c9fc862e586f387e1715c47c14075b9dc39e",
+ "888df69076ddb4e5f86219fad670dbe7df290716",
"support"
],
"server-timing/resources/parsing/60.js.sub.headers": [
@@ -592911,7 +597376,7 @@
"support"
],
"server-timing/resources/parsing/61.js": [
- "3560177cc96b27c6ca4dfd3f4755685f067a9c77",
+ "f81cfcef6ff2f5166110945a56050d1a6749cfa8",
"support"
],
"server-timing/resources/parsing/61.js.sub.headers": [
@@ -592919,7 +597384,7 @@
"support"
],
"server-timing/resources/parsing/62.js": [
- "3560177cc96b27c6ca4dfd3f4755685f067a9c77",
+ "f81cfcef6ff2f5166110945a56050d1a6749cfa8",
"support"
],
"server-timing/resources/parsing/62.js.sub.headers": [
@@ -592927,7 +597392,7 @@
"support"
],
"server-timing/resources/parsing/63.js": [
- "5c07fca48386d2d35c248c2053a7cb426ade6b7b",
+ "71ee194e6955b8b9b4ee4069f4a14df89b2cf1bc",
"support"
],
"server-timing/resources/parsing/63.js.sub.headers": [
@@ -592935,7 +597400,7 @@
"support"
],
"server-timing/resources/parsing/64.js": [
- "df2fb9e4e7999d2bda0c6e435b541fa37a55c788",
+ "f617f0f8f7cf9040e6409b0ce74b9d0574674a1f",
"support"
],
"server-timing/resources/parsing/64.js.sub.headers": [
@@ -592943,7 +597408,7 @@
"support"
],
"server-timing/resources/parsing/65.js": [
- "5c07fca48386d2d35c248c2053a7cb426ade6b7b",
+ "71ee194e6955b8b9b4ee4069f4a14df89b2cf1bc",
"support"
],
"server-timing/resources/parsing/65.js.sub.headers": [
@@ -592951,7 +597416,7 @@
"support"
],
"server-timing/resources/parsing/66.js": [
- "df2fb9e4e7999d2bda0c6e435b541fa37a55c788",
+ "f617f0f8f7cf9040e6409b0ce74b9d0574674a1f",
"support"
],
"server-timing/resources/parsing/66.js.sub.headers": [
@@ -592959,7 +597424,7 @@
"support"
],
"server-timing/resources/parsing/67.js": [
- "1a6924ba411a7f92aef048336bd117ece499f90a",
+ "db03fe36244bd2c07fc92720fd1d24825f9a4d11",
"support"
],
"server-timing/resources/parsing/67.js.sub.headers": [
@@ -592967,7 +597432,7 @@
"support"
],
"server-timing/resources/parsing/68.js": [
- "b5b95d8349cbbc3b92edb61891608b04d004527b",
+ "6101bd375a67052cb449c83494dc32691b6e6146",
"support"
],
"server-timing/resources/parsing/68.js.sub.headers": [
@@ -592975,7 +597440,7 @@
"support"
],
"server-timing/resources/parsing/69.js": [
- "235f1ee6973489be765e8edec753b94c9f6d5773",
+ "0ab0b4d6a9b95a749e9292da467f0fb58a729012",
"support"
],
"server-timing/resources/parsing/69.js.sub.headers": [
@@ -592983,7 +597448,7 @@
"support"
],
"server-timing/resources/parsing/7.js": [
- "266ee41ae7b440ab43e87a087d10fa2b1e193a8f",
+ "3e2173bd78dca0e60e6fee7ad9e893010195234e",
"support"
],
"server-timing/resources/parsing/7.js.sub.headers": [
@@ -592991,7 +597456,7 @@
"support"
],
"server-timing/resources/parsing/70.js": [
- "1a6924ba411a7f92aef048336bd117ece499f90a",
+ "db03fe36244bd2c07fc92720fd1d24825f9a4d11",
"support"
],
"server-timing/resources/parsing/70.js.sub.headers": [
@@ -592999,7 +597464,7 @@
"support"
],
"server-timing/resources/parsing/71.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/71.js.sub.headers": [
@@ -593007,7 +597472,7 @@
"support"
],
"server-timing/resources/parsing/72.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/72.js.sub.headers": [
@@ -593015,7 +597480,7 @@
"support"
],
"server-timing/resources/parsing/73.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/73.js.sub.headers": [
@@ -593023,7 +597488,7 @@
"support"
],
"server-timing/resources/parsing/74.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/74.js.sub.headers": [
@@ -593031,7 +597496,7 @@
"support"
],
"server-timing/resources/parsing/75.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/75.js.sub.headers": [
@@ -593039,7 +597504,7 @@
"support"
],
"server-timing/resources/parsing/76.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/76.js.sub.headers": [
@@ -593047,7 +597512,7 @@
"support"
],
"server-timing/resources/parsing/77.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/77.js.sub.headers": [
@@ -593055,7 +597520,7 @@
"support"
],
"server-timing/resources/parsing/78.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/78.js.sub.headers": [
@@ -593063,7 +597528,7 @@
"support"
],
"server-timing/resources/parsing/79.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/79.js.sub.headers": [
@@ -593071,7 +597536,7 @@
"support"
],
"server-timing/resources/parsing/8.js": [
- "e30f08cfab17bcd0229ebbf0da701f65a193485b",
+ "e049716bbac11f558b9fc61af72941a702f8cfb6",
"support"
],
"server-timing/resources/parsing/8.js.sub.headers": [
@@ -593079,7 +597544,7 @@
"support"
],
"server-timing/resources/parsing/80.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/80.js.sub.headers": [
@@ -593087,7 +597552,7 @@
"support"
],
"server-timing/resources/parsing/81.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/81.js.sub.headers": [
@@ -593095,7 +597560,7 @@
"support"
],
"server-timing/resources/parsing/82.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/82.js.sub.headers": [
@@ -593103,7 +597568,7 @@
"support"
],
"server-timing/resources/parsing/83.js": [
- "4b374f4e2751e3c75af68df671c0287e41d617ae",
+ "5d6b847c554a9c38b97f1a540db9375b47b6208f",
"support"
],
"server-timing/resources/parsing/83.js.sub.headers": [
@@ -593111,7 +597576,7 @@
"support"
],
"server-timing/resources/parsing/9.js": [
- "30695307f7a50b46a799f3cf6f5763a359acc0ce",
+ "5660bb21eb42f322a58f80c6c001d14c6e0fc0c9",
"support"
],
"server-timing/resources/parsing/9.js.sub.headers": [
@@ -593119,7 +597584,7 @@
"support"
],
"server-timing/server_timing_header-parsing.html": [
- "15768941cac8f5adeed09e6d204715d5fa59e5aa",
+ "bde9c39ce610bd7178800f92f3181bef3cd55918",
"testharness"
],
"server-timing/test_server_timing.html": [
@@ -593215,7 +597680,7 @@
"support"
],
"service-workers/cache-storage/serviceworker/cache-abort.https.html": [
- "6b44436f3b2e1a463e64f3f5fc343086a295a975",
+ "2d0c58dc738503b59da3eaa3778796d2c876b58e",
"testharness"
],
"service-workers/cache-storage/serviceworker/cache-add.https.html": [
@@ -593259,7 +597724,7 @@
"testharness"
],
"service-workers/cache-storage/window/cache-abort.https.html": [
- "2143ee1d78242bd2d055f6ea1b63a1becff657fe",
+ "581381044d7d6c58cf43e7a0ac910fb10898b07c",
"testharness"
],
"service-workers/cache-storage/window/cache-add.https.html": [
@@ -593303,7 +597768,7 @@
"testharness"
],
"service-workers/cache-storage/worker/cache-abort.https.html": [
- "d67a78e50008a587d0b349daaacafc25a18cfd5b",
+ "29052e0306c5000ab6f08872e04749bca5676ff0",
"testharness"
],
"service-workers/cache-storage/worker/cache-add.https.html": [
@@ -593342,6 +597807,10 @@
"85ba3f00328e9c5a0e4c9935d10921ea1c1afe86",
"testharness"
],
+ "service-workers/service-worker/Service-Worker-Allowed-header.https.html": [
+ "9a2b7e696629dabf7a0b2f68b07c8358c1c103d6",
+ "testharness"
+ ],
"service-workers/service-worker/ServiceWorkerGlobalScope/close.https.html": [
"5037b0f564f3d23c0733ae7b4d59b5353eca8d45",
"testharness"
@@ -593611,7 +598080,7 @@
"testharness"
],
"service-workers/service-worker/fetch-event-redirect.https.html": [
- "48c8d37bcdc37f83d5cfec4e1baba0f8aa1a24e4",
+ "ef22d17c284af2354e25644d9cb20256265fbb0a",
"testharness"
],
"service-workers/service-worker/fetch-event-referrer-policy.https.html": [
@@ -593711,7 +598180,7 @@
"testharness"
],
"service-workers/service-worker/fetch-request-resources.https.html": [
- "d21ef5a4263e26cd3053a89171e2597424eaad82",
+ "9b5be43fdacc1362d92f72c3d57f68fca0eaa493",
"testharness"
],
"service-workers/service-worker/fetch-request-xhr-sync-on-worker.https.html": [
@@ -593783,7 +598252,7 @@
"testharness"
],
"service-workers/service-worker/interfaces-window.https.html": [
- "c596bb509623d00646cd8c1420394f7de8ff742d",
+ "10b0dbc64783f88e5d990a1fdab35d06416d6f86",
"testharness"
],
"service-workers/service-worker/invalid-blobtype.https.html": [
@@ -593855,7 +598324,7 @@
"testharness"
],
"service-workers/service-worker/navigation-preload/broken-chunked-encoding.https.html": [
- "4953b0c2e9c0a0a02b285ca89b69947798804e58",
+ "df73c412cd275ebeacf9e416e050c1c5c6de9156",
"testharness"
],
"service-workers/service-worker/navigation-preload/chunked-encoding.https.html": [
@@ -593887,11 +598356,11 @@
"support"
],
"service-workers/service-worker/navigation-preload/resources/broken-chunked-encoding-worker.js": [
- "becb31d5c7cd2773c064161ef689c31ebe8b7c3e",
+ "88a8274ce886b65f1e2e41ded7b1b423c0fcc9da",
"support"
],
"service-workers/service-worker/navigation-preload/resources/chunked-encoding-scope.py": [
- "a12cd710fb4accc11a2662a33cda0b8a98d80a30",
+ "c3bf571de18291d5d1d3d8ee54f7d8529ff48fd1",
"support"
],
"service-workers/service-worker/navigation-preload/resources/chunked-encoding-worker.js": [
@@ -594243,7 +598712,11 @@
"support"
],
"service-workers/service-worker/resources/dummy-shared-worker-interceptor.js": [
- "620e50059fabfdd4b5c61dbb3ed2d8dca872b9bf",
+ "dd3d9a5f1c9cb6cbfcf018ba13118439dfa13eef",
+ "support"
+ ],
+ "service-workers/service-worker/resources/dummy-shared-worker-interceptor.js.headers": [
+ "b69c06d38f1fa3585706e50dd94cfb1448891924",
"support"
],
"service-workers/service-worker/resources/dummy-worker-interceptor.js": [
@@ -594511,11 +598984,11 @@
"support"
],
"service-workers/service-worker/resources/fetch-request-resources-iframe.https.html": [
- "95bcbc6a2f4560788f77fa717fa06d7d018d99c6",
+ "bcf833f49f3de4a67dfbd7522f525331bfb14bd9",
"support"
],
"service-workers/service-worker/resources/fetch-request-resources-worker.js": [
- "4512140fe37ffd78086f54c6b0f6213675c0d74f",
+ "de3203b73bb35427d2b792a735ea2d6f7b9e4a2e",
"support"
],
"service-workers/service-worker/resources/fetch-request-xhr-iframe.https.html": [
@@ -594615,11 +599088,11 @@
"support"
],
"service-workers/service-worker/resources/interfaces-idls.js": [
- "c14274bca020d4dfe3df95e0fd36eedae403f99d",
+ "2d3ae3bdd1be17a2871aa3af2009daaacf43d3db",
"support"
],
"service-workers/service-worker/resources/interfaces-worker.sub.js": [
- "229dd043c0e98e9f70f54277bba7c4c3db6d000d",
+ "1b783078b34532a0f8236a964e77eb1f5836af6a",
"support"
],
"service-workers/service-worker/resources/invalid-blobtype-iframe.https.html": [
@@ -594962,6 +599435,14 @@
"b935f6d8fea362c4aceb713fcde91343d3e4bfa7",
"support"
],
+ "service-workers/service-worker/resources/scope1/redirect.py": [
+ "7741f204c67ca71087df3b182826bc28c14dbe37",
+ "support"
+ ],
+ "service-workers/service-worker/resources/scope2/worker_interception_redirect_webworker.py": [
+ "c482ed2a7ff5ed2d663bd54ee2ecd2f6609d77cd",
+ "support"
+ ],
"service-workers/service-worker/resources/service-worker-csp-worker.py": [
"f7c6bb3ba222dc35a09ef806a7c6d145339f9eb2",
"support"
@@ -594982,6 +599463,10 @@
"1f146ad6313f6917e1b2783e6b81fccbf6884784",
"support"
],
+ "service-workers/service-worker/resources/simple-intercept-worker.js.headers": [
+ "b69c06d38f1fa3585706e50dd94cfb1448891924",
+ "support"
+ ],
"service-workers/service-worker/resources/simple.html": [
"ccb39f9df19ae06002b1d69cc3d80fde567abdd3",
"support"
@@ -595078,10 +599563,22 @@
"f7a925c1fe330839ea52d45cd052c387303defd6",
"support"
],
+ "service-workers/service-worker/resources/worker-client-id-worker.js": [
+ "22fc24fa277508cabfdfa500745b3446e7a8c076",
+ "support"
+ ],
"service-workers/service-worker/resources/worker-interception-iframe.https.html": [
"b9fd4ea281b328c1f21573d1563c968dac52cf22",
"support"
],
+ "service-workers/service-worker/resources/worker-interception-redirect-serviceworker.js": [
+ "ebf3c26bd9a176cf535549dc42637c92e29de4f0",
+ "support"
+ ],
+ "service-workers/service-worker/resources/worker-interception-redirect-webworker.js": [
+ "262e33ee28cd9a7b9081d30c438ad75f59bd84c9",
+ "support"
+ ],
"service-workers/service-worker/resources/worker-load-interceptor.js": [
"de9cfcbef6528a4b5e6b2552f260501e4d165ea4",
"support"
@@ -595090,6 +599587,10 @@
"8624b498e37d44bf3a3a74ccd46f928f7b0338cb",
"support"
],
+ "service-workers/service-worker/resources/worker_interception_redirect_webworker.py": [
+ "37a8a7bd94cc529420eba8838e1e20056caf2945",
+ "support"
+ ],
"service-workers/service-worker/respond-with-body-accessed-response.https.html": [
"e2e9b5d70f141e71f3617a11a336affea66662db",
"testharness"
@@ -595218,10 +599719,18 @@
"828d8d920459541a37e747ac01376fdcac51ffb3",
"testharness"
],
+ "service-workers/service-worker/worker-client-id.https.html": [
+ "2d39130ccf8401d8bd71e494f5276c9309122dd6",
+ "testharness"
+ ],
"service-workers/service-worker/worker-in-sandboxed-iframe-by-csp-fetch-event.https.html": [
"c9cff3f5fb5c205020ad39df6d22ad19ce0cbb0a",
"testharness"
],
+ "service-workers/service-worker/worker-interception-redirect.https.html": [
+ "2e5bd64ed27fb4cc63aba9859565d506a829871e",
+ "testharness"
+ ],
"service-workers/service-worker/worker-interception.https.html": [
"41f7e5e8da2c305370fddad83518cd0fa57547eb",
"testharness"
@@ -595463,7 +599972,7 @@
"testharness"
],
"shadow-dom/Extensions-to-Event-Interface.html": [
- "b8a8b22197eb1c17e9cea05c73826211dd2f2532",
+ "97c54c56d053c7d7116a5c16fed6457011060d06",
"testharness"
],
"shadow-dom/HTMLSlotElement-interface.html": [
@@ -595559,7 +600068,7 @@
"support"
],
"shadow-dom/resources/event-path-test-helpers.js": [
- "0b3340091c93e37362c5008fded9ac4efd042f35",
+ "8eb117fa5a60279eb58b4987fb156f67a75ad136",
"support"
],
"shadow-dom/resources/shadow-dom-utils.js": [
@@ -596415,7 +600924,7 @@
"testharness"
],
"streams/readable-streams/default-reader.js": [
- "8746e2c94c2bc28431aefaae71d83f87c5738cde",
+ "639fc79798f07714549495a52364408773ac830a",
"support"
],
"streams/readable-streams/default-reader.serviceworker.https.html": [
@@ -596486,6 +600995,26 @@
"44f9ceaa3bfc9d8b92885997d322486bd0f237a6",
"testharness"
],
+ "streams/readable-streams/patched-global.dedicatedworker.html": [
+ "34bc5da1733179d1a4cd4bbbd4397146eafbb7e8",
+ "testharness"
+ ],
+ "streams/readable-streams/patched-global.html": [
+ "a3c2a68709b9bf1eb3f34dd2d0f385689680a566",
+ "testharness"
+ ],
+ "streams/readable-streams/patched-global.js": [
+ "acd674d94f102891043aa92113026aca6c1ae5d7",
+ "support"
+ ],
+ "streams/readable-streams/patched-global.serviceworker.https.html": [
+ "79f5e148601acf4ad24952f8735908c3a1edc510",
+ "testharness"
+ ],
+ "streams/readable-streams/patched-global.sharedworker.html": [
+ "477cc1ed4cc94ff6ee29dcd6f96c16768a2c7567",
+ "testharness"
+ ],
"streams/readable-streams/reentrant-strategies.dedicatedworker.html": [
"6f9350ce1caf4fa9e6239693ec91b2249c2adab5",
"testharness"
@@ -597319,19 +601848,19 @@
"testharness"
],
"svg/import/animate-dom-01-f-manual.svg": [
- "a409e81f05b515bb5e074be278202b85b4024352",
+ "3d45e16333018129898abd21fed0703628ab7a5b",
"manual"
],
"svg/import/animate-dom-02-f-manual.svg": [
- "26fa48e80b616b407d456083a1b17cfb754368da",
+ "4527c6cf0a71e1e9e3e87a6de0fc6e1ce007dd6b",
"manual"
],
"svg/import/animate-elem-02-t-manual.svg": [
- "5b65b2ff2bdbfe8240c4201f5ec268bc8cb9adb9",
+ "6522f57e20e684cb528e745345c98c791a8c93fc",
"manual"
],
"svg/import/animate-elem-03-t-manual.svg": [
- "0f3e58ee523760db51c906166b46cb08b31e3b98",
+ "d9e65c1d772ac9298b146566340f32801c4080fa",
"manual"
],
"svg/import/animate-elem-04-t-manual.svg": [
@@ -597339,7 +601868,7 @@
"manual"
],
"svg/import/animate-elem-05-t-manual.svg": [
- "12b67e198e83c9c5010c6e83163943c02c844ef0",
+ "6ebe0cccb48ea573a6b23f68db8cc0cc7eb00d9a",
"manual"
],
"svg/import/animate-elem-06-t-manual.svg": [
@@ -597359,59 +601888,59 @@
"manual"
],
"svg/import/animate-elem-10-t-manual.svg": [
- "aaacde803e9bf20d222d0d707861a2073c9a05b6",
+ "f39103596f0364dffed5f8f7f88e274cc798844a",
"manual"
],
"svg/import/animate-elem-11-t-manual.svg": [
- "0565a6b799b6f84cded572b254a759f4b78b91e2",
+ "06069ef51424f6438436339d6df9e523f2bc910c",
"manual"
],
"svg/import/animate-elem-12-t-manual.svg": [
- "14a40adc17ba3bcb17895305ba2277ab53352977",
+ "d3c447a7a0b8a175e3b02dea1bc21877d0202f57",
"manual"
],
"svg/import/animate-elem-13-t-manual.svg": [
- "0333c7a35a9c3e310d051b5eda6d8e4e0ff98978",
+ "5c1d11b04eb84f73306a9cb62a631c919b887e72",
"manual"
],
"svg/import/animate-elem-14-t-manual.svg": [
- "dac49520ba94d8c9032a72ad551aff4154c40d69",
+ "d0d6c5e40a86f97019e2ad1a569a04ce8606bd64",
"manual"
],
"svg/import/animate-elem-15-t-manual.svg": [
- "454f5c1ea4732c526e660f080cf13dad2b829805",
+ "3dda6c1eb650edd677b8337bf8f26c4109c9e8f2",
"manual"
],
"svg/import/animate-elem-17-t-manual.svg": [
- "18889123a763b2c20b1a6825631893b4df053408",
+ "e19cf6f5e5c7930d529cb54c9b44610febfea84f",
"manual"
],
"svg/import/animate-elem-19-t-manual.svg": [
- "0d19eb3a736f9d4cb1b35babfb7c929b992a283f",
+ "34b4f1d26dd3287307f19dfb31abecdab154fad4",
"manual"
],
"svg/import/animate-elem-20-t-manual.svg": [
- "fb1a7ef6c4f5416b7f2ac101acd609723b9ca4f5",
+ "c6c061d6c1b7c8af80cda901e97f2cf7f2007071",
"manual"
],
"svg/import/animate-elem-21-t-manual.svg": [
- "f82e6e256e318e65599a3babca2477b28e7d97f6",
+ "16f21f63164218005f0b78021b91b2a6afc89f57",
"manual"
],
"svg/import/animate-elem-22-b-manual.svg": [
- "39e25ffa81eb81aed9eb98096d0cf66dead8fbdb",
+ "e0bd6ea89bcfc0b6870eb75d582c28f453f1b72b",
"manual"
],
"svg/import/animate-elem-23-t-manual.svg": [
- "2e7d524c63934b582ef1c64a537971fa5928212c",
+ "3c23f73d565e09f8fe4261f042b56c7f96b3bc12",
"manual"
],
"svg/import/animate-elem-24-t-manual.svg": [
- "db2619241e66d73d569fcc69263f6e0be7bb9e5e",
+ "9b98024de5a6048a3ce26858953b3ba2ec8fd1cd",
"manual"
],
"svg/import/animate-elem-25-t-manual.svg": [
- "b9558af5a6f145365c2855cb9dd0a6e99d542280",
+ "23120e8c3aa4bb64980cc63c07758f8b6e962214",
"manual"
],
"svg/import/animate-elem-26-t-manual.svg": [
@@ -597419,7 +601948,7 @@
"manual"
],
"svg/import/animate-elem-27-t-manual.svg": [
- "6263355ffcd5f9f2bbb224b229b5c5fafb95ded6",
+ "4d855e7d64f8297a3733915cb182046c5e5d4f21",
"manual"
],
"svg/import/animate-elem-28-t-manual.svg": [
@@ -597427,7 +601956,7 @@
"manual"
],
"svg/import/animate-elem-29-b-manual.svg": [
- "65d31ee5359c1e467ad98450ef07c62ce7f6ebb7",
+ "c7effc1a53ec774d82fd7d3c556f60d9e39d5d59",
"manual"
],
"svg/import/animate-elem-30-t-manual.svg": [
@@ -597435,7 +601964,7 @@
"manual"
],
"svg/import/animate-elem-31-t-manual.svg": [
- "845bb257f5890079bf734ccf48f9b150fd66959b",
+ "6297ab06a1d5588ce2e6c0f406ab08615313dc77",
"manual"
],
"svg/import/animate-elem-32-t-manual.svg": [
@@ -597443,11 +601972,11 @@
"manual"
],
"svg/import/animate-elem-33-t-manual.svg": [
- "53612df3253d6eb90d6efefdaf1ec7eaee531fba",
+ "959d67e2c61c4e9cf068ec9661ef1cba82a06026",
"manual"
],
"svg/import/animate-elem-34-t-manual.svg": [
- "14fbda9f24ff6e30c0280ca6eb97b0611102889f",
+ "062470def23aa48efe74b726a6f035c2407d4fa2",
"manual"
],
"svg/import/animate-elem-35-t-manual.svg": [
@@ -597455,11 +601984,11 @@
"manual"
],
"svg/import/animate-elem-36-t-manual.svg": [
- "8673727a325880932d2f109519161394ab03b471",
+ "9703b512706e2a80f7148c726c97099bf2268e9d",
"manual"
],
"svg/import/animate-elem-37-t-manual.svg": [
- "fee31cc0bfc3ebb1892a5d82eada2df768b14407",
+ "5afae3adb46f5f9a5d82c300e313fd037e062f2a",
"manual"
],
"svg/import/animate-elem-38-t-manual.svg": [
@@ -597471,7 +602000,7 @@
"manual"
],
"svg/import/animate-elem-40-t-manual.svg": [
- "84cbd630344c26899235e6c4226e9b3515471708",
+ "05e51b30afedc89b758397d4d058e18fafb6621f",
"manual"
],
"svg/import/animate-elem-41-t-manual.svg": [
@@ -597483,7 +602012,7 @@
"manual"
],
"svg/import/animate-elem-46-t-manual.svg": [
- "2087ecd2edbe724f8973f11a77211fe5cb418a91",
+ "81250958ce102a09cc37ea81ab2246a8b38dc00b",
"manual"
],
"svg/import/animate-elem-52-t-manual.svg": [
@@ -597503,7 +602032,7 @@
"manual"
],
"svg/import/animate-elem-62-t-manual.svg": [
- "39c1bac1b1e0b16a81729547b7f3966f44a0f2fd",
+ "b4ccd1e2952e49e0a7dcb8fcc571c854a902aeaf",
"manual"
],
"svg/import/animate-elem-63-t-manual.svg": [
@@ -597511,7 +602040,7 @@
"manual"
],
"svg/import/animate-elem-64-t-manual.svg": [
- "e64b16d4eb57dd6ba649067d43c99b7f2a7ef26d",
+ "7e55fb15eb013da524c2f1a825ab9eabfd2f3cf0",
"manual"
],
"svg/import/animate-elem-65-t-manual.svg": [
@@ -597519,7 +602048,7 @@
"manual"
],
"svg/import/animate-elem-66-t-manual.svg": [
- "a4bd069bcf710a24122c2c5bb747b84778a1216c",
+ "f647aeabeb338cc69ff77123967bb3d234f8c194",
"manual"
],
"svg/import/animate-elem-67-t-manual.svg": [
@@ -597535,11 +602064,11 @@
"manual"
],
"svg/import/animate-elem-70-t-manual.svg": [
- "9839387a9719bc6edf1b041bf6ac4fe188ea3bff",
+ "e0ca69ae8380535a6337ff4075235fceaaaba74f",
"manual"
],
"svg/import/animate-elem-77-t-manual.svg": [
- "c6d76c17a0dbfbf59ddc7df6fd52b48b28f773e8",
+ "799eb9425cc095e1bcec65458d282afda9e1a3eb",
"manual"
],
"svg/import/animate-elem-78-t-manual.svg": [
@@ -597547,27 +602076,27 @@
"manual"
],
"svg/import/animate-elem-80-t-manual.svg": [
- "be6b9b888f5226fb0ec70aea98c924a912089ccd",
+ "9ad01e977ce6a53eaa9e2ffdbd6978a53153133b",
"manual"
],
"svg/import/animate-elem-81-t-manual.svg": [
- "c1088754721ab9d244c10f37352611bad114ceb2",
+ "96c478dea545404b80de29c655b76b1de5617e18",
"manual"
],
"svg/import/animate-elem-82-t-manual.svg": [
- "1d03c778849a71b13a3a1fcff0366c1ac76ced9a",
+ "1c41efaa65b1ef2626c9faec6829ada0dc03ee1d",
"manual"
],
"svg/import/animate-elem-83-t-manual.svg": [
- "61033cfb1bf28cea91d10fda6f3b08a98d581454",
+ "e9087c655d21e6bf033f6640e449d6998b57c4f2",
"manual"
],
"svg/import/animate-elem-84-t-manual.svg": [
- "a48b0c8da65b61d638541da49374bf4c701d24d3",
+ "a9942447b10053d253ed63694a2a4497dcbd7c1c",
"manual"
],
"svg/import/animate-elem-85-t-manual.svg": [
- "0cf1b5bcc14cdfb23e0f5904d1ba25d7e85e42e7",
+ "4a39cff5c5ab728e5db87ab06ab62f32ece988ac",
"manual"
],
"svg/import/animate-elem-86-t-manual.svg": [
@@ -597575,19 +602104,19 @@
"manual"
],
"svg/import/animate-elem-87-t-manual.svg": [
- "07506da1116d093a50afde9f5e4d1da1df879166",
+ "707fff2391a7aeb5c146efed935c417e036fcdfc",
"manual"
],
"svg/import/animate-elem-88-t-manual.svg": [
- "3969c2e348c7afb98c1250ca4edf03ed3aa5ded0",
+ "37ebc9573794e4e1744a1ad2790cbee63bcc770d",
"manual"
],
"svg/import/animate-elem-89-t-manual.svg": [
- "5759a00372cbb5015ace3c241e6523b28f774300",
+ "44603dfb4f1527abbca8e1b31f757846c611d9af",
"manual"
],
"svg/import/animate-elem-90-b-manual.svg": [
- "86dfb5dbbd06e103f06497386446deefb17ef3e6",
+ "12b667354181a83038d6903de858c637a055a272",
"manual"
],
"svg/import/animate-elem-91-t-manual.svg": [
@@ -597599,7 +602128,7 @@
"manual"
],
"svg/import/animate-interact-events-01-t-manual.svg": [
- "7f1cceebfb59b7603738359ef6fffe0fa9840f89",
+ "03c65bc00ffbb8e5f580a6f74928fc48cbefcf6a",
"manual"
],
"svg/import/animate-interact-pevents-01-t-manual.svg": [
@@ -597607,23 +602136,23 @@
"manual"
],
"svg/import/animate-interact-pevents-02-t-manual.svg": [
- "c97ffb9e35efb968929dc8d29e9223039cc3cea1",
+ "5eec43b67bf781bf2b3197d309e650fcd99d5b70",
"manual"
],
"svg/import/animate-interact-pevents-03-t-manual.svg": [
- "431252c1846fb7cd4e449e3159f342379b86a95e",
+ "7de4c33c0a8344a2e758711b9a52171268f8093b",
"manual"
],
"svg/import/animate-interact-pevents-04-t-manual.svg": [
- "1eef3bc2491037ce8032d6b22953eaec598f79fd",
+ "bf8da3df49b42aa650db7b069ea2d35376ab6f8e",
"manual"
],
"svg/import/animate-pservers-grad-01-b-manual.svg": [
- "a8dbb93ce7dd05b66f8c05d1f69cae051d33389e",
+ "2ef5ce778bc4375ecdfac0b5ecb5393ebb29f850",
"manual"
],
"svg/import/animate-script-elem-01-b-manual.svg": [
- "3e40d302e36570813f6f15957a1d41125a779373",
+ "d77a60d93cf4a5cb31d269f9e3fd28e950d3c323",
"manual"
],
"svg/import/animate-struct-dom-01-b-manual.svg": [
@@ -597631,23 +602160,23 @@
"manual"
],
"svg/import/color-prof-01-f-manual.svg": [
- "437182c9b7ff178ea68d55655ef7c6b5db50d0e6",
+ "06f6fd490af930b804c41821b22f044c300bef61",
"manual"
],
"svg/import/color-prop-01-b-manual.svg": [
- "3ff7948c23603b44fa95e7b5ad91eef8d13258db",
+ "89e78090226dcf5fda85a2656d632fbddbaf1e23",
"manual"
],
"svg/import/color-prop-02-f-manual.svg": [
- "b8a141487eb6ee4c653186f569ceebb64e5aa417",
+ "5ff93616a99642028ee4ad549cfa76cd3f9297f4",
"manual"
],
"svg/import/color-prop-03-t-manual.svg": [
- "8848f32d5e7ed089c4ec78e3a7a3b5fe9fe46a03",
+ "00562111d468c20ddee5558dda472c94d3f357f3",
"manual"
],
"svg/import/color-prop-04-t-manual.svg": [
- "03e0fbfde445f68a8be08f0c07c85faae4751593",
+ "503620da2fe3285d846a0f3c13ef44ac0c175db2",
"manual"
],
"svg/import/color-prop-05-t-manual.svg": [
@@ -597655,11 +602184,11 @@
"manual"
],
"svg/import/conform-viewers-02-f-manual.svg": [
- "17dbb22555799a309903c28c283c97592e067a1b",
+ "009b925bf1334f80b97496a678312aeaa0f78023",
"manual"
],
"svg/import/conform-viewers-03-f-manual.svg": [
- "e7469eab470fe52264323fb5896d17a59b453a68",
+ "2708db01c085402444d195ddaaedbe447d087f5c",
"manual"
],
"svg/import/coords-coord-01-t-manual.svg": [
@@ -597671,11 +602200,11 @@
"manual"
],
"svg/import/coords-dom-01-f-manual.svg": [
- "1d2a4ea71f24601b497c08b8607db70c519e933c",
+ "c72a109d648fe93e579ffed48fee1b306defd914",
"manual"
],
"svg/import/coords-dom-02-f-manual.svg": [
- "c18cf061ccb2627e3a8863ea4ed60e7059eb3bf5",
+ "ac003582bcf45d916de328968868774d11258ef9",
"manual"
],
"svg/import/coords-dom-03-f-manual.svg": [
@@ -597683,7 +602212,7 @@
"manual"
],
"svg/import/coords-dom-04-f-manual.svg": [
- "42c29a96442d954eb43fadefc0bc4af3f63a612c",
+ "28436697bac916a4eb6e7dd2624150fbd3afd5dd",
"manual"
],
"svg/import/coords-trans-01-b-manual.svg": [
@@ -597723,27 +602252,27 @@
"manual"
],
"svg/import/coords-trans-10-f-manual.svg": [
- "0adce59aaae5a3ccbee72da6184ce83743b5d0be",
+ "07e573936a151faeb0b07251bd0a23995f07d255",
"manual"
],
"svg/import/coords-trans-11-f-manual.svg": [
- "b1a7d1563bd299b06de1e8627d97bdc7b62c469e",
+ "d0a2d4afc6ed4c042430348a416adeba078fe4e1",
"manual"
],
"svg/import/coords-trans-12-f-manual.svg": [
- "3f69022ede452e1d68225663d91d543c09e562d3",
+ "20165f7b9cbc03a345c621c12170bf10214ba9ba",
"manual"
],
"svg/import/coords-trans-13-f-manual.svg": [
- "31c2d53d2d44d18d9260ee95f6bd06568f639160",
+ "eb20970424fd8160c38dda5414acbf05e938e8ae",
"manual"
],
"svg/import/coords-trans-14-f-manual.svg": [
- "2f3799e32be7c3abfdec3b4d099baa6eef9333ea",
+ "c570fdd1cfa2e823da323da0ff4b986edb19e261",
"manual"
],
"svg/import/coords-transformattr-01-f-manual.svg": [
- "fd90c001cf2065dceb9bc4c27dffbbdd82fb0ef6",
+ "d3454834c78ca31edae23459a657ff634c36d811",
"manual"
],
"svg/import/coords-transformattr-02-f-manual.svg": [
@@ -597751,15 +602280,15 @@
"manual"
],
"svg/import/coords-transformattr-03-f-manual.svg": [
- "85ee491b1b26030d3d838a3346978573670acf8e",
+ "663d2b1d7dd332ad98f6cce3568f8c8ca77e65d3",
"manual"
],
"svg/import/coords-transformattr-04-f-manual.svg": [
- "5be367b883a38cff7de86bf2bff818c18ac62e6d",
+ "b2420dc78af4313bd9e166c9ed312ad27f0d3cfa",
"manual"
],
"svg/import/coords-transformattr-05-f-manual.svg": [
- "45583ba670114c2dacbfa095f054d1c2328eecc8",
+ "a1738845583f6f78462ca6b7d75422ebc596512d",
"manual"
],
"svg/import/coords-units-01-b-manual.svg": [
@@ -597767,7 +602296,7 @@
"manual"
],
"svg/import/coords-units-02-b-manual.svg": [
- "39f554d363096a12157494cf562c0303089a4e7f",
+ "a20e5b0835cab9e485e878f7d646fb141f12880f",
"manual"
],
"svg/import/coords-units-03-b-manual.svg": [
@@ -597783,7 +602312,7 @@
"manual"
],
"svg/import/coords-viewattr-03-b-manual.svg": [
- "e9a379b137448a67fe1595e10f3b0b9eb68deb64",
+ "4d542f9a8008cddddfd38458c47bfff33101f04b",
"manual"
],
"svg/import/coords-viewattr-04-f-manual.svg": [
@@ -597795,11 +602324,11 @@
"manual"
],
"svg/import/filters-background-01-f-manual.svg": [
- "8bf58db647ba45fa18cdcb7c59f404256f7685f1",
+ "cdb49a7e36bea73ba410864a703bf416e444eeca",
"manual"
],
"svg/import/filters-blend-01-b-manual.svg": [
- "d3b26bf216fa2c7cbdbbf8d56f0938f99565008d",
+ "e28bcbbe192b9e8f03ff981e2186426254bc1f87",
"manual"
],
"svg/import/filters-color-01-b-manual.svg": [
@@ -597811,19 +602340,19 @@
"manual"
],
"svg/import/filters-composite-02-b-manual.svg": [
- "e11f0e7f1bc9e2703679d9d7f4690aeac08b1452",
+ "b72e095c2ed82d3af1fdf90090570b892239989a",
"manual"
],
"svg/import/filters-composite-03-f-manual.svg": [
- "586ac5cc34901d458d30076bdb87371b90103685",
+ "671e8f773f684bd9e62cf24e9058f19be0877e66",
"manual"
],
"svg/import/filters-composite-04-f-manual.svg": [
- "a25a9b1074728398f47b4ee5f88896ec0fcc0b2a",
+ "b13a7926f4f0ec74f026a53b9fded0ac755358c5",
"manual"
],
"svg/import/filters-composite-05-f-manual.svg": [
- "02b09639b2a1fa4ba4ba6fbf0e2b72483c76f4d1",
+ "a8c988a01224a5b89dfa0df2d754c98c3edb045b",
"manual"
],
"svg/import/filters-comptran-01-b-manual.svg": [
@@ -597835,19 +602364,19 @@
"manual"
],
"svg/import/filters-conv-02-f-manual.svg": [
- "effa9dc0d834e11da2535591c9fa2d9a5e8b1c6f",
+ "f1805cc793761a7f030d8ff12a4732d7638d9220",
"manual"
],
"svg/import/filters-conv-03-f-manual.svg": [
- "155d972f970c5ac8f25d93b53225ef95c362ce73",
+ "8cba8812cd5b733d4c902deed7a572d002783d21",
"manual"
],
"svg/import/filters-conv-04-f-manual.svg": [
- "55b59109512f4014d374b0ff2f444149848c4938",
+ "0fc4e0bdda891c15cffb71f14d817dc168742cb9",
"manual"
],
"svg/import/filters-conv-05-f-manual.svg": [
- "a6a7a42c0c4999e8ba6be471f1da7c2a45ff1b5a",
+ "1d96afa661277068fe27025b257c3ab533b2fcd9",
"manual"
],
"svg/import/filters-diffuse-01-f-manual.svg": [
@@ -597855,11 +602384,11 @@
"manual"
],
"svg/import/filters-displace-01-f-manual.svg": [
- "c09aa785ec16872da11a4f0071edab56001bdf24",
+ "9ecb3e4d3cb66ea5b5da0aa45780b942f28f9966",
"manual"
],
"svg/import/filters-displace-02-f-manual.svg": [
- "1f4a859fedcf5d5b8fecaa2626c30910575accd7",
+ "d3d7075914ea8968d22e5d74d50b8337b0339c55",
"manual"
],
"svg/import/filters-example-01-b-manual.svg": [
@@ -597867,11 +602396,11 @@
"manual"
],
"svg/import/filters-felem-01-b-manual.svg": [
- "8207cbc62cec0bd411aff83b78e524eb97322b76",
+ "23ede4afc4c1dbe71aee84a4644fb3c2825be024",
"manual"
],
"svg/import/filters-felem-02-f-manual.svg": [
- "8367fd4cb503ac3ab904d179bd357fdc6a1ba8d2",
+ "e9fbd13a168ea95416502e1d089a6a7a4a16de55",
"manual"
],
"svg/import/filters-gauss-01-b-manual.svg": [
@@ -597891,19 +602420,19 @@
"manual"
],
"svg/import/filters-image-02-b-manual.svg": [
- "e881db08dd6354bbff1fcfa02a9e0a614faa6e3a",
+ "aa31f5de04468220a1a4f0c9bdf617eb6eeaca1b",
"manual"
],
"svg/import/filters-image-03-f-manual.svg": [
- "39c02f8ea911ea5b63dcec5c355835557241b8e8",
+ "c0bfc5f54802ec68e2711fb225ce372085faacb8",
"manual"
],
"svg/import/filters-image-04-f-manual.svg": [
- "467476e87983ab33fa87e8a1f3045d1fdb585763",
+ "38fb9158caf7ec8e934f040b777d8a6c7d302a46",
"manual"
],
"svg/import/filters-image-05-f-manual.svg": [
- "fb9d7cb63334a2247af20c0129981fa46b5aafc8",
+ "13ffdf621d6395399264a0634e185c8ba971ceda",
"manual"
],
"svg/import/filters-light-01-f-manual.svg": [
@@ -597911,19 +602440,19 @@
"manual"
],
"svg/import/filters-light-02-f-manual.svg": [
- "f91ba8518c7b168167a103fde2814627459b3a68",
+ "d0421b7e9b7ca3f8364b81c20dba9fbff51d424b",
"manual"
],
"svg/import/filters-light-03-f-manual.svg": [
- "e15d073d1757265d74b0cd62fb1b03e0c9e66c5d",
+ "3fe7853a7c46a4a4a9f2b0ade53c7c043b77974f",
"manual"
],
"svg/import/filters-light-04-f-manual.svg": [
- "d3bec36c5b178a66a8e567a9352d70009c682a5e",
+ "76e251321783af576ceac4c42882a3b3468d4bb2",
"manual"
],
"svg/import/filters-light-05-f-manual.svg": [
- "34af50a8bf92c030c6eaa37aa58e254b83a77275",
+ "9ae4738c94abbe1c3e62f6d74333ab2978e64e72",
"manual"
],
"svg/import/filters-morph-01-f-manual.svg": [
@@ -597931,11 +602460,11 @@
"manual"
],
"svg/import/filters-offset-01-b-manual.svg": [
- "591d75a8928cd4a0d5118f26594d1e7f13b5d6d9",
+ "824490e2a53d7fff2a8a5d77e598b4a1e3679955",
"manual"
],
"svg/import/filters-offset-02-b-manual.svg": [
- "f6e178bb281926eb659fe8822bab070a63881d18",
+ "6c0ef3bf45060a447de26f66a730e32560ab01f4",
"manual"
],
"svg/import/filters-overview-01-b-manual.svg": [
@@ -597943,7 +602472,7 @@
"manual"
],
"svg/import/filters-overview-02-b-manual.svg": [
- "6b74a06a11c0893a4d50c22632a4bd643c281f95",
+ "9cd1cee5a040ef73a55776546ce3e2cc8889a62c",
"manual"
],
"svg/import/filters-overview-03-b-manual.svg": [
@@ -597963,23 +602492,23 @@
"manual"
],
"svg/import/filters-turb-02-f-manual.svg": [
- "777580662d7b0d54a19d72efe9d9df21dd3f81dc",
+ "ff7589c119fe3c678a8d34371b76b2f8731ce6c1",
"manual"
],
"svg/import/fonts-desc-01-t-manual.svg": [
- "90d9e408b20a5fc0a8bcb1d8f6981cd732e1ea7a",
+ "321fb8b65cb04b3e83a9291185412fe18ea69edf",
"manual"
],
"svg/import/fonts-desc-02-t-manual.svg": [
- "39ff31258635701367baf50b0af6153160cdfa6c",
+ "548e4fcfeb288624996d18e212635560b65d728a",
"manual"
],
"svg/import/fonts-desc-03-t-manual.svg": [
- "0850640c89e95ee248002f2034b65800d5e831b8",
+ "f8fa8ee64fe2ca020eaf543cafc342c7f7ae65f8",
"manual"
],
"svg/import/fonts-desc-04-t-manual.svg": [
- "10a10fb0c1202020138e8c9779530f2f19f6dc5d",
+ "07b74698f496881f36ae08fe08ea82a5fae4ed69",
"manual"
],
"svg/import/fonts-desc-05-t-manual.svg": [
@@ -597987,43 +602516,43 @@
"manual"
],
"svg/import/fonts-elem-01-t-manual.svg": [
- "68e3123ad5e501f34ab5ef2868ead12450f13770",
+ "99dd34cbd031bd16f355713a2a712d11366cbf59",
"manual"
],
"svg/import/fonts-elem-02-t-manual.svg": [
- "108c7fc09105ab00ce0658e536558c13a69e683b",
+ "83e6b4021f42189e6424e5b145c21eda3995bd76",
"manual"
],
"svg/import/fonts-elem-03-b-manual.svg": [
- "eec0300411eed67a81d476dfbe809488af9f8c8d",
+ "f991d61d613b8603e0048a7a4ab5e12589405c1a",
"manual"
],
"svg/import/fonts-elem-04-b-manual.svg": [
- "7ff5a18bba415cca08fe33bef87d6e79ace84758",
+ "fccaa014e812f0f8a1d48a837c604ec3b37f8b20",
"manual"
],
"svg/import/fonts-elem-05-t-manual.svg": [
- "726fb987d6aaea67b26b8111f2a4a3c691dad922",
+ "e9f89d53f15b24191090df90302c5e519a397f5d",
"manual"
],
"svg/import/fonts-elem-06-t-manual.svg": [
- "de63620f0897485752840e5504b422cc33f4ace2",
+ "9cd05f9453cdb09fe235b7dd2435fba49eabd4c8",
"manual"
],
"svg/import/fonts-elem-07-b-manual.svg": [
- "2b2a2bcfba7a43adb7f6cb5524d10faddf06f622",
+ "333d3e478001a596acb745900b85444821c7ac9c",
"manual"
],
"svg/import/fonts-glyph-02-t-manual.svg": [
- "b18066a286628cdea9b856137d9d3e0444c81535",
+ "4ab2c905c3094c5800b28dfb9da3e8c32be8c7a1",
"manual"
],
"svg/import/fonts-glyph-03-t-manual.svg": [
- "792dbe71d7678f1285d5a1f822fb83f97731069b",
+ "7f82fb7d7f81bd5d340afb945d8506a5852c7503",
"manual"
],
"svg/import/fonts-glyph-04-t-manual.svg": [
- "5776191086ebf7dff71af8bccc94f36686615a9a",
+ "d99288aae5af4ebbcfd921b6c3147e58d8992388",
"manual"
],
"svg/import/fonts-kern-01-t-manual.svg": [
@@ -598031,19 +602560,19 @@
"manual"
],
"svg/import/fonts-overview-201-t-manual.svg": [
- "f946d4294aac6817c928ed6c166a0e2c47cd8bfd",
+ "3e7299c9e5d2bb81def733fc8bbb8197a02bf261",
"manual"
],
"svg/import/imp-path-01-f-manual.svg": [
- "dabccf7704d8ca744e067e9dd7b80fce81f904b3",
+ "39e02ecb762ce28ef30fa03c3fa5b67c55f29911",
"manual"
],
"svg/import/interact-cursor-01-f-manual.svg": [
- "f573c2fc0d6051f11590ee0edc7a1632685b2912",
+ "528a967018fb21de823688b292bba80a06df478a",
"manual"
],
"svg/import/interact-dom-01-b-manual.svg": [
- "b7b7e79d3eb633628cf6c60d10099ceb8637722a",
+ "df4cfb7f334da832e8ec83a07fbad931a583f563",
"manual"
],
"svg/import/interact-events-01-b-manual.svg": [
@@ -598055,19 +602584,19 @@
"manual"
],
"svg/import/interact-events-202-f-manual.svg": [
- "0d6339fa3417c78b96cd13ebc617591858bb3c97",
+ "fdc032a88d833c78794e3fa3843b5cfa6458526e",
"manual"
],
"svg/import/interact-events-203-t-manual.svg": [
- "b941fae8cf52d8f7e2568f712b1a3daec0f8f023",
+ "30862528a44df4d3c0bf8e8f5a4b1990f692913d",
"manual"
],
"svg/import/interact-order-01-b-manual.svg": [
- "8bf800cef05a1d8065fc33d9c9981a494bb7a39c",
+ "e89b9d34527d71b6699dbe1c9508dc2c70bf5b31",
"manual"
],
"svg/import/interact-order-02-b-manual.svg": [
- "0c7292f1978fdd74ea8a5611ee5ef9c3b0ed83d8",
+ "e9559d276ab07d312cd37f16424e5e026dc6ca3c",
"manual"
],
"svg/import/interact-order-03-b-manual.svg": [
@@ -598087,23 +602616,23 @@
"manual"
],
"svg/import/interact-pevents-05-b-manual.svg": [
- "6d7cf6a419023a80d8a2d7b3ec92ecf3e86fcc02",
+ "0f968b8c186a9dd836f46ad456423f08e0a986a2",
"manual"
],
"svg/import/interact-pevents-07-t-manual.svg": [
- "11c6ee2c56e8ce72b80b5ce954c7bf88d17652a6",
+ "642b0c6de0243950c06e15bc2087694abdfeab55",
"manual"
],
"svg/import/interact-pevents-08-f-manual.svg": [
- "8890bea539c307a22bcdbf3c32a24dd059ca3bc3",
+ "a00461ebcf15b93aeccf2ae2e0db925ae0fa96e4",
"manual"
],
"svg/import/interact-pevents-09-f-manual.svg": [
- "6e26ef257d178e037723ef7233054f224e3ce60b",
+ "cf3ad9a55c05a81c86c94e1675ca2f0b7529568f",
"manual"
],
"svg/import/interact-pevents-10-f-manual.svg": [
- "cd0c05303d90b3af28bcfb1662f17a9f9239e67e",
+ "32a3f761f23e97baf6e3d3b13a164c4bae70356a",
"manual"
],
"svg/import/interact-pointer-01-t-manual.svg": [
@@ -598131,19 +602660,19 @@
"manual"
],
"svg/import/interact-zoom-03-t-manual.svg": [
- "383c0c1f9e4371892453ec1504e739cc7fa75081",
+ "603470bd3175057908f7989da8754a66ddde9223",
"manual"
],
"svg/import/linking-a-01-b-manual.svg": [
- "8f01abc3a84bd0c88443a76c48d296a6cd655202",
+ "4ebd905ae7e6af43dde092253dd13241e6b1b2f5",
"manual"
],
"svg/import/linking-a-03-b-manual.svg": [
- "0210d5f51f93cbe8dfb793fbd21b52a6ad3a59ef",
+ "88f4c0c2e0adbac775481e8ee549862786df744d",
"manual"
],
"svg/import/linking-a-04-t-manual.svg": [
- "fda09e11657a0591a2921f403f098835b970fc84",
+ "a8a327626c33e4de51e40665bfed4599f3f3ce56",
"manual"
],
"svg/import/linking-a-05-t-manual.svg": [
@@ -598151,19 +602680,19 @@
"manual"
],
"svg/import/linking-a-07-t-manual.svg": [
- "242dc012924f655c5b7dc83ce4076936dd3238a2",
+ "ef1c1eb68474eedd3be71827689caddd508cd7cf",
"manual"
],
"svg/import/linking-a-08-t-manual.svg": [
- "262a3b1373ba846a3b7176be650ba55b71fdca57",
+ "fb568ea03f3f2dd6676196a8e58d74f33c3cd9b1",
"manual"
],
"svg/import/linking-a-09-b-manual.svg": [
- "b09d802815946bd298951c1e115fe95f8b24e74c",
+ "164a41e1c6fcf1b4fc446afa46d7f4bfd9e67781",
"manual"
],
"svg/import/linking-a-10-f-manual.svg": [
- "8e7e3c16d96f595374aba04e587b238a9a0db12d",
+ "0d1c910b562794f02ffb8f3bae1b8a80b7b7d8c5",
"manual"
],
"svg/import/linking-frag-01-f-manual.svg": [
@@ -598195,11 +602724,11 @@
"manual"
],
"svg/import/masking-mask-02-f-manual.svg": [
- "470d55e324f1cc93d286981b29dfd348ada99d2d",
+ "4d57cb5ba10b94c74f31a5b9728786e116f616e9",
"manual"
],
"svg/import/masking-opacity-01-b-manual.svg": [
- "f517671e8c0b6b5ff2d49e5ab3048fda9602dd90",
+ "3dee6608819ad11f85c3cca59c6f1d26d0ad7a5e",
"manual"
],
"svg/import/masking-path-01-b-manual.svg": [
@@ -598207,11 +602736,11 @@
"manual"
],
"svg/import/masking-path-02-b-manual.svg": [
- "2f10bc391c0ad4b3220dc2df643f1910936c6acb",
+ "24c875932d6ca686f814bcf5e730b60bac7ee5d6",
"manual"
],
"svg/import/masking-path-03-b-manual.svg": [
- "a09301945efab451bdb829c786f1acf915d978a6",
+ "737565bda0a4de454a6904e79b22bb8a6ddfa4ac",
"manual"
],
"svg/import/masking-path-04-b-manual.svg": [
@@ -598223,15 +602752,15 @@
"manual"
],
"svg/import/masking-path-06-b-manual.svg": [
- "da263fe4f655c26de76282bd053b295d78988559",
+ "acd0e11a7b36f219bd245f0fefc5aaac7037841a",
"manual"
],
"svg/import/masking-path-07-b-manual.svg": [
- "290058984a2f1391ba024bd6ee344716357db1f1",
+ "5ac399ae3f96376c921ce89b505a9623ef0ede7c",
"manual"
],
"svg/import/masking-path-08-b-manual.svg": [
- "7dbc8c8546b2abba71e8c191e211cda975fd5273",
+ "afa79e8406b50358b27b47400a3e40b28d1af935",
"manual"
],
"svg/import/masking-path-09-b-manual.svg": [
@@ -598239,35 +602768,35 @@
"manual"
],
"svg/import/masking-path-10-b-manual.svg": [
- "fad8aa4f979fda0ea30e1244f85f4a74fa192185",
+ "e1479762aa8ff2a01eab902ebfbcfc146462c50a",
"manual"
],
"svg/import/masking-path-11-b-manual.svg": [
- "76106547d4edc45285636e7c70821ebc28f2ef46",
+ "b05207daa580f852c939f14b696b4d910a1c6fe7",
"manual"
],
"svg/import/masking-path-12-f-manual.svg": [
- "a25039f5d618af6627014e5212287624ce95607d",
+ "858f6615adcb17dafc43dfb4fe59584b546129df",
"manual"
],
"svg/import/masking-path-13-f-manual.svg": [
- "2142f21401879d13ad79773459a0982b37a6a306",
+ "62811882644ef3c208bcb3ebb4e25dfd66e312a1",
"manual"
],
"svg/import/masking-path-14-f-manual.svg": [
- "92cc54dcce22be08f468d40d9abec7f36883f09e",
+ "1f81cb0f27995f8f89cd99e17472013b1a3d3202",
"manual"
],
"svg/import/metadata-example-01-t-manual.svg": [
- "df286d098db81ca224b42dd0b607933df3b65f1b",
+ "f10728a2f0fc3c8bf9b1b7ef174cea1d8825a7bf",
"manual"
],
"svg/import/painting-control-01-f-manual.svg": [
- "bcd084bf97f08e28c1da703a1cc0fe44319b95d2",
+ "ed9b257be1a94aa4d9751e8c2a407c34d80f5857",
"manual"
],
"svg/import/painting-control-02-f-manual.svg": [
- "e440504c476cf7912e5e9932275f476d86f657b9",
+ "ef1ca2babb2ccb66ca7cdba0897e65e895e500b9",
"manual"
],
"svg/import/painting-control-03-f-manual.svg": [
@@ -598275,19 +602804,19 @@
"manual"
],
"svg/import/painting-control-04-f-manual.svg": [
- "e421b115e76481798680e5bfdabb657b937ae715",
+ "c9f2e4710077fb85a28888bb1f6b1fe2588a01fb",
"manual"
],
"svg/import/painting-control-05-f-manual.svg": [
- "e8e854fa7a79ee41827177d7098e478c6cc8cc46",
+ "b4af358972c7d5f2d922a6690b573a43b39c07b4",
"manual"
],
"svg/import/painting-control-06-f-manual.svg": [
- "e066242dd8dbf1364ab1bae6b6858d9ea529894e",
+ "5e27bbb9b4564ce6c9490220c7fb6e97d519ba43",
"manual"
],
"svg/import/painting-fill-01-t-manual.svg": [
- "8caa9c6524c4efb35c9b34742c6bf8894b499f19",
+ "2eb844608813c551f6b3f980db4294af10bd05f4",
"manual"
],
"svg/import/painting-fill-02-t-manual.svg": [
@@ -598307,11 +602836,11 @@
"manual"
],
"svg/import/painting-marker-01-f-manual.svg": [
- "929a8f41e800bc3ac88cdcfbc7684c9329f588ba",
+ "df0e97ae9862882f3d50ff1626331fc8d61bef3e",
"manual"
],
"svg/import/painting-marker-02-f-manual.svg": [
- "929ea4825245d64b5b64cad702512384341f3403",
+ "6708d972bc2b56e34a6e796e1e93aaa8b05ebec9",
"manual"
],
"svg/import/painting-marker-03-f-manual.svg": [
@@ -598327,11 +602856,11 @@
"manual"
],
"svg/import/painting-marker-06-f-manual.svg": [
- "e54a74a1ff92cf88f2fb348faef87a182beec534",
+ "c12457f790fbcb7326280e26fe040f466207fc2a",
"manual"
],
"svg/import/painting-marker-07-f-manual.svg": [
- "343f931359837a411ef4125e72ccc07dc33f8c35",
+ "5bb4c241412f1b9f7eeae53bcae007d9e3aa0442",
"manual"
],
"svg/import/painting-marker-properties-01-f-manual.svg": [
@@ -598375,7 +602904,7 @@
"manual"
],
"svg/import/painting-stroke-08-t-manual.svg": [
- "0669c9cb39f8b13680868f27327584526f808bf8",
+ "0817d819ee08330c240d4dcc118d15ed67bc17fc",
"manual"
],
"svg/import/painting-stroke-09-t-manual.svg": [
@@ -598391,23 +602920,23 @@
"manual"
],
"svg/import/paths-data-02-t-manual.svg": [
- "4f591cef498aecc1442c169e48ee7504b5dcf692",
+ "58b4dc2c1ce08f44c94a074ffb53d3db474f4bb2",
"manual"
],
"svg/import/paths-data-03-f-manual.svg": [
- "821cf691cc9a080a29071516e688aae50f29e523",
+ "c45fed0db7a0de6d771e4f0b7a69cd50ab7dfd7a",
"manual"
],
"svg/import/paths-data-04-t-manual.svg": [
- "2445cc7b26107c057495af752363d920b29f5b7f",
+ "de4d13412f224011d1787cd902487154ccea09fd",
"manual"
],
"svg/import/paths-data-05-t-manual.svg": [
- "21ad02407e307bcfd55b098c9d2a16784a8622af",
+ "60b1630a8a01331fe1a7692363bcd086a10b128c",
"manual"
],
"svg/import/paths-data-06-t-manual.svg": [
- "567bbb56d5df9202f8b3283c3cb92a723f9b21eb",
+ "8dbee3f650392d289b7df44c1e7438d2d5b8e0af",
"manual"
],
"svg/import/paths-data-07-t-manual.svg": [
@@ -598415,15 +602944,15 @@
"manual"
],
"svg/import/paths-data-08-t-manual.svg": [
- "33dc8ec39badea0174c44d8b72ec44411189087b",
+ "9d17a26bfdd24bfb13838ef440d96506c227a84b",
"manual"
],
"svg/import/paths-data-09-t-manual.svg": [
- "9e7f84bf8a533cce60084ec2a3ac2e9e6bd26e27",
+ "73bbb2981c2cf9954b64bfd10bbfe5e82a19b807",
"manual"
],
"svg/import/paths-data-10-t-manual.svg": [
- "f1cadce304c3f1703876ebc02e8d3301df51f4d9",
+ "1a15119957fdeb9afd8b18319fafeeb2d8ee889a",
"manual"
],
"svg/import/paths-data-12-t-manual.svg": [
@@ -598431,7 +602960,7 @@
"manual"
],
"svg/import/paths-data-13-t-manual.svg": [
- "36ae3ca884cdad85b7f62468244e762114439503",
+ "734887fcc37eab0be89e5456ec3e2d926a0d1478",
"manual"
],
"svg/import/paths-data-14-t-manual.svg": [
@@ -598447,19 +602976,19 @@
"manual"
],
"svg/import/paths-data-17-f-manual.svg": [
- "920de927e8d64bfe59fd4a40389138d08e27ef2c",
+ "781e9cb41d7f9292492e6f6c77e73d42d2227790",
"manual"
],
"svg/import/paths-data-18-f-manual.svg": [
- "8b5cfd61c24cde9814b05a29e9338caab2bae613",
+ "981c60afd4b6dd6d877f120014b2e53f53b784db",
"manual"
],
"svg/import/paths-data-19-f-manual.svg": [
- "2aed00fa25475923ef521259158f225f1c3f403a",
+ "39326e92ddf48e6d0e2e84a91e2cfc046a04829f",
"manual"
],
"svg/import/paths-data-20-f-manual.svg": [
- "5001dad2f75de92048fb07a69f5ea19be3e82f49",
+ "e7ae41864316fab2e50ae48d943250ae0f3d3634",
"manual"
],
"svg/import/paths-dom-01-f-manual.svg": [
@@ -598471,31 +603000,31 @@
"manual"
],
"svg/import/pservers-grad-01-b-manual.svg": [
- "6ba4e0ba87f1a6b7803569e3033d04363c4cca01",
+ "b3d6ce5784c8e797c484b10be7d54ab4e3a4bc29",
"manual"
],
"svg/import/pservers-grad-02-b-manual.svg": [
- "d6e402a9b051d043fbb1947ca995a5ab0e775c95",
+ "cb16e89e857bc4ab527720ad8533ca3abde7cd8a",
"manual"
],
"svg/import/pservers-grad-03-b-manual.svg": [
- "17a44f930005e0fa8a920503eb2b3f7f33bb53fd",
+ "de4ee54a7424d0368aaf1f0af78f11b362c88244",
"manual"
],
"svg/import/pservers-grad-04-b-manual.svg": [
- "05663d7665d076599c29e00c8ab4535377d209d8",
+ "e5958ec7e10d74409a755953676b93a40ed8ee44",
"manual"
],
"svg/import/pservers-grad-05-b-manual.svg": [
- "7aa50cfa515fb41e9f5ec63b1bf1b2a6d1cfacfc",
+ "1cfae7949e98f82ba2ad3350325e6a8a5abbc97d",
"manual"
],
"svg/import/pservers-grad-06-b-manual.svg": [
- "4b5f3c4319b636d6cd888d94fd360634043dd6fa",
+ "cfb92c91777dcc9db538695bce40dd2eda60bcf5",
"manual"
],
"svg/import/pservers-grad-07-b-manual.svg": [
- "385a5617ddfaaf62b0fa76c56d5f5f1f5b0984b6",
+ "b0cb66ca569be21225b66538944343ebaca85f23",
"manual"
],
"svg/import/pservers-grad-08-b-manual.svg": [
@@ -598507,15 +603036,15 @@
"manual"
],
"svg/import/pservers-grad-10-b-manual.svg": [
- "107081ca9c5d4b488bdb890da5a3965e5c3d3da1",
+ "740843fd337aee01fdb98b59eefb0030093ba1de",
"manual"
],
"svg/import/pservers-grad-11-b-manual.svg": [
- "c5c04da89ff4df0f4d34f700abdd93b7b4b633c7",
+ "3c2decbd436333b916754b778e3e61955107bfa3",
"manual"
],
"svg/import/pservers-grad-12-b-manual.svg": [
- "75e7eb13ccd80c69f5157e19ab23010a9f8e3570",
+ "3588435f7d1831f5c150db865562af031316e8b7",
"manual"
],
"svg/import/pservers-grad-13-b-manual.svg": [
@@ -598523,11 +603052,11 @@
"manual"
],
"svg/import/pservers-grad-14-b-manual.svg": [
- "8e3d7f214567699accf042e24a5867ad40052749",
+ "1271bd78065dc3152936b9139b51bb39f5133bc5",
"manual"
],
"svg/import/pservers-grad-15-b-manual.svg": [
- "2b64c0f020f30a48efa2067991fb970200daba06",
+ "84fa4fdffdad8fb056d68eb221c68ba4a9c15f5f",
"manual"
],
"svg/import/pservers-grad-16-b-manual.svg": [
@@ -598539,15 +603068,15 @@
"manual"
],
"svg/import/pservers-grad-18-b-manual.svg": [
- "9c2484d90ce7b0a79c97010226d7495286452670",
+ "feb988989f1f00812da68158c1409d72ecbde580",
"manual"
],
"svg/import/pservers-grad-20-b-manual.svg": [
- "262f30784e79553a8bae65bc46cfdcfaa30e96ce",
+ "69002de9a9b26e64d4e590c20e3e47c897df9657",
"manual"
],
"svg/import/pservers-grad-21-b-manual.svg": [
- "af8e4a37aeea6f6b7dc7e20d5e6c39be280b856c",
+ "c9966a5af72a21b3e8d3a18ea36187ba4cd75931",
"manual"
],
"svg/import/pservers-grad-22-b-manual.svg": [
@@ -598555,7 +603084,7 @@
"manual"
],
"svg/import/pservers-grad-23-f-manual.svg": [
- "55285edce2e0b696464906331bdfe4b73b3281fb",
+ "1576478a7c5d89796a98848c340345dabee54dca",
"manual"
],
"svg/import/pservers-grad-24-f-manual.svg": [
@@ -598575,7 +603104,7 @@
"manual"
],
"svg/import/pservers-pattern-03-f-manual.svg": [
- "9972d768f6b0821a45815449758fcb8efd1bc12e",
+ "8092b98a5c2355dc48803bd03783acc2cc34445c",
"manual"
],
"svg/import/pservers-pattern-04-f-manual.svg": [
@@ -598595,67 +603124,67 @@
"manual"
],
"svg/import/pservers-pattern-08-f-manual.svg": [
- "0cba2bb22819c271f33bc49ec06ac47bb4b6c512",
+ "3cc3c5b7d2a3b5b694ca828951caa69e8f5b1d36",
"manual"
],
"svg/import/pservers-pattern-09-f-manual.svg": [
- "0269c4e2b1d6088807db596ab4b0e9ca7cac04f2",
+ "2b151da964ecb2b1d6cd44e8544fc3a8a3e664a9",
"manual"
],
"svg/import/render-elems-01-t-manual.svg": [
- "253d148f5c2ee125210afa1cd5600572ffa4bcd7",
+ "c9c4e0cc5c47c4eb062e34c64bbf579796465df7",
"manual"
],
"svg/import/render-elems-02-t-manual.svg": [
- "48107f3f394322dbe2c703d547d2c2040162ba86",
+ "d2b6c17627fc793f939232d486ee5cc82e51d822",
"manual"
],
"svg/import/render-elems-03-t-manual.svg": [
- "e3ba4efce691da4d8da5717f5cd7eba0886efdbd",
+ "a10a5d97595a1a113f24ea5990cf620ca7c65e95",
"manual"
],
"svg/import/render-elems-06-t-manual.svg": [
- "4d08844dcd5c9017be1be7f700778decd8ba8da4",
+ "c72c59e39d2247776abfb49474774ec1d7048bde",
"manual"
],
"svg/import/render-elems-07-t-manual.svg": [
- "08beec55561c2d4135350edd32a08209f255ce37",
+ "29a5229d2bdfe83a3af523f30cde8a33c191705b",
"manual"
],
"svg/import/render-elems-08-t-manual.svg": [
- "82abcb6308458646a797be8891e0e762506dc5f9",
+ "21ef8542d889312984438ef99877d2de14c5abc8",
"manual"
],
"svg/import/render-groups-01-b-manual.svg": [
- "4757abd4d6d0f43da3f3f10a93f19c3c33833efb",
+ "a6bd7df05cb1b1c86b43b2f68b2a18cddbb26169",
"manual"
],
"svg/import/render-groups-03-t-manual.svg": [
- "14dc713926d70e50eda53ad39f1faeabe7f460ca",
+ "195e61ed2458b188da1744b319f6ae2171cbef12",
"manual"
],
"svg/import/script-handle-01-b-manual.svg": [
- "f69c449381426312da1ab81a6c46542c78237c98",
+ "625d8415645c7d964528ddf26aeddfca77a868a7",
"manual"
],
"svg/import/script-handle-02-b-manual.svg": [
- "bc33a017379d855d25bad72573ce0689dc04d8c2",
+ "b5913e5238be8a41edb23ac68bdbdde15501bbaa",
"manual"
],
"svg/import/script-handle-03-b-manual.svg": [
- "efeea87760e76d4ad6cddb25edb6694eef02b3ef",
+ "c51934d2213c0890c95070f0ff01af54bd5c47d7",
"manual"
],
"svg/import/script-handle-04-b-manual.svg": [
- "7bf31c8e96d412795d98fe9b0558ebc5996dd1b0",
+ "30ae2c72f1b7c16cb803423c2d51dc0f0de860a7",
"manual"
],
"svg/import/script-specify-01-f-manual.svg": [
- "a9a948f3fe93fb17c20d158d4d14e43cb720d507",
+ "1f5184e436b0120b5aab633a5b56a060eeeaddd9",
"manual"
],
"svg/import/script-specify-02-f-manual.svg": [
- "d69a4b7782f39c920ec8f5fbb12514a65de529ee",
+ "e7dac1d58176fe1af8bb64598682b840920c9f77",
"manual"
],
"svg/import/shapes-circle-01-t-manual.svg": [
@@ -598675,11 +603204,11 @@
"manual"
],
"svg/import/shapes-ellipse-03-f-manual.svg": [
- "dd343f89ad62598312317d6507beac5da4341b5c",
+ "d0ca131cdba21698f158a00f55f207e493f337c3",
"manual"
],
"svg/import/shapes-grammar-01-f-manual.svg": [
- "b336b5b7a4ca1b76a8f7d824cba5ca44ee21f373",
+ "271019490382be5fa5ff54fd4485a83a7c6683d6",
"manual"
],
"svg/import/shapes-intro-01-t-manual.svg": [
@@ -598687,7 +603216,7 @@
"manual"
],
"svg/import/shapes-intro-02-f-manual.svg": [
- "9e1ae085794dd65135474c04819bd745cbbf077e",
+ "fb028a1303ff000e66e8574ae5f8e60cbce84604",
"manual"
],
"svg/import/shapes-line-01-t-manual.svg": [
@@ -598695,7 +603224,7 @@
"manual"
],
"svg/import/shapes-line-02-f-manual.svg": [
- "e86ab93e473a43c9b2d03ac0b31d13fedf5e7d95",
+ "917dd8e03ac9ea40e49a39335b5cb8d47e94e169",
"manual"
],
"svg/import/shapes-polygon-01-t-manual.svg": [
@@ -598703,7 +603232,7 @@
"manual"
],
"svg/import/shapes-polygon-02-t-manual.svg": [
- "aa8f84092f9ad9bfdd6e2acc0c92c0b032ee1cc3",
+ "03be7f27bd686c330946d8de05c6d88e1628e14f",
"manual"
],
"svg/import/shapes-polygon-03-t-manual.svg": [
@@ -598715,7 +603244,7 @@
"manual"
],
"svg/import/shapes-polyline-02-t-manual.svg": [
- "516360bf8e410c2beb2783c0d374ffca682abb0f",
+ "991e59ea98a3b4ea85fec98b01f5c0cbc1355be4",
"manual"
],
"svg/import/shapes-rect-02-t-manual.svg": [
@@ -598723,23 +603252,23 @@
"manual"
],
"svg/import/shapes-rect-03-t-manual.svg": [
- "4945fc854560f095d0941eb18ee451d3c4b21e48",
+ "a9cb423967b0dbb2dcb9ebf2736be5da7bc7b203",
"manual"
],
"svg/import/shapes-rect-04-f-manual.svg": [
- "e9eb1cd8d82e13231a042b37d1f1c91d96768607",
+ "61a3cb9db5af5ca4890d4b008bb3c2ef746b8d2e",
"manual"
],
"svg/import/shapes-rect-05-f-manual.svg": [
- "44a52619b7e4e855b3df62e604380d1dbb13bc0b",
+ "7dbed8a770d39970fe270ef88a82b0ee4951336b",
"manual"
],
"svg/import/shapes-rect-06-f-manual.svg": [
- "8bbb75e7733c12b4f8919b08c53db13aa0fa2cf8",
+ "a1f4b3524ae5c41f9dc42076a5b55d6720acc35e",
"manual"
],
"svg/import/shapes-rect-07-f-manual.svg": [
- "0065d0ce468bd673f71be4b41dd7bb7240555ad7",
+ "b7ac8d4f73f8267edae50865553480e57a41a87e",
"manual"
],
"svg/import/struct-cond-01-t-manual.svg": [
@@ -598747,11 +603276,11 @@
"manual"
],
"svg/import/struct-cond-02-t-manual.svg": [
- "af381f9ce4cd8809aecb69c8e82331fb04f5f8eb",
+ "1fedc26d3db027dbbeedffa10b3168703e705957",
"manual"
],
"svg/import/struct-cond-03-t-manual.svg": [
- "77c0f6d5d031c5a0043b621ad2b9afb73345767c",
+ "0b953ff07327e0f5a179546c1265f5f00b1e0c72",
"manual"
],
"svg/import/struct-cond-overview-02-f-manual.svg": [
@@ -598767,19 +603296,19 @@
"manual"
],
"svg/import/struct-cond-overview-05-f-manual.svg": [
- "fdee357f40d6d622160cb2c112b7b25facb724d3",
+ "82ffd1410bb1b9b7d2ceaf098a7590fdeb16cd35",
"manual"
],
"svg/import/struct-defs-01-t-manual.svg": [
- "b62baf15ce772cef04c5843f8d2c2a34eae896a4",
+ "315c13c500eba357da24fbf6be2c2a20c59df655",
"manual"
],
"svg/import/struct-dom-01-b-manual.svg": [
- "3ec98bd07d08f0fc90efc87f71318b6e45de8104",
+ "b0db0bf2fd5dc5ec581ddad685ab574c8d39820e",
"manual"
],
"svg/import/struct-dom-02-b-manual.svg": [
- "d6d5406c36bcea7248b402bc7ab430d54b404bb2",
+ "260c230711b0009c6b2d7bbb196b3baea8b7c1b5",
"manual"
],
"svg/import/struct-dom-03-b-manual.svg": [
@@ -598787,11 +603316,11 @@
"manual"
],
"svg/import/struct-dom-04-b-manual.svg": [
- "0f454aad4ebb0ee75a3ccd2a568c946477a9a94e",
+ "c2ad299a70cd494a65f3e44881a40547128fe297",
"manual"
],
"svg/import/struct-dom-05-b-manual.svg": [
- "f2b59e12801e56edda633990e5c67cda05bd173f",
+ "37f7ecf261678d7fe582c60984b39e886964d81f",
"manual"
],
"svg/import/struct-dom-06-b-manual.svg": [
@@ -598803,39 +603332,39 @@
"manual"
],
"svg/import/struct-dom-08-f-manual.svg": [
- "1dd3741c64123365ef7e6531410329a085adea57",
+ "b8f030d4c70bf390e8e4d601c212fb00233da5c5",
"manual"
],
"svg/import/struct-dom-11-f-manual.svg": [
- "62d91801603be86edf651e07c61a8bea6455a130",
+ "887c0f9a3a0c5a207db0d96b32e529a87e09c138",
"manual"
],
"svg/import/struct-dom-12-b-manual.svg": [
- "7583623badde73201c5a5cec843953807be110fe",
+ "2b278189442d6f16152df8c7330675098b1e1a3f",
"manual"
],
"svg/import/struct-dom-13-f-manual.svg": [
- "6975eba0ac7234a45d5117fd29c45aed714cee34",
+ "375f2f8e7e877855d7545bb8b296b40bbb1975e7",
"manual"
],
"svg/import/struct-dom-14-f-manual.svg": [
- "b6791801ce1f220da542757e4b586e60a1dc4541",
+ "8d4049caa5957a832777df1a3e7508d2283239d4",
"manual"
],
"svg/import/struct-dom-15-f-manual.svg": [
- "fa3cf8beea0bdb1bf786b20c54dc9f81c3e310b2",
+ "693f838eb9fb1e14a3f11c0f69c7124f6c2778d0",
"manual"
],
"svg/import/struct-dom-16-f-manual.svg": [
- "165515b09f7d9c7ec5bf0e420897c490dc24a0d6",
+ "5dc7c8bb1a73842ce4282dbfcf99aa03d4320237",
"manual"
],
"svg/import/struct-dom-17-f-manual.svg": [
- "4f921a64253e16a46ee5667051426432b74c6f5e",
+ "8fa504a7104fc08fd10f7e2892574245d8b0a4b5",
"manual"
],
"svg/import/struct-dom-18-f-manual.svg": [
- "a3965f62e216cf050d47446b0bc4fe4b853c421b",
+ "59924135dfdbbbe1fc3e515637e29e3d13c211ab",
"manual"
],
"svg/import/struct-dom-19-f-manual.svg": [
@@ -598843,11 +603372,11 @@
"manual"
],
"svg/import/struct-dom-20-f-manual.svg": [
- "c2810d67dd702838a3f62dffd34c29a5e0d6d099",
+ "33dff24e95404bc64a2b3ceaa7ad94080baa6274",
"manual"
],
"svg/import/struct-frag-01-t-manual.svg": [
- "affc7a5fbc5fb9616a1d5516f286c69022102758",
+ "838b71b7cd15459ece0d461d765471c463553768",
"manual"
],
"svg/import/struct-frag-02-t-manual.svg": [
@@ -598855,11 +603384,11 @@
"manual"
],
"svg/import/struct-frag-03-t-manual.svg": [
- "5a577ace5f25bccb883a824834d305e288b18416",
+ "8f5ccecdd3eb5001f0d28ff8b4baac9f9c36d83d",
"manual"
],
"svg/import/struct-frag-04-t-manual.svg": [
- "f8e60c6448a7bd933a1cf35c612c7101af538f2a",
+ "bf146ae86ee75a64c4e5251cab707b5a8dcd2c3b",
"manual"
],
"svg/import/struct-frag-05-t-manual.svg": [
@@ -598871,7 +603400,7 @@
"manual"
],
"svg/import/struct-group-01-t-manual.svg": [
- "37b1f4839bf1c6baf93f6958e3e6e1c68cc0581f",
+ "5b296134837d2e299605e6d1d38fea39e9d38824",
"manual"
],
"svg/import/struct-group-02-b-manual.svg": [
@@ -598887,7 +603416,7 @@
"manual"
],
"svg/import/struct-image-02-b-manual.svg": [
- "ab20fa7d6089e97e854f35b6ed6af8e3d61fa6c8",
+ "4f0d83b2e2ae960abbb529f224328602ac64a783",
"manual"
],
"svg/import/struct-image-03-t-manual.svg": [
@@ -598931,15 +603460,15 @@
"manual"
],
"svg/import/struct-image-13-f-manual.svg": [
- "85112bea065085c3573d9a5852d9f8ddfa03a1c4",
+ "b79521432f68d663312275e73479b187f5dfe0d0",
"manual"
],
"svg/import/struct-image-14-f-manual.svg": [
- "e0a66aaec32ab16cce5d4ea5cd71653f61e2a07d",
+ "8830a3a55aa83c4366bdaa349837d7a158329ea4",
"manual"
],
"svg/import/struct-image-15-f-manual.svg": [
- "0c66275a752b59942b8a63562bbe6313cfd59f1b",
+ "eac059b61ff24a7c626953b5653f7c4dacd743a0",
"manual"
],
"svg/import/struct-image-16-f-manual.svg": [
@@ -598951,23 +603480,23 @@
"manual"
],
"svg/import/struct-image-18-f-manual.svg": [
- "e11d6f1775f5320cd0c3dbe7a18210b6c83294c6",
+ "005e99f3ab92fe12a15427795a9b6c9c2015701f",
"manual"
],
"svg/import/struct-image-19-f-manual.svg": [
- "b32515660158dfe5ef71acdbfa33270339cc187e",
+ "de508b8236676b9f6d2b9d85423344d1f8a28fe6",
"manual"
],
"svg/import/struct-svg-01-f-manual.svg": [
- "4f2918b1ce1580d2499dd25d67c3f3d4ffd3af33",
+ "5edb3b61f892cbe3ab1296529f6f14beefdff3ef",
"manual"
],
"svg/import/struct-svg-02-f-manual.svg": [
- "969d60431d1215ecb7ed7109cbecf9a7ba4ad616",
+ "f9f65e96e2329cad4c2522dba745e8a64d5fa8ca",
"manual"
],
"svg/import/struct-svg-03-f-manual.svg": [
- "8a7bd523926be0666241a337ea6822cc3749e12f",
+ "a301209f020c37c08bd0628dc7ff116d3369a958",
"manual"
],
"svg/import/struct-symbol-01-b-manual.svg": [
@@ -598975,7 +603504,7 @@
"manual"
],
"svg/import/struct-use-01-t-manual.svg": [
- "28485150ac011f4dc1b0b0ccaf93f990bb15b2d4",
+ "a636928de6036ff9eceb68fb92d444f89adb382e",
"manual"
],
"svg/import/struct-use-03-t-manual.svg": [
@@ -598987,15 +603516,15 @@
"manual"
],
"svg/import/struct-use-05-b-manual.svg": [
- "26761ba5c17be583abba552e01c32921ba8f5eab",
+ "7e4e28a97e55f0d53df85dcaa0d5c31ca2756002",
"manual"
],
"svg/import/struct-use-06-b-manual.svg": [
- "e08b140a6f779eaa9bde323895347697398722ee",
+ "11dec3cbb2ecd5249c984e0c41711f0c85852d0a",
"manual"
],
"svg/import/struct-use-07-b-manual.svg": [
- "35a24caa2408861dcc5930bff462c74c577048fe",
+ "e5a95a3f65c7c87c7cf8e4397aba1c7d6ef53228",
"manual"
],
"svg/import/struct-use-08-b-manual.svg": [
@@ -599007,15 +603536,15 @@
"manual"
],
"svg/import/struct-use-10-f-manual.svg": [
- "ac53dfc702140bcd70513f22ce3ad5b2a0ccbfc6",
+ "3620aa4507e3cf5c7f6a2cd28909237694c51a4b",
"manual"
],
"svg/import/struct-use-11-f-manual.svg": [
- "6d2804cf106ece5a0d34f0c2e49507e4233dd515",
+ "7ba8f551f2c3fa6bcf7f0846ec403380d9f8dcc9",
"manual"
],
"svg/import/struct-use-12-f-manual.svg": [
- "4e6a33d14949c5d98df9f42f7a3ac5f6b5091198",
+ "39e5d371249ea3073d3d17311e4cba4643568014",
"manual"
],
"svg/import/struct-use-13-f-manual.svg": [
@@ -599023,31 +603552,31 @@
"manual"
],
"svg/import/struct-use-14-f-manual.svg": [
- "dea04240f917e989d1e4aafaf6664bff614ff8f8",
+ "f26ffad6dfe2d1eb1f12bc8554674f260e8a7a84",
"manual"
],
"svg/import/struct-use-15-f-manual.svg": [
- "9f75692e86e8e29c2cad0d6c0a567be2e0729c13",
+ "3ecba32c588f58f63f467f15949c3abd62823ccb",
"manual"
],
"svg/import/styling-class-01-f-manual.svg": [
- "28799e8d0a76cc1fe95cf8146928934aa97f94fa",
+ "92cf2279560574a07aab3b536ef68a7e76fa88d2",
"manual"
],
"svg/import/styling-css-01-b-manual.svg": [
- "343e25229cd1fe1e2b4a8f4a6caf03f87850622a",
+ "89f39981b9c58ffb3ebe48072abd8373c0d7e25f",
"manual"
],
"svg/import/styling-css-02-b-manual.svg": [
- "9523a8991031b2a13d8784ad63e59164367cc82b",
+ "334e3dc68655d262545f9c6e161baf2d95728c38",
"manual"
],
"svg/import/styling-css-03-b-manual.svg": [
- "f8018b2a845241030c39eaf1b2fc0cbcf8fb3423",
+ "5adb25a502980120e20d4cf885944dbbfc376f28",
"manual"
],
"svg/import/styling-css-04-f-manual.svg": [
- "ab2cac0e2c79cb9aa43bc93cea0ea0d6df2c5b9c",
+ "139cf0c5765dacb5a8f4062883f15c7c1cd3db5a",
"manual"
],
"svg/import/styling-css-05-b-manual.svg": [
@@ -599055,27 +603584,27 @@
"manual"
],
"svg/import/styling-css-06-b-manual.svg": [
- "59896c5ec11fc57110602fbcbf2b4ace79b0f96f",
+ "ec89efea39c08f8b0463a91aa766b0755c1f482b",
"manual"
],
"svg/import/styling-css-07-f-manual.svg": [
- "401eb1b6152dcf6a4b6aa5ebbd1d674165057c6a",
+ "6005a727f0a88d38cdad19611eb791c5a6f4a5c4",
"manual"
],
"svg/import/styling-css-08-f-manual.svg": [
- "e5fab671b7b20a4a6605c70ef26c69db126048de",
+ "c59cb71a167aaeded209b449a0dd42ef8a77dbf9",
"manual"
],
"svg/import/styling-css-09-f-manual.svg": [
- "9187878f4ba6e3386a13d1037cbbefd1a53826ef",
+ "866adda6d131bdc964c45e54238d984b13c53c75",
"manual"
],
"svg/import/styling-css-10-f-manual.svg": [
- "18292a24a05befcec48f85a1312914e2f2bf6f69",
+ "1b32c5ffa50d463ef984efe4c5f1f965774df7f1",
"manual"
],
"svg/import/styling-elem-01-b-manual.svg": [
- "027c96b3813efb1aff5a521fd007aefc3a6ae5da",
+ "3a8ca075ef4f0c83dd8dfc84eccdf4faecd060d2",
"manual"
],
"svg/import/styling-inherit-01-b-manual.svg": [
@@ -599083,11 +603612,11 @@
"manual"
],
"svg/import/styling-pres-01-t-manual.svg": [
- "c26e6f161cc061d281d6fa805ab9b148894de158",
+ "e1e7f8092eadb9a5ca48dc0d4cd48425ace2c639",
"manual"
],
"svg/import/styling-pres-02-f-manual.svg": [
- "507a5f57b571d2cf5446db4b392154cb12d30856",
+ "8762e1a224e6bfcc6f6b237e510f9fc8d3aee686",
"manual"
],
"svg/import/styling-pres-03-f-manual.svg": [
@@ -599095,15 +603624,15 @@
"manual"
],
"svg/import/styling-pres-04-f-manual.svg": [
- "a773bdc0282907a2743d2bf207cfc4b7bee19eb8",
+ "901839dd5ec6327b8b6ea3ec1557a26fb9656bba",
"manual"
],
"svg/import/styling-pres-05-f-manual.svg": [
- "f05362e56f7ea5de67f6c26c058b5f1ffe2dea1e",
+ "02f65e8ab8e9a45ef57eda2f65e06f177a1300ea",
"manual"
],
"svg/import/svgdom-over-01-f-manual.svg": [
- "b8da454b43e6010ee371eec31b95bb26583d243a",
+ "c5c3c725d301293634f513b6eabc666a6f5a0e72",
"manual"
],
"svg/import/text-align-01-b-manual.svg": [
@@ -599131,11 +603660,11 @@
"manual"
],
"svg/import/text-align-07-t-manual.svg": [
- "7a2a2aba8835069cb8848848634acd8a27e01f9e",
+ "2b08283f4e5987cc4f590f754f08920b4dd9b361",
"manual"
],
"svg/import/text-align-08-b-manual.svg": [
- "b9a5be937cf3d600378183370ccb570dc86a3060",
+ "f6d478b13e291635ad441ca330702264468b4c1c",
"manual"
],
"svg/import/text-altglyph-01-b-manual.svg": [
@@ -599143,19 +603672,19 @@
"manual"
],
"svg/import/text-altglyph-02-b-manual.svg": [
- "2378921ec60a329f4ddf22a3b346ed4b84e02242",
+ "997200b7af695d4c4cbcf2c9daad4ee424b5d5ba",
"manual"
],
"svg/import/text-altglyph-03-b-manual.svg": [
- "a7998d54e19e5edbf7e0196953d85dda3d9b8685",
+ "20c0dcf45d963c81dea112d2319be19e1f4a3b56",
"manual"
],
"svg/import/text-bidi-01-t-manual.svg": [
- "26f7eb29700bbd844f0992bc49dc487a779ba5f0",
+ "97fcc1cd9d99b8b3369e239575c8065775b4951f",
"manual"
],
"svg/import/text-deco-01-b-manual.svg": [
- "292b5a377ae3d7e1375cb4bcf3a2fc2018a095aa",
+ "b3f6e35bc346e4e95f4f3db41c327bd50287551b",
"manual"
],
"svg/import/text-dom-01-f-manual.svg": [
@@ -599163,7 +603692,7 @@
"manual"
],
"svg/import/text-dom-02-f-manual.svg": [
- "5e8c3570c525aca00f6aec5da34947d2fc72a7a2",
+ "33ce700947b84467828cec0b016a8d10afa3553e",
"manual"
],
"svg/import/text-dom-03-f-manual.svg": [
@@ -599171,11 +603700,11 @@
"manual"
],
"svg/import/text-dom-04-f-manual.svg": [
- "4d6a233c39ca69d040dcf5f48c350790381529de",
+ "b280bf8b618d7324e8b2dc8339a11c19238d497a",
"manual"
],
"svg/import/text-dom-05-f-manual.svg": [
- "73e9487429854ba146f81bd5c1b25c3988d740cd",
+ "15e932b3e6b866b6855b1dc4b4ebd2b98ffab8b0",
"manual"
],
"svg/import/text-fonts-01-t-manual.svg": [
@@ -599195,19 +603724,19 @@
"manual"
],
"svg/import/text-fonts-05-f-manual.svg": [
- "66b9dfe9dd38b98e4db110558f5b453b56458fb4",
+ "298f722a2548c74ad8198e93f9113eae2eab00eb",
"manual"
],
"svg/import/text-fonts-202-t-manual.svg": [
- "dab858eefa6c1a701b4423f95b539f16b34978c9",
+ "3a1fa4aed30eec6636e696bed41320ab194e79ab",
"manual"
],
"svg/import/text-fonts-203-t-manual.svg": [
- "8272121baab03f5dcdf5e1072fd5be07d8d17994",
+ "f6893a1d03493aa868bc770950cf5ffa37daf911",
"manual"
],
"svg/import/text-fonts-204-t-manual.svg": [
- "b25067513750c29124f3fec4e195998374404985",
+ "09434fcfe00e588e5dd933322de47578ab496b3f",
"manual"
],
"svg/import/text-intro-01-t-manual.svg": [
@@ -599215,7 +603744,7 @@
"manual"
],
"svg/import/text-intro-02-b-manual.svg": [
- "65d1875234625caee80005af42348f2203bf0bfe",
+ "23dbe3cd8466884b2e49a877a8db28722dcc7493",
"manual"
],
"svg/import/text-intro-03-b-manual.svg": [
@@ -599227,15 +603756,15 @@
"manual"
],
"svg/import/text-intro-05-t-manual.svg": [
- "a61c4f8519405ac85a022db474e3b36ccb5d0a3a",
+ "21b985d857a9507ab4d9a66442ea29e42af09e5b",
"manual"
],
"svg/import/text-intro-06-t-manual.svg": [
- "81a6309eb8a5e90b731f8125b8990b9b27569735",
+ "7c0533eb8ba72dae7e8ada88bd078e79585440a0",
"manual"
],
"svg/import/text-intro-07-t-manual.svg": [
- "7aa25f1a38bc1b5076359a76742b16da8b6117f8",
+ "58d72e6b61dfb057d5cfb2f980617bc3d25486de",
"manual"
],
"svg/import/text-intro-09-b-manual.svg": [
@@ -599243,7 +603772,7 @@
"manual"
],
"svg/import/text-intro-10-f-manual.svg": [
- "29770a6d47e10bf1ab1576d558a226dcb4804133",
+ "66a97be859dc1fdc1fcfe4461c133e5c11cee8bb",
"manual"
],
"svg/import/text-intro-11-t-manual.svg": [
@@ -599251,7 +603780,7 @@
"manual"
],
"svg/import/text-intro-12-t-manual.svg": [
- "532ac8b3b9994b375f943548c2693dfa73450e16",
+ "ec1a41480c67b7b467c59878a3bafaad8a62eeb5",
"manual"
],
"svg/import/text-path-01-b-manual.svg": [
@@ -599299,27 +603828,27 @@
"manual"
],
"svg/import/text-text-10-t-manual.svg": [
- "eb36ac4a847d243cf60641469a146a3f2d5a7f8d",
+ "27bac42287caab308ad6736ea381c7aeee21335d",
"manual"
],
"svg/import/text-text-11-t-manual.svg": [
- "3094961df3f4313c5ba5c44acc9adbcd072ea7ca",
+ "31541ca6db546c9e4550424562542dc84937647d",
"manual"
],
"svg/import/text-text-12-t-manual.svg": [
- "7b6f1f1ff5a7d2f700060dcbeb439a8f106d7c54",
+ "b5d5016cc0887dccffdf225807972131826decc5",
"manual"
],
"svg/import/text-tref-01-b-manual.svg": [
- "605d1c3ae649f6ef7dcf6ca03e726e1adf74e463",
+ "5b174d4ebb43f0ba5d1519e0135cd6503e763320",
"manual"
],
"svg/import/text-tref-02-b-manual.svg": [
- "3c83d93bd6bd53930ef982bd2d0265a17acc79af",
+ "ab5bfe7ca87030d5efff6c658738792048eb7559",
"manual"
],
"svg/import/text-tref-03-b-manual.svg": [
- "9ecd3a6d5f018a4dc60ab26c1a438b8c7f7518e2",
+ "888676e07e98a08b4b2e0e240052d19057d22ed0",
"manual"
],
"svg/import/text-tselect-01-b-manual.svg": [
@@ -599331,23 +603860,23 @@
"manual"
],
"svg/import/text-tselect-03-f-manual.svg": [
- "1d67b890c5776d55a430fdcacbd0f0af89742821",
+ "18848e58f648485e97caa8f63b653c4d97a20f3b",
"manual"
],
"svg/import/text-tspan-01-b-manual.svg": [
- "46cc454b2d212158b5ca6b597eafc18b10398056",
+ "a2d60a9ef117dbc08cb9211e5a8b94b955b5fbd7",
"manual"
],
"svg/import/text-tspan-02-b-manual.svg": [
- "5c28046d76478e87b4d6b430edc55588cf31ddff",
+ "0885771297053754c6ba16a0981d2b725f3777ef",
"manual"
],
"svg/import/types-basic-01-f-manual.svg": [
- "776ddd546c16f0e46158caa0ed354f178b299ecc",
+ "5c1ccc91d73740f49c5a295f003ba7814713cdb1",
"manual"
],
"svg/import/types-basic-02-f-manual.svg": [
- "a9bf45066fe51c0baf54f6febddb708ac255df8b",
+ "e20aa6823f4a38d43b2c1fc4aeb9680c74ca9001",
"manual"
],
"svg/import/types-dom-01-b-manual.svg": [
@@ -599367,23 +603896,23 @@
"manual"
],
"svg/import/types-dom-05-b-manual.svg": [
- "809e36af5e44ef44b0f0e636f924dc4733d4c83f",
+ "1caf1e21f34eca6d0fe7e1d70ae8922ec4b81df4",
"manual"
],
"svg/import/types-dom-06-f-manual.svg": [
- "e6c2649ef39565b742e347d7454b83bbb90b5e97",
+ "d07953b351c30b6c22929d4f694644a650dae20d",
"manual"
],
"svg/import/types-dom-07-f-manual.svg": [
- "7064b363a463308e5abd002ffb9cda81734c65a6",
+ "9c4b18d906e177083c88e74c3de265e111c92241",
"manual"
],
"svg/import/types-dom-08-f-manual.svg": [
- "767bdea646adc0ce5e262f21d03092f98092d7d4",
+ "11f9b21e516b23da266d3d877eea0b88dc079eb2",
"manual"
],
"svg/import/types-dom-svgfittoviewbox-01-f-manual.svg": [
- "eec4443715062280d8b06489a5789fdaa10963f4",
+ "e6d8ebeb94f2d26f65078c29a133bb358208118e",
"manual"
],
"svg/import/types-dom-svglengthlist-01-f-manual.svg": [
@@ -599391,11 +603920,11 @@
"manual"
],
"svg/import/types-dom-svgnumberlist-01-f-manual.svg": [
- "af02d05081e5b9fbb200f19885dd4399d54ef5f5",
+ "a4b4cfea7d8f1b47b1c6a208964e2ac75fae682c",
"manual"
],
"svg/import/types-dom-svgstringlist-01-f-manual.svg": [
- "81bd3b604e86c0aaf009ce2e1035828517c673e4",
+ "be2ca38ceaf66014c74ad16cc52d3c3cc64e8694",
"manual"
],
"svg/import/types-dom-svgtransformable-01-f-manual.svg": [
@@ -599523,7 +604052,7 @@
"testharness"
],
"svg/linking/reftests/href-a-element-attr-change.html": [
- "6605832f7f8bff45a35fd436effa0c01e12c91e5",
+ "74ac37244250ec2d03a50b3e487b39d344ca7dc1",
"reftest"
],
"svg/linking/reftests/href-a-element-ref.html": [
@@ -600491,7 +605020,7 @@
"testharness"
],
"upgrade-insecure-requests/link-upgrade.sub.https.html": [
- "0c7c3915c24e355f3353a242843c76bb17b13c62",
+ "d8279d5c8b46259643bd960374398ea4d8a455f8",
"testharness"
],
"upgrade-insecure-requests/link-upgrade/basic-link-no-upgrade.sub.html": [
@@ -600683,7 +605212,7 @@
"testharness"
],
"url/urlsearchparams-foreach.html": [
- "5bdc17d623884a8916681f19df55c4bef5965ff2",
+ "604154351de9db97183b3cfc149d3ca6c5132723",
"testharness"
],
"url/urlsearchparams-get.html": [
@@ -600718,6 +605247,14 @@
"b82f9756b15ef3ea45fb250e304031d9ceaee9c7",
"support"
],
+ "user-timing/clearMarks.html": [
+ "2d63d9e6d85171289c7e3feab7d5db1083d2d461",
+ "testharness"
+ ],
+ "user-timing/clearMeasures.html": [
+ "7c1424d8907f5c01898598691e4734ea6442ac90",
+ "testharness"
+ ],
"user-timing/clear_all_marks.any.js": [
"61961fe36a9d1f9492ad0d54ab46dbd95202bc84",
"testharness"
@@ -600766,14 +605303,26 @@
"58a8783b699acb89ab81da9e1417a542fe2e7d99",
"testharness"
],
+ "user-timing/mark.html": [
+ "d8b001369f4b9d57a0f2d13adbfc27d986eaa061",
+ "testharness"
+ ],
"user-timing/mark_exceptions.html": [
- "c86845475d74791d9907716ae34743606b2465de",
+ "fe9279b28727941bab52aacaba104a4481f49191",
"testharness"
],
"user-timing/measure.html": [
"b021b6706afbf40f59ba1bbc743f4f4e57ea4f66",
"testharness"
],
+ "user-timing/measure_associated_with_navigation_timing.html": [
+ "448483a5bdb88c75a945315b483006541423032b",
+ "testharness"
+ ],
+ "user-timing/measure_exception.html": [
+ "4ee2ee1ad9b147fce725a4aefc6d1c0bb30d1dc6",
+ "testharness"
+ ],
"user-timing/measure_exceptions_navigation_timing.html": [
"ed9d9be01e740d282ec94379bfd78aca07b56325",
"testharness"
@@ -600786,12 +605335,16 @@
"e04fed804b4d89be63b8fdcbf12774c9a613f6d3",
"testharness"
],
+ "user-timing/measures.html": [
+ "60621f7cf3ed5ede5246619f890105e33a827c13",
+ "testharness"
+ ],
"user-timing/resources/webperftestharness.js": [
"b1f81236de54467168bd09d749c2a6f453c5c3e1",
"support"
],
"user-timing/resources/webperftestharnessextension.js": [
- "c19034c4cb9bbe6c04929857561f37b3c709d8f4",
+ "3e7332f352713b52fe898941089c89dc1d1bf522",
"support"
],
"user-timing/user_timing_exists.any.js": [
@@ -602055,7 +606608,7 @@
"testharness"
],
"web-animations/animation-model/animation-types/property-list.js": [
- "d43568b85e47f0284d1084134e043cb04e67d948",
+ "4def0af013408f14fca2a0cc1ee4f8aab32ff28e",
"support"
],
"web-animations/animation-model/animation-types/property-types.js": [
@@ -602095,7 +606648,7 @@
"testharness"
],
"web-animations/interfaces/Animatable/animate.html": [
- "4cd816ad368f1dae077f601022f9b57d9cb931ae",
+ "31921e0357eaaad05329a84cf2fc8bebf7f1bf28",
"testharness"
],
"web-animations/interfaces/Animatable/getAnimations.html": [
@@ -602171,7 +606724,7 @@
"testharness"
],
"web-animations/interfaces/Document/getAnimations.html": [
- "7fbd5eed47955fdaeccd329f82f0884b86654784",
+ "41edbdf1f03889156068f38d87875387f129924f",
"testharness"
],
"web-animations/interfaces/Document/timeline.html": [
@@ -602207,7 +606760,7 @@
"testharness"
],
"web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html": [
- "ca5efb8556aff617bef957be315ea2fd01e756d8",
+ "f68c116e1da5ae8783187af22f00758d02b7a0e9",
"testharness"
],
"web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html": [
@@ -602251,7 +606804,7 @@
"support"
],
"web-animations/testcommon.js": [
- "8f593cc9211bcc0f8f99579e8a3475528f837969",
+ "039db95bc6b54f00d6e106241d001ae980566f92",
"support"
],
"web-animations/timing-model/animation-effects/active-time.html": [
@@ -602355,7 +606908,7 @@
"manual"
],
"web-nfc/nfc_insecure_context.html": [
- "ca6795303e0d200904d47a1f80b7fc255c1d353b",
+ "a9fabb5e2f577581ff470924ee4c8c5f95c47f46",
"testharness"
],
"web-nfc/nfc_push.https.html": [
@@ -602499,7 +607052,7 @@
"testharness"
],
"webaudio/idlharness.https.html": [
- "2951a126a8b168e6fe4699890d5a3c4772c7f960",
+ "9863249e71e4855b50c1712c3155d2d4a05fa1fe",
"testharness"
],
"webaudio/js/buffer-loader.js": [
@@ -602530,6 +607083,10 @@
"914a0268776de98f3b608babfa5699a93a2cd723",
"support"
],
+ "webaudio/resources/biquad-testing.js": [
+ "148a402f0a212c8b37bc377c5c9f7091d653bb7c",
+ "support"
+ ],
"webaudio/resources/convolution-testing.js": [
"4a0ae6b3701147d16cb91e5660e1f4909d022d06",
"support"
@@ -602546,6 +607103,10 @@
"a00d7729bc338c12846f36b450b895d7d118f95e",
"support"
],
+ "webaudio/resources/mixing-rules.js": [
+ "4508f0205419865b6166340ce6d4f955f914b6b1",
+ "support"
+ ],
"webaudio/resources/panner-formulas.js": [
"872d9aa271558ee3e7aa293c8e3e44fd525461c0",
"support"
@@ -602622,10 +607183,38 @@
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html": [
+ "74df9493bdb784280b15e0a57b1d61b5c51b386b",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html": [
+ "11a238b69cbe5a4fa2f7d2e22eb9c479552d300e",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html": [
+ "9bef407f0bc17f0d60bcf0eee623bdff7efabb79",
+ "testharness"
+ ],
"webaudio/the-audio-api/the-audionode-interface/audionode-connect-return-value.html": [
"cf51d81770ad7163e44ce02a6f6fa9b6db34f1b9",
"testharness"
],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html": [
+ "00c3d07eb5c64b3b9692ac24c3623479b7c84947",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/audionode-disconnect.html": [
+ "76a9626c3b7697dda0e099a7c50ea31971818582",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/audionode.html": [
+ "0da532bb8f2505949062709d618da73441968c4d",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html": [
+ "a122bacd6494fb670b7dbd54dd1fce25c3a6e998",
+ "testharness"
+ ],
"webaudio/the-audio-api/the-audioparam-interface/.gitkeep": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
@@ -602690,6 +607279,10 @@
"ef7c004225bbb5e6d289a990191b22e2faeabcf3",
"testharness"
],
+ "webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html": [
+ "73d5c524d03cd7ed255056b0d26e0aff5154b740",
+ "testharness"
+ ],
"webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-channel-count.https.html": [
"b6701142fd660a6a29fbfc68cb530b70817b3a44",
"testharness"
@@ -602750,10 +607343,70 @@
"c93a76f097b441aaec052516256cc922089b4b75",
"support"
],
+ "webaudio/the-audio-api/the-audioworklet-interface/processors/zero-output-processor.js": [
+ "72f40b24f52098bb8b3a63c0865e6b81cefc2de3",
+ "support"
+ ],
"webaudio/the-audio-api/the-biquadfilternode-interface/.gitkeep": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html": [
+ "5e614c338cde7788c8f88200c8e5540c8ddd7fe0",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html": [
+ "13549ae0edffb8b64ad57a0767cf1eaa98a45c48",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-bandpass.html": [
+ "85b51950563a14ec76a971d79b31b42c677d6185",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html": [
+ "3675c5430229774a8079eae866a355ca0793103b",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html": [
+ "68a2545839beaacebaf65286829174375435a83f",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html": [
+ "f20705cb15906fa78f3db321d57b568478ffdb1c",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highshelf.html": [
+ "9fa170eb3b99552faf418b7efb84cb9e39ddf5d0",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowpass.html": [
+ "8e300cd5b95c753ee234cb1256f5ec1295492d2e",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowshelf.html": [
+ "8addf4c6790feaeb028f31224cccd98c6e5fb7ee",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html": [
+ "0fe79eda36594125827af62d3a8abfd884b0a1d3",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-peaking.html": [
+ "8b66bfd29e8ea0b6405810d9d738331a7869e9a0",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html": [
+ "e15e696492076d522c1052ae890b37f52e7bd27b",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/biquadfilternode-basic.html": [
+ "f24a473f695c2d10788ba7d50728259a08ed53c8",
+ "testharness"
+ ],
+ "webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html": [
+ "348376a643b765700342e9620e1346d432a28131",
+ "testharness"
+ ],
"webaudio/the-audio-api/the-channelmergernode-interface/.gitkeep": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
@@ -602858,10 +607511,6 @@
"622ca5f882644f183674cc07e55a69e63e5c85d9",
"testharness"
],
- "webaudio/the-audio-api/the-delaynode-interface/idl-test.html": [
- "8507a293b696d2d3fc51b429864373606a75eeb6",
- "testharness"
- ],
"webaudio/the-audio-api/the-delaynode-interface/no-dezippering.html": [
"96b405fd00ee657194de348ea46b263ba43f98a4",
"testharness"
@@ -602890,10 +607539,6 @@
"5f50c22eaa77f09d0fa8c6f6f5249fdbf7db4b24",
"testharness"
],
- "webaudio/the-audio-api/the-gainnode-interface/idl-test.html": [
- "30843d3b74e8ec33bedd849f3f2b1bbd4bcc9f5e",
- "testharness"
- ],
"webaudio/the-audio-api/the-gainnode-interface/no-dezippering.html": [
"2205ec8f56472bd45e102cf57f10b4532b18a554",
"testharness"
@@ -603111,7 +607756,7 @@
"support"
],
"webauthn/interfaces.https.any.js": [
- "bc3e3c5a85f068efa88c4ed256cc2d270c8eca0f",
+ "3ca7a0855f38bf8d0250d0a352dd60c2ee6515fa",
"testharness"
],
"webauthn/securecontext.http.html": [
@@ -603151,7 +607796,7 @@
"wdspec"
],
"webdriver/tests/actions/modifier_click.py": [
- "88a384182fdd9df1515b9d8cfda8f56aed138ec7",
+ "f0ed71cbb6550ef496096541531f3b4fa3f4c6e2",
"wdspec"
],
"webdriver/tests/actions/mouse.py": [
@@ -603159,7 +607804,11 @@
"wdspec"
],
"webdriver/tests/actions/mouse_dblclick.py": [
- "f6afcb8c0fa017d58a9fcdd3cc474e0c8fd52db5",
+ "dd73b09a15b438aaf77cbccdf40678a24bbabd39",
+ "wdspec"
+ ],
+ "webdriver/tests/actions/mouse_pause_dblclick.py": [
+ "d9c173d0c6c4943669dcd6d05472758c7f42b1ed",
"wdspec"
],
"webdriver/tests/actions/pointer_origin.py": [
@@ -603171,7 +607820,7 @@
"wdspec"
],
"webdriver/tests/actions/special_keys.py": [
- "82ddb70047a024897d15b3d52da7423a2e0a6219",
+ "b021866b542bd6d02171084343f676090378e878",
"wdspec"
],
"webdriver/tests/actions/support/__init__.py": [
@@ -603286,20 +607935,28 @@
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
+ "webdriver/tests/execute_async_script/collections.py": [
+ "b10e02dff5437ae2b6ed6cc17141e5643dc1b75d",
+ "wdspec"
+ ],
"webdriver/tests/execute_async_script/user_prompts.py": [
- "e31edd4537f9b7479a348465154381f5b18f938c",
+ "cf789bc7a329b78b7d61b894209d064d3d80b3b0",
"wdspec"
],
"webdriver/tests/execute_script/__init__.py": [
"da39a3ee5e6b4b0d3255bfef95601890afd80709",
"support"
],
+ "webdriver/tests/execute_script/collections.py": [
+ "7162405055534f77fd7e57419b3cc2a210ddd4e0",
+ "wdspec"
+ ],
"webdriver/tests/execute_script/cyclic.py": [
"9d8a28b94b8cdac88650b675cb00bf21261444e8",
"wdspec"
],
"webdriver/tests/execute_script/user_prompts.py": [
- "901487f8270dcce693867ca090393e093d26f22b",
+ "1cb98dd72664cfcfede1255484239f4505c06d20",
"wdspec"
],
"webdriver/tests/fullscreen_window.py": [
@@ -603419,7 +608076,7 @@
"support"
],
"webdriver/tests/support/fixtures.py": [
- "f564352a1d24e685cfe96c5b6f1b986b0dedadfe",
+ "e787c0ef06fcdfc86f337be5af61e492be08ec9c",
"support"
],
"webdriver/tests/support/http_request.py": [
@@ -603587,7 +608244,7 @@
"testharness"
],
"webmessaging/broadcastchannel/workers.html": [
- "483e03e9528f1e80fc1b250caee46f7f256d63c1",
+ "2ca289f36c001c15e64b849098e8f28b21178862",
"testharness"
],
"webmessaging/event.data.sub.htm": [
@@ -603635,7 +608292,7 @@
"testharness"
],
"webmessaging/message-channels/close.html": [
- "19fc5d2f7e0f30e9d35a8606c3fb05b537ea3a82",
+ "f5e17f831c797f2dac4fc5f75e09c5bb79288a5f",
"testharness"
],
"webmessaging/message-channels/worker.html": [
@@ -603979,7 +608636,7 @@
"testharness"
],
"webrtc/RTCDTMFSender-ontonechange.https.html": [
- "4f53cbc7fafeeed5202774b58d4bf721055b382e",
+ "ecc1e77f083cb91af78b1bcb7311fe4b5b96313e",
"testharness"
],
"webrtc/RTCDataChannel-bufferedAmount.html": [
@@ -604155,7 +608812,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-track-stats.https.html": [
- "55ab0ca3d364b020320fa45a14e50d2897dda13a",
+ "c31d22b6d9322d6d9b12414682d04137ad8cfb5d",
"testharness"
],
"webrtc/RTCPeerConnectionIceEvent-constructor.html": [
@@ -605383,7 +610040,7 @@
"support"
],
"webstorage/idlharness.html": [
- "e57413a1868e8d84ba7c500ff13b7e68675cbe66",
+ "9bbb03ed7a846411183963fba16241a107652c0f",
"testharness"
],
"webstorage/missing_arguments.html": [
@@ -605583,7 +610240,7 @@
"support"
],
"webusb/usb.https.html": [
- "47adf57ef06190594f80d8ae85d2ee8118889cb6",
+ "47be065f386fecc7557993c6d8ec61cac88fe71a",
"testharness"
],
"webusb/usbConnectionEvent.https.html": [
@@ -605627,7 +610284,7 @@
"support"
],
"webvr/idlharness.https.html": [
- "ae515edc7c77c87caff8fa096a0682a12a254e83",
+ "1c79736fe4eb1f85e9015222d42ff99e68b5ac56",
"testharness"
],
"webvr/webvr-disabled-by-feature-policy.https.sub.html": [
@@ -609102,6 +613759,10 @@
"12d12036aa5937ae79aa152468cc574ac4bf4e94",
"testharness"
],
+ "workers/interfaces/WorkerUtils/WindowTimers/005.html": [
+ "11f0d7b6ea4a3c883d6c5cc8bde52c8ae9f7091b",
+ "testharness"
+ ],
"workers/interfaces/WorkerUtils/importScripts/001.worker.js": [
"138e3be5d6375c8a784faabb4f2f4c82c2423bc3",
"testharness"
@@ -609154,14 +613815,26 @@
"550c176d72ce6fb73cf92d6c86f52aeed37f514c",
"support"
],
+ "workers/interfaces/WorkerUtils/importScripts/1.headers": [
+ "b69c06d38f1fa3585706e50dd94cfb1448891924",
+ "support"
+ ],
"workers/interfaces/WorkerUtils/importScripts/null": [
"5f05bf57a74e1dbd9bf4f9b16343f49f9b5e363c",
"support"
],
+ "workers/interfaces/WorkerUtils/importScripts/null.headers": [
+ "b69c06d38f1fa3585706e50dd94cfb1448891924",
+ "support"
+ ],
"workers/interfaces/WorkerUtils/importScripts/undefined": [
"842b044565f09ce3d5acc7c8afcfd4133a7dea38",
"support"
],
+ "workers/interfaces/WorkerUtils/importScripts/undefined.headers": [
+ "b69c06d38f1fa3585706e50dd94cfb1448891924",
+ "support"
+ ],
"workers/interfaces/WorkerUtils/navigator/002.html": [
"e18650dee66ed64aacc9dac643d5197c9170ecd4",
"testharness"
@@ -609803,7 +614476,7 @@
"support"
],
"x-frame-options/deny.sub.html": [
- "5a589f4b4c6f2503104b33ae7002dcc5c4153eb7",
+ "eb6b6474a393714f62a85bf435e7f342ceff2e0e",
"testharness"
],
"x-frame-options/invalid.sub.html": [
@@ -609811,11 +614484,11 @@
"testharness"
],
"x-frame-options/multiple.sub.html": [
- "cd1431494daf1fdca5294de9c49dd4eb3c06d71f",
+ "5c266799477994fe820a244fd6b5b6e7822748a0",
"testharness"
],
"x-frame-options/sameorigin.sub.html": [
- "502ac9429cb53cb18a214770172552fe16c3c847",
+ "93498833866f7f7084c08cc22aec78a31ef1721b",
"testharness"
],
"x-frame-options/support/helper.js": [
@@ -610254,6 +614927,14 @@
"9a27f71e6e5738d2625ed30f91f3d514fc3646e8",
"testharness"
],
+ "xhr/header-user-agent-async.htm": [
+ "07833728cf33836e854681d8e53c2b5357f8f810",
+ "testharness"
+ ],
+ "xhr/header-user-agent-sync.htm": [
+ "e7f02cf698647785d332e4ad517ff0df357eea70",
+ "testharness"
+ ],
"xhr/headers-normalize-response.htm": [
"eb7c4df4a878181161f356cfaed84e37ccd6f772",
"testharness"
@@ -610415,13 +615096,17 @@
"testharness"
],
"xhr/overridemimetype-blob.html": [
- "462d95dec7146c2a7beba5d8b2285fd2b8460002",
+ "38a7f6e2871ac0def651e5b82bb8a43b061633bb",
"testharness"
],
"xhr/overridemimetype-done-state.htm": [
"167f34f8dfc1312a9124c12ee4f8de808fa41680",
"testharness"
],
+ "xhr/overridemimetype-edge-cases.window.js": [
+ "a76e1c81a86823765be280747d2fa6994395cc25",
+ "testharness"
+ ],
"xhr/overridemimetype-headers-received-state-force-shiftjis.htm": [
"92a00af686310d8b44fb5e4c70cc6fbea28e0a88",
"testharness"
@@ -610658,6 +615343,10 @@
"a191134704e09ff9bb6591dc8c6aa78307edf6c9",
"support"
],
+ "xhr/resources/header-user-agent.py": [
+ "26af60bcffd2c78dd7ee89a98a02fde12aee41a9",
+ "support"
+ ],
"xhr/resources/headers-basic.asis": [
"718e90fc73ec596127d26fba5433c5355e93fa3f",
"support"
@@ -610895,7 +615584,7 @@
"testharness"
],
"xhr/responsetext-decoding.htm": [
- "538d6d5121157e04c44fd947140f2c913dc3b65e",
+ "d08dd5c1d0b21b639389dfc1deec65215b3334dc",
"testharness"
],
"xhr/responsetype.html": [
@@ -611011,7 +615700,7 @@
"testharness"
],
"xhr/send-content-type-charset.htm": [
- "e143738f086c6c96de54539e799ee194de436246",
+ "a1ce069d23a54ea7b60c3eaa1ff943651e7d9302",
"testharness"
],
"xhr/send-content-type-string.htm": [
@@ -611270,10 +615959,6 @@
"a67d1876d6245fb94d60a937b633c87c51a04d21",
"testharness"
],
- "xhr/xmlhttprequest-closing-worker.html": [
- "2e12b49aca2dc3908837b6b419c92cb890e60e3f",
- "testharness"
- ],
"xhr/xmlhttprequest-eventtarget.htm": [
"40c886f79399108db3ded8a23848905dcf9e0862",
"testharness"
diff --git a/tests/wpt/metadata/css/css-backgrounds/box-shadow-syntax-001.xht.ini b/tests/wpt/metadata/css/css-backgrounds/box-shadow-syntax-001.xht.ini
deleted file mode 100644
index bb9b1b76687..00000000000
--- a/tests/wpt/metadata/css/css-backgrounds/box-shadow-syntax-001.xht.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[box-shadow-syntax-001.xht]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-backgrounds/css3-background-origin-padding-box.html.ini b/tests/wpt/metadata/css/css-backgrounds/css3-background-origin-padding-box.html.ini
deleted file mode 100644
index 6493982ec1b..00000000000
--- a/tests/wpt/metadata/css/css-backgrounds/css3-background-origin-padding-box.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[css3-background-origin-padding-box.html]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-backgrounds/css3-background-size-001.html.ini b/tests/wpt/metadata/css/css-backgrounds/css3-background-size-001.html.ini
deleted file mode 100644
index d2af238ae26..00000000000
--- a/tests/wpt/metadata/css/css-backgrounds/css3-background-size-001.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[css3-background-size-001.html]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-attachment-valid.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-attachment-valid.html.ini
new file mode 100644
index 00000000000..0b7682bd80a
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-attachment-valid.html.ini
@@ -0,0 +1,4 @@
+[background-attachment-valid.html]
+ [e.style['background-attachment'\] = "scroll, fixed, local, fixed, scroll" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-backgrounds/parsing/background-valid.html.ini b/tests/wpt/metadata/css/css-backgrounds/parsing/background-valid.html.ini
new file mode 100644
index 00000000000..fb4b63cd496
--- /dev/null
+++ b/tests/wpt/metadata/css/css-backgrounds/parsing/background-valid.html.ini
@@ -0,0 +1,4 @@
+[background-valid.html]
+ [e.style['background'\] = "url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url(\\"https://example.com/\\") 1px 2px / 3px 4px space round local padding-box content-box" should set the property value]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html.ini b/tests/wpt/metadata/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html.ini
new file mode 100644
index 00000000000..d5138d10fee
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html.ini
@@ -0,0 +1,4 @@
+[flexbox_computedstyle_align-items-invalid.html]
+ [flexbox | computed style | align-items: invalid]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html.ini b/tests/wpt/metadata/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html.ini
new file mode 100644
index 00000000000..956c3ead1ee
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html.ini
@@ -0,0 +1,4 @@
+[flexbox_computedstyle_align-self-invalid.html]
+ [flexbox | computed style | align-self: invalid]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-flexbox/table-as-item-change-cell.html.ini b/tests/wpt/metadata/css/css-flexbox/table-as-item-change-cell.html.ini
new file mode 100644
index 00000000000..e8672a3bd87
--- /dev/null
+++ b/tests/wpt/metadata/css/css-flexbox/table-as-item-change-cell.html.ini
@@ -0,0 +1,2 @@
+[table-as-item-change-cell.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-fonts/font-variant-descriptor-01.html.ini b/tests/wpt/metadata/css/css-fonts/font-variant-descriptor-01.html.ini
new file mode 100644
index 00000000000..a0e2d029875
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/font-variant-descriptor-01.html.ini
@@ -0,0 +1,2 @@
+[font-variant-descriptor-01.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-descriptors.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-descriptors.html.ini
new file mode 100644
index 00000000000..649e089ce04
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-descriptors.html.ini
@@ -0,0 +1,247 @@
+[at-font-face-descriptors.html]
+ [font-weight(valid): 'normal' keyword: normal]
+ expected: FAIL
+
+ [font-weight(valid): 'bold' keyword: bold]
+ expected: FAIL
+
+ [font-weight(invalid): 'lighter' keyword iside @font-face: lighter]
+ expected: FAIL
+
+ [font-weight(invalid): 'lighter' keyword iside @font-face: bolder]
+ expected: FAIL
+
+ [font-weight(invalid): Extra content after keyword: bold a]
+ expected: FAIL
+
+ [font-weight(valid): Values that are not multiple of 100 should be parsed successfully: 401]
+ expected: FAIL
+
+ [font-weight(valid): Non-integer values should be parsed successfully: 400.1]
+ expected: FAIL
+
+ [font-weight(valid): Minimum allowed value should be parsed successfully: 1]
+ expected: FAIL
+
+ [font-weight(invalid): Values below minimum should be rejected: 0.999]
+ expected: FAIL
+
+ [font-weight(invalid): Values below zero should be rejected: -100]
+ expected: FAIL
+
+ [font-weight(valid): Maximum allowed value should be parsed successfully: 1000]
+ expected: FAIL
+
+ [font-weight(invalid): Values above maximum should be rejected: 1000.001]
+ expected: FAIL
+
+ [font-weight(invalid): Extra content after value: 100 a]
+ expected: FAIL
+
+ [font-weight(valid): Simple calc value: calc(100.5)]
+ expected: FAIL
+
+ [font-weight(invalid): Out-of-range simple calc value: calc(1001)]
+ expected: FAIL
+
+ [font-weight(valid): Valid calc expression: calc(100.5*3 + 50.5)]
+ expected: FAIL
+
+ [font-weight(invalid): Valid calc expression with out-of-range value: calc(100.5*3 + 800)]
+ expected: FAIL
+
+ [font-weight(invalid): Valid calc expression with units: calc(100.5px + 50.5px)]
+ expected: FAIL
+
+ [font-weight(valid): Simple range: 100 900]
+ expected: FAIL
+
+ [font-weight(valid): Simple range with equal upper and lower bounds: 500 500]
+ expected: FAIL
+
+ [font-weight(invalid): Lower bound out of range: 0.9 100]
+ expected: FAIL
+
+ [font-weight(invalid): Upper bound out of range: 100 1001]
+ expected: FAIL
+
+ [font-weight(valid): Lower bound calc(): calc(100 + 100) 400]
+ expected: FAIL
+
+ [font-weight(valid): Upper bound calc(): 200 calc(200 + 200)]
+ expected: FAIL
+
+ [font-weight(valid): Both bounds are calc(): calc(100 + 100) calc(200 + 200)]
+ expected: FAIL
+
+ [font-weight(valid): Bounds out of order are valid: 400 200]
+ expected: FAIL
+
+ [font-weight(invalid): Extra content after upper bound: 100 200 300]
+ expected: FAIL
+
+ [font-stretch(valid): 'ultra-condensed' keyword: ultra-condensed]
+ expected: FAIL
+
+ [font-stretch(valid): 'extra-condensed' keyword: extra-condensed]
+ expected: FAIL
+
+ [font-stretch(valid): 'condensed' keyword: condensed]
+ expected: FAIL
+
+ [font-stretch(valid): 'semi-condensed' keyword: semi-condensed]
+ expected: FAIL
+
+ [font-stretch(valid): 'normal' keyword: normal]
+ expected: FAIL
+
+ [font-stretch(valid): 'semi-expanded' keyword: semi-expanded]
+ expected: FAIL
+
+ [font-stretch(valid): 'expanded' keyword: expanded]
+ expected: FAIL
+
+ [font-stretch(valid): 'extra-expanded' keyword: extra-expanded]
+ expected: FAIL
+
+ [font-stretch(valid): 'ultra-expanded' keyword: ultra-expanded]
+ expected: FAIL
+
+ [font-stretch(invalid): Extra content after value: expanded a]
+ expected: FAIL
+
+ [font-stretch(valid): Legal percentage: 1%]
+ expected: FAIL
+
+ [font-stretch(valid): Legal percentage: 10.5%]
+ expected: FAIL
+
+ [font-stretch(valid): Legal percentage: 100%]
+ expected: FAIL
+
+ [font-stretch(valid): Legal percentage: 1000%]
+ expected: FAIL
+
+ [font-stretch(invalid): Only percentages, not numbers allowed: 100]
+ expected: FAIL
+
+ [font-stretch(invalid): Negative values are illegal: -1%]
+ expected: FAIL
+
+ [font-stretch(valid): Zero is legal: 0%]
+ expected: FAIL
+
+ [font-stretch(invalid): Extra content after value: 100% a]
+ expected: FAIL
+
+ [font-stretch(valid): Simple calc value: calc(200.5%)]
+ expected: FAIL
+
+ [font-stretch(valid): Valid calc expression: calc(50%*2 - 20%)]
+ expected: FAIL
+
+ [font-stretch(invalid): Negative calc value: calc(-100%)]
+ expected: FAIL
+
+ [font-stretch(invalid): Negative calc expression: calc(50% - 50%*2)]
+ expected: FAIL
+
+ [font-stretch(invalid): Unit-less calc value: calc(100)]
+ expected: FAIL
+
+ [font-stretch(invalid): Calc value with units: calc(100px)]
+ expected: FAIL
+
+ [font-stretch(valid): Simple range: 100% 200%]
+ expected: FAIL
+
+ [font-stretch(valid): Simple range with equal upper and lower bounds: 100% 100%]
+ expected: FAIL
+
+ [font-stretch(invalid): Lower bound out of range: -100% 100%]
+ expected: FAIL
+
+ [font-stretch(valid): Lower bound calc(): calc(10% + 10%) 30%]
+ expected: FAIL
+
+ [font-stretch(valid): Upper bound calc(): 10% calc(10% + 10%)]
+ expected: FAIL
+
+ [font-stretch(valid): Both bounds are calc(): calc(10% + 10%) calc(20% + 20%)]
+ expected: FAIL
+
+ [font-stretch(valid): Bounds out of order: 200% 100%]
+ expected: FAIL
+
+ [font-stretch(invalid): Extra content after upper bound: 100% 200% 300%]
+ expected: FAIL
+
+ [font-style(valid): 'normal' keyword: normal]
+ expected: FAIL
+
+ [font-style(valid): 'italic' keyword: italic]
+ expected: FAIL
+
+ [font-style(valid): 'oblique' keyword: oblique]
+ expected: FAIL
+
+ [font-style(invalid): 'italic' followed by angle: italic 20deg]
+ expected: FAIL
+
+ [font-style(invalid): Extra content after keyword: italic a]
+ expected: FAIL
+
+ [font-style(valid): 'oblique' followed by zero degrees: oblique 0deg]
+ expected: FAIL
+
+ [font-style(valid): 'oblique' followed by default 20deg angle: oblique 20deg]
+ expected: FAIL
+
+ [font-style(valid): 'oblique' followed by maxumum 90 degree angle: oblique 90deg]
+ expected: FAIL
+
+ [font-style(valid): 'oblique' followed by minimum -90 degree angle: oblique -90deg]
+ expected: FAIL
+
+ [font-style(valid): 'oblique' followed by angle in radians: oblique 0rad]
+ expected: FAIL
+
+ [font-style(invalid): 'oblique' followed by unit-less number: oblique 20]
+ expected: FAIL
+
+ [font-style(invalid): 'oblique' followed by non-angle: oblique 20px]
+ expected: FAIL
+
+ [font-style(invalid): 'oblique' followed by non-number: oblique a]
+ expected: FAIL
+
+ [font-style(invalid): 'oblique' followed by isolated minus: oblique -]
+ expected: FAIL
+
+ [font-style(invalid): 'oblique' followed by minus and angle separated by space: oblique - 20deg]
+ expected: FAIL
+
+ [font-style(invalid): 'oblique' followed by minus and non-number: oblique -a]
+ expected: FAIL
+
+ [font-style(valid): Simple range: oblique 10deg 20deg]
+ expected: FAIL
+
+ [font-style(valid): Simple range with equal upper and lower bounds: oblique 10deg 10deg]
+ expected: FAIL
+
+ [font-style(valid): Simple range with default angle for both bounds: oblique 20deg 20deg]
+ expected: FAIL
+
+ [font-style(valid): Bounds out of order: oblique 20deg 10deg]
+ expected: FAIL
+
+ [font-style(invalid): Lower bound out of range: oblique -100deg 20deg]
+ expected: FAIL
+
+ [font-style(invalid): Upper bound out of range: oblique 20deg 100deg]
+ expected: FAIL
+
+ [font-style(invalid): Extra content after upper bound: oblique 10deg 20deg 30deg]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
new file mode 100644
index 00000000000..88ec99a180e
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
@@ -0,0 +1,304 @@
+[at-font-face-font-matching.html]
+ [Descriptor mathcing priority: Stretch has higher priority than style]
+ expected: FAIL
+
+ [Descriptor mathcing priority: Stretch has higher priority than weight]
+ expected: FAIL
+
+ [Descriptor mathcing priority: Style has higher priority than weight]
+ expected: FAIL
+
+ [Matching font-weight: '400' should prefer '400' over '450 460']
+ expected: FAIL
+
+ [Matching font-weight: '400' should prefer '450 460' over '500']
+ expected: FAIL
+
+ [Matching font-weight: '400' should prefer '500' over '350 399']
+ expected: FAIL
+
+ [Matching font-weight: '400' should prefer '350 399' over '351 398']
+ expected: FAIL
+
+ [Matching font-weight: '400' should prefer '351 398' over '501 550']
+ expected: FAIL
+
+ [Matching font-weight: '400' should prefer '501 550' over '502 560']
+ expected: FAIL
+
+ [Matching font-weight: '430' should prefer '420 440' over '450 460']
+ expected: FAIL
+
+ [Matching font-weight: '430' should prefer '450 460' over '500']
+ expected: FAIL
+
+ [Matching font-weight: '430' should prefer '500' over '400 425']
+ expected: FAIL
+
+ [Matching font-weight: '430' should prefer '400 425' over '350 399']
+ expected: FAIL
+
+ [Matching font-weight: '430' should prefer '350 399' over '340 398']
+ expected: FAIL
+
+ [Matching font-weight: '430' should prefer '340 398' over '501 550']
+ expected: FAIL
+
+ [Matching font-weight: '430' should prefer '501 550' over '502 560']
+ expected: FAIL
+
+ [Matching font-weight: '500' should prefer '500' over '450 460']
+ expected: FAIL
+
+ [Matching font-weight: '500' should prefer '450 460' over '400']
+ expected: FAIL
+
+ [Matching font-weight: '500' should prefer '400' over '350 399']
+ expected: FAIL
+
+ [Matching font-weight: '500' should prefer '350 399' over '351 398']
+ expected: FAIL
+
+ [Matching font-weight: '500' should prefer '351 398' over '501 550']
+ expected: FAIL
+
+ [Matching font-weight: '500' should prefer '501 550' over '502 560']
+ expected: FAIL
+
+ [Matching font-weight: '501' should prefer '501' over '502 510']
+ expected: FAIL
+
+ [Matching font-weight: '501' should prefer '502 510' over '503 520']
+ expected: FAIL
+
+ [Matching font-weight: '501' should prefer '503 520' over '500']
+ expected: FAIL
+
+ [Matching font-weight: '501' should prefer '500' over '450 460']
+ expected: FAIL
+
+ [Matching font-weight: '501' should prefer '450 460' over '390 410']
+ expected: FAIL
+
+ [Matching font-weight: '501' should prefer '390 410' over '300 350']
+ expected: FAIL
+
+ [Matching font-weight: '399' should prefer '350 399' over '340 360']
+ expected: FAIL
+
+ [Matching font-weight: '399' should prefer '340 360' over '200 300']
+ expected: FAIL
+
+ [Matching font-weight: '399' should prefer '200 300' over '400']
+ expected: FAIL
+
+ [Matching font-weight: '399' should prefer '400' over '450 460']
+ expected: FAIL
+
+ [Matching font-weight: '399' should prefer '450 460' over '500 501']
+ expected: FAIL
+
+ [Matching font-weight: '399' should prefer '500 501' over '502 510']
+ expected: FAIL
+
+ [Matching font-stretch: '100%' should prefer '100%' over '110% 120%']
+ expected: FAIL
+
+ [Matching font-stretch: '100%' should prefer '110% 120%' over '115% 116%']
+ expected: FAIL
+
+ [Matching font-stretch: '110%' should prefer '110% 120%' over '115% 116%']
+ expected: FAIL
+
+ [Matching font-stretch: '110%' should prefer '115% 116%' over '105%']
+ expected: FAIL
+
+ [Matching font-stretch: '110%' should prefer '105%' over '100%']
+ expected: FAIL
+
+ [Matching font-stretch: '110%' should prefer '100%' over '50% 80%']
+ expected: FAIL
+
+ [Matching font-stretch: '110%' should prefer '50% 80%' over '60% 70%']
+ expected: FAIL
+
+ [Matching font-stretch: '90%' should prefer '90% 100%' over '50% 80%']
+ expected: FAIL
+
+ [Matching font-stretch: '90%' should prefer '50% 80%' over '60% 70%']
+ expected: FAIL
+
+ [Matching font-stretch: '90%' should prefer '60% 70%' over '110% 140%']
+ expected: FAIL
+
+ [Matching font-stretch: '90%' should prefer '110% 140%' over '120% 130%']
+ expected: FAIL
+
+ [Matching font-style: 'normal' should prefer 'normal' over 'oblique 0deg']
+ expected: FAIL
+
+ [Matching font-style: 'normal' should prefer 'oblique 0deg' over 'oblique 10deg 40deg']
+ expected: FAIL
+
+ [Matching font-style: 'normal' should prefer 'oblique 10deg 40deg' over 'oblique 20deg 30deg']
+ expected: FAIL
+
+ [Matching font-style: 'normal' should prefer 'oblique 20deg 30deg' over 'oblique -50deg -20deg']
+ expected: FAIL
+
+ [Matching font-style: 'normal' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'italic' over 'oblique 20deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 20deg' over 'oblique 30deg 60deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 40deg 50deg' over 'oblique 5deg 10deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 5deg 10deg' over 'oblique 5deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 5deg' over 'normal']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'normal' over 'oblique 0deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 0deg' over 'oblique -60deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique -60deg -30deg' over 'oblique -50deg -40deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 20deg' should prefer 'oblique 20deg' over 'oblique 30deg 60deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 21deg' should prefer 'oblique 40deg 50deg' over 'oblique 20deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 21deg' should prefer 'oblique 20deg' over 'oblique 10deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 21deg' should prefer 'oblique 10deg' over 'italic']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 21deg' should prefer 'italic' over 'oblique 0deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 21deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 21deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique 10deg' over 'oblique 5deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique 5deg' over 'oblique 15deg 20deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique 15deg 20deg' over 'oblique 30deg 60deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique 40deg 50deg' over 'italic']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'italic' over 'oblique 0deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique 0deg' over 'oblique -50deg -20deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 10deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'oblique 0deg' over 'oblique 5deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'oblique 5deg' over 'oblique 15deg 20deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'oblique 15deg 20deg' over 'oblique 30deg 60deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'oblique 40deg 50deg' over 'italic']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'italic' over 'oblique -50deg -20deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique 0deg' should prefer 'oblique -50deg -20deg' over 'oblique -40deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique -10deg' over 'oblique -5deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique -5deg' over 'oblique -1deg 0deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique -1deg 0deg' over 'oblique -20deg -15deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique -20deg -15deg' over 'oblique -60deg -30deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique -60deg -30deg' over 'oblique -50deg -40deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique -50deg -40deg' over 'italic']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'italic' over 'oblique 0deg 10deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -10deg' should prefer 'oblique 0deg 10deg' over 'oblique 40deg 50deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -20deg' should prefer 'oblique -20deg' over 'oblique -60deg -40deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -20deg' should prefer 'oblique -60deg -40deg' over 'oblique -10deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -20deg' should prefer 'oblique -10deg' over 'italic']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -20deg' should prefer 'italic' over 'oblique 0deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -20deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -20deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique -21deg' over 'oblique -60deg -40deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique -60deg -40deg' over 'oblique -10deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique -10deg' over 'italic']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'italic' over 'oblique 0deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique 0deg' over 'oblique 30deg 60deg']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique 30deg 60deg' over 'oblique 40deg 50deg']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html.ini
index 311b4145158..e60594c24db 100644
--- a/tests/wpt/metadata/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html.ini
@@ -188,3 +188,9 @@
[Value italic 90deg must not be accepted as style in @font-face.]
expected: FAIL
+ [Valid value calc(0 - 100) for font property weight used for styling.]
+ expected: FAIL
+
+ [Valid value calc(200 + 801) for font property weight used for styling.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-shorthand.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-shorthand.html.ini
new file mode 100644
index 00000000000..30c11241f69
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-shorthand.html.ini
@@ -0,0 +1,46 @@
+[font-shorthand.html]
+ [Font shorthand: Font weight specified as number]
+ expected: FAIL
+
+ [Font shorthand: Font weight specified as calc()]
+ expected: FAIL
+
+ [Font shorthand: Font weight specified as calc(), value smaller than 1]
+ expected: FAIL
+
+ [Font shorthand: Font weight specified as calc(), value greater than 1000]
+ expected: FAIL
+
+ [Font shorthand: 'oblique' with positive angle]
+ expected: FAIL
+
+ [Font shorthand: 'oblique' with negative angle]
+ expected: FAIL
+
+ [Font shorthand: 'oblique' followed by valid small weight]
+ expected: FAIL
+
+ [Font shorthand: 'oblique' with positive angle followed by valid weight]
+ expected: FAIL
+
+ [Font shorthand: 'oblique' with negative angle followed by valid weight]
+ expected: FAIL
+
+ [Font shorthand: 'oblique' followed by valid calc() weight]
+ expected: FAIL
+
+ [Font shorthand: 'oblique' with angle followed by valid calc() weight]
+ expected: FAIL
+
+ [Font shorthand: 'oblique' followed by a to-be-clamped calc() weight]
+ expected: FAIL
+
+ [Font shorthand: calc() weight folowed by 'oblique']
+ expected: FAIL
+
+ [Font shorthand: calc() weight folowed by 'oblique' and slant angle]
+ expected: FAIL
+
+ [Font shorthand: To-be-clamped calc() weight folowed by 'oblique' and slant angle]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-stretch.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-stretch.html.ini
new file mode 100644
index 00000000000..934fe5409e8
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-stretch.html.ini
@@ -0,0 +1,97 @@
+[font-stretch.html]
+ [@supports: 0% - zero is legal]
+ expected: FAIL
+
+ [@getComputedStyle: 0% - zero is legal]
+ expected: FAIL
+
+ [@supports: 1% - legal percentage]
+ expected: FAIL
+
+ [@getComputedStyle: 1% - legal percentage]
+ expected: FAIL
+
+ [@supports: 10% - legal percentage]
+ expected: FAIL
+
+ [@getComputedStyle: 10% - legal percentage]
+ expected: FAIL
+
+ [@supports: 100% - legal percentage]
+ expected: FAIL
+
+ [@getComputedStyle: 100% - legal percentage]
+ expected: FAIL
+
+ [@supports: 1000% - legal percentage]
+ expected: FAIL
+
+ [@getComputedStyle: 1000% - legal percentage]
+ expected: FAIL
+
+ [@supports: 1e9% - huge legal percentage]
+ expected: FAIL
+
+ [@getComputedStyle: 1e9% - huge legal percentage]
+ expected: FAIL
+
+ [@getComputedStyle: ultra-condensed - legal enum]
+ expected: FAIL
+
+ [@getComputedStyle: extra-condensed - legal enum]
+ expected: FAIL
+
+ [@getComputedStyle: condensed - legal enum]
+ expected: FAIL
+
+ [@getComputedStyle: semi-condensed - legal enum]
+ expected: FAIL
+
+ [@getComputedStyle: normal - legal enum]
+ expected: FAIL
+
+ [@getComputedStyle: semi-expanded - legal enum]
+ expected: FAIL
+
+ [@getComputedStyle: expanded - legal enum]
+ expected: FAIL
+
+ [@getComputedStyle: extra-expanded - legal enum]
+ expected: FAIL
+
+ [@getComputedStyle: ultra-expanded - legal enum]
+ expected: FAIL
+
+ [@supports: calc(200.5%) - Simple calc value]
+ expected: FAIL
+
+ [@getComputedStyle: calc(200.5%) - Simple calc value]
+ expected: FAIL
+
+ [@supports: calc(50%*2 - 20%) - Valid calc expression]
+ expected: FAIL
+
+ [@getComputedStyle: calc(50%*2 - 20%) - Valid calc expression]
+ expected: FAIL
+
+ [@supports: calc(-100%) - Negative calc value (to be clamped)]
+ expected: FAIL
+
+ [@getComputedStyle: calc(-100%) - Negative calc value (to be clamped)]
+ expected: FAIL
+
+ [@supports: calc(50% - 50%*2) - Negative calc expression (to be clamped)]
+ expected: FAIL
+
+ [@getComputedStyle: calc(50% - 50%*2) - Negative calc expression (to be clamped)]
+ expected: FAIL
+
+ [Test font-stretch for overridden number condensed]
+ expected: FAIL
+
+ [Test font-stretch for overridden enum name resolved to number condensed]
+ expected: FAIL
+
+ [Test font-stretch for inherited named enum resolved to number condensed]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-style-interpolation.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-style-interpolation.html.ini
new file mode 100644
index 00000000000..e37fe238ce4
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-style-interpolation.html.ini
@@ -0,0 +1,8 @@
+[font-style-interpolation.html]
+ expected: TIMEOUT
+ [font-style animation]
+ expected: TIMEOUT
+
+ [font-style transition]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-style-parsing.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-style-parsing.html.ini
new file mode 100644
index 00000000000..6653e80949f
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-style-parsing.html.ini
@@ -0,0 +1,43 @@
+[font-style-parsing.html]
+ [Font-style: 'oblique' followed by zero degrees is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by positive angle in degrees is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by positive angle in radians is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by positive angle in gradians is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by positive angle in turns is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by negative angle is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by fractional angle is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by maxumum 90 degree angle is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by minimum -90 degree angle is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by positive angle is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by calc is valid]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by calc is valid even if it must be clamped (no computation)]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by calc is valid even if it must be clamped (with computation)]
+ expected: FAIL
+
+ [Font-style: 'oblique' followed by calc is valid even if it mixes units (with computation)]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-variation-settings-inherit.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-variation-settings-inherit.html.ini
new file mode 100644
index 00000000000..d2d4d153a4b
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-variation-settings-inherit.html.ini
@@ -0,0 +1,10 @@
+[font-variation-settings-inherit.html]
+ [Test font-variation-settings for duplicates using 'yyyy' 1, 'yyyy' 2]
+ expected: FAIL
+
+ [Test font-variation-settings for child inheritance]
+ expected: FAIL
+
+ [Test font-variation-settings for child override]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-variation-settings-parsing.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-variation-settings-parsing.html.ini
new file mode 100644
index 00000000000..cb5e9f3568a
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-variation-settings-parsing.html.ini
@@ -0,0 +1,70 @@
+[font-variation-settings-parsing.html]
+ [Property value: Axis tag with valid non-letter ascii characters]
+ expected: FAIL
+
+ [Property value: Invalid character below allowed range (first char)]
+ expected: FAIL
+
+ [Property value: Invalid character above allowed range (mid char)]
+ expected: FAIL
+
+ [Property value: Axis values in scientific form are valid]
+ expected: FAIL
+
+ [Property value: 'normal' value is valid]
+ expected: FAIL
+
+ [Property value: Tag with less than 4 characters is invalid]
+ expected: FAIL
+
+ [Property value: Tag with more than 4 characters is invalid]
+ expected: FAIL
+
+ [Property value: Trailing comma is invalid]
+ expected: FAIL
+
+ [Property value: Unquoted tags are invalid]
+ expected: FAIL
+
+ [Property value: Unmatched quotes around tag are invalid]
+ expected: FAIL
+
+ [Property value: Tag without value isinvalid]
+ expected: FAIL
+
+ [Property value: Value without tag is invalid]
+ expected: FAIL
+
+ [Property value: Value before tag is invalid]
+ expected: FAIL
+
+ [Property value: Missing comma between axes is invalid]
+ expected: FAIL
+
+ [Property value: Calculations should be supported]
+ expected: FAIL
+
+ [Property value: Units should not be supported]
+ expected: FAIL
+
+ [Property value: Units should not be supported (in calc)]
+ expected: FAIL
+
+ [Property value: Percentages should not be supported]
+ expected: FAIL
+
+ [Property value: Percentages should not be supported (in calc)]
+ expected: FAIL
+
+ [@supports: Axis tag with valid non-letter ascii characters]
+ expected: FAIL
+
+ [@supports: Axis values in scientific form are valid]
+ expected: FAIL
+
+ [@supports: 'normal' value is valid]
+ expected: FAIL
+
+ [@supports: Calculations should be supported]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-weight-interpolation.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-weight-interpolation.html.ini
new file mode 100644
index 00000000000..194408cdd9a
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-weight-interpolation.html.ini
@@ -0,0 +1,8 @@
+[font-weight-interpolation.html]
+ expected: TIMEOUT
+ [font-weight animation]
+ expected: TIMEOUT
+
+ [font-weight transition]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-weight-lighter-bolder.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-weight-lighter-bolder.html.ini
new file mode 100644
index 00000000000..1ef0aa9b30c
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-weight-lighter-bolder.html.ini
@@ -0,0 +1,40 @@
+[font-weight-lighter-bolder.html]
+ [Test lighter font-weight for base weight 99]
+ expected: FAIL
+
+ [Test bolder font-weight for base weight 99]
+ expected: FAIL
+
+ [Test bolder font-weight for base weight 349]
+ expected: FAIL
+
+ [Test lighter font-weight for base weight 550]
+ expected: FAIL
+
+ [Test bolder font-weight for base weight 550]
+ expected: FAIL
+
+ [Test lighter font-weight for base weight 749]
+ expected: FAIL
+
+ [Test bolder font-weight for base weight 749]
+ expected: FAIL
+
+ [Test lighter font-weight for base weight 750]
+ expected: FAIL
+
+ [Test bolder font-weight for base weight 750]
+ expected: FAIL
+
+ [Test lighter font-weight for base weight 899]
+ expected: FAIL
+
+ [Test bolder font-weight for base weight 899]
+ expected: FAIL
+
+ [Test lighter font-weight for base weight 901]
+ expected: FAIL
+
+ [Test bolder font-weight for base weight 901]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini
new file mode 100644
index 00000000000..719179298dc
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini
@@ -0,0 +1,34 @@
+[font-weight-matching.html]
+ [Test @font-face matching for weight 250]
+ expected: FAIL
+
+ [Test @font-face matching for weight 399]
+ expected: FAIL
+
+ [Test @font-face matching for weight 400]
+ expected: FAIL
+
+ [Test @font-face matching for weight 420]
+ expected: FAIL
+
+ [Test @font-face matching for weight 470]
+ expected: FAIL
+
+ [Test @font-face matching for weight 500]
+ expected: FAIL
+
+ [Test @font-face matching for weight 600]
+ expected: FAIL
+
+ [Test @font-face matching for weight 750]
+ expected: FAIL
+
+ [Test @font-face matching for weight 751]
+ expected: FAIL
+
+ [Test @font-face matching for weight 900]
+ expected: FAIL
+
+ [Test @font-face matching for weight 1000]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-weight-parsing.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-weight-parsing.html.ini
new file mode 100644
index 00000000000..05e9036381d
--- /dev/null
+++ b/tests/wpt/metadata/css/css-fonts/variations/font-weight-parsing.html.ini
@@ -0,0 +1,55 @@
+[font-weight-parsing.html]
+ [@supports: Values that are not multiple of 100 should be parsed successfully]
+ expected: FAIL
+
+ [@supports: Non-integer Values should be parsed successfully]
+ expected: FAIL
+
+ [@supports: Minimum allowed value should be parsed successfully]
+ expected: FAIL
+
+ [@supports: Maximum allowed value should be parsed successfully]
+ expected: FAIL
+
+ [@supports: Simple calc value]
+ expected: FAIL
+
+ [@supports: Negative simple calc value (to be clamped)]
+ expected: FAIL
+
+ [@supports: Out-of-range simple calc value (to be clamped)]
+ expected: FAIL
+
+ [@supports: Valid calc expression]
+ expected: FAIL
+
+ [@supports: Valid calc expression with out-of-range value (to be clamped)]
+ expected: FAIL
+
+ [Computed style: Values that are not multiple of 100 should be parsed successfully]
+ expected: FAIL
+
+ [Computed style: Non-integer Values should be parsed successfully]
+ expected: FAIL
+
+ [Computed style: Minimum allowed value should be parsed successfully]
+ expected: FAIL
+
+ [Computed style: Maximum allowed value should be parsed successfully]
+ expected: FAIL
+
+ [Computed style: Simple calc value]
+ expected: FAIL
+
+ [Computed style: Negative simple calc value (to be clamped)]
+ expected: FAIL
+
+ [Computed style: Out-of-range simple calc value (to be clamped)]
+ expected: FAIL
+
+ [Computed style: Valid calc expression]
+ expected: FAIL
+
+ [Computed style: Valid calc expression with out-of-range value (to be clamped)]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-text-decor/text-emphasis-style-001.html.ini b/tests/wpt/metadata/css/css-text-decor/text-emphasis-style-001.html.ini
deleted file mode 100644
index bc4313a5b61..00000000000
--- a/tests/wpt/metadata/css/css-text-decor/text-emphasis-style-001.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[text-emphasis-style-001.html]
- type: reftest
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transforms/css-transform-animate-translate-implied-y.html.ini b/tests/wpt/metadata/css/css-transforms/css-transform-animate-translate-implied-y.html.ini
new file mode 100644
index 00000000000..79f1fa389dc
--- /dev/null
+++ b/tests/wpt/metadata/css/css-transforms/css-transform-animate-translate-implied-y.html.ini
@@ -0,0 +1,2 @@
+[css-transform-animate-translate-implied-y.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-transitions/transition-001.html.ini b/tests/wpt/metadata/css/css-transitions/transition-001.html.ini
deleted file mode 100644
index 9c430a6c897..00000000000
--- a/tests/wpt/metadata/css/css-transitions/transition-001.html.ini
+++ /dev/null
@@ -1,38 +0,0 @@
-[transition-001.html]
- type: testharness
- [parse '1s']
- expected: FAIL
-
- [parse '1s 2s']
- expected: FAIL
-
- [parse '1s 2s ease-in']
- expected: FAIL
-
- [parse '1s ease-in 2s']
- expected: FAIL
-
- [parse 'ease-in 1s 2s']
- expected: FAIL
-
- [parse '1s width']
- expected: FAIL
-
- [parse 'width 1s']
- expected: FAIL
-
- [parse '1s width 2s']
- expected: FAIL
-
- [parse '1s 2s width ease-in']
- expected: FAIL
-
- [parse '1s ease-in 2s width']
- expected: FAIL
-
- [parse 'width ease-in 1s 2s']
- expected: FAIL
-
- [parse 'width .1s ease-in .2s']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-transitions/transition-timing-function-001.html.ini b/tests/wpt/metadata/css/css-transitions/transition-timing-function-001.html.ini
deleted file mode 100644
index e8e303abf56..00000000000
--- a/tests/wpt/metadata/css/css-transitions/transition-timing-function-001.html.ini
+++ /dev/null
@@ -1,38 +0,0 @@
-[transition-timing-function-001.html]
- type: testharness
- [parse 'ease']
- expected: FAIL
-
- [parse 'linear']
- expected: FAIL
-
- [parse 'ease-in']
- expected: FAIL
-
- [parse 'ease-out']
- expected: FAIL
-
- [parse 'ease-in-out']
- expected: FAIL
-
- [parse 'cubic-bezier(foobar)']
- expected: FAIL
-
- [parse 'steps(foobar)']
- expected: FAIL
-
- [parse 'steps(3.3, end)']
- expected: FAIL
-
- [parse 'steps(3, top)']
- expected: FAIL
-
- [parse 'steps(-3, top)']
- expected: FAIL
-
- [parse 'cubic-bezier(-0.1, -0.2, -0.3, -0.4)']
- expected: FAIL
-
- [parse 'cubic-bezier(1.1, 1.2, 1.3, 1.4)']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini
deleted file mode 100644
index 26435e28b09..00000000000
--- a/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[vh_not_refreshing_on_chrome.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/css-variables/variable-cssText.html.ini b/tests/wpt/metadata/css/css-variables/variable-cssText.html.ini
index c1d0cbcb5fa..68bd245ff21 100644
--- a/tests/wpt/metadata/css/css-variables/variable-cssText.html.ini
+++ b/tests/wpt/metadata/css/css-variables/variable-cssText.html.ini
@@ -11,3 +11,9 @@
[target9 undefined]
expected: FAIL
+ [target6]
+ expected: FAIL
+
+ [target9]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-variables/variable-substitution-shadow-properties.html.ini b/tests/wpt/metadata/css/css-variables/variable-substitution-shadow-properties.html.ini
deleted file mode 100644
index f09f12d97c4..00000000000
--- a/tests/wpt/metadata/css/css-variables/variable-substitution-shadow-properties.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[variable-substitution-shadow-properties.html]
- [box-shadow]
- expected: FAIL
-
- [text-shadow]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/cssom-getBoxQuads-001.html.ini b/tests/wpt/metadata/css/cssom-view/cssom-getBoxQuads-001.html.ini
new file mode 100644
index 00000000000..61e793df399
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/cssom-getBoxQuads-001.html.ini
@@ -0,0 +1,4 @@
+[cssom-getBoxQuads-001.html]
+ [CSSOM View - getBoxQuads() returns proper border and margin boxes for block and flex]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/CSSStyleRule-set-selectorText.html.ini b/tests/wpt/metadata/css/cssom/CSSStyleRule-set-selectorText.html.ini
new file mode 100644
index 00000000000..4d88d56b5a1
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/CSSStyleRule-set-selectorText.html.ini
@@ -0,0 +1,13 @@
+[CSSStyleRule-set-selectorText.html]
+ [CSSStyleRule: selectorText value: |::first-letter| isMatch: false]
+ expected: FAIL
+
+ [CSSStyleRule: selectorText value: |:first-letter| isMatch: false]
+ expected: FAIL
+
+ [CSSStyleRule: selectorText value: |::first-line| isMatch: false]
+ expected: FAIL
+
+ [CSSStyleRule: selectorText value: |:first-line| isMatch: false]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/css-style-reparse.html.ini b/tests/wpt/metadata/css/cssom/css-style-reparse.html.ini
new file mode 100644
index 00000000000..2446d2e5abb
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/css-style-reparse.html.ini
@@ -0,0 +1,7 @@
+[css-style-reparse.html]
+ [style.textContent modification]
+ expected: FAIL
+
+ [style.innerHTML modification]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-001.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-001.html.ini
new file mode 100644
index 00000000000..46970154fbc
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-001.html.ini
@@ -0,0 +1,5 @@
+[cssstyledeclaration-mutationrecord-001.html]
+ expected: ERROR
+ [CSSStyleDeclaration.setPropertyValue queues a mutation record, even if not mutated]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-002.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-002.html.ini
new file mode 100644
index 00000000000..7627c0cf972
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-002.html.ini
@@ -0,0 +1,5 @@
+[cssstyledeclaration-mutationrecord-002.html]
+ expected: ERROR
+ [CSSStyleDeclaration.setPropertyValue doesn't queue a mutation record when setting invalid values]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-003.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-003.html.ini
new file mode 100644
index 00000000000..c5d7ba94c23
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-003.html.ini
@@ -0,0 +1,5 @@
+[cssstyledeclaration-mutationrecord-003.html]
+ expected: ERROR
+ [CSSStyleDeclaration.removeProperty doesn't queue a mutation record when not actually removed, invoked from setPropertyValue]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-004.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-004.html.ini
new file mode 100644
index 00000000000..5f054179862
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-mutationrecord-004.html.ini
@@ -0,0 +1,5 @@
+[cssstyledeclaration-mutationrecord-004.html]
+ expected: ERROR
+ [CSSStyleDeclaration.removeProperty doesn't queue a mutation record when not actually removed]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-order.html.ini b/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-order.html.ini
new file mode 100644
index 00000000000..1f1c2f59fd3
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/cssstyledeclaration-setter-order.html.ini
@@ -0,0 +1,13 @@
+[cssstyledeclaration-setter-order.html]
+ [setProperty with existing longhand should change order]
+ expected: FAIL
+
+ [invoke property setter with existing longhand should change order]
+ expected: FAIL
+
+ [setProperty with existing shorthand should change order]
+ expected: FAIL
+
+ [invoke property setter with existing shorthand should change order]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/getComputedStyle-detached-subtree.html.ini b/tests/wpt/metadata/css/cssom/getComputedStyle-detached-subtree.html.ini
new file mode 100644
index 00000000000..764bd3e7169
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/getComputedStyle-detached-subtree.html.ini
@@ -0,0 +1,2 @@
+[getComputedStyle-detached-subtree.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini b/tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini
index 114f59a0286..3fddcb48ac1 100644
--- a/tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini
+++ b/tests/wpt/metadata/css/cssom/getComputedStyle-pseudo.html.ini
@@ -11,3 +11,6 @@
[display: contents on pseudo-elements]
expected: FAIL
+ [Unknown pseudo-elements throw]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom/index-002.html.ini b/tests/wpt/metadata/css/cssom/index-002.html.ini
deleted file mode 100644
index b143379f2cb..00000000000
--- a/tests/wpt/metadata/css/cssom/index-002.html.ini
+++ /dev/null
@@ -1,35 +0,0 @@
-[index-002.html]
- type: testharness
- [border is expected to be border: 1px;]
- expected: FAIL
-
- [border is expected to be border: 1px red;]
- expected: FAIL
-
- [border is expected to be border: red;]
- expected: FAIL
-
- [border is expected to be border-width: 1px 2px 3px 4px;]
- expected: FAIL
-
- [border is expected to be border-width: 2px 1px 1px;]
- expected: FAIL
-
- [border is expected to be border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-width: 1px !important;]
- expected: FAIL
-
- [border is expected to be border-width: 1px; border-top-color: red;]
- expected: FAIL
-
- [border is expected to be border: dotted;]
- expected: FAIL
-
- [outline is expected to be outline: blue dotted 2px;]
- expected: FAIL
-
- [list is expected to be list-style: circle inside;]
- expected: FAIL
-
- [border is expected to be border: 1px; (#2)]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom/shorthand-values.html.ini b/tests/wpt/metadata/css/cssom/shorthand-values.html.ini
new file mode 100644
index 00000000000..b8f37ce1f26
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom/shorthand-values.html.ini
@@ -0,0 +1,37 @@
+[shorthand-values.html]
+ [The serialization of border: 1px; border-top: 1px; should be canonical.]
+ expected: FAIL
+
+ [The serialization of border: 1px red; should be canonical.]
+ expected: FAIL
+
+ [The serialization of border: red; should be canonical.]
+ expected: FAIL
+
+ [The serialization of border-top: 1px; border-right: 1px; border-bottom: 1px; border-left: 1px; should be canonical.]
+ expected: FAIL
+
+ [The serialization of border-top: 1px; border-right: 2px; border-bottom: 3px; border-left: 4px; should be canonical.]
+ expected: FAIL
+
+ [The serialization of border: 1px; border-top: 2px; should be canonical.]
+ expected: FAIL
+
+ [The serialization of border: 1px; border-top: 1px !important; should be canonical.]
+ expected: FAIL
+
+ [The serialization of border: 1px; border-top-color: red; should be canonical.]
+ expected: FAIL
+
+ [The serialization of border: solid; border-style: dotted should be canonical.]
+ expected: FAIL
+
+ [The serialization of overflow-x: scroll; overflow-y: hidden; should be canonical.]
+ expected: FAIL
+
+ [The serialization of outline-width: 2px; outline-style: dotted; outline-color: blue; should be canonical.]
+ expected: FAIL
+
+ [The serialization of list-style-type: circle; list-style-position: inside; list-style-image: initial; should be canonical.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/filter-effects/interfaces.any.js.ini b/tests/wpt/metadata/css/filter-effects/interfaces.any.js.ini
new file mode 100644
index 00000000000..0efa750e3dc
--- /dev/null
+++ b/tests/wpt/metadata/css/filter-effects/interfaces.any.js.ini
@@ -0,0 +1,9 @@
+[interfaces.any.worker.html]
+ [Untitled]
+ expected: FAIL
+
+
+[interfaces.any.html]
+ [Untitled]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/selectors/selection-image-001.html.ini b/tests/wpt/metadata/css/selectors/selection-image-001.html.ini
new file mode 100644
index 00000000000..3adc3993327
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selection-image-001.html.ini
@@ -0,0 +1,2 @@
+[selection-image-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/selectors/selection-image-002.html.ini b/tests/wpt/metadata/css/selectors/selection-image-002.html.ini
new file mode 100644
index 00000000000..f19404dd1c2
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selection-image-002.html.ini
@@ -0,0 +1,2 @@
+[selection-image-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/custom-elements/HTMLElement-constructor.html.ini b/tests/wpt/metadata/custom-elements/HTMLElement-constructor.html.ini
new file mode 100644
index 00000000000..fbcf5659080
--- /dev/null
+++ b/tests/wpt/metadata/custom-elements/HTMLElement-constructor.html.ini
@@ -0,0 +1,13 @@
+[HTMLElement-constructor.html]
+ [HTMLElement constructor must not get .prototype until it finishes its extends sanity checks, calling proxy constructor directly]
+ expected: FAIL
+
+ [HTMLElement constructor must not get .prototype until it finishes its extends sanity checks, calling via Reflect]
+ expected: FAIL
+
+ [HTMLElement constructor must not get .prototype until it finishes its registration sanity checks, calling proxy constructor directly]
+ expected: FAIL
+
+ [HTMLElement constructor must not get .prototype until it finishes its registration sanity checks, calling via Reflect]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/custom-elements/htmlconstructor/newtarget.html.ini b/tests/wpt/metadata/custom-elements/htmlconstructor/newtarget.html.ini
new file mode 100644
index 00000000000..95ec0778d0a
--- /dev/null
+++ b/tests/wpt/metadata/custom-elements/htmlconstructor/newtarget.html.ini
@@ -0,0 +1,7 @@
+[newtarget.html]
+ [HTMLParagraphElement constructor must not get .prototype until it finishes its extends sanity checks, calling proxy constructor directly]
+ expected: FAIL
+
+ [HTMLParagraphElement constructor must not get .prototype until it finishes its extends sanity checks, calling via Reflect]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/events/AddEventListenerOptions-passive.html.ini b/tests/wpt/metadata/dom/events/AddEventListenerOptions-passive.html.ini
index fc85c0ff835..8606cdd742c 100644
--- a/tests/wpt/metadata/dom/events/AddEventListenerOptions-passive.html.ini
+++ b/tests/wpt/metadata/dom/events/AddEventListenerOptions-passive.html.ini
@@ -11,3 +11,9 @@
[passive behavior of one listener should be unaffeted by the presence of other listeners]
expected: FAIL
+ [returnValue should be ignored if-and-only-if the passive option is true]
+ expected: FAIL
+
+ [passive behavior of one listener should be unaffected by the presence of other listeners]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/events/Event-constructors.html.ini b/tests/wpt/metadata/dom/events/Event-constructors.html.ini
new file mode 100644
index 00000000000..69db3949a53
--- /dev/null
+++ b/tests/wpt/metadata/dom/events/Event-constructors.html.ini
@@ -0,0 +1,7 @@
+[Event-constructors.html]
+ [Event constructors 2]
+ expected: FAIL
+
+ [Event constructors 3]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/events/Event-defaultPrevented-after-dispatch.html.ini b/tests/wpt/metadata/dom/events/Event-defaultPrevented-after-dispatch.html.ini
new file mode 100644
index 00000000000..62b929e7696
--- /dev/null
+++ b/tests/wpt/metadata/dom/events/Event-defaultPrevented-after-dispatch.html.ini
@@ -0,0 +1,7 @@
+[Event-defaultPrevented-after-dispatch.html]
+ [Default prevention via preventDefault]
+ expected: FAIL
+
+ [Default prevention via returnValue]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-detached-click.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-detached-click.html.ini
new file mode 100644
index 00000000000..4ee6693e1dc
--- /dev/null
+++ b/tests/wpt/metadata/dom/events/Event-dispatch-detached-click.html.ini
@@ -0,0 +1,4 @@
+[Event-dispatch-detached-click.html]
+ [Click event can be dispatched to an element that is not in the document.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/events/Event-dispatch-other-document.html.ini b/tests/wpt/metadata/dom/events/Event-dispatch-other-document.html.ini
new file mode 100644
index 00000000000..8939e17c8b0
--- /dev/null
+++ b/tests/wpt/metadata/dom/events/Event-dispatch-other-document.html.ini
@@ -0,0 +1,4 @@
+[Event-dispatch-other-document.html]
+ [Custom event on an element in another document]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/events/Event-initEvent.html.ini b/tests/wpt/metadata/dom/events/Event-initEvent.html.ini
index 5c252a9da57..2003c8b61c4 100644
--- a/tests/wpt/metadata/dom/events/Event-initEvent.html.ini
+++ b/tests/wpt/metadata/dom/events/Event-initEvent.html.ini
@@ -6,3 +6,15 @@
[Tests initEvent's default parameter values.]
expected: FAIL
+ [Properties of initEvent(type, true, true)]
+ expected: FAIL
+
+ [Properties of initEvent(type, true, false)]
+ expected: FAIL
+
+ [Properties of initEvent(type, false, true)]
+ expected: FAIL
+
+ [Properties of initEvent(type, false, false)]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/events/Event-returnValue.html.ini b/tests/wpt/metadata/dom/events/Event-returnValue.html.ini
new file mode 100644
index 00000000000..e9c34f6438f
--- /dev/null
+++ b/tests/wpt/metadata/dom/events/Event-returnValue.html.ini
@@ -0,0 +1,19 @@
+[Event-returnValue.html]
+ [When an event is created, returnValue should be initialized to true.]
+ expected: FAIL
+
+ [preventDefault() should not change returnValue if cancelable is false.]
+ expected: FAIL
+
+ [returnValue=false should have no effect if cancelable is false.]
+ expected: FAIL
+
+ [preventDefault() should change returnValue if cancelable is true.]
+ expected: FAIL
+
+ [initEvent should unset returnValue.]
+ expected: FAIL
+
+ [returnValue=true should have no effect once the canceled flag was set.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/events/EventListener-handleEvent.html.ini b/tests/wpt/metadata/dom/events/EventListener-handleEvent.html.ini
new file mode 100644
index 00000000000..f1d28ce2009
--- /dev/null
+++ b/tests/wpt/metadata/dom/events/EventListener-handleEvent.html.ini
@@ -0,0 +1,4 @@
+[EventListener-handleEvent.html]
+ [EventListener::handleEvent()]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent-returnvalue.html.ini b/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent-returnvalue.html.ini
new file mode 100644
index 00000000000..5fe7e8ffe60
--- /dev/null
+++ b/tests/wpt/metadata/dom/events/EventTarget-dispatchEvent-returnvalue.html.ini
@@ -0,0 +1,7 @@
+[EventTarget-dispatchEvent-returnvalue.html]
+ [Return value of EventTarget.dispatchEvent() affected by preventDefault().]
+ expected: FAIL
+
+ [Return value of EventTarget.dispatchEvent() affected by returnValue.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/lists/DOMTokenList-coverage-for-attributes.html.ini b/tests/wpt/metadata/dom/lists/DOMTokenList-coverage-for-attributes.html.ini
index ed70e7acb55..b88c619f76e 100644
--- a/tests/wpt/metadata/dom/lists/DOMTokenList-coverage-for-attributes.html.ini
+++ b/tests/wpt/metadata/dom/lists/DOMTokenList-coverage-for-attributes.html.ini
@@ -39,3 +39,6 @@
[link.sizes in http://www.w3.org/1999/xhtml namespace should be DOMTokenList.]
expected: FAIL
+ [a.relList in http://www.w3.org/2000/svg namespace should be DOMTokenList.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/dom/nodes/Node-cloneNode.html.ini b/tests/wpt/metadata/dom/nodes/Node-cloneNode.html.ini
deleted file mode 100644
index bf7d693b4db..00000000000
--- a/tests/wpt/metadata/dom/nodes/Node-cloneNode.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[Node-cloneNode.html]
- type: testharness
- [implementation.createDocument]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/api/basic/mediasource.window.js.ini b/tests/wpt/metadata/fetch/api/basic/mediasource.window.js.ini
new file mode 100644
index 00000000000..b568c0deb83
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/basic/mediasource.window.js.ini
@@ -0,0 +1,4 @@
+[mediasource.window.html]
+ [Cannot fetch blob: URL from a MediaSource]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/basic/scheme-about.any.js.ini b/tests/wpt/metadata/fetch/api/basic/scheme-about.any.js.ini
index dcf6c8f7a3e..e070826dde4 100644
--- a/tests/wpt/metadata/fetch/api/basic/scheme-about.any.js.ini
+++ b/tests/wpt/metadata/fetch/api/basic/scheme-about.any.js.ini
@@ -9,6 +9,15 @@
[Fetching about:blank (POST) is OK]
expected: FAIL
+ [Fetching about:blank with method GET is KO]
+ expected: FAIL
+
+ [Fetching about:blank with method PUT is KO]
+ expected: FAIL
+
+ [Fetching about:blank with method POST is KO]
+ expected: FAIL
+
[scheme-about.any.worker.html]
type: testharness
@@ -21,3 +30,12 @@
[Fetching about:blank (POST) is OK]
expected: FAIL
+ [Fetching about:blank with method GET is KO]
+ expected: FAIL
+
+ [Fetching about:blank with method PUT is KO]
+ expected: FAIL
+
+ [Fetching about:blank with method POST is KO]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/redirect/redirect-mode-worker.html.ini b/tests/wpt/metadata/fetch/api/redirect/redirect-mode-worker.html.ini
index c2a2bb20543..764f49f378a 100644
--- a/tests/wpt/metadata/fetch/api/redirect/redirect-mode-worker.html.ini
+++ b/tests/wpt/metadata/fetch/api/redirect/redirect-mode-worker.html.ini
@@ -15,3 +15,63 @@
[Redirect 308 in "manual" mode ]
expected: FAIL
+ [same-origin redirect 301 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 301 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [same-origin redirect 302 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 302 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [same-origin redirect 303 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 303 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [same-origin redirect 307 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 307 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [same-origin redirect 308 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 308 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 301 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 301 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 302 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 302 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 303 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 303 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 307 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 307 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 308 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 308 in manual redirect and no-cors mode]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/redirect/redirect-mode.html.ini b/tests/wpt/metadata/fetch/api/redirect/redirect-mode.html.ini
index d39b314c9bb..2a06be90e16 100644
--- a/tests/wpt/metadata/fetch/api/redirect/redirect-mode.html.ini
+++ b/tests/wpt/metadata/fetch/api/redirect/redirect-mode.html.ini
@@ -15,3 +15,63 @@
[Redirect 308 in "manual" mode ]
expected: FAIL
+ [same-origin redirect 301 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 301 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [same-origin redirect 302 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 302 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [same-origin redirect 303 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 303 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [same-origin redirect 307 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 307 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [same-origin redirect 308 in manual redirect and cors mode]
+ expected: FAIL
+
+ [same-origin redirect 308 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 301 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 301 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 302 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 302 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 303 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 303 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 307 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 307 in manual redirect and no-cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 308 in manual redirect and cors mode]
+ expected: FAIL
+
+ [cross-origin redirect 308 in manual redirect and no-cors mode]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/request/request-init-003.sub.html.ini b/tests/wpt/metadata/fetch/api/request/request-init-003.sub.html.ini
new file mode 100644
index 00000000000..bb984c0b6d5
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/request/request-init-003.sub.html.ini
@@ -0,0 +1,4 @@
+[request-init-003.sub.html]
+ [Check request values when initialized from url string]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/api/request/request-structure.html.ini b/tests/wpt/metadata/fetch/api/request/request-structure.html.ini
new file mode 100644
index 00000000000..d63e7c3c3a2
--- /dev/null
+++ b/tests/wpt/metadata/fetch/api/request/request-structure.html.ini
@@ -0,0 +1,4 @@
+[request-structure.html]
+ [Check credentials attribute]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/fetch/content-encoding/bad-gzip-body.any.js.ini b/tests/wpt/metadata/fetch/content-encoding/bad-gzip-body.any.js.ini
new file mode 100644
index 00000000000..9b9465d6d8c
--- /dev/null
+++ b/tests/wpt/metadata/fetch/content-encoding/bad-gzip-body.any.js.ini
@@ -0,0 +1,27 @@
+[bad-gzip-body.any.worker.html]
+ [Consuming the body of a resource with bad gzip content with arrayBuffer() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with blob() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with json() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with text() should reject]
+ expected: FAIL
+
+
+[bad-gzip-body.any.html]
+ [Consuming the body of a resource with bad gzip content with arrayBuffer() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with blob() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with json() should reject]
+ expected: FAIL
+
+ [Consuming the body of a resource with bad gzip content with text() should reject]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/hr-time/idlharness.html.ini b/tests/wpt/metadata/hr-time/idlharness.html.ini
index e4cee0cde04..1b082bfa85f 100644
--- a/tests/wpt/metadata/hr-time/idlharness.html.ini
+++ b/tests/wpt/metadata/hr-time/idlharness.html.ini
@@ -27,9 +27,3 @@
[Performance interface: window.performance must inherit property "toJSON()" with the proper type]
expected: FAIL
- [Test driver]
- expected: FAIL
-
- [Stringification of window.performance]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini
index 5b38c37b086..78879bad5f1 100644
--- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini
+++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-abort/javascript-url-abort-return-value-undefined.tentative.html.ini
@@ -1,4 +1,5 @@
[javascript-url-abort-return-value-undefined.tentative.html]
+ expected: TIMEOUT
[Not aborting fetch for javascript:undefined navigation]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini
index 746b6a1c9c8..09988facd1b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/security-window/window-security.https.html.ini
@@ -1,5 +1,4 @@
-[window-security.html]
- type: testharness
+[window-security.https.html]
[A SecurityError exception must be thrown when window.applicationCache is accessed from a different origin.]
expected: FAIL
@@ -333,9 +332,6 @@
[A SecurityError exception must be thrown when window.setTimeout is accessed from a different origin.]
expected: FAIL
- [A SecurityError exception must be thrown when window.showModalDialog is accessed from a different origin.]
- expected: FAIL
-
[A SecurityError exception must be thrown when window.stop is accessed from a different origin.]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/window-properties.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini
index 0f4e7c4c09c..f93db63cd5b 100644
--- a/tests/wpt/metadata/html/browsers/the-window-object/window-properties.html.ini
+++ b/tests/wpt/metadata/html/browsers/the-window-object/window-properties.https.html.ini
@@ -1,5 +1,4 @@
-[window-properties.html]
- type: testharness
+[window-properties.https.html]
[Window method: stop]
expected: FAIL
@@ -54,15 +53,15 @@
[Window replaceable attribute: toolbar]
expected: FAIL
- [Window replaceable attribute: length]
- expected: FAIL
-
[Window replaceable attribute: parent]
expected: FAIL
[Window replaceable attribute: external]
expected: FAIL
+ [Window replaceable attribute: length]
+ expected: FAIL
+
[Window replaceable attribute: screen]
expected: FAIL
diff --git a/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html.ini b/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html.ini
new file mode 100644
index 00000000000..a12645338ed
--- /dev/null
+++ b/tests/wpt/metadata/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html.ini
@@ -0,0 +1,4 @@
+[document.getElementsByName-liveness.html]
+ [Document.getElementsByName() should be a live collection]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.https.html.ini
index 69e07d91198..a83911d363c 100644
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.html.ini
+++ b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.https.html.ini
@@ -1,5 +1,4 @@
-[009.html]
- type: testharness
+[009.https.html]
expected: ERROR
[document.open replacing singleton window]
expected: NOTRUN
diff --git a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini b/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini
deleted file mode 100644
index 33164945eb6..00000000000
--- a/tests/wpt/metadata/html/dom/dynamic-markup-insertion/opening-the-input-stream/010.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[010.html]
- [Salvagability of document.opened document]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini
deleted file mode 100644
index 7c87c9bd1a8..00000000000
--- a/tests/wpt/metadata/html/dom/interfaces.html.ini
+++ /dev/null
@@ -1,14015 +0,0 @@
-[interfaces.html]
- type: testharness
- [Document interface: attribute dir]
- expected: FAIL
-
- [Document interface: operation getItems(DOMString)]
- expected: FAIL
-
- [Document interface: attribute cssElementMap]
- expected: FAIL
-
- [Document interface: operation open(DOMString,DOMString,DOMString,boolean)]
- expected: FAIL
-
- [Document interface: attribute designMode]
- expected: FAIL
-
- [Document interface: operation execCommand(DOMString,boolean,DOMString)]
- expected: FAIL
-
- [Document interface: operation queryCommandEnabled(DOMString)]
- expected: FAIL
-
- [Document interface: operation queryCommandIndeterm(DOMString)]
- expected: FAIL
-
- [Document interface: operation queryCommandState(DOMString)]
- expected: FAIL
-
- [Document interface: operation queryCommandSupported(DOMString)]
- expected: FAIL
-
- [Document interface: operation queryCommandValue(DOMString)]
- expected: FAIL
-
- [Document interface: attribute commands]
- expected: FAIL
-
- [Document interface: attribute linkColor]
- expected: FAIL
-
- [Document interface: attribute vlinkColor]
- expected: FAIL
-
- [Document interface: attribute alinkColor]
- expected: FAIL
-
- [Document interface: attribute all]
- expected: FAIL
-
- [Document interface: attribute onautocomplete]
- expected: FAIL
-
- [Document interface: attribute onautocompleteerror]
- expected: FAIL
-
- [Document interface: attribute onmousewheel]
- expected: FAIL
-
- [Document interface: attribute onsort]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "origin" with the proper type (3)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "inputEncoding" with the proper type (6)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "contentType" with the proper type (7)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "doctype" with the proper type (8)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "documentElement" with the proper type (9)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementsByTagName" with the proper type (10)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementsByTagNameNS" with the proper type (11)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementsByClassName" with the proper type (12)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createElement" with the proper type (13)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createElementNS" with the proper type (14)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createDocumentFragment" with the proper type (15)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createTextNode" with the proper type (16)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createComment" with the proper type (17)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createProcessingInstruction" with the proper type (18)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "importNode" with the proper type (19)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "adoptNode" with the proper type (20)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createAttribute" with the proper type (21)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createAttributeNS" with the proper type (22)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createEvent" with the proper type (23)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createRange" with the proper type (24)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createNodeIterator" with the proper type (25)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createTreeWalker" with the proper type (26)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "styleSheets" with the proper type (27)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "selectedStyleSheetSet" with the proper type (28)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "lastStyleSheetSet" with the proper type (29)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "preferredStyleSheetSet" with the proper type (30)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "styleSheetSets" with the proper type (31)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "enableStyleSheetsForSet" with the proper type (32)]
- expected: FAIL
-
- [Document interface: calling enableStyleSheetsForSet(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must have own property "location"]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "domain" with the proper type (34)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "referrer" with the proper type (35)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "cookie" with the proper type (36)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "lastModified" with the proper type (37)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "readyState" with the proper type (38)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "title" with the proper type (40)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "dir" with the proper type (41)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "body" with the proper type (42)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "head" with the proper type (43)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "images" with the proper type (44)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "embeds" with the proper type (45)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "plugins" with the proper type (46)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "links" with the proper type (47)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "forms" with the proper type (48)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "scripts" with the proper type (49)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementsByName" with the proper type (50)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getItems" with the proper type (51)]
- expected: FAIL
-
- [Document interface: calling getItems(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "cssElementMap" with the proper type (52)]
- expected: FAIL
-
- [Document interface: calling open(DOMString,DOMString,DOMString,boolean) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "designMode" with the proper type (62)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "execCommand" with the proper type (63)]
- expected: FAIL
-
- [Document interface: calling execCommand(DOMString,boolean,DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandEnabled" with the proper type (64)]
- expected: FAIL
-
- [Document interface: calling queryCommandEnabled(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandIndeterm" with the proper type (65)]
- expected: FAIL
-
- [Document interface: calling queryCommandIndeterm(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandState" with the proper type (66)]
- expected: FAIL
-
- [Document interface: calling queryCommandState(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandSupported" with the proper type (67)]
- expected: FAIL
-
- [Document interface: calling queryCommandSupported(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandValue" with the proper type (68)]
- expected: FAIL
-
- [Document interface: calling queryCommandValue(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "commands" with the proper type (69)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onreadystatechange" with the proper type (70)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "fgColor" with the proper type (71)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type (72)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type (73)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type (74)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "bgColor" with the proper type (75)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "anchors" with the proper type (76)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "applets" with the proper type (77)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "clear" with the proper type (78)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "captureEvents" with the proper type (79)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "releaseEvents" with the proper type (80)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "all" with the proper type (81)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementById" with the proper type (82)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "children" with the proper type (83)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "firstElementChild" with the proper type (84)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "lastElementChild" with the proper type (85)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "childElementCount" with the proper type (86)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "prepend" with the proper type (87)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "append" with the proper type (88)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "query" with the proper type (89)]
- expected: FAIL
-
- [Document interface: calling query(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryAll" with the proper type (90)]
- expected: FAIL
-
- [Document interface: calling queryAll(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "querySelector" with the proper type (91)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "querySelectorAll" with the proper type (92)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onabort" with the proper type (93)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onautocomplete" with the proper type (94)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onautocompleteerror" with the proper type (95)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onblur" with the proper type (96)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncancel" with the proper type (97)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncanplay" with the proper type (98)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncanplaythrough" with the proper type (99)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onchange" with the proper type (100)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onclick" with the proper type (101)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onclose" with the proper type (102)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncontextmenu" with the proper type (103)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncuechange" with the proper type (104)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondblclick" with the proper type (105)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondrag" with the proper type (106)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragend" with the proper type (107)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragenter" with the proper type (108)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragexit" with the proper type (109)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragleave" with the proper type (110)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragover" with the proper type (111)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragstart" with the proper type (112)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondrop" with the proper type (113)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondurationchange" with the proper type (114)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onemptied" with the proper type (115)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onended" with the proper type (116)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onerror" with the proper type (117)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onfocus" with the proper type (118)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oninput" with the proper type (119)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oninvalid" with the proper type (120)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onkeydown" with the proper type (121)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onkeypress" with the proper type (122)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onkeyup" with the proper type (123)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onload" with the proper type (124)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadeddata" with the proper type (125)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadedmetadata" with the proper type (126)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadstart" with the proper type (127)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousedown" with the proper type (128)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseenter" with the proper type (129)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseleave" with the proper type (130)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousemove" with the proper type (131)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseout" with the proper type (132)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseover" with the proper type (133)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseup" with the proper type (134)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousewheel" with the proper type (135)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onpause" with the proper type (136)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onplay" with the proper type (137)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onplaying" with the proper type (138)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onprogress" with the proper type (139)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onratechange" with the proper type (140)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onreset" with the proper type (141)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onresize" with the proper type (142)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onscroll" with the proper type (143)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onseeked" with the proper type (144)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onseeking" with the proper type (145)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onselect" with the proper type (146)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onshow" with the proper type (147)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onsort" with the proper type (148)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onstalled" with the proper type (149)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onsubmit" with the proper type (150)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onsuspend" with the proper type (151)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ontimeupdate" with the proper type (152)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ontoggle" with the proper type (153)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onvolumechange" with the proper type (154)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onwaiting" with the proper type (155)]
- expected: FAIL
-
- [XMLDocument interface: operation load(DOMString)]
- expected: FAIL
-
- [XMLDocument interface: document.implementation.createDocument(null, "", null) must inherit property "load" with the proper type (0)]
- expected: FAIL
-
- [XMLDocument interface: calling load(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 "origin" with the proper type (3)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "styleSheets" with the proper type (27)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "selectedStyleSheetSet" with the proper type (28)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "lastStyleSheetSet" with the proper type (29)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "preferredStyleSheetSet" with the proper type (30)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "styleSheetSets" with the proper type (31)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "enableStyleSheetsForSet" with the proper type (32)]
- expected: FAIL
-
- [Document interface: calling enableStyleSheetsForSet(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must have own property "location"]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "domain" with the proper type (34)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "referrer" with the proper type (35)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "dir" with the proper type (41)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "getItems" with the proper type (51)]
- expected: FAIL
-
- [Document interface: calling getItems(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 "cssElementMap" with the proper type (52)]
- expected: FAIL
-
- [Document interface: calling open(DOMString,DOMString,DOMString,boolean) 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 "designMode" with the proper type (62)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "execCommand" with the proper type (63)]
- expected: FAIL
-
- [Document interface: calling execCommand(DOMString,boolean,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 "queryCommandEnabled" with the proper type (64)]
- expected: FAIL
-
- [Document interface: calling queryCommandEnabled(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 "queryCommandIndeterm" with the proper type (65)]
- expected: FAIL
-
- [Document interface: calling queryCommandIndeterm(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 "queryCommandState" with the proper type (66)]
- expected: FAIL
-
- [Document interface: calling queryCommandState(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 "queryCommandSupported" with the proper type (67)]
- expected: FAIL
-
- [Document interface: calling queryCommandSupported(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 "queryCommandValue" with the proper type (68)]
- expected: FAIL
-
- [Document interface: calling queryCommandValue(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 "commands" with the proper type (69)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "linkColor" with the proper type (72)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "vlinkColor" with the proper type (73)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "alinkColor" with the proper type (74)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type (81)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "query" with the proper type (89)]
- expected: FAIL
-
- [Document interface: calling query(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 "queryAll" with the proper type (90)]
- expected: FAIL
-
- [Document interface: calling queryAll(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 "onautocomplete" with the proper type (94)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onautocompleteerror" with the proper type (95)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmousewheel" with the proper type (135)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onsort" with the proper type (148)]
- expected: FAIL
-
- [MouseEvent interface: attribute region]
- expected: FAIL
-
- [Touch interface: attribute region]
- expected: FAIL
-
- [HTMLAllCollection interface: existence and properties of interface object]
- expected: FAIL
-
- [HTMLAllCollection interface object length]
- expected: FAIL
-
- [HTMLAllCollection interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [HTMLAllCollection interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [HTMLAllCollection interface: operation item(unsigned long)]
- expected: FAIL
-
- [HTMLAllCollection interface: operation item(DOMString)]
- expected: FAIL
-
- [HTMLAllCollection interface: operation namedItem(DOMString)]
- expected: FAIL
-
- [HTMLAllCollection must be primary interface of document.all]
- expected: FAIL
-
- [Stringification of document.all]
- expected: FAIL
-
- [HTMLAllCollection interface: document.all must inherit property "item" with the proper type (0)]
- expected: FAIL
-
- [HTMLAllCollection interface: calling item(unsigned long) on document.all with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLAllCollection interface: document.all must inherit property "item" with the proper type (1)]
- expected: FAIL
-
- [HTMLAllCollection interface: calling item(DOMString) on document.all with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLAllCollection interface: document.all must inherit property "namedItem" with the proper type (2)]
- expected: FAIL
-
- [HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLCollection interface: document.all must inherit property "length" with the proper type (0)]
- expected: FAIL
-
- [HTMLCollection interface: document.all must inherit property "item" with the proper type (1)]
- expected: FAIL
-
- [HTMLCollection interface: calling item(unsigned long) on document.all with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLCollection interface: document.all must inherit property "namedItem" with the proper type (2)]
- expected: FAIL
-
- [HTMLCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLOptionsCollection interface: document.createElement("select").options must inherit property "add" with the proper type (3)]
- expected: FAIL
-
- [HTMLOptionsCollection interface: document.createElement("select").options must inherit property "remove" with the proper type (4)]
- expected: FAIL
-
- [HTMLPropertiesCollection interface: existence and properties of interface object]
- expected: FAIL
-
- [HTMLPropertiesCollection interface object length]
- expected: FAIL
-
- [HTMLPropertiesCollection interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [HTMLPropertiesCollection interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [HTMLPropertiesCollection interface: operation namedItem(DOMString)]
- expected: FAIL
-
- [HTMLPropertiesCollection interface: attribute names]
- expected: FAIL
-
- [HTMLPropertiesCollection must be primary interface of document.head.properties]
- expected: FAIL
-
- [Stringification of document.head.properties]
- expected: FAIL
-
- [HTMLPropertiesCollection interface: document.head.properties must inherit property "namedItem" with the proper type (0)]
- expected: FAIL
-
- [HTMLPropertiesCollection interface: calling namedItem(DOMString) on document.head.properties with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLPropertiesCollection interface: document.head.properties must inherit property "names" with the proper type (1)]
- expected: FAIL
-
- [HTMLCollection interface: document.head.properties must inherit property "length" with the proper type (0)]
- expected: FAIL
-
- [HTMLCollection interface: document.head.properties must inherit property "item" with the proper type (1)]
- expected: FAIL
-
- [HTMLCollection interface: calling item(unsigned long) on document.head.properties with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLCollection interface: document.head.properties must inherit property "namedItem" with the proper type (2)]
- expected: FAIL
-
- [HTMLCollection interface: calling namedItem(DOMString) on document.head.properties with too few arguments must throw TypeError]
- expected: FAIL
-
- [PropertyNodeList interface: existence and properties of interface object]
- expected: FAIL
-
- [PropertyNodeList interface object length]
- expected: FAIL
-
- [PropertyNodeList interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [PropertyNodeList interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [PropertyNodeList interface: operation getValues()]
- expected: FAIL
-
- [DOMElementMap interface: existence and properties of interface object]
- expected: FAIL
-
- [DOMElementMap interface object length]
- expected: FAIL
-
- [DOMElementMap interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [DOMElementMap interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [DOMElementMap must be primary interface of document.cssElementMap]
- expected: FAIL
-
- [Stringification of document.cssElementMap]
- expected: FAIL
-
- [HTMLElement interface: attribute translate]
- expected: FAIL
-
- [HTMLElement interface: attribute dir]
- expected: FAIL
-
- [HTMLElement interface: attribute itemScope]
- expected: FAIL
-
- [HTMLElement interface: attribute itemType]
- expected: FAIL
-
- [HTMLElement interface: attribute itemId]
- expected: FAIL
-
- [HTMLElement interface: attribute itemRef]
- expected: FAIL
-
- [HTMLElement interface: attribute itemProp]
- expected: FAIL
-
- [HTMLElement interface: attribute properties]
- expected: FAIL
-
- [HTMLElement interface: attribute itemValue]
- expected: FAIL
-
- [HTMLElement interface: attribute tabIndex]
- expected: FAIL
-
- [HTMLElement interface: attribute accessKey]
- expected: FAIL
-
- [HTMLElement interface: attribute accessKeyLabel]
- expected: FAIL
-
- [HTMLElement interface: attribute draggable]
- expected: FAIL
-
- [HTMLElement interface: attribute dropzone]
- expected: FAIL
-
- [HTMLElement interface: attribute contentEditable]
- expected: FAIL
-
- [HTMLElement interface: attribute isContentEditable]
- expected: FAIL
-
- [HTMLElement interface: attribute contextMenu]
- expected: FAIL
-
- [HTMLElement interface: attribute spellcheck]
- expected: FAIL
-
- [HTMLElement interface: operation forceSpellCheck()]
- expected: FAIL
-
- [HTMLElement interface: attribute commandType]
- expected: FAIL
-
- [HTMLElement interface: attribute commandLabel]
- expected: FAIL
-
- [HTMLElement interface: attribute commandIcon]
- expected: FAIL
-
- [HTMLElement interface: attribute commandHidden]
- expected: FAIL
-
- [HTMLElement interface: attribute commandDisabled]
- expected: FAIL
-
- [HTMLElement interface: attribute commandChecked]
- expected: FAIL
-
- [HTMLElement interface: attribute onautocomplete]
- expected: FAIL
-
- [HTMLElement interface: attribute onautocompleteerror]
- expected: FAIL
-
- [HTMLElement interface: attribute onmousewheel]
- expected: FAIL
-
- [HTMLElement interface: attribute onsort]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type (2)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "dir" with the proper type (3)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "itemScope" with the proper type (5)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "itemType" with the proper type (6)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "itemId" with the proper type (7)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "itemRef" with the proper type (8)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "itemProp" with the proper type (9)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "properties" with the proper type (10)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "itemValue" with the proper type (11)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type (14)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type (17)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type (18)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type (19)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "dropzone" with the proper type (20)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type (21)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type (22)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "contextMenu" with the proper type (23)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type (24)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "forceSpellCheck" with the proper type (25)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandType" with the proper type (26)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandLabel" with the proper type (27)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandIcon" with the proper type (28)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandHidden" with the proper type (29)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandDisabled" with the proper type (30)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandChecked" with the proper type (31)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onautocomplete" with the proper type (33)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onautocompleteerror" with the proper type (34)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onmousewheel" with the proper type (74)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onsort" with the proper type (87)]
- expected: FAIL
-
- [Element interface: document.createElement("noscript") must inherit property "query" with the proper type (34)]
- expected: FAIL
-
- [Element interface: calling query(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError]
- expected: FAIL
-
- [Element interface: document.createElement("noscript") must inherit property "queryAll" with the proper type (35)]
- expected: FAIL
-
- [Element interface: calling queryAll(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLHtmlElement interface: attribute version]
- expected: FAIL
-
- [HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type (0)]
- expected: FAIL
-
- [HTMLBaseElement interface: attribute target]
- expected: FAIL
-
- [HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type (1)]
- expected: FAIL
-
- [HTMLLinkElement interface: attribute sizes]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type (7)]
- expected: FAIL
-
- [HTMLMetaElement interface: attribute httpEquiv]
- expected: FAIL
-
- [HTMLMetaElement interface: attribute scheme]
- expected: FAIL
-
- [HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type (1)]
- expected: FAIL
-
- [HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type (3)]
- expected: FAIL
-
- [HTMLStyleElement interface: attribute media]
- expected: FAIL
-
- [HTMLStyleElement interface: attribute type]
- expected: FAIL
-
- [HTMLStyleElement interface: attribute scoped]
- expected: FAIL
-
- [HTMLStyleElement interface: document.createElement("style") must inherit property "media" with the proper type (0)]
- expected: FAIL
-
- [HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type (1)]
- expected: FAIL
-
- [HTMLStyleElement interface: document.createElement("style") must inherit property "scoped" with the proper type (2)]
- expected: FAIL
-
- [HTMLBodyElement interface: attribute link]
- expected: FAIL
-
- [HTMLBodyElement interface: attribute vLink]
- expected: FAIL
-
- [HTMLBodyElement interface: attribute aLink]
- expected: FAIL
-
- [HTMLBodyElement interface: document.createElement("body") must inherit property "link" with the proper type (1)]
- expected: FAIL
-
- [HTMLBodyElement interface: document.createElement("body") must inherit property "vLink" with the proper type (2)]
- expected: FAIL
-
- [HTMLBodyElement interface: document.createElement("body") must inherit property "aLink" with the proper type (3)]
- expected: FAIL
-
- [HTMLHeadingElement interface: attribute align]
- expected: FAIL
-
- [HTMLHeadingElement interface: document.createElement("h1") must inherit property "align" with the proper type (0)]
- expected: FAIL
-
- [HTMLHeadingElement interface: document.createElement("h2") must inherit property "align" with the proper type (0)]
- expected: FAIL
-
- [HTMLHeadingElement interface: document.createElement("h3") must inherit property "align" with the proper type (0)]
- expected: FAIL
-
- [HTMLHeadingElement interface: document.createElement("h4") must inherit property "align" with the proper type (0)]
- expected: FAIL
-
- [HTMLHeadingElement interface: document.createElement("h5") must inherit property "align" with the proper type (0)]
- expected: FAIL
-
- [HTMLHeadingElement interface: document.createElement("h6") must inherit property "align" with the proper type (0)]
- expected: FAIL
-
- [HTMLParagraphElement interface: attribute align]
- expected: FAIL
-
- [HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type (0)]
- expected: FAIL
-
- [HTMLHRElement interface: attribute noShade]
- expected: FAIL
-
- [HTMLHRElement interface: attribute size]
- expected: FAIL
-
- [HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type (2)]
- expected: FAIL
-
- [HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type (3)]
- expected: FAIL
-
- [HTMLPreElement interface: attribute width]
- expected: FAIL
-
- [HTMLPreElement interface: document.createElement("pre") must inherit property "width" with the proper type (0)]
- expected: FAIL
-
- [HTMLPreElement interface: document.createElement("listing") must inherit property "width" with the proper type (0)]
- expected: FAIL
-
- [HTMLPreElement interface: document.createElement("plaintext") must inherit property "width" with the proper type (0)]
- expected: FAIL
-
- [HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type (0)]
- expected: FAIL
-
- [HTMLQuoteElement interface: attribute cite]
- expected: FAIL
-
- [HTMLQuoteElement interface: document.createElement("blockquote") must inherit property "cite" with the proper type (0)]
- expected: FAIL
-
- [HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type (0)]
- expected: FAIL
-
- [HTMLOListElement interface: attribute reversed]
- expected: FAIL
-
- [HTMLOListElement interface: attribute start]
- expected: FAIL
-
- [HTMLOListElement interface: attribute type]
- expected: FAIL
-
- [HTMLOListElement interface: attribute compact]
- expected: FAIL
-
- [HTMLUListElement interface: attribute compact]
- expected: FAIL
-
- [HTMLUListElement interface: attribute type]
- expected: FAIL
-
- [HTMLLIElement interface: attribute type]
- expected: FAIL
-
- [HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type (1)]
- expected: FAIL
-
- [HTMLDListElement interface: attribute compact]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute download]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute ping]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute hreflang]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute type]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute charset]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "download" with the proper type (1)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type (2)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type (5)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "type" with the proper type (6)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type (9)]
- expected: FAIL
-
- [HTMLBRElement interface: attribute clear]
- expected: FAIL
-
- [HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type (0)]
- expected: FAIL
-
- [HTMLModElement interface: attribute cite]
- expected: FAIL
-
- [HTMLModElement interface: attribute dateTime]
- expected: FAIL
-
- [HTMLModElement interface: document.createElement("ins") must inherit property "cite" with the proper type (0)]
- expected: FAIL
-
- [HTMLModElement interface: document.createElement("ins") must inherit property "dateTime" with the proper type (1)]
- expected: FAIL
-
- [HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type (0)]
- expected: FAIL
-
- [HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type (1)]
- expected: FAIL
-
- [HTMLImageElement interface: attribute srcset]
- expected: FAIL
-
- [HTMLImageElement interface: attribute sizes]
- expected: FAIL
-
- [HTMLImageElement interface: attribute lowsrc]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "srcset" with the proper type (2)]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type (3)]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type (14)]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type (2)]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type (3)]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type (14)]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute srcdoc]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute seamless]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute align]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute scrolling]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute longDesc]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute marginHeight]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute marginWidth]
- expected: FAIL
-
- [HTMLEmbedElement interface: attribute src]
- expected: FAIL
-
- [HTMLEmbedElement interface: attribute type]
- expected: FAIL
-
- [HTMLEmbedElement interface: attribute width]
- expected: FAIL
-
- [HTMLEmbedElement interface: attribute height]
- expected: FAIL
-
- [HTMLEmbedElement interface: operation getSVGDocument()]
- expected: FAIL
-
- [HTMLEmbedElement interface: attribute align]
- expected: FAIL
-
- [HTMLEmbedElement interface: attribute name]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "src" with the proper type (0)]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "type" with the proper type (1)]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "width" with the proper type (2)]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "height" with the proper type (3)]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument" with the proper type (4)]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type (6)]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type (7)]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute data]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute typeMustMatch]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute name]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute useMap]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute width]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute height]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute contentDocument]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute contentWindow]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute willValidate]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute validationMessage]
- expected: FAIL
-
- [HTMLObjectElement interface: operation checkValidity()]
- expected: FAIL
-
- [HTMLObjectElement interface: operation reportValidity()]
- expected: FAIL
-
- [HTMLObjectElement interface: operation setCustomValidity(DOMString)]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute align]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute archive]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute code]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute declare]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute hspace]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute standby]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute vspace]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute codeBase]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute codeType]
- expected: FAIL
-
- [HTMLObjectElement interface: attribute border]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type (0)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "typeMustMatch" with the proper type (2)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "name" with the proper type (3)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "useMap" with the proper type (4)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "width" with the proper type (6)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type (7)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "contentDocument" with the proper type (8)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "contentWindow" with the proper type (9)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "willValidate" with the proper type (10)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "validationMessage" with the proper type (12)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "checkValidity" with the proper type (13)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity" with the proper type (14)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "setCustomValidity" with the proper type (15)]
- expected: FAIL
-
- [HTMLObjectElement interface: calling setCustomValidity(DOMString) on document.createElement("object") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type (17)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type (18)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type (19)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type (20)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type (21)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type (22)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type (23)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type (24)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type (25)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type (26)]
- expected: FAIL
-
- [HTMLParamElement interface: attribute name]
- expected: FAIL
-
- [HTMLParamElement interface: attribute value]
- expected: FAIL
-
- [HTMLParamElement interface: attribute type]
- expected: FAIL
-
- [HTMLParamElement interface: attribute valueType]
- expected: FAIL
-
- [HTMLParamElement interface: document.createElement("param") must inherit property "name" with the proper type (0)]
- expected: FAIL
-
- [HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type (1)]
- expected: FAIL
-
- [HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type (2)]
- expected: FAIL
-
- [HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type (3)]
- expected: FAIL
-
- [HTMLVideoElement interface: attribute width]
- expected: FAIL
-
- [HTMLVideoElement interface: attribute height]
- expected: FAIL
-
- [HTMLVideoElement interface: attribute videoWidth]
- expected: FAIL
-
- [HTMLVideoElement interface: attribute videoHeight]
- expected: FAIL
-
- [HTMLVideoElement interface: attribute poster]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "width" with the proper type (0)]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "height" with the proper type (1)]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "videoWidth" with the proper type (2)]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "videoHeight" with the proper type (3)]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "poster" with the proper type (4)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "crossOrigin" with the proper type (3)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "buffered" with the proper type (10)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "seeking" with the proper type (19)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "currentTime" with the proper type (20)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "fastSeek" with the proper type (21)]
- expected: FAIL
-
- [HTMLMediaElement interface: calling fastSeek(double) on document.createElement("video") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "duration" with the proper type (22)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate" with the proper type (23)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "defaultPlaybackRate" with the proper type (25)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "playbackRate" with the proper type (26)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "played" with the proper type (27)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type (28)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "ended" with the proper type (29)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "loop" with the proper type (31)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "mediaGroup" with the proper type (34)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "controller" with the proper type (35)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "controls" with the proper type (36)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "volume" with the proper type (37)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "muted" with the proper type (38)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "defaultMuted" with the proper type (39)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "audioTracks" with the proper type (40)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type (41)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type (42)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack" with the proper type (43)]
- expected: FAIL
-
- [HTMLMediaElement interface: calling addTextTrack(TextTrackKind,DOMString,DOMString) on document.createElement("video") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "crossOrigin" with the proper type (3)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "buffered" with the proper type (10)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "seeking" with the proper type (19)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "currentTime" with the proper type (20)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "fastSeek" with the proper type (21)]
- expected: FAIL
-
- [HTMLMediaElement interface: calling fastSeek(double) on document.createElement("audio") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "duration" with the proper type (22)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate" with the proper type (23)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultPlaybackRate" with the proper type (25)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "playbackRate" with the proper type (26)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "played" with the proper type (27)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type (28)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "ended" with the proper type (29)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "loop" with the proper type (31)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "mediaGroup" with the proper type (34)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "controller" with the proper type (35)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "controls" with the proper type (36)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "volume" with the proper type (37)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "muted" with the proper type (38)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultMuted" with the proper type (39)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "audioTracks" with the proper type (40)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type (41)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "textTracks" with the proper type (42)]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "addTextTrack" with the proper type (43)]
- expected: FAIL
-
- [HTMLMediaElement interface: calling addTextTrack(TextTrackKind,DOMString,DOMString) on document.createElement("audio") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLAudioElement must be primary interface of new Audio()]
- expected: FAIL
-
- [Stringification of new Audio()]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "error" with the proper type (0)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "src" with the proper type (1)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "currentSrc" with the proper type (2)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "crossOrigin" with the proper type (3)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_EMPTY" with the proper type (4)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_IDLE" with the proper type (5)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_LOADING" with the proper type (6)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_NO_SOURCE" with the proper type (7)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "networkState" with the proper type (8)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "preload" with the proper type (9)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "buffered" with the proper type (10)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "load" with the proper type (11)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "canPlayType" with the proper type (12)]
- expected: FAIL
-
- [HTMLMediaElement interface: calling canPlayType(DOMString) on new Audio() with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_NOTHING" with the proper type (13)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_METADATA" with the proper type (14)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_CURRENT_DATA" with the proper type (15)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_FUTURE_DATA" with the proper type (16)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_ENOUGH_DATA" with the proper type (17)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "readyState" with the proper type (18)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "seeking" with the proper type (19)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "currentTime" with the proper type (20)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "fastSeek" with the proper type (21)]
- expected: FAIL
-
- [HTMLMediaElement interface: calling fastSeek(double) on new Audio() with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "duration" with the proper type (22)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "getStartDate" with the proper type (23)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "paused" with the proper type (24)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "defaultPlaybackRate" with the proper type (25)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "playbackRate" with the proper type (26)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "played" with the proper type (27)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type (28)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "ended" with the proper type (29)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "autoplay" with the proper type (30)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "loop" with the proper type (31)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "play" with the proper type (32)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "pause" with the proper type (33)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "mediaGroup" with the proper type (34)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "controller" with the proper type (35)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "controls" with the proper type (36)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "volume" with the proper type (37)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "muted" with the proper type (38)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "defaultMuted" with the proper type (39)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "audioTracks" with the proper type (40)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "videoTracks" with the proper type (41)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type (42)]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "addTextTrack" with the proper type (43)]
- expected: FAIL
-
- [HTMLMediaElement interface: calling addTextTrack(TextTrackKind,DOMString,DOMString) on new Audio() with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLSourceElement interface: attribute src]
- expected: FAIL
-
- [HTMLSourceElement interface: attribute type]
- expected: FAIL
-
- [HTMLSourceElement interface: attribute srcset]
- expected: FAIL
-
- [HTMLSourceElement interface: attribute sizes]
- expected: FAIL
-
- [HTMLSourceElement interface: attribute media]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "src" with the proper type (0)]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "type" with the proper type (1)]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "srcset" with the proper type (2)]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "sizes" with the proper type (3)]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "media" with the proper type (4)]
- expected: FAIL
-
- [HTMLTrackElement interface: attribute kind]
- expected: FAIL
-
- [HTMLTrackElement interface: attribute src]
- expected: FAIL
-
- [HTMLTrackElement interface: attribute srclang]
- expected: FAIL
-
- [HTMLTrackElement interface: attribute label]
- expected: FAIL
-
- [HTMLTrackElement interface: attribute default]
- expected: FAIL
-
- [HTMLTrackElement interface: constant NONE on interface object]
- expected: FAIL
-
- [HTMLTrackElement interface: constant NONE on interface prototype object]
- expected: FAIL
-
- [HTMLTrackElement interface: constant LOADING on interface object]
- expected: FAIL
-
- [HTMLTrackElement interface: constant LOADING on interface prototype object]
- expected: FAIL
-
- [HTMLTrackElement interface: constant LOADED on interface object]
- expected: FAIL
-
- [HTMLTrackElement interface: constant LOADED on interface prototype object]
- expected: FAIL
-
- [HTMLTrackElement interface: constant ERROR on interface object]
- expected: FAIL
-
- [HTMLTrackElement interface: constant ERROR on interface prototype object]
- expected: FAIL
-
- [HTMLTrackElement interface: attribute readyState]
- expected: FAIL
-
- [HTMLTrackElement interface: attribute track]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "kind" with the proper type (0)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "src" with the proper type (1)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "srclang" with the proper type (2)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "label" with the proper type (3)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "default" with the proper type (4)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "NONE" with the proper type (5)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "LOADING" with the proper type (6)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "LOADED" with the proper type (7)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "ERROR" with the proper type (8)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "readyState" with the proper type (9)]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "track" with the proper type (10)]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute crossOrigin]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute buffered]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute seeking]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute currentTime]
- expected: FAIL
-
- [HTMLMediaElement interface: operation fastSeek(double)]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute duration]
- expected: FAIL
-
- [HTMLMediaElement interface: operation getStartDate()]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute defaultPlaybackRate]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute playbackRate]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute played]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute seekable]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute ended]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute loop]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute mediaGroup]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute controller]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute controls]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute volume]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute muted]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute defaultMuted]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute audioTracks]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute videoTracks]
- expected: FAIL
-
- [HTMLMediaElement interface: attribute textTracks]
- expected: FAIL
-
- [HTMLMediaElement interface: operation addTextTrack(TextTrackKind,DOMString,DOMString)]
- expected: FAIL
-
- [AudioTrackList interface: existence and properties of interface object]
- expected: FAIL
-
- [AudioTrackList interface object length]
- expected: FAIL
-
- [AudioTrackList interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [AudioTrackList interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [AudioTrackList interface: attribute length]
- expected: FAIL
-
- [AudioTrackList interface: operation getTrackById(DOMString)]
- expected: FAIL
-
- [AudioTrackList interface: attribute onchange]
- expected: FAIL
-
- [AudioTrackList interface: attribute onaddtrack]
- expected: FAIL
-
- [AudioTrackList interface: attribute onremovetrack]
- expected: FAIL
-
- [AudioTrack interface: existence and properties of interface object]
- expected: FAIL
-
- [AudioTrack interface object length]
- expected: FAIL
-
- [AudioTrack interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [AudioTrack interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [AudioTrack interface: attribute id]
- expected: FAIL
-
- [AudioTrack interface: attribute kind]
- expected: FAIL
-
- [AudioTrack interface: attribute label]
- expected: FAIL
-
- [AudioTrack interface: attribute language]
- expected: FAIL
-
- [AudioTrack interface: attribute enabled]
- expected: FAIL
-
- [VideoTrackList interface: existence and properties of interface object]
- expected: FAIL
-
- [VideoTrackList interface object length]
- expected: FAIL
-
- [VideoTrackList interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [VideoTrackList interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [VideoTrackList interface: attribute length]
- expected: FAIL
-
- [VideoTrackList interface: operation getTrackById(DOMString)]
- expected: FAIL
-
- [VideoTrackList interface: attribute selectedIndex]
- expected: FAIL
-
- [VideoTrackList interface: attribute onchange]
- expected: FAIL
-
- [VideoTrackList interface: attribute onaddtrack]
- expected: FAIL
-
- [VideoTrackList interface: attribute onremovetrack]
- expected: FAIL
-
- [VideoTrack interface: existence and properties of interface object]
- expected: FAIL
-
- [VideoTrack interface object length]
- expected: FAIL
-
- [VideoTrack interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [VideoTrack interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [VideoTrack interface: attribute id]
- expected: FAIL
-
- [VideoTrack interface: attribute kind]
- expected: FAIL
-
- [VideoTrack interface: attribute label]
- expected: FAIL
-
- [VideoTrack interface: attribute language]
- expected: FAIL
-
- [VideoTrack interface: attribute selected]
- expected: FAIL
-
- [MediaController interface: existence and properties of interface object]
- expected: FAIL
-
- [MediaController interface object length]
- expected: FAIL
-
- [MediaController interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [MediaController interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [MediaController interface: attribute readyState]
- expected: FAIL
-
- [MediaController interface: attribute buffered]
- expected: FAIL
-
- [MediaController interface: attribute seekable]
- expected: FAIL
-
- [MediaController interface: attribute duration]
- expected: FAIL
-
- [MediaController interface: attribute currentTime]
- expected: FAIL
-
- [MediaController interface: attribute paused]
- expected: FAIL
-
- [MediaController interface: attribute playbackState]
- expected: FAIL
-
- [MediaController interface: attribute played]
- expected: FAIL
-
- [MediaController interface: operation pause()]
- expected: FAIL
-
- [MediaController interface: operation unpause()]
- expected: FAIL
-
- [MediaController interface: operation play()]
- expected: FAIL
-
- [MediaController interface: attribute defaultPlaybackRate]
- expected: FAIL
-
- [MediaController interface: attribute playbackRate]
- expected: FAIL
-
- [MediaController interface: attribute volume]
- expected: FAIL
-
- [MediaController interface: attribute muted]
- expected: FAIL
-
- [MediaController interface: attribute onemptied]
- expected: FAIL
-
- [MediaController interface: attribute onloadedmetadata]
- expected: FAIL
-
- [MediaController interface: attribute onloadeddata]
- expected: FAIL
-
- [MediaController interface: attribute oncanplay]
- expected: FAIL
-
- [MediaController interface: attribute oncanplaythrough]
- expected: FAIL
-
- [MediaController interface: attribute onplaying]
- expected: FAIL
-
- [MediaController interface: attribute onended]
- expected: FAIL
-
- [MediaController interface: attribute onwaiting]
- expected: FAIL
-
- [MediaController interface: attribute ondurationchange]
- expected: FAIL
-
- [MediaController interface: attribute ontimeupdate]
- expected: FAIL
-
- [MediaController interface: attribute onplay]
- expected: FAIL
-
- [MediaController interface: attribute onpause]
- expected: FAIL
-
- [MediaController interface: attribute onratechange]
- expected: FAIL
-
- [MediaController interface: attribute onvolumechange]
- expected: FAIL
-
- [MediaController must be primary interface of new MediaController()]
- expected: FAIL
-
- [Stringification of new MediaController()]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "readyState" with the proper type (0)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "buffered" with the proper type (1)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "seekable" with the proper type (2)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "duration" with the proper type (3)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "currentTime" with the proper type (4)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "paused" with the proper type (5)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "playbackState" with the proper type (6)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "played" with the proper type (7)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "pause" with the proper type (8)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "unpause" with the proper type (9)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "play" with the proper type (10)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "defaultPlaybackRate" with the proper type (11)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "playbackRate" with the proper type (12)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "volume" with the proper type (13)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "muted" with the proper type (14)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onemptied" with the proper type (15)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onloadedmetadata" with the proper type (16)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onloadeddata" with the proper type (17)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "oncanplay" with the proper type (18)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "oncanplaythrough" with the proper type (19)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onplaying" with the proper type (20)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onended" with the proper type (21)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onwaiting" with the proper type (22)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "ondurationchange" with the proper type (23)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "ontimeupdate" with the proper type (24)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onplay" with the proper type (25)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onpause" with the proper type (26)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onratechange" with the proper type (27)]
- expected: FAIL
-
- [MediaController interface: new MediaController() must inherit property "onvolumechange" with the proper type (28)]
- expected: FAIL
-
- [EventTarget interface: new MediaController() must inherit property "addEventListener" with the proper type (0)]
- expected: FAIL
-
- [EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on new MediaController() with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: new MediaController() must inherit property "removeEventListener" with the proper type (1)]
- expected: FAIL
-
- [EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on new MediaController() with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: new MediaController() must inherit property "dispatchEvent" with the proper type (2)]
- expected: FAIL
-
- [EventTarget interface: calling dispatchEvent(Event) on new MediaController() with too few arguments must throw TypeError]
- expected: FAIL
-
- [TextTrackList interface: existence and properties of interface object]
- expected: FAIL
-
- [TextTrackList interface object length]
- expected: FAIL
-
- [TextTrackList interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [TextTrackList interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [TextTrackList interface: attribute length]
- expected: FAIL
-
- [TextTrackList interface: operation getTrackById(DOMString)]
- expected: FAIL
-
- [TextTrackList interface: attribute onchange]
- expected: FAIL
-
- [TextTrackList interface: attribute onaddtrack]
- expected: FAIL
-
- [TextTrackList interface: attribute onremovetrack]
- expected: FAIL
-
- [TextTrackList must be primary interface of document.createElement("video").textTracks]
- expected: FAIL
-
- [Stringification of document.createElement("video").textTracks]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "length" with the proper type (0)]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "getTrackById" with the proper type (2)]
- expected: FAIL
-
- [TextTrackList interface: calling getTrackById(DOMString) on document.createElement("video").textTracks with too few arguments must throw TypeError]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "onchange" with the proper type (3)]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "onaddtrack" with the proper type (4)]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "onremovetrack" with the proper type (5)]
- expected: FAIL
-
- [EventTarget interface: document.createElement("video").textTracks must inherit property "addEventListener" with the proper type (0)]
- expected: FAIL
-
- [EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on document.createElement("video").textTracks with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: document.createElement("video").textTracks must inherit property "removeEventListener" with the proper type (1)]
- expected: FAIL
-
- [EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on document.createElement("video").textTracks with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: document.createElement("video").textTracks must inherit property "dispatchEvent" with the proper type (2)]
- expected: FAIL
-
- [EventTarget interface: calling dispatchEvent(Event) on document.createElement("video").textTracks with too few arguments must throw TypeError]
- expected: FAIL
-
- [TextTrack interface: existence and properties of interface object]
- expected: FAIL
-
- [TextTrack interface object length]
- expected: FAIL
-
- [TextTrack interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [TextTrack interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [TextTrack interface: attribute kind]
- expected: FAIL
-
- [TextTrack interface: attribute label]
- expected: FAIL
-
- [TextTrack interface: attribute language]
- expected: FAIL
-
- [TextTrack interface: attribute id]
- expected: FAIL
-
- [TextTrack interface: attribute inBandMetadataTrackDispatchType]
- expected: FAIL
-
- [TextTrack interface: attribute mode]
- expected: FAIL
-
- [TextTrack interface: attribute cues]
- expected: FAIL
-
- [TextTrack interface: attribute activeCues]
- expected: FAIL
-
- [TextTrack interface: operation addCue(TextTrackCue)]
- expected: FAIL
-
- [TextTrack interface: operation removeCue(TextTrackCue)]
- expected: FAIL
-
- [TextTrack interface: attribute oncuechange]
- expected: FAIL
-
- [TextTrack must be primary interface of document.createElement("track").track]
- expected: FAIL
-
- [Stringification of document.createElement("track").track]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "kind" with the proper type (0)]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "label" with the proper type (1)]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "language" with the proper type (2)]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "id" with the proper type (3)]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "inBandMetadataTrackDispatchType" with the proper type (4)]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "mode" with the proper type (5)]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "cues" with the proper type (6)]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "activeCues" with the proper type (7)]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "addCue" with the proper type (8)]
- expected: FAIL
-
- [TextTrack interface: calling addCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "removeCue" with the proper type (9)]
- expected: FAIL
-
- [TextTrack interface: calling removeCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "oncuechange" with the proper type (10)]
- expected: FAIL
-
- [EventTarget interface: document.createElement("track").track must inherit property "addEventListener" with the proper type (0)]
- expected: FAIL
-
- [EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on document.createElement("track").track with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: document.createElement("track").track must inherit property "removeEventListener" with the proper type (1)]
- expected: FAIL
-
- [EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on document.createElement("track").track with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: document.createElement("track").track must inherit property "dispatchEvent" with the proper type (2)]
- expected: FAIL
-
- [EventTarget interface: calling dispatchEvent(Event) on document.createElement("track").track with too few arguments must throw TypeError]
- expected: FAIL
-
- [TextTrackCueList interface: existence and properties of interface object]
- expected: FAIL
-
- [TextTrackCueList interface object length]
- expected: FAIL
-
- [TextTrackCueList interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [TextTrackCueList interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [TextTrackCueList interface: attribute length]
- expected: FAIL
-
- [TextTrackCueList interface: operation getCueById(DOMString)]
- expected: FAIL
-
- [TextTrackCueList must be primary interface of document.createElement("video").addTextTrack("subtitles").cues]
- expected: FAIL
-
- [Stringification of document.createElement("video").addTextTrack("subtitles").cues]
- expected: FAIL
-
- [TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "length" with the proper type (0)]
- expected: FAIL
-
- [TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "getCueById" with the proper type (2)]
- expected: FAIL
-
- [TextTrackCueList interface: calling getCueById(DOMString) on document.createElement("video").addTextTrack("subtitles").cues with too few arguments must throw TypeError]
- expected: FAIL
-
- [TextTrackCue interface: existence and properties of interface object]
- expected: FAIL
-
- [TextTrackCue interface object length]
- expected: FAIL
-
- [TextTrackCue interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [TextTrackCue interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [TextTrackCue interface: attribute track]
- expected: FAIL
-
- [TextTrackCue interface: attribute id]
- expected: FAIL
-
- [TextTrackCue interface: attribute startTime]
- expected: FAIL
-
- [TextTrackCue interface: attribute endTime]
- expected: FAIL
-
- [TextTrackCue interface: attribute pauseOnExit]
- expected: FAIL
-
- [TextTrackCue interface: attribute onenter]
- expected: FAIL
-
- [TextTrackCue interface: attribute onexit]
- expected: FAIL
-
- [TimeRanges interface: existence and properties of interface object]
- expected: FAIL
-
- [TimeRanges interface object length]
- expected: FAIL
-
- [TimeRanges interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [TimeRanges interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [TimeRanges interface: attribute length]
- expected: FAIL
-
- [TimeRanges interface: operation start(unsigned long)]
- expected: FAIL
-
- [TimeRanges interface: operation end(unsigned long)]
- expected: FAIL
-
- [TimeRanges must be primary interface of document.createElement("video").buffered]
- expected: FAIL
-
- [Stringification of document.createElement("video").buffered]
- expected: FAIL
-
- [TimeRanges interface: document.createElement("video").buffered must inherit property "length" with the proper type (0)]
- expected: FAIL
-
- [TimeRanges interface: document.createElement("video").buffered must inherit property "start" with the proper type (1)]
- expected: FAIL
-
- [TimeRanges interface: calling start(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError]
- expected: FAIL
-
- [TimeRanges interface: document.createElement("video").buffered must inherit property "end" with the proper type (2)]
- expected: FAIL
-
- [TimeRanges interface: calling end(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError]
- expected: FAIL
-
- [TrackEvent interface: existence and properties of interface object]
- expected: FAIL
-
- [TrackEvent interface object length]
- expected: FAIL
-
- [TrackEvent interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [TrackEvent interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [TrackEvent interface: attribute track]
- expected: FAIL
-
- [TrackEvent must be primary interface of new TrackEvent("addtrack"; {track:document.createElement("track").track})]
- expected: FAIL
-
- [Stringification of new TrackEvent("addtrack"; {track:document.createElement("track").track})]
- expected: FAIL
-
- [TrackEvent interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "track" with the proper type (0)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "type" with the proper type (0)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "target" with the proper type (1)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "currentTarget" with the proper type (2)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "NONE" with the proper type (3)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "CAPTURING_PHASE" with the proper type (4)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "AT_TARGET" with the proper type (5)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "BUBBLING_PHASE" with the proper type (6)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "eventPhase" with the proper type (7)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "stopPropagation" with the proper type (8)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "stopImmediatePropagation" with the proper type (9)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "bubbles" with the proper type (10)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "cancelable" with the proper type (11)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "preventDefault" with the proper type (12)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "defaultPrevented" with the proper type (13)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must have own property "isTrusted"]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "timeStamp" with the proper type (15)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack"; {track:document.createElement("track").track}) must inherit property "initEvent" with the proper type (16)]
- expected: FAIL
-
- [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
-
- [HTMLMapElement interface: attribute name]
- expected: FAIL
-
- [HTMLMapElement interface: attribute areas]
- expected: FAIL
-
- [HTMLMapElement interface: attribute images]
- expected: FAIL
-
- [HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type (0)]
- expected: FAIL
-
- [HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type (1)]
- expected: FAIL
-
- [HTMLMapElement interface: document.createElement("map") must inherit property "images" with the proper type (2)]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute alt]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute coords]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute shape]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute target]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute download]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute ping]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute rel]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute noHref]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "alt" with the proper type (0)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "coords" with the proper type (1)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "shape" with the proper type (2)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "target" with the proper type (3)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "download" with the proper type (4)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "ping" with the proper type (5)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "rel" with the proper type (6)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type (10)]
- expected: FAIL
-
- [HTMLTableElement interface: attribute sortable]
- expected: FAIL
-
- [HTMLTableElement interface: operation stopSorting()]
- expected: FAIL
-
- [HTMLTableElement interface: attribute align]
- expected: FAIL
-
- [HTMLTableElement interface: attribute border]
- expected: FAIL
-
- [HTMLTableElement interface: attribute frame]
- expected: FAIL
-
- [HTMLTableElement interface: attribute rules]
- expected: FAIL
-
- [HTMLTableElement interface: attribute summary]
- expected: FAIL
-
- [HTMLTableElement interface: attribute cellPadding]
- expected: FAIL
-
- [HTMLTableElement interface: attribute cellSpacing]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "sortable" with the proper type (14)]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "stopSorting" with the proper type (15)]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type (16)]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type (17)]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type (18)]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type (19)]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type (20)]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type (23)]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type (24)]
- expected: FAIL
-
- [HTMLTableCaptionElement interface: attribute align]
- expected: FAIL
-
- [HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type (0)]
- expected: FAIL
-
- [HTMLTableColElement interface: attribute span]
- expected: FAIL
-
- [HTMLTableColElement interface: attribute align]
- expected: FAIL
-
- [HTMLTableColElement interface: attribute ch]
- expected: FAIL
-
- [HTMLTableColElement interface: attribute chOff]
- expected: FAIL
-
- [HTMLTableColElement interface: attribute vAlign]
- expected: FAIL
-
- [HTMLTableColElement interface: attribute width]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "span" with the proper type (0)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "align" with the proper type (1)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "ch" with the proper type (2)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "chOff" with the proper type (3)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "vAlign" with the proper type (4)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "width" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "span" with the proper type (0)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type (1)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "ch" with the proper type (2)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type (3)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type (4)]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: attribute align]
- expected: FAIL
-
- [HTMLTableSectionElement interface: attribute ch]
- expected: FAIL
-
- [HTMLTableSectionElement interface: attribute chOff]
- expected: FAIL
-
- [HTMLTableSectionElement interface: attribute vAlign]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "align" with the proper type (3)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "ch" with the proper type (4)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "chOff" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "vAlign" with the proper type (6)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "align" with the proper type (3)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "ch" with the proper type (4)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "chOff" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "vAlign" with the proper type (6)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "align" with the proper type (3)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type (4)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type (6)]
- expected: FAIL
-
- [HTMLTableRowElement interface: attribute align]
- expected: FAIL
-
- [HTMLTableRowElement interface: attribute ch]
- expected: FAIL
-
- [HTMLTableRowElement interface: attribute chOff]
- expected: FAIL
-
- [HTMLTableRowElement interface: attribute vAlign]
- expected: FAIL
-
- [HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableRowElement interface: document.createElement("tr") must inherit property "ch" with the proper type (6)]
- expected: FAIL
-
- [HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type (7)]
- expected: FAIL
-
- [HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type (8)]
- expected: FAIL
-
- [HTMLTableDataCellElement interface: attribute abbr]
- expected: FAIL
-
- [HTMLTableDataCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type (0)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "headers" with the proper type (2)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type (4)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type (6)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type (8)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type (9)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type (10)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type (11)]
- expected: FAIL
-
- [HTMLTableHeaderCellElement interface: attribute scope]
- expected: FAIL
-
- [HTMLTableHeaderCellElement interface: attribute abbr]
- expected: FAIL
-
- [HTMLTableHeaderCellElement interface: attribute sorted]
- expected: FAIL
-
- [HTMLTableHeaderCellElement interface: operation sort()]
- expected: FAIL
-
- [HTMLTableHeaderCellElement interface: document.createElement("th") must inherit property "scope" with the proper type (0)]
- expected: FAIL
-
- [HTMLTableHeaderCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type (1)]
- expected: FAIL
-
- [HTMLTableHeaderCellElement interface: document.createElement("th") must inherit property "sorted" with the proper type (2)]
- expected: FAIL
-
- [HTMLTableHeaderCellElement interface: document.createElement("th") must inherit property "sort" with the proper type (3)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "headers" with the proper type (2)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type (4)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type (6)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type (8)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type (9)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type (10)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type (11)]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute headers]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute align]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute axis]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute height]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute ch]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute chOff]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute noWrap]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute vAlign]
- expected: FAIL
-
- [HTMLFormElement interface: operation checkValidity()]
- expected: FAIL
-
- [HTMLFormElement interface: operation reportValidity()]
- expected: FAIL
-
- [HTMLFormElement interface: operation requestAutocomplete()]
- expected: FAIL
-
- [HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity" with the proper type (15)]
- expected: FAIL
-
- [HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity" with the proper type (16)]
- expected: FAIL
-
- [HTMLFormElement interface: document.createElement("form") must inherit property "requestAutocomplete" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: attribute autocomplete]
- expected: FAIL
-
- [HTMLInputElement interface: attribute autofocus]
- expected: FAIL
-
- [HTMLInputElement interface: attribute height]
- expected: FAIL
-
- [HTMLInputElement interface: attribute inputMode]
- expected: FAIL
-
- [HTMLInputElement interface: attribute list]
- expected: FAIL
-
- [HTMLInputElement interface: attribute valueAsDate]
- expected: FAIL
-
- [HTMLInputElement interface: attribute valueAsNumber]
- expected: FAIL
-
- [HTMLInputElement interface: attribute valueLow]
- expected: FAIL
-
- [HTMLInputElement interface: attribute valueHigh]
- expected: FAIL
-
- [HTMLInputElement interface: attribute width]
- expected: FAIL
-
- [HTMLInputElement interface: operation stepUp(long)]
- expected: FAIL
-
- [HTMLInputElement interface: operation stepDown(long)]
- expected: FAIL
-
- [HTMLInputElement interface: attribute willValidate]
- expected: FAIL
-
- [HTMLInputElement interface: attribute validity]
- expected: FAIL
-
- [HTMLInputElement interface: attribute validationMessage]
- expected: FAIL
-
- [HTMLInputElement interface: operation checkValidity()]
- expected: FAIL
-
- [HTMLInputElement interface: operation reportValidity()]
- expected: FAIL
-
- [HTMLInputElement interface: operation setCustomValidity(DOMString)]
- expected: FAIL
-
- [HTMLInputElement interface: operation setRangeText(DOMString,unsigned long,unsigned long,SelectionMode)]
- expected: FAIL
-
- [HTMLInputElement interface: attribute align]
- expected: FAIL
-
- [HTMLInputElement interface: attribute useMap]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on document.createElement("input") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on document.createElement("input") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on document.createElement("input") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on document.createElement("input") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLButtonElement interface: attribute autofocus]
- expected: FAIL
-
- [HTMLButtonElement interface: attribute menu]
- expected: FAIL
-
- [HTMLButtonElement interface: attribute willValidate]
- expected: FAIL
-
- [HTMLButtonElement interface: attribute validationMessage]
- expected: FAIL
-
- [HTMLButtonElement interface: operation checkValidity()]
- expected: FAIL
-
- [HTMLButtonElement interface: operation reportValidity()]
- expected: FAIL
-
- [HTMLButtonElement interface: operation setCustomValidity(DOMString)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "autofocus" with the proper type (0)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "menu" with the proper type (11)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type (12)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type (14)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity" with the proper type (15)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity" with the proper type (16)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity" with the proper type (17)]
- expected: FAIL
-
- [HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement("button") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLSelectElement interface: attribute autocomplete]
- expected: FAIL
-
- [HTMLSelectElement interface: attribute autofocus]
- expected: FAIL
-
- [HTMLSelectElement interface: attribute required]
- expected: FAIL
-
- [HTMLSelectElement interface: attribute selectedOptions]
- expected: FAIL
-
- [HTMLSelectElement interface: attribute willValidate]
- expected: FAIL
-
- [HTMLSelectElement interface: attribute validationMessage]
- expected: FAIL
-
- [HTMLSelectElement interface: operation checkValidity()]
- expected: FAIL
-
- [HTMLSelectElement interface: operation reportValidity()]
- expected: FAIL
-
- [HTMLSelectElement interface: operation setCustomValidity(DOMString)]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "autocomplete" with the proper type (0)]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "autofocus" with the proper type (1)]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "required" with the proper type (6)]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type (17)]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "willValidate" with the proper type (20)]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "validationMessage" with the proper type (22)]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "checkValidity" with the proper type (23)]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "reportValidity" with the proper type (24)]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "setCustomValidity" with the proper type (25)]
- expected: FAIL
-
- [HTMLSelectElement interface: calling setCustomValidity(DOMString) on document.createElement("select") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLOptGroupElement interface: attribute label]
- expected: FAIL
-
- [HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type (1)]
- expected: FAIL
-
- [HTMLOptionElement interface: attribute index]
- expected: FAIL
-
- [HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type (7)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute autocomplete]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute autofocus]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute dirName]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute inputMode]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute maxLength]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute minLength]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute textLength]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute willValidate]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute validity]
- expected: FAIL
-
- [HTMLTextAreaElement interface: attribute validationMessage]
- expected: FAIL
-
- [HTMLTextAreaElement interface: operation checkValidity()]
- expected: FAIL
-
- [HTMLTextAreaElement interface: operation reportValidity()]
- expected: FAIL
-
- [HTMLTextAreaElement interface: operation setCustomValidity(DOMString)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: operation setRangeText(DOMString,unsigned long,unsigned long,SelectionMode)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autocomplete" with the proper type (0)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autofocus" with the proper type (1)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "dirName" with the proper type (3)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "inputMode" with the proper type (6)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "maxLength" with the proper type (7)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "minLength" with the proper type (8)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "textLength" with the proper type (18)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "willValidate" with the proper type (19)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validity" with the proper type (20)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validationMessage" with the proper type (21)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "checkValidity" with the proper type (22)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "reportValidity" with the proper type (23)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setCustomValidity" with the proper type (24)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: calling setCustomValidity(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "select" with the proper type (26)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText" with the proper type (30)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setRangeText" with the proper type (31)]
- expected: FAIL
-
- [HTMLTextAreaElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on document.createElement("textarea") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLKeygenElement interface: existence and properties of interface object]
- expected: FAIL
-
- [HTMLKeygenElement interface object length]
- expected: FAIL
-
- [HTMLKeygenElement interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [HTMLKeygenElement interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute autofocus]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute challenge]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute disabled]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute form]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute keytype]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute name]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute type]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute willValidate]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute validity]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute validationMessage]
- expected: FAIL
-
- [HTMLKeygenElement interface: operation checkValidity()]
- expected: FAIL
-
- [HTMLKeygenElement interface: operation reportValidity()]
- expected: FAIL
-
- [HTMLKeygenElement interface: operation setCustomValidity(DOMString)]
- expected: FAIL
-
- [HTMLKeygenElement interface: attribute labels]
- expected: FAIL
-
- [HTMLKeygenElement must be primary interface of document.createElement("keygen")]
- expected: FAIL
-
- [Stringification of document.createElement("keygen")]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "autofocus" with the proper type (0)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "challenge" with the proper type (1)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "disabled" with the proper type (2)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "form" with the proper type (3)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "keytype" with the proper type (4)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "name" with the proper type (5)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "type" with the proper type (6)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "willValidate" with the proper type (7)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "validity" with the proper type (8)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "validationMessage" with the proper type (9)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "checkValidity" with the proper type (10)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "reportValidity" with the proper type (11)]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "setCustomValidity" with the proper type (12)]
- expected: FAIL
-
- [HTMLKeygenElement interface: calling setCustomValidity(DOMString) on document.createElement("keygen") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLKeygenElement interface: document.createElement("keygen") must inherit property "labels" with the proper type (13)]
- expected: FAIL
-
- [HTMLOutputElement interface: attribute htmlFor]
- expected: FAIL
-
- [HTMLOutputElement interface: attribute name]
- expected: FAIL
-
- [HTMLOutputElement interface: attribute type]
- expected: FAIL
-
- [HTMLOutputElement interface: attribute defaultValue]
- expected: FAIL
-
- [HTMLOutputElement interface: attribute value]
- expected: FAIL
-
- [HTMLOutputElement interface: attribute willValidate]
- expected: FAIL
-
- [HTMLOutputElement interface: attribute validationMessage]
- expected: FAIL
-
- [HTMLOutputElement interface: operation checkValidity()]
- expected: FAIL
-
- [HTMLOutputElement interface: operation reportValidity()]
- expected: FAIL
-
- [HTMLOutputElement interface: operation setCustomValidity(DOMString)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "htmlFor" with the proper type (0)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "name" with the proper type (2)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "type" with the proper type (3)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "defaultValue" with the proper type (4)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "value" with the proper type (5)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "willValidate" with the proper type (6)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "validationMessage" with the proper type (8)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "checkValidity" with the proper type (9)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "reportValidity" with the proper type (10)]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity" with the proper type (11)]
- expected: FAIL
-
- [HTMLOutputElement interface: calling setCustomValidity(DOMString) on document.createElement("output") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLProgressElement interface: attribute value]
- expected: FAIL
-
- [HTMLProgressElement interface: attribute max]
- expected: FAIL
-
- [HTMLProgressElement interface: attribute position]
- expected: FAIL
-
- [HTMLProgressElement interface: document.createElement("progress") must inherit property "value" with the proper type (0)]
- expected: FAIL
-
- [HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type (1)]
- expected: FAIL
-
- [HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type (2)]
- expected: FAIL
-
- [HTMLMeterElement interface: attribute value]
- expected: FAIL
-
- [HTMLMeterElement interface: attribute min]
- expected: FAIL
-
- [HTMLMeterElement interface: attribute max]
- expected: FAIL
-
- [HTMLMeterElement interface: attribute low]
- expected: FAIL
-
- [HTMLMeterElement interface: attribute high]
- expected: FAIL
-
- [HTMLMeterElement interface: attribute optimum]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "value" with the proper type (0)]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "min" with the proper type (1)]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "max" with the proper type (2)]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "low" with the proper type (3)]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type (4)]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type (5)]
- expected: FAIL
-
- [HTMLFieldSetElement interface: attribute name]
- expected: FAIL
-
- [HTMLFieldSetElement interface: attribute type]
- expected: FAIL
-
- [HTMLFieldSetElement interface: attribute willValidate]
- expected: FAIL
-
- [HTMLFieldSetElement interface: attribute validationMessage]
- expected: FAIL
-
- [HTMLFieldSetElement interface: operation checkValidity()]
- expected: FAIL
-
- [HTMLFieldSetElement interface: operation reportValidity()]
- expected: FAIL
-
- [HTMLFieldSetElement interface: operation setCustomValidity(DOMString)]
- expected: FAIL
-
- [HTMLLegendElement interface: attribute align]
- expected: FAIL
-
- [HTMLLegendElement interface: document.createElement("legend") must inherit property "align" with the proper type (1)]
- expected: FAIL
-
- [AutocompleteErrorEvent interface: existence and properties of interface object]
- expected: FAIL
-
- [AutocompleteErrorEvent interface object length]
- expected: FAIL
-
- [AutocompleteErrorEvent interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [AutocompleteErrorEvent interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [AutocompleteErrorEvent interface: attribute reason]
- expected: FAIL
-
- [ValidityState must be primary interface of document.createElement("input").validity]
- expected: FAIL
-
- [Stringification of document.createElement("input").validity]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "valueMissing" with the proper type (0)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "typeMismatch" with the proper type (1)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "patternMismatch" with the proper type (2)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "tooLong" with the proper type (3)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "tooShort" with the proper type (4)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "rangeUnderflow" with the proper type (5)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "rangeOverflow" with the proper type (6)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "stepMismatch" with the proper type (7)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "badInput" with the proper type (8)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "customError" with the proper type (9)]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "valid" with the proper type (10)]
- expected: FAIL
-
- [HTMLMenuElement interface: existence and properties of interface object]
- expected: FAIL
-
- [HTMLMenuElement interface object length]
- expected: FAIL
-
- [HTMLMenuElement interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [HTMLMenuElement interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [HTMLMenuElement interface: attribute type]
- expected: FAIL
-
- [HTMLMenuElement interface: attribute label]
- expected: FAIL
-
- [HTMLMenuElement interface: attribute compact]
- expected: FAIL
-
- [HTMLMenuElement must be primary interface of document.createElement("menu")]
- expected: FAIL
-
- [Stringification of document.createElement("menu")]
- expected: FAIL
-
- [HTMLMenuElement interface: document.createElement("menu") must inherit property "type" with the proper type (0)]
- expected: FAIL
-
- [HTMLMenuElement interface: document.createElement("menu") must inherit property "label" with the proper type (1)]
- expected: FAIL
-
- [HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type (2)]
- expected: FAIL
-
- [HTMLMenuItemElement interface: existence and properties of interface object]
- expected: FAIL
-
- [HTMLMenuItemElement interface object length]
- expected: FAIL
-
- [HTMLMenuItemElement interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [HTMLMenuItemElement interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [HTMLMenuItemElement interface: attribute type]
- expected: FAIL
-
- [HTMLMenuItemElement interface: attribute label]
- expected: FAIL
-
- [HTMLMenuItemElement interface: attribute icon]
- expected: FAIL
-
- [HTMLMenuItemElement interface: attribute disabled]
- expected: FAIL
-
- [HTMLMenuItemElement interface: attribute checked]
- expected: FAIL
-
- [HTMLMenuItemElement interface: attribute radiogroup]
- expected: FAIL
-
- [HTMLMenuItemElement interface: attribute default]
- expected: FAIL
-
- [HTMLMenuItemElement interface: attribute command]
- expected: FAIL
-
- [RelatedEvent interface: existence and properties of interface object]
- expected: FAIL
-
- [RelatedEvent interface object length]
- expected: FAIL
-
- [RelatedEvent interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [RelatedEvent interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [RelatedEvent interface: attribute relatedTarget]
- expected: FAIL
-
- [HTMLDialogElement interface: operation show([object Object\],[object Object\])]
- expected: FAIL
-
- [HTMLDialogElement interface: operation showModal([object Object\],[object Object\])]
- expected: FAIL
-
- [HTMLCanvasElement interface: operation probablySupportsContext(DOMString,any)]
- expected: FAIL
-
- [HTMLCanvasElement interface: operation setContext(RenderingContext)]
- expected: FAIL
-
- [HTMLCanvasElement interface: operation transferControlToProxy()]
- expected: FAIL
-
- [HTMLCanvasElement interface: operation toBlob(FileCallback,DOMString,any)]
- expected: FAIL
-
- [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "probablySupportsContext" with the proper type (3)]
- expected: FAIL
-
- [HTMLCanvasElement interface: calling probablySupportsContext(DOMString,any) on document.createElement("canvas") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "setContext" with the proper type (4)]
- expected: FAIL
-
- [HTMLCanvasElement interface: calling setContext(RenderingContext) on document.createElement("canvas") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "transferControlToProxy" with the proper type (5)]
- expected: FAIL
-
- [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob" with the proper type (7)]
- expected: FAIL
-
- [HTMLCanvasElement interface: calling toBlob(FileCallback,DOMString,any) on document.createElement("canvas") with too few arguments must throw TypeError]
- expected: FAIL
-
- [CanvasProxy interface: existence and properties of interface object]
- expected: FAIL
-
- [CanvasProxy interface object length]
- expected: FAIL
-
- [CanvasProxy interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [CanvasProxy interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [CanvasProxy interface: operation setContext(RenderingContext)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: attribute width]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: attribute height]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation commit()]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: attribute currentTransform]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation drawSystemFocusRing(Element)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation drawSystemFocusRing(Path2D,Element)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation drawCustomFocusRing(Element)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation drawCustomFocusRing(Path2D,Element)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation scrollPathIntoView()]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation scrollPathIntoView(Path2D)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation resetClip()]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double,unrestricted double)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation isPointInStroke(Path2D,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation fillText(DOMString,unrestricted double,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation strokeText(DOMString,unrestricted double,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation measureText(DOMString)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation addHitRegion(HitRegionOptions)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation removeHitRegion(DOMString)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation setLineDash([object Object\])]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation getLineDash()]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: attribute lineDashOffset]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: attribute font]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: attribute textAlign]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: attribute textBaseline]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: attribute direction]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "width" with the proper type (1)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "height" with the proper type (2)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "commit" with the proper type (3)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "currentTransform" with the proper type (6)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "strokeStyle" with the proper type (16)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillStyle" with the proper type (17)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawSystemFocusRing" with the proper type (33)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling drawSystemFocusRing(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 "drawSystemFocusRing" with the proper type (34)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling drawSystemFocusRing(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 "drawCustomFocusRing" with the proper type (35)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling drawCustomFocusRing(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 "drawCustomFocusRing" with the proper type (36)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling drawCustomFocusRing(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 (37)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView" with the proper type (38)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling scrollPathIntoView(Path2D) 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 "resetClip" with the proper type (41)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke" with the proper type (44)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling isPointInStroke(unrestricted double,unrestricted double) 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 "isPointInStroke" with the proper type (45)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling isPointInStroke(Path2D,unrestricted double,unrestricted double) 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 "fillText" with the proper type (46)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling fillText(DOMString,unrestricted double,unrestricted double,unrestricted double) 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 "strokeText" with the proper type (47)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling strokeText(DOMString,unrestricted double,unrestricted double,unrestricted double) 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 "measureText" with the proper type (48)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling measureText(DOMString) 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 "addHitRegion" with the proper type (52)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling addHitRegion(HitRegionOptions) 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 "removeHitRegion" with the proper type (53)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling removeHitRegion(DOMString) 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 "setLineDash" with the proper type (63)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling setLineDash([object Object\]) 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 "getLineDash" with the proper type (64)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineDashOffset" with the proper type (65)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "font" with the proper type (66)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textAlign" with the proper type (67)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textBaseline" with the proper type (68)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type (69)]
- expected: FAIL
-
- [CanvasPattern interface: operation setTransform(SVGMatrix)]
- expected: FAIL
-
- [TextMetrics interface: existence and properties of interface object]
- expected: FAIL
-
- [TextMetrics interface object length]
- expected: FAIL
-
- [TextMetrics interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [TextMetrics interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [TextMetrics interface: attribute width]
- expected: FAIL
-
- [TextMetrics interface: attribute actualBoundingBoxLeft]
- expected: FAIL
-
- [TextMetrics interface: attribute actualBoundingBoxRight]
- expected: FAIL
-
- [TextMetrics interface: attribute fontBoundingBoxAscent]
- expected: FAIL
-
- [TextMetrics interface: attribute fontBoundingBoxDescent]
- expected: FAIL
-
- [TextMetrics interface: attribute actualBoundingBoxAscent]
- expected: FAIL
-
- [TextMetrics interface: attribute actualBoundingBoxDescent]
- expected: FAIL
-
- [TextMetrics interface: attribute emHeightAscent]
- expected: FAIL
-
- [TextMetrics interface: attribute emHeightDescent]
- expected: FAIL
-
- [TextMetrics interface: attribute hangingBaseline]
- expected: FAIL
-
- [TextMetrics interface: attribute alphabeticBaseline]
- expected: FAIL
-
- [TextMetrics interface: attribute ideographicBaseline]
- expected: FAIL
-
- [DrawingStyle interface: existence and properties of interface object]
- expected: FAIL
-
- [DrawingStyle interface object length]
- expected: FAIL
-
- [DrawingStyle interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [DrawingStyle interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [DrawingStyle interface: attribute lineWidth]
- expected: FAIL
-
- [DrawingStyle interface: attribute lineCap]
- expected: FAIL
-
- [DrawingStyle interface: attribute lineJoin]
- expected: FAIL
-
- [DrawingStyle interface: attribute miterLimit]
- expected: FAIL
-
- [DrawingStyle interface: operation setLineDash([object Object\])]
- expected: FAIL
-
- [DrawingStyle interface: operation getLineDash()]
- expected: FAIL
-
- [DrawingStyle interface: attribute lineDashOffset]
- expected: FAIL
-
- [DrawingStyle interface: attribute font]
- expected: FAIL
-
- [DrawingStyle interface: attribute textAlign]
- expected: FAIL
-
- [DrawingStyle interface: attribute textBaseline]
- expected: FAIL
-
- [DrawingStyle interface: attribute direction]
- expected: FAIL
-
- [Path2D interface: existence and properties of interface object]
- expected: FAIL
-
- [Path2D interface object length]
- expected: FAIL
-
- [Path2D interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [Path2D interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [Path2D interface: operation addPath(Path2D,SVGMatrix)]
- expected: FAIL
-
- [Path2D interface: operation addPathByStrokingPath(Path2D,CanvasDrawingStyles,SVGMatrix)]
- expected: FAIL
-
- [Path2D interface: operation addText(DOMString,CanvasDrawingStyles,SVGMatrix,unrestricted double,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation addPathByStrokingText(DOMString,CanvasDrawingStyles,SVGMatrix,unrestricted double,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation addText(DOMString,CanvasDrawingStyles,SVGMatrix,Path2D,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation addPathByStrokingText(DOMString,CanvasDrawingStyles,SVGMatrix,Path2D,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation closePath()]
- expected: FAIL
-
- [Path2D interface: operation moveTo(unrestricted double,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation lineTo(unrestricted double,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation quadraticCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation bezierCurveTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation arcTo(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation rect(unrestricted double,unrestricted double,unrestricted double,unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation arc(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean)]
- expected: FAIL
-
- [Path2D interface: operation ellipse(unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,unrestricted double,boolean)]
- expected: FAIL
-
- [DataTransfer interface: existence and properties of interface object]
- expected: FAIL
-
- [DataTransfer interface object length]
- expected: FAIL
-
- [DataTransfer interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [DataTransfer interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [DataTransfer interface: attribute dropEffect]
- expected: FAIL
-
- [DataTransfer interface: attribute effectAllowed]
- expected: FAIL
-
- [DataTransfer interface: attribute items]
- expected: FAIL
-
- [DataTransfer interface: operation setDragImage(Element,long,long)]
- expected: FAIL
-
- [DataTransfer interface: attribute types]
- expected: FAIL
-
- [DataTransfer interface: operation getData(DOMString)]
- expected: FAIL
-
- [DataTransfer interface: operation setData(DOMString,DOMString)]
- expected: FAIL
-
- [DataTransfer interface: operation clearData(DOMString)]
- expected: FAIL
-
- [DataTransfer interface: attribute files]
- expected: FAIL
-
- [DataTransferItemList interface: existence and properties of interface object]
- expected: FAIL
-
- [DataTransferItemList interface object length]
- expected: FAIL
-
- [DataTransferItemList interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [DataTransferItemList interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [DataTransferItemList interface: attribute length]
- expected: FAIL
-
- [DataTransferItemList interface: operation add(DOMString,DOMString)]
- expected: FAIL
-
- [DataTransferItemList interface: operation add(File)]
- expected: FAIL
-
- [DataTransferItemList interface: operation remove(unsigned long)]
- expected: FAIL
-
- [DataTransferItemList interface: operation clear()]
- expected: FAIL
-
- [DataTransferItem interface: existence and properties of interface object]
- expected: FAIL
-
- [DataTransferItem interface object length]
- expected: FAIL
-
- [DataTransferItem interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [DataTransferItem interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [DataTransferItem interface: attribute kind]
- expected: FAIL
-
- [DataTransferItem interface: attribute type]
- expected: FAIL
-
- [DataTransferItem interface: operation getAsString(FunctionStringCallback)]
- expected: FAIL
-
- [DataTransferItem interface: operation getAsFile()]
- expected: FAIL
-
- [DragEvent interface: existence and properties of interface object]
- expected: FAIL
-
- [DragEvent interface object length]
- expected: FAIL
-
- [DragEvent interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [DragEvent interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [DragEvent interface: attribute dataTransfer]
- expected: FAIL
-
- [Window interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [Window interface: attribute locationbar]
- expected: FAIL
-
- [Window interface: attribute menubar]
- expected: FAIL
-
- [Window interface: attribute personalbar]
- expected: FAIL
-
- [Window interface: attribute scrollbars]
- expected: FAIL
-
- [Window interface: attribute statusbar]
- expected: FAIL
-
- [Window interface: attribute toolbar]
- expected: FAIL
-
- [Window interface: operation stop()]
- expected: FAIL
-
- [Window interface: operation focus()]
- expected: FAIL
-
- [Window interface: operation blur()]
- expected: FAIL
-
- [Window interface: attribute length]
- expected: FAIL
-
- [Window interface: attribute opener]
- expected: FAIL
-
- [Window interface: attribute parent]
- expected: FAIL
-
- [Window interface: operation open(DOMString,DOMString,DOMString,boolean)]
- expected: FAIL
-
- [Window interface: attribute external]
- expected: FAIL
-
- [Window interface: attribute applicationCache]
- expected: FAIL
-
- [Window interface: operation confirm(DOMString)]
- expected: FAIL
-
- [Window interface: operation prompt(DOMString,DOMString)]
- expected: FAIL
-
- [Window interface: operation print()]
- expected: FAIL
-
- [Window interface: operation showModalDialog(DOMString,any)]
- expected: FAIL
-
- [Window interface: attribute onautocomplete]
- expected: FAIL
-
- [Window interface: attribute onautocompleteerror]
- expected: FAIL
-
- [Window interface: attribute onmousewheel]
- expected: FAIL
-
- [Window interface: attribute onsort]
- expected: FAIL
-
- [Window interface: operation createImageBitmap(ImageBitmapSource,long,long,long,long)]
- expected: FAIL
-
- [Window interface: window must inherit property "name" with the proper type (3)]
- expected: FAIL
-
- [Window interface: window must have own property "location"]
- expected: FAIL
-
- [Window interface: window must inherit property "locationbar" with the proper type (6)]
- expected: FAIL
-
- [Window interface: window must inherit property "menubar" with the proper type (7)]
- expected: FAIL
-
- [Window interface: window must inherit property "personalbar" with the proper type (8)]
- expected: FAIL
-
- [Window interface: window must inherit property "scrollbars" with the proper type (9)]
- expected: FAIL
-
- [Window interface: window must inherit property "statusbar" with the proper type (10)]
- expected: FAIL
-
- [Window interface: window must inherit property "toolbar" with the proper type (11)]
- expected: FAIL
-
- [Window interface: window must inherit property "stop" with the proper type (15)]
- expected: FAIL
-
- [Window interface: window must inherit property "focus" with the proper type (16)]
- expected: FAIL
-
- [Window interface: window must inherit property "blur" with the proper type (17)]
- expected: FAIL
-
- [Window interface: window must inherit property "length" with the proper type (19)]
- expected: FAIL
-
- [Window interface: window must inherit property "opener" with the proper type (21)]
- expected: FAIL
-
- [Window interface: window must inherit property "open" with the proper type (24)]
- expected: FAIL
-
- [Window interface: calling open(DOMString,DOMString,DOMString,boolean) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "external" with the proper type (28)]
- expected: FAIL
-
- [Window interface: window must inherit property "applicationCache" with the proper type (29)]
- expected: FAIL
-
- [Window interface: window must inherit property "confirm" with the proper type (31)]
- expected: FAIL
-
- [Window interface: calling confirm(DOMString) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "prompt" with the proper type (32)]
- expected: FAIL
-
- [Window interface: calling prompt(DOMString,DOMString) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "print" with the proper type (33)]
- expected: FAIL
-
- [Window interface: window must inherit property "showModalDialog" with the proper type (34)]
- expected: FAIL
-
- [Window interface: calling showModalDialog(DOMString,any) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "onautocomplete" with the proper type (39)]
- expected: FAIL
-
- [Window interface: window must inherit property "onautocompleteerror" with the proper type (40)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmousewheel" with the proper type (80)]
- expected: FAIL
-
- [Window interface: window must inherit property "onsort" with the proper type (93)]
- expected: FAIL
-
- [Window interface: window must inherit property "createImageBitmap" with the proper type (122)]
- expected: FAIL
-
- [Window interface: calling createImageBitmap(ImageBitmapSource,long,long,long,long) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [BarProp interface: existence and properties of interface object]
- expected: FAIL
-
- [BarProp interface object length]
- expected: FAIL
-
- [BarProp interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [BarProp interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [BarProp interface: attribute visible]
- expected: FAIL
-
- [History interface: operation pushState(any,DOMString,DOMString)]
- expected: FAIL
-
- [History interface: operation replaceState(any,DOMString,DOMString)]
- expected: FAIL
-
- [History interface: window.history must inherit property "state" with the proper type (1)]
- expected: FAIL
-
- [History interface: window.history must inherit property "go" with the proper type (2)]
- expected: FAIL
-
- [History interface: window.history must inherit property "back" with the proper type (3)]
- expected: FAIL
-
- [History interface: window.history must inherit property "forward" with the proper type (4)]
- expected: FAIL
-
- [History interface: window.history must inherit property "pushState" with the proper type (5)]
- expected: FAIL
-
- [History interface: calling pushState(any,DOMString,DOMString) on window.history with too few arguments must throw TypeError]
- expected: FAIL
-
- [History interface: window.history must inherit property "replaceState" with the proper type (6)]
- expected: FAIL
-
- [History interface: calling replaceState(any,DOMString,DOMString) on window.history with too few arguments must throw TypeError]
- expected: FAIL
-
- [Location interface: calling replace(DOMString) on window.location with too few arguments must throw TypeError]
- expected: FAIL
-
- [ApplicationCache interface: existence and properties of interface object]
- expected: FAIL
-
- [ApplicationCache interface object length]
- expected: FAIL
-
- [ApplicationCache interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [ApplicationCache interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [ApplicationCache interface: constant UNCACHED on interface object]
- expected: FAIL
-
- [ApplicationCache interface: constant UNCACHED on interface prototype object]
- expected: FAIL
-
- [ApplicationCache interface: constant IDLE on interface object]
- expected: FAIL
-
- [ApplicationCache interface: constant IDLE on interface prototype object]
- expected: FAIL
-
- [ApplicationCache interface: constant CHECKING on interface object]
- expected: FAIL
-
- [ApplicationCache interface: constant CHECKING on interface prototype object]
- expected: FAIL
-
- [ApplicationCache interface: constant DOWNLOADING on interface object]
- expected: FAIL
-
- [ApplicationCache interface: constant DOWNLOADING on interface prototype object]
- expected: FAIL
-
- [ApplicationCache interface: constant UPDATEREADY on interface object]
- expected: FAIL
-
- [ApplicationCache interface: constant UPDATEREADY on interface prototype object]
- expected: FAIL
-
- [ApplicationCache interface: constant OBSOLETE on interface object]
- expected: FAIL
-
- [ApplicationCache interface: constant OBSOLETE on interface prototype object]
- expected: FAIL
-
- [ApplicationCache interface: attribute status]
- expected: FAIL
-
- [ApplicationCache interface: operation update()]
- expected: FAIL
-
- [ApplicationCache interface: operation abort()]
- expected: FAIL
-
- [ApplicationCache interface: operation swapCache()]
- expected: FAIL
-
- [ApplicationCache interface: attribute onchecking]
- expected: FAIL
-
- [ApplicationCache interface: attribute onerror]
- expected: FAIL
-
- [ApplicationCache interface: attribute onnoupdate]
- expected: FAIL
-
- [ApplicationCache interface: attribute ondownloading]
- expected: FAIL
-
- [ApplicationCache interface: attribute onprogress]
- expected: FAIL
-
- [ApplicationCache interface: attribute onupdateready]
- expected: FAIL
-
- [ApplicationCache interface: attribute oncached]
- expected: FAIL
-
- [ApplicationCache interface: attribute onobsolete]
- expected: FAIL
-
- [ApplicationCache must be primary interface of window.applicationCache]
- expected: FAIL
-
- [Stringification of window.applicationCache]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "UNCACHED" with the proper type (0)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "IDLE" with the proper type (1)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "CHECKING" with the proper type (2)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "DOWNLOADING" with the proper type (3)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "UPDATEREADY" with the proper type (4)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "OBSOLETE" with the proper type (5)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "status" with the proper type (6)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "update" with the proper type (7)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "abort" with the proper type (8)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "swapCache" with the proper type (9)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onchecking" with the proper type (10)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onerror" with the proper type (11)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onnoupdate" with the proper type (12)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "ondownloading" with the proper type (13)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onprogress" with the proper type (14)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onupdateready" with the proper type (15)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "oncached" with the proper type (16)]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type (17)]
- expected: FAIL
-
- [EventTarget interface: window.applicationCache must inherit property "addEventListener" with the proper type (0)]
- expected: FAIL
-
- [EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on window.applicationCache with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: window.applicationCache must inherit property "removeEventListener" with the proper type (1)]
- expected: FAIL
-
- [EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on window.applicationCache with too few arguments must throw TypeError]
- expected: FAIL
-
- [EventTarget interface: window.applicationCache must inherit property "dispatchEvent" with the proper type (2)]
- expected: FAIL
-
- [EventTarget interface: calling dispatchEvent(Event) on window.applicationCache with too few arguments must throw TypeError]
- expected: FAIL
-
- [Navigator interface: attribute languages]
- expected: FAIL
-
- [Navigator interface: attribute onLine]
- expected: FAIL
-
- [Navigator interface: operation registerProtocolHandler(DOMString,DOMString,DOMString)]
- expected: FAIL
-
- [Navigator interface: operation registerContentHandler(DOMString,DOMString,DOMString)]
- expected: FAIL
-
- [Navigator interface: operation isProtocolHandlerRegistered(DOMString,DOMString)]
- expected: FAIL
-
- [Navigator interface: operation isContentHandlerRegistered(DOMString,DOMString)]
- expected: FAIL
-
- [Navigator interface: operation unregisterProtocolHandler(DOMString,DOMString)]
- expected: FAIL
-
- [Navigator interface: operation unregisterContentHandler(DOMString,DOMString)]
- expected: FAIL
-
- [Navigator interface: operation yieldForStorageUpdates()]
- expected: FAIL
-
- [Navigator interface: attribute javaEnabled]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "languages" with the proper type (8)]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "onLine" with the proper type (9)]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "registerProtocolHandler" with the proper type (10)]
- expected: FAIL
-
- [Navigator interface: calling registerProtocolHandler(DOMString,DOMString,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 (11)]
- expected: FAIL
-
- [Navigator interface: calling registerContentHandler(DOMString,DOMString,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 (12)]
- expected: FAIL
-
- [Navigator interface: calling isProtocolHandlerRegistered(DOMString,DOMString) on window.navigator with too few arguments must throw TypeError]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "isContentHandlerRegistered" with the proper type (13)]
- expected: FAIL
-
- [Navigator interface: calling isContentHandlerRegistered(DOMString,DOMString) on window.navigator with too few arguments must throw TypeError]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "unregisterProtocolHandler" with the proper type (14)]
- expected: FAIL
-
- [Navigator interface: calling unregisterProtocolHandler(DOMString,DOMString) on window.navigator with too few arguments must throw TypeError]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "unregisterContentHandler" with the proper type (15)]
- expected: FAIL
-
- [Navigator interface: calling unregisterContentHandler(DOMString,DOMString) on window.navigator with too few arguments must throw TypeError]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "yieldForStorageUpdates" with the proper type (17)]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "javaEnabled" with the proper type (20)]
- expected: FAIL
-
- [External interface: existence and properties of interface object]
- expected: FAIL
-
- [External interface object length]
- expected: FAIL
-
- [External interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [External interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [External interface: operation AddSearchProvider(DOMString)]
- expected: FAIL
-
- [External interface: operation IsSearchProviderInstalled(DOMString)]
- expected: FAIL
-
- [External must be primary interface of window.external]
- expected: FAIL
-
- [Stringification of window.external]
- expected: FAIL
-
- [External interface: window.external must inherit property "AddSearchProvider" with the proper type (0)]
- expected: FAIL
-
- [External interface: calling AddSearchProvider(DOMString) on window.external with too few arguments must throw TypeError]
- expected: FAIL
-
- [External interface: window.external must inherit property "IsSearchProviderInstalled" with the proper type (1)]
- expected: FAIL
-
- [External interface: calling IsSearchProviderInstalled(DOMString) on window.external with too few arguments must throw TypeError]
- expected: FAIL
-
- [ImageBitmap interface: existence and properties of interface object]
- expected: FAIL
-
- [ImageBitmap interface object length]
- expected: FAIL
-
- [ImageBitmap interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [ImageBitmap interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [ImageBitmap interface: attribute width]
- expected: FAIL
-
- [ImageBitmap interface: attribute height]
- expected: FAIL
-
- [MessageEvent interface: attribute source]
- expected: FAIL
-
- [MessageEvent interface: attribute ports]
- expected: FAIL
-
- [MessageEvent interface: operation initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object\],[object Object\],MessagePort)]
- expected: FAIL
-
- [WebSocket interface: attribute extensions]
- expected: FAIL
-
- [MessageChannel interface: existence and properties of interface object]
- expected: FAIL
-
- [MessageChannel interface object length]
- expected: FAIL
-
- [MessageChannel interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [MessageChannel interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [MessageChannel interface: attribute port1]
- expected: FAIL
-
- [MessageChannel interface: attribute port2]
- expected: FAIL
-
- [MessagePort interface: existence and properties of interface object]
- expected: FAIL
-
- [MessagePort interface object length]
- expected: FAIL
-
- [MessagePort interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [MessagePort interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [MessagePort interface: operation postMessage(any,[object Object\])]
- expected: FAIL
-
- [MessagePort interface: operation start()]
- expected: FAIL
-
- [MessagePort interface: operation close()]
- expected: FAIL
-
- [MessagePort interface: attribute onmessage]
- expected: FAIL
-
- [PortCollection interface: existence and properties of interface object]
- expected: FAIL
-
- [PortCollection interface object length]
- expected: FAIL
-
- [PortCollection interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [PortCollection interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [PortCollection interface: operation add(MessagePort)]
- expected: FAIL
-
- [PortCollection interface: operation remove(MessagePort)]
- expected: FAIL
-
- [PortCollection interface: operation clear()]
- expected: FAIL
-
- [PortCollection interface: operation iterate(PortCollectionCallback)]
- expected: FAIL
-
- [BroadcastChannel interface: existence and properties of interface object]
- expected: FAIL
-
- [BroadcastChannel interface object length]
- expected: FAIL
-
- [BroadcastChannel interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [BroadcastChannel interface: attribute name]
- expected: FAIL
-
- [BroadcastChannel interface: operation postMessage(any)]
- expected: FAIL
-
- [BroadcastChannel interface: operation close()]
- expected: FAIL
-
- [BroadcastChannel interface: attribute onmessage]
- expected: FAIL
-
- [WorkerGlobalScope interface: operation close()]
- expected: FAIL
-
- [WorkerGlobalScope interface: attribute onerror]
- expected: FAIL
-
- [WorkerGlobalScope interface: attribute onlanguagechange]
- expected: FAIL
-
- [WorkerGlobalScope interface: attribute onoffline]
- expected: FAIL
-
- [WorkerGlobalScope interface: attribute ononline]
- expected: FAIL
-
- [WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource,long,long,long,long)]
- expected: FAIL
-
- [DedicatedWorkerGlobalScope interface: operation postMessage(any,[object Object\])]
- expected: FAIL
-
- [DedicatedWorkerGlobalScope interface: attribute onmessage]
- expected: FAIL
-
- [SharedWorkerGlobalScope interface object length]
- expected: FAIL
-
- [SharedWorkerGlobalScope interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [SharedWorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [SharedWorkerGlobalScope interface: attribute name]
- expected: FAIL
-
- [SharedWorkerGlobalScope interface: attribute applicationCache]
- expected: FAIL
-
- [SharedWorkerGlobalScope interface: attribute onconnect]
- expected: FAIL
-
- [SharedWorker interface: existence and properties of interface object]
- expected: FAIL
-
- [SharedWorker interface object length]
- expected: FAIL
-
- [SharedWorker interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [SharedWorker interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [SharedWorker interface: attribute port]
- expected: FAIL
-
- [SharedWorker interface: attribute onerror]
- expected: FAIL
-
- [WorkerNavigator interface: attribute languages]
- expected: FAIL
-
- [WorkerNavigator interface: attribute onLine]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute align]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute alt]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute archive]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute code]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute codeBase]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute height]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute hspace]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute object]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute vspace]
- expected: FAIL
-
- [HTMLAppletElement interface: attribute width]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "align" with the proper type (0)]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "alt" with the proper type (1)]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "archive" with the proper type (2)]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "code" with the proper type (3)]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "codeBase" with the proper type (4)]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "height" with the proper type (5)]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "hspace" with the proper type (6)]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "object" with the proper type (8)]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "vspace" with the proper type (9)]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "width" with the proper type (10)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: existence and properties of interface object]
- expected: FAIL
-
- [HTMLMarqueeElement interface object length]
- expected: FAIL
-
- [HTMLMarqueeElement interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [HTMLMarqueeElement interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute behavior]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute bgColor]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute direction]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute height]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute hspace]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute loop]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute scrollAmount]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute scrollDelay]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute trueSpeed]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute vspace]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute width]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute onbounce]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute onfinish]
- expected: FAIL
-
- [HTMLMarqueeElement interface: attribute onstart]
- expected: FAIL
-
- [HTMLMarqueeElement interface: operation start()]
- expected: FAIL
-
- [HTMLMarqueeElement interface: operation stop()]
- expected: FAIL
-
- [HTMLMarqueeElement must be primary interface of document.createElement("marquee")]
- expected: FAIL
-
- [Stringification of document.createElement("marquee")]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "behavior" with the proper type (0)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "bgColor" with the proper type (1)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "direction" with the proper type (2)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "height" with the proper type (3)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type (4)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "loop" with the proper type (5)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollAmount" with the proper type (6)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollDelay" with the proper type (7)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type (8)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type (9)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type (10)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type (11)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type (12)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type (13)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start" with the proper type (14)]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop" with the proper type (15)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: attribute cols]
- expected: FAIL
-
- [HTMLFrameSetElement interface: attribute rows]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type (0)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type (1)]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute name]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute scrolling]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute src]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute frameBorder]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute longDesc]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute noResize]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute contentDocument]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute contentWindow]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute marginHeight]
- expected: FAIL
-
- [HTMLFrameElement interface: attribute marginWidth]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "name" with the proper type (0)]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "scrolling" with the proper type (1)]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "src" with the proper type (2)]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "frameBorder" with the proper type (3)]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "longDesc" with the proper type (4)]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "noResize" with the proper type (5)]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "contentDocument" with the proper type (6)]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type (7)]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type (8)]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type (9)]
- expected: FAIL
-
- [HTMLDirectoryElement interface: attribute compact]
- expected: FAIL
-
- [HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type (0)]
- expected: FAIL
-
- [HTMLOptionElement must be primary interface of new Option()]
- expected: FAIL
-
- [Stringification of new Option()]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "disabled" with the proper type (0)]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "form" with the proper type (1)]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "label" with the proper type (2)]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "defaultSelected" with the proper type (3)]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "selected" with the proper type (4)]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "value" with the proper type (5)]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "text" with the proper type (6)]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "index" with the proper type (7)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createComment" with the proper type (18)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createProcessingInstruction" with the proper type (19)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "importNode" with the proper type (20)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "adoptNode" with the proper type (21)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createAttribute" with the proper type (22)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createAttributeNS" with the proper type (23)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createEvent" with the proper type (24)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createRange" with the proper type (25)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createNodeIterator" with the proper type (26)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "createTreeWalker" with the proper type (27)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "styleSheets" with the proper type (28)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "selectedStyleSheetSet" with the proper type (29)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "lastStyleSheetSet" with the proper type (30)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "preferredStyleSheetSet" with the proper type (31)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "styleSheetSets" with the proper type (32)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "enableStyleSheetsForSet" with the proper type (33)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "domain" with the proper type (35)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "referrer" with the proper type (36)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "cookie" with the proper type (37)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "lastModified" with the proper type (38)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "readyState" with the proper type (39)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "title" with the proper type (41)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "dir" with the proper type (42)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "body" with the proper type (43)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "head" with the proper type (44)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "images" with the proper type (45)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "embeds" with the proper type (46)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "plugins" with the proper type (47)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "links" with the proper type (48)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "forms" with the proper type (49)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "scripts" with the proper type (50)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementsByName" with the proper type (51)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getItems" with the proper type (52)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "cssElementMap" with the proper type (53)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "currentScript" with the proper type (54)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "open" with the proper type (56)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "close" with the proper type (57)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "write" with the proper type (58)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "writeln" with the proper type (59)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type (60)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "activeElement" with the proper type (61)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "hasFocus" with the proper type (62)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "designMode" with the proper type (63)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "execCommand" with the proper type (64)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandEnabled" with the proper type (65)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandIndeterm" with the proper type (66)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandState" with the proper type (67)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandSupported" with the proper type (68)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandValue" with the proper type (69)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "commands" with the proper type (70)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onreadystatechange" with the proper type (71)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "fgColor" with the proper type (72)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type (73)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type (74)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type (75)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "bgColor" with the proper type (76)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "anchors" with the proper type (77)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "applets" with the proper type (78)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "clear" with the proper type (79)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "captureEvents" with the proper type (80)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "releaseEvents" with the proper type (81)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "all" with the proper type (82)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "getElementById" with the proper type (83)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "children" with the proper type (84)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "firstElementChild" with the proper type (85)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "lastElementChild" with the proper type (86)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "childElementCount" with the proper type (87)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "prepend" with the proper type (88)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "append" with the proper type (89)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "query" with the proper type (90)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryAll" with the proper type (91)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "querySelector" with the proper type (92)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "querySelectorAll" with the proper type (93)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onabort" with the proper type (94)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onautocomplete" with the proper type (95)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onautocompleteerror" with the proper type (96)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onblur" with the proper type (97)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncancel" with the proper type (98)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncanplay" with the proper type (99)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncanplaythrough" with the proper type (100)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onchange" with the proper type (101)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onclick" with the proper type (102)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onclose" with the proper type (103)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncontextmenu" with the proper type (104)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oncuechange" with the proper type (105)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondblclick" with the proper type (106)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondrag" with the proper type (107)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragend" with the proper type (108)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragenter" with the proper type (109)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragexit" with the proper type (110)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragleave" with the proper type (111)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragover" with the proper type (112)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondragstart" with the proper type (113)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondrop" with the proper type (114)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ondurationchange" with the proper type (115)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onemptied" with the proper type (116)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onended" with the proper type (117)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onerror" with the proper type (118)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onfocus" with the proper type (119)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oninput" with the proper type (120)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "oninvalid" with the proper type (121)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onkeydown" with the proper type (122)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onkeypress" with the proper type (123)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onkeyup" with the proper type (124)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onload" with the proper type (125)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadeddata" with the proper type (126)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadedmetadata" with the proper type (127)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadstart" with the proper type (128)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousedown" with the proper type (129)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseenter" with the proper type (130)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseleave" with the proper type (131)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousemove" with the proper type (132)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseout" with the proper type (133)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseover" with the proper type (134)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmouseup" with the proper type (135)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousewheel" with the proper type (136)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onpause" with the proper type (137)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onplay" with the proper type (138)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onplaying" with the proper type (139)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onprogress" with the proper type (140)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onratechange" with the proper type (141)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onreset" with the proper type (142)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onresize" with the proper type (143)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onscroll" with the proper type (144)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onseeked" with the proper type (145)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onseeking" with the proper type (146)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onselect" with the proper type (147)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onshow" with the proper type (148)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onsort" with the proper type (149)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onstalled" with the proper type (150)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onsubmit" with the proper type (151)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onsuspend" with the proper type (152)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ontimeupdate" with the proper type (153)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "ontoggle" with the proper type (154)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onvolumechange" with the proper type (155)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onwaiting" with the proper type (156)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "selectedStyleSheetSet" with the proper type (29)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "lastStyleSheetSet" with the proper type (30)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "preferredStyleSheetSet" with the proper type (31)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "styleSheetSets" with the proper type (32)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "enableStyleSheetsForSet" with the proper type (33)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "dir" with the proper type (42)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "getItems" with the proper type (52)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "cssElementMap" with the proper type (53)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "open" with the proper type (56)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "close" with the proper type (57)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "designMode" with the proper type (63)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "execCommand" with the proper type (64)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandEnabled" with the proper type (65)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandIndeterm" with the proper type (66)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandState" with the proper type (67)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandSupported" with the proper type (68)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandValue" with the proper type (69)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "commands" with the proper type (70)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "linkColor" with the proper type (73)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "vlinkColor" with the proper type (74)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "alinkColor" with the proper type (75)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type (82)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "query" with the proper type (90)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryAll" with the proper type (91)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onautocomplete" with the proper type (95)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onautocompleteerror" with the proper type (96)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmousewheel" with the proper type (136)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onsort" with the proper type (149)]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute href]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute origin]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute protocol]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute username]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute password]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute host]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute hostname]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute port]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute pathname]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute search]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute hash]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type (8)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type (9)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type (10)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type (11)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type (12)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type (13)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type (14)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type (15)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type (16)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type (17)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type (18)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type (19)]
- expected: FAIL
-
- [Location interface: window.location must have own property "ancestorOrigins"]
- expected: FAIL
-
- [WorkerLocation interface: attribute origin]
- expected: FAIL
-
- [HTMLAllCollection interface object name]
- expected: FAIL
-
- [HTMLPropertiesCollection interface object name]
- expected: FAIL
-
- [PropertyNodeList interface object name]
- expected: FAIL
-
- [DOMElementMap interface object name]
- expected: FAIL
-
- [AudioTrackList interface object name]
- expected: FAIL
-
- [AudioTrack interface object name]
- expected: FAIL
-
- [VideoTrackList interface object name]
- expected: FAIL
-
- [VideoTrack interface object name]
- expected: FAIL
-
- [MediaController interface object name]
- expected: FAIL
-
- [TextTrackList interface object name]
- expected: FAIL
-
- [TextTrack interface object name]
- expected: FAIL
-
- [TextTrackCueList interface object name]
- expected: FAIL
-
- [TextTrackCue interface object name]
- expected: FAIL
-
- [TimeRanges interface object name]
- expected: FAIL
-
- [TrackEvent interface object name]
- expected: FAIL
-
- [HTMLKeygenElement interface object name]
- expected: FAIL
-
- [AutocompleteErrorEvent interface object name]
- expected: FAIL
-
- [HTMLMenuElement interface object name]
- expected: FAIL
-
- [HTMLMenuItemElement interface object name]
- expected: FAIL
-
- [RelatedEvent interface object name]
- expected: FAIL
-
- [CanvasProxy interface object name]
- expected: FAIL
-
- [TextMetrics interface object name]
- expected: FAIL
-
- [DrawingStyle interface object name]
- expected: FAIL
-
- [Path2D interface object name]
- expected: FAIL
-
- [DataTransfer interface object name]
- expected: FAIL
-
- [DataTransferItemList interface object name]
- expected: FAIL
-
- [DataTransferItem interface object name]
- expected: FAIL
-
- [DragEvent interface object name]
- expected: FAIL
-
- [BarProp interface object name]
- expected: FAIL
-
- [ApplicationCache interface object name]
- expected: FAIL
-
- [External interface object name]
- expected: FAIL
-
- [ImageBitmap interface object name]
- expected: FAIL
-
- [MessageChannel interface object name]
- expected: FAIL
-
- [MessagePort interface object name]
- expected: FAIL
-
- [PortCollection interface object name]
- expected: FAIL
-
- [BroadcastChannel interface object name]
- expected: FAIL
-
- [SharedWorkerGlobalScope interface object name]
- expected: FAIL
-
- [SharedWorker interface object name]
- expected: FAIL
-
- [HTMLMarqueeElement interface object name]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "extensions" with the proper type (10)]
- expected: FAIL
-
- [HTMLLinkElement interface: attribute relList]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute relList]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute relList]
- expected: FAIL
-
- [History interface: attribute scrollRestoration]
- expected: FAIL
-
- [History interface: window.history must inherit property "scrollRestoration" with the proper type (1)]
- expected: FAIL
-
- [History interface: window.history must inherit property "state" with the proper type (2)]
- expected: FAIL
-
- [History interface: window.history must inherit property "pushState" with the proper type (6)]
- expected: FAIL
-
- [History interface: window.history must inherit property "replaceState" with the proper type (7)]
- expected: FAIL
-
- [HTMLAllCollection interface: attribute length]
- expected: FAIL
-
- [HTMLAllCollection interface: document.all must inherit property "length" with the proper type (0)]
- expected: FAIL
-
- [HTMLAllCollection interface: document.all must inherit property "item" with the proper type (2)]
- expected: FAIL
-
- [HTMLAllCollection interface: document.all must inherit property "namedItem" with the proper type (3)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "origin" with the proper type (3)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "selectedStyleSheetSet" with the proper type (29)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "lastStyleSheetSet" with the proper type (30)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "preferredStyleSheetSet" with the proper type (31)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "styleSheetSets" with the proper type (32)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "enableStyleSheetsForSet" with the proper type (33)]
- expected: FAIL
-
- [Document interface: calling enableStyleSheetsForSet(DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must have own property "location"]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "dir" with the proper type (42)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "getItems" with the proper type (52)]
- expected: FAIL
-
- [Document interface: calling getItems(DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "cssElementMap" with the proper type (53)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "open" with the proper type (56)]
- expected: FAIL
-
- [Document interface: calling open(DOMString,DOMString,DOMString,boolean) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "close" with the proper type (57)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "designMode" with the proper type (63)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "execCommand" with the proper type (64)]
- expected: FAIL
-
- [Document interface: calling execCommand(DOMString,boolean,DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandEnabled" with the proper type (65)]
- expected: FAIL
-
- [Document interface: calling queryCommandEnabled(DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandIndeterm" with the proper type (66)]
- expected: FAIL
-
- [Document interface: calling queryCommandIndeterm(DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandState" with the proper type (67)]
- expected: FAIL
-
- [Document interface: calling queryCommandState(DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandSupported" with the proper type (68)]
- expected: FAIL
-
- [Document interface: calling queryCommandSupported(DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandValue" with the proper type (69)]
- expected: FAIL
-
- [Document interface: calling queryCommandValue(DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "commands" with the proper type (70)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "linkColor" with the proper type (73)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "vlinkColor" with the proper type (74)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "alinkColor" with the proper type (75)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "all" with the proper type (82)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "query" with the proper type (90)]
- expected: FAIL
-
- [Document interface: calling query(DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryAll" with the proper type (91)]
- expected: FAIL
-
- [Document interface: calling queryAll(DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onautocomplete" with the proper type (95)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onautocompleteerror" with the proper type (96)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onmousewheel" with the proper type (136)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onsort" with the proper type (149)]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute scope]
- expected: FAIL
-
- [HTMLTableCellElement interface: attribute abbr]
- expected: FAIL
-
- [HTMLTableCellElement must be primary interface of document.createElement("td")]
- expected: FAIL
-
- [Stringification of document.createElement("td")]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "scope" with the proper type (4)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type (6)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type (7)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type (8)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type (10)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type (11)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type (12)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type (13)]
- expected: FAIL
-
- [HTMLTableCellElement must be primary interface of document.createElement("th")]
- expected: FAIL
-
- [Stringification of document.createElement("th")]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "scope" with the proper type (4)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type (5)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type (6)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type (7)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type (8)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type (10)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type (11)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type (12)]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type (13)]
- expected: FAIL
-
- [HTMLSlotElement interface: existence and properties of interface object]
- expected: FAIL
-
- [HTMLSlotElement interface object length]
- expected: FAIL
-
- [HTMLSlotElement interface object name]
- expected: FAIL
-
- [HTMLSlotElement interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [HTMLSlotElement interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [HTMLSlotElement interface: attribute name]
- expected: FAIL
-
- [HTMLSlotElement interface: operation assignedNodes(AssignedNodesOptions)]
- expected: FAIL
-
- [HTMLSlotElement must be primary interface of document.createElement("slot")]
- expected: FAIL
-
- [Stringification of document.createElement("slot")]
- expected: FAIL
-
- [HTMLSlotElement interface: document.createElement("slot") must inherit property "name" with the proper type (0)]
- expected: FAIL
-
- [HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedNodes" with the proper type (1)]
- expected: FAIL
-
- [HTMLSlotElement interface: calling assignedNodes(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("text") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("text") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("text") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("text") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("hidden") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("hidden") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("hidden") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("hidden") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("search") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("search") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("search") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("search") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("tel") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("tel") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("tel") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("tel") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("url") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("url") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("url") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("url") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("email") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("email") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("email") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("email") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("password") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("password") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("password") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("password") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("date") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("date") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("date") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("date") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("month") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("month") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("month") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("month") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("week") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("week") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("week") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("week") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("time") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("time") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("time") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("time") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("datetime-local") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("datetime-local") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("datetime-local") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("number") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("number") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("number") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("number") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("range") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("range") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("range") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("range") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("color") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("color") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("color") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("color") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("checkbox") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("checkbox") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("checkbox") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("checkbox") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("radio") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("radio") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("radio") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("radio") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "files" with the proper type (9)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("file") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("file") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("file") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("file") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("submit") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("submit") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("submit") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("submit") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("image") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("image") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("image") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("image") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("reset") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("reset") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("reset") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("reset") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "autocomplete" with the proper type (2)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "autofocus" with the proper type (3)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "height" with the proper type (15)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "inputMode" with the proper type (17)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "list" with the proper type (18)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "valueAsDate" with the proper type (35)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "valueAsNumber" with the proper type (36)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "valueLow" with the proper type (37)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "valueHigh" with the proper type (38)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type (39)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "stepUp" with the proper type (40)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepUp(long) on createInput("button") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "stepDown" with the proper type (41)]
- expected: FAIL
-
- [HTMLInputElement interface: calling stepDown(long) on createInput("button") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type (42)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type (43)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type (44)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "checkValidity" with the proper type (45)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "reportValidity" with the proper type (46)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity" with the proper type (47)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("button") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "select" with the proper type (49)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "setRangeText" with the proper type (53)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "setRangeText" with the proper type (54)]
- expected: FAIL
-
- [HTMLInputElement interface: calling setRangeText(DOMString,unsigned long,unsigned long,SelectionMode) on createInput("button") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type (56)]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type (57)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "cssElementMap" with the proper type (52)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "designMode" with the proper type (62)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "execCommand" with the proper type (63)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandEnabled" with the proper type (64)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandIndeterm" with the proper type (65)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandState" with the proper type (66)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandSupported" with the proper type (67)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandValue" with the proper type (68)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "commands" with the proper type (69)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "linkColor" with the proper type (72)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "vlinkColor" with the proper type (73)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "alinkColor" with the proper type (74)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "all" with the proper type (81)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "query" with the proper type (89)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryAll" with the proper type (90)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onautocomplete" with the proper type (94)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onautocompleteerror" with the proper type (95)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onmousewheel" with the proper type (135)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onsort" with the proper type (148)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type (7)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type (10)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type (11)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type (12)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "dropzone" with the proper type (13)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type (14)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type (15)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "contextMenu" with the proper type (16)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type (17)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "forceSpellCheck" with the proper type (18)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandType" with the proper type (19)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandLabel" with the proper type (20)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandIcon" with the proper type (21)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandHidden" with the proper type (22)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandDisabled" with the proper type (23)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "commandChecked" with the proper type (24)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onautocomplete" with the proper type (26)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onautocompleteerror" with the proper type (27)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onmousewheel" with the proper type (67)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onsort" with the proper type (80)]
- expected: FAIL
-
- [TrackEvent must be primary interface of new TrackEvent("addtrack", {track:document.createElement("track").track})]
- expected: FAIL
-
- [Stringification of new TrackEvent("addtrack", {track:document.createElement("track").track})]
- expected: FAIL
-
- [TrackEvent interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "track" with the proper type (0)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "type" with the proper type (0)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "target" with the proper type (1)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "currentTarget" with the proper type (2)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "NONE" with the proper type (3)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "CAPTURING_PHASE" with the proper type (4)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "AT_TARGET" with the proper type (5)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "BUBBLING_PHASE" with the proper type (6)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "eventPhase" with the proper type (7)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "stopPropagation" with the proper type (8)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "stopImmediatePropagation" with the proper type (9)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "bubbles" with the proper type (10)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "cancelable" with the proper type (11)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "preventDefault" with the proper type (12)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "defaultPrevented" with the proper type (13)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must have own property "isTrusted"]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "timeStamp" with the proper type (15)]
- expected: FAIL
-
- [Event interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "initEvent" with the proper type (16)]
- expected: FAIL
-
- [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: 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 "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 "dir" with the proper type (43)]
- 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 "all" with the proper type (80)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousewheel" with the proper type (130)]
- 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: 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: 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: 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 "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
-
- [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
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type (5)]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type (6)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type (16)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type (17)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type (18)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type (19)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type (20)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type (21)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type (22)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type (23)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type (24)]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type (25)]
- expected: FAIL
-
- [MessageEvent interface: operation initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object\],[object Object\],[object Object\])]
- expected: FAIL
-
- [Document interface: attribute onauxclick]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onauxclick" with the proper type (91)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousewheel" with the proper type (131)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onauxclick" with the proper type (91)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onmousewheel" with the proper type (131)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onauxclick" with the proper type (91)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmousewheel" with the proper type (131)]
- expected: FAIL
-
- [HTMLElement interface: attribute onauxclick]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type (19)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onmousewheel" with the proper type (59)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type (82)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type (83)]
- expected: FAIL
-
- [HTMLLinkElement interface: attribute nonce]
- expected: FAIL
-
- [HTMLLinkElement interface: attribute referrerPolicy]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "nonce" with the proper type (5)]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type (9)]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type (10)]
- expected: FAIL
-
- [HTMLAnchorElement interface: attribute referrerPolicy]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type (8)]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type (10)]
- expected: FAIL
-
- [HTMLImageElement interface: attribute referrerPolicy]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type (13)]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type (15)]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type (13)]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type (15)]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute allowUserMedia]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute allowPaymentRequest]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute referrerPolicy]
- expected: FAIL
-
- [HTMLIFrameElement interface: operation getSVGDocument()]
- expected: FAIL
-
- [HTMLAreaElement interface: attribute referrerPolicy]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type (8)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type (9)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type (10)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type (11)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type (12)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type (13)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type (14)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type (15)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type (16)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type (17)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type (18)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type (19)]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type (20)]
- expected: FAIL
-
- [HTMLDialogElement interface: operation show()]
- expected: FAIL
-
- [HTMLDialogElement interface: operation showModal()]
- expected: FAIL
-
- [Window interface: attribute onauxclick]
- expected: FAIL
-
- [Window interface: window must inherit property "onauxclick" with the proper type (39)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmousewheel" with the proper type (79)]
- expected: FAIL
-
- [Window interface: window must inherit property "createImageBitmap" with the proper type (120)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "dir" with the proper type (38)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "designMode" with the proper type (57)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "execCommand" with the proper type (58)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandEnabled" with the proper type (59)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandIndeterm" with the proper type (60)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandState" with the proper type (61)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandSupported" with the proper type (62)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandValue" with the proper type (63)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type (66)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type (67)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type (68)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "all" with the proper type (75)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onauxclick" with the proper type (86)]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onmousewheel" with the proper type (126)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "dir" with the proper type (38)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "designMode" with the proper type (57)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "execCommand" with the proper type (58)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandEnabled" with the proper type (59)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandIndeterm" with the proper type (60)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandState" with the proper type (61)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandSupported" with the proper type (62)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandValue" with the proper type (63)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "linkColor" with the proper type (66)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "vlinkColor" with the proper type (67)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "alinkColor" with the proper type (68)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "all" with the proper type (75)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onauxclick" with the proper type (86)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onmousewheel" with the proper type (126)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "dir" with the proper type (38)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "designMode" with the proper type (57)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "execCommand" with the proper type (58)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandEnabled" with the proper type (59)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandIndeterm" with the proper type (60)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandState" with the proper type (61)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandSupported" with the proper type (62)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandValue" with the proper type (63)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "linkColor" with the proper type (66)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "vlinkColor" with the proper type (67)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "alinkColor" with the proper type (68)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type (75)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onauxclick" with the proper type (86)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onmousewheel" with the proper type (126)]
- expected: FAIL
-
- [HTMLScriptElement interface: attribute noModule]
- expected: FAIL
-
- [HTMLScriptElement interface: attribute nonce]
- expected: FAIL
-
- [HTMLScriptElement interface: document.createElement("script") must inherit property "noModule" with the proper type (2)]
- expected: FAIL
-
- [HTMLScriptElement interface: document.createElement("script") must inherit property "nonce" with the proper type (8)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type (11)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type (13)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity" with the proper type (14)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity" with the proper type (15)]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity" with the proper type (16)]
- expected: FAIL
-
- [Window interface: attribute origin]
- expected: FAIL
-
- [Window interface: operation createImageBitmap(ImageBitmapSource,ImageBitmapOptions)]
- expected: FAIL
-
- [Window interface: operation createImageBitmap(ImageBitmapSource,long,long,long,long,ImageBitmapOptions)]
- expected: FAIL
-
- [Window interface: window must inherit property "origin" with the proper type (112)]
- expected: FAIL
-
- [Window interface: calling createImageBitmap(ImageBitmapSource,ImageBitmapOptions) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: calling createImageBitmap(ImageBitmapSource,long,long,long,long,ImageBitmapOptions) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type (3)]
- expected: FAIL
-
- [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type (4)]
- expected: FAIL
-
- [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent" with the proper type (5)]
- expected: FAIL
-
- [MessageEvent interface: calling initMessageEvent(DOMString,boolean,boolean,any,DOMString,DOMString,[object Object\],[object Object\],[object Object\]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "contextMenu" with the proper type (13)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type (14)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "forceSpellCheck" with the proper type (15)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "innerText" with the proper type (16)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type (18)]
- expected: FAIL
-
- [Document interface: attribute onloadend]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadend" with the proper type (118)]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onloadend" with the proper type (118)]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onloadend" with the proper type (118)]
- expected: FAIL
-
- [HTMLElement interface: attribute onloadend]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type (13)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "forceSpellCheck" with the proper type (14)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "innerText" with the proper type (15)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type (17)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onloadend" with the proper type (49)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type (80)]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type (81)]
- expected: FAIL
-
- [HTMLLinkElement interface: attribute as]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "as" with the proper type (3)]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "nonce" with the proper type (6)]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type (10)]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type (11)]
- expected: FAIL
-
- [HTMLBodyElement interface: attribute onmessageerror]
- expected: FAIL
-
- [HTMLBodyElement interface: document.createElement("body") must inherit property "onmessageerror" with the proper type (12)]
- expected: FAIL
-
- [HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type (0)]
- expected: FAIL
-
- [Window interface: operation postMessage(any,DOMString,[object Object\])]
- expected: FAIL
-
- [Window interface: attribute onloadend]
- expected: FAIL
-
- [Window interface: attribute onmessageerror]
- expected: FAIL
-
- [Window interface: operation setTimeout(TimerHandler,long,any)]
- expected: FAIL
-
- [Window interface: operation setInterval(TimerHandler,long,any)]
- expected: FAIL
-
- [Window interface: window must inherit property "self" with the proper type (1)]
- expected: FAIL
-
- [Window interface: window must inherit property "history" with the proper type (5)]
- expected: FAIL
-
- [Window interface: window must inherit property "status" with the proper type (12)]
- expected: FAIL
-
- [Window interface: window must inherit property "close" with the proper type (13)]
- expected: FAIL
-
- [Window interface: window must inherit property "closed" with the proper type (14)]
- expected: FAIL
-
- [Window interface: window must inherit property "frames" with the proper type (18)]
- expected: FAIL
-
- [Window interface: window must inherit property "parent" with the proper type (22)]
- expected: FAIL
-
- [Window interface: window must inherit property "frameElement" with the proper type (23)]
- expected: FAIL
-
- [Window interface: window must inherit property "navigator" with the proper type (27)]
- expected: FAIL
-
- [Window interface: window must inherit property "alert" with the proper type (30)]
- expected: FAIL
-
- [Window interface: window must inherit property "postMessage" with the proper type (34)]
- expected: FAIL
-
- [Window interface: calling postMessage(any,DOMString,[object Object\]) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "captureEvents" with the proper type (35)]
- expected: FAIL
-
- [Window interface: window must inherit property "releaseEvents" with the proper type (36)]
- expected: FAIL
-
- [Window interface: window must inherit property "onabort" with the proper type (37)]
- expected: FAIL
-
- [Window interface: window must inherit property "onauxclick" with the proper type (38)]
- expected: FAIL
-
- [Window interface: window must inherit property "onblur" with the proper type (39)]
- expected: FAIL
-
- [Window interface: window must inherit property "oncancel" with the proper type (40)]
- expected: FAIL
-
- [Window interface: window must inherit property "oncanplay" with the proper type (41)]
- expected: FAIL
-
- [Window interface: window must inherit property "oncanplaythrough" with the proper type (42)]
- expected: FAIL
-
- [Window interface: window must inherit property "onchange" with the proper type (43)]
- expected: FAIL
-
- [Window interface: window must inherit property "onclick" with the proper type (44)]
- expected: FAIL
-
- [Window interface: window must inherit property "onclose" with the proper type (45)]
- expected: FAIL
-
- [Window interface: window must inherit property "oncontextmenu" with the proper type (46)]
- expected: FAIL
-
- [Window interface: window must inherit property "oncuechange" with the proper type (47)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondblclick" with the proper type (48)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondrag" with the proper type (49)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondragend" with the proper type (50)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondragenter" with the proper type (51)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondragexit" with the proper type (52)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondragleave" with the proper type (53)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondragover" with the proper type (54)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondragstart" with the proper type (55)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondrop" with the proper type (56)]
- expected: FAIL
-
- [Window interface: window must inherit property "ondurationchange" with the proper type (57)]
- expected: FAIL
-
- [Window interface: window must inherit property "onemptied" with the proper type (58)]
- expected: FAIL
-
- [Window interface: window must inherit property "onended" with the proper type (59)]
- expected: FAIL
-
- [Window interface: window must inherit property "onerror" with the proper type (60)]
- expected: FAIL
-
- [Window interface: window must inherit property "onfocus" with the proper type (61)]
- expected: FAIL
-
- [Window interface: window must inherit property "oninput" with the proper type (62)]
- expected: FAIL
-
- [Window interface: window must inherit property "oninvalid" with the proper type (63)]
- expected: FAIL
-
- [Window interface: window must inherit property "onkeydown" with the proper type (64)]
- expected: FAIL
-
- [Window interface: window must inherit property "onkeypress" with the proper type (65)]
- expected: FAIL
-
- [Window interface: window must inherit property "onkeyup" with the proper type (66)]
- expected: FAIL
-
- [Window interface: window must inherit property "onload" with the proper type (67)]
- expected: FAIL
-
- [Window interface: window must inherit property "onloadeddata" with the proper type (68)]
- expected: FAIL
-
- [Window interface: window must inherit property "onloadedmetadata" with the proper type (69)]
- expected: FAIL
-
- [Window interface: window must inherit property "onloadend" with the proper type (70)]
- expected: FAIL
-
- [Window interface: window must inherit property "onloadstart" with the proper type (71)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmousedown" with the proper type (72)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmouseenter" with the proper type (73)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmouseleave" with the proper type (74)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmousemove" with the proper type (75)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmouseout" with the proper type (76)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmouseover" with the proper type (77)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmouseup" with the proper type (78)]
- expected: FAIL
-
- [Window interface: window must inherit property "onwheel" with the proper type (79)]
- expected: FAIL
-
- [Window interface: window must inherit property "onpause" with the proper type (80)]
- expected: FAIL
-
- [Window interface: window must inherit property "onplay" with the proper type (81)]
- expected: FAIL
-
- [Window interface: window must inherit property "onplaying" with the proper type (82)]
- expected: FAIL
-
- [Window interface: window must inherit property "onprogress" with the proper type (83)]
- expected: FAIL
-
- [Window interface: window must inherit property "onratechange" with the proper type (84)]
- expected: FAIL
-
- [Window interface: window must inherit property "onreset" with the proper type (85)]
- expected: FAIL
-
- [Window interface: window must inherit property "onresize" with the proper type (86)]
- expected: FAIL
-
- [Window interface: window must inherit property "onscroll" with the proper type (87)]
- expected: FAIL
-
- [Window interface: window must inherit property "onseeked" with the proper type (88)]
- expected: FAIL
-
- [Window interface: window must inherit property "onseeking" with the proper type (89)]
- expected: FAIL
-
- [Window interface: window must inherit property "onselect" with the proper type (90)]
- expected: FAIL
-
- [Window interface: window must inherit property "onstalled" with the proper type (91)]
- expected: FAIL
-
- [Window interface: window must inherit property "onsubmit" with the proper type (92)]
- expected: FAIL
-
- [Window interface: window must inherit property "onsuspend" with the proper type (93)]
- expected: FAIL
-
- [Window interface: window must inherit property "ontimeupdate" with the proper type (94)]
- expected: FAIL
-
- [Window interface: window must inherit property "ontoggle" with the proper type (95)]
- expected: FAIL
-
- [Window interface: window must inherit property "onvolumechange" with the proper type (96)]
- expected: FAIL
-
- [Window interface: window must inherit property "onwaiting" with the proper type (97)]
- expected: FAIL
-
- [Window interface: window must inherit property "onafterprint" with the proper type (98)]
- expected: FAIL
-
- [Window interface: window must inherit property "onbeforeprint" with the proper type (99)]
- expected: FAIL
-
- [Window interface: window must inherit property "onbeforeunload" with the proper type (100)]
- expected: FAIL
-
- [Window interface: window must inherit property "onhashchange" with the proper type (101)]
- expected: FAIL
-
- [Window interface: window must inherit property "onlanguagechange" with the proper type (102)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmessage" with the proper type (103)]
- expected: FAIL
-
- [Window interface: window must inherit property "onmessageerror" with the proper type (104)]
- expected: FAIL
-
- [Window interface: window must inherit property "onoffline" with the proper type (105)]
- expected: FAIL
-
- [Window interface: window must inherit property "ononline" with the proper type (106)]
- expected: FAIL
-
- [Window interface: window must inherit property "onpagehide" with the proper type (107)]
- expected: FAIL
-
- [Window interface: window must inherit property "onpageshow" with the proper type (108)]
- expected: FAIL
-
- [Window interface: window must inherit property "onpopstate" with the proper type (109)]
- expected: FAIL
-
- [Window interface: window must inherit property "onrejectionhandled" with the proper type (110)]
- expected: FAIL
-
- [Window interface: window must inherit property "onstorage" with the proper type (111)]
- expected: FAIL
-
- [Window interface: window must inherit property "onunhandledrejection" with the proper type (112)]
- expected: FAIL
-
- [Window interface: window must inherit property "onunload" with the proper type (113)]
- expected: FAIL
-
- [Window interface: window must inherit property "origin" with the proper type (114)]
- expected: FAIL
-
- [Window interface: window must inherit property "btoa" with the proper type (115)]
- expected: FAIL
-
- [Window interface: window must inherit property "atob" with the proper type (116)]
- expected: FAIL
-
- [Window interface: window must inherit property "setTimeout" with the proper type (117)]
- expected: FAIL
-
- [Window interface: calling setTimeout(TimerHandler,long,any) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "clearTimeout" with the proper type (118)]
- expected: FAIL
-
- [Window interface: window must inherit property "setInterval" with the proper type (119)]
- expected: FAIL
-
- [Window interface: calling setInterval(TimerHandler,long,any) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "clearInterval" with the proper type (120)]
- expected: FAIL
-
- [Window interface: window must inherit property "createImageBitmap" with the proper type (121)]
- expected: FAIL
-
- [Window interface: window must inherit property "sessionStorage" with the proper type (123)]
- expected: FAIL
-
- [Window interface: window must inherit property "localStorage" with the proper type (124)]
- expected: FAIL
-
- [WebSocket interface: operation close(unsigned short,USVString)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "url" with the proper type (0)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "CONNECTING" with the proper type (1)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "OPEN" with the proper type (2)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "CLOSING" with the proper type (3)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "CLOSED" with the proper type (4)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "readyState" with the proper type (5)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "bufferedAmount" with the proper type (6)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "onopen" with the proper type (7)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "onerror" with the proper type (8)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "onclose" with the proper type (9)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "protocol" with the proper type (11)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "close" with the proper type (12)]
- expected: FAIL
-
- [WebSocket interface: calling close(unsigned short,USVString) on new WebSocket("ws://foo") with too few arguments must throw TypeError]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "onmessage" with the proper type (13)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "binaryType" with the proper type (14)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "send" with the proper type (15)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "send" with the proper type (16)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "send" with the proper type (17)]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "send" with the proper type (18)]
- expected: FAIL
-
- [MessagePort interface: attribute onmessageerror]
- expected: FAIL
-
- [BroadcastChannel interface: attribute onmessageerror]
- expected: FAIL
-
- [Worker interface: operation postMessage(any,[object Object\])]
- expected: FAIL
-
- [Storage interface: operation setItem(DOMString,DOMString)]
- expected: FAIL
-
- [Stringification of document.createElement("applet")]
- expected: FAIL
-
- [HTMLAppletElement interface: document.createElement("applet") must inherit property "name" with the proper type (7)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: attribute onmessageerror]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onafterprint" with the proper type (2)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeprint" with the proper type (3)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onbeforeunload" with the proper type (4)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onhashchange" with the proper type (5)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onlanguagechange" with the proper type (6)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessage" with the proper type (7)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessageerror" with the proper type (8)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onoffline" with the proper type (9)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "ononline" with the proper type (10)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpagehide" with the proper type (11)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpageshow" with the proper type (12)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onpopstate" with the proper type (13)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onrejectionhandled" with the proper type (14)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onstorage" with the proper type (15)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunhandledrejection" with the proper type (16)]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onunload" with the proper type (17)]
- expected: FAIL
-
- [HTMLFontElement interface: document.createElement("font") must inherit property "color" with the proper type (0)]
- expected: FAIL
-
- [HTMLFontElement interface: document.createElement("font") must inherit property "face" with the proper type (1)]
- expected: FAIL
-
- [HTMLFontElement interface: document.createElement("font") must inherit property "size" with the proper type (2)]
- expected: FAIL
-
- [Document interface: operation execCommand(DOMString, boolean, DOMString)]
- expected: FAIL
-
- [Document interface: attribute onsecuritypolicyviolation]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "dir" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "designMode" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: calling execCommand(DOMString, boolean, DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandEnabled(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandState(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandSupported(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "queryCommandValue(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "all" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onauxclick" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onloadend" with the proper type]
- expected: FAIL
-
- [Document interface: iframe.contentDocument must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "dir" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "designMode" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: calling execCommand(DOMString, boolean, DOMString) on new Document() with too few arguments must throw TypeError]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandEnabled(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandState(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandSupported(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "queryCommandValue(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "linkColor" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "vlinkColor" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "alinkColor" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "all" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onauxclick" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onloadend" with the proper type]
- expected: FAIL
-
- [Document interface: new Document() must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "dir" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "designMode" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: calling execCommand(DOMString, boolean, 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 "queryCommandEnabled(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandState(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandSupported(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandValue(DOMString)" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "linkColor" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "vlinkColor" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "alinkColor" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onauxclick" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onloadend" with the proper type]
- expected: FAIL
-
- [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
- [HTMLAllCollection interface: document.all must inherit property "length" with the proper type]
- expected: FAIL
-
- [HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLAllCollection interface: document.all must inherit property "item(DOMString)" with the proper type]
- expected: FAIL
-
- [DOMStringList interface: existence and properties of interface object]
- expected: FAIL
-
- [DOMStringList interface object length]
- expected: FAIL
-
- [DOMStringList interface object name]
- expected: FAIL
-
- [DOMStringList interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [DOMStringList interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [DOMStringList interface: attribute length]
- expected: FAIL
-
- [DOMStringList interface: operation item(unsigned long)]
- expected: FAIL
-
- [DOMStringList interface: operation contains(DOMString)]
- expected: FAIL
-
- [HTMLElement interface: attribute onsecuritypolicyviolation]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "dir" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onloadend" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type]
- expected: FAIL
-
- [HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type]
- expected: FAIL
-
- [HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type]
- expected: FAIL
-
- [HTMLLinkElement interface: attribute scope]
- expected: FAIL
-
- [HTMLLinkElement interface: attribute workerType]
- expected: FAIL
-
- [HTMLLinkElement interface: attribute updateViaCache]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "as" with the proper type]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "nonce" with the proper type]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "scope" with the proper type]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "workerType" with the proper type]
- expected: FAIL
-
- [HTMLLinkElement interface: document.createElement("link") must inherit property "updateViaCache" with the proper type]
- expected: FAIL
-
- [HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type]
- expected: FAIL
-
- [HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type]
- expected: FAIL
-
- [HTMLStyleElement interface: document.createElement("style") must inherit property "media" with the proper type]
- expected: FAIL
-
- [HTMLStyleElement interface: document.createElement("style") must inherit property "nonce" with the proper type]
- expected: FAIL
-
- [HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type]
- expected: FAIL
-
- [HTMLBodyElement interface: document.createElement("body") must inherit property "link" with the proper type]
- expected: FAIL
-
- [HTMLBodyElement interface: document.createElement("body") must inherit property "vLink" with the proper type]
- expected: FAIL
-
- [HTMLBodyElement interface: document.createElement("body") must inherit property "aLink" with the proper type]
- expected: FAIL
-
- [HTMLBodyElement interface: document.createElement("body") must inherit property "onmessageerror" with the proper type]
- expected: FAIL
-
- [HTMLHeadingElement interface: document.createElement("h1") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type]
- expected: FAIL
-
- [HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type]
- expected: FAIL
-
- [HTMLPreElement interface: document.createElement("pre") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLPreElement interface: document.createElement("listing") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLQuoteElement interface: document.createElement("blockquote") must inherit property "cite" with the proper type]
- expected: FAIL
-
- [HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type]
- expected: FAIL
-
- [HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type]
- expected: FAIL
-
- [HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "download" with the proper type]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "type" with the proper type]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type]
- expected: FAIL
-
- [HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type]
- expected: FAIL
-
- [HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type]
- expected: FAIL
-
- [HTMLModElement interface: document.createElement("ins") must inherit property "cite" with the proper type]
- expected: FAIL
-
- [HTMLModElement interface: document.createElement("ins") must inherit property "dateTime" with the proper type]
- expected: FAIL
-
- [HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type]
- expected: FAIL
-
- [HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "src" with the proper type]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "type" with the proper type]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "srcset" with the proper type]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "sizes" with the proper type]
- expected: FAIL
-
- [HTMLSourceElement interface: document.createElement("source") must inherit property "media" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: operation decode()]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "srcset" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "decode()" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "decode()" with the proper type]
- expected: FAIL
-
- [HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "src" with the proper type]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "type" with the proper type]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument()" with the proper type]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: operation getSVGDocument()]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "typeMustMatch" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "name" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "contentDocument" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "contentWindow" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "getSVGDocument()" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type]
- expected: FAIL
-
- [HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type]
- expected: FAIL
-
- [HTMLParamElement interface: document.createElement("param") must inherit property "name" with the proper type]
- expected: FAIL
-
- [HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type]
- expected: FAIL
-
- [HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type]
- expected: FAIL
-
- [HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type]
- expected: FAIL
-
- [HTMLVideoElement interface: attribute playsInline]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "videoWidth" with the proper type]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "videoHeight" with the proper type]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "poster" with the proper type]
- expected: FAIL
-
- [HTMLVideoElement interface: document.createElement("video") must inherit property "playsInline" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "crossOrigin" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "buffered" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "seeking" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "currentTime" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "fastSeek(double)" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "duration" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate()" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "defaultPlaybackRate" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "playbackRate" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "played" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "ended" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "loop" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "controls" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "volume" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "muted" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "defaultMuted" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "audioTracks" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("video") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "crossOrigin" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "buffered" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "seeking" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "currentTime" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "fastSeek(double)" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "duration" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate()" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultPlaybackRate" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "playbackRate" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "played" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "ended" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "loop" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "controls" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "volume" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "muted" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultMuted" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "audioTracks" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "textTracks" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: document.createElement("audio") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("audio") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "error" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "src" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "currentSrc" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "crossOrigin" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_EMPTY" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_IDLE" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_LOADING" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_NO_SOURCE" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "networkState" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "preload" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "buffered" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "load()" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "canPlayType(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_NOTHING" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_METADATA" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_CURRENT_DATA" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_FUTURE_DATA" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "HAVE_ENOUGH_DATA" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "readyState" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "seeking" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "currentTime" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "fastSeek(double)" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "duration" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "getStartDate()" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "paused" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "defaultPlaybackRate" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "playbackRate" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "played" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "ended" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "autoplay" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "loop" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "play()" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "pause()" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "controls" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "volume" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "muted" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "defaultMuted" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "audioTracks" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "videoTracks" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: new Audio() must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on new Audio() with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "kind" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "src" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "srclang" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "label" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "default" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "NONE" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "LOADING" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "LOADED" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "ERROR" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "readyState" with the proper type]
- expected: FAIL
-
- [HTMLTrackElement interface: document.createElement("track") must inherit property "track" with the proper type]
- expected: FAIL
-
- [HTMLMediaElement interface: operation addTextTrack(TextTrackKind, DOMString, DOMString)]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "length" with the proper type]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "getTrackById(DOMString)" with the proper type]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "onchange" with the proper type]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "onaddtrack" with the proper type]
- expected: FAIL
-
- [TextTrackList interface: document.createElement("video").textTracks must inherit property "onremovetrack" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "kind" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "label" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "language" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "id" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "inBandMetadataTrackDispatchType" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "mode" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "cues" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "activeCues" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "addCue(TextTrackCue)" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "removeCue(TextTrackCue)" with the proper type]
- expected: FAIL
-
- [TextTrack interface: document.createElement("track").track must inherit property "oncuechange" with the proper type]
- expected: FAIL
-
- [TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "length" with the proper type]
- expected: FAIL
-
- [TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "getCueById(DOMString)" with the proper type]
- expected: FAIL
-
- [TimeRanges interface: document.createElement("video").buffered must inherit property "length" with the proper type]
- expected: FAIL
-
- [TimeRanges interface: document.createElement("video").buffered must inherit property "start(unsigned long)" with the proper type]
- expected: FAIL
-
- [TimeRanges interface: document.createElement("video").buffered must inherit property "end(unsigned long)" with the proper type]
- expected: FAIL
-
- [TrackEvent interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "track" with the proper type]
- expected: FAIL
-
- [HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type]
- expected: FAIL
-
- [HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "alt" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "coords" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "shape" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "target" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "download" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "ping" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "rel" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type]
- expected: FAIL
-
- [HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type]
- expected: FAIL
-
- [HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type]
- expected: FAIL
-
- [HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "span" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "ch" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "chOff" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "vAlign" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "span" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "ch" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type]
- expected: FAIL
-
- [HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "ch" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "chOff" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "vAlign" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "ch" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "chOff" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "vAlign" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type]
- expected: FAIL
-
- [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type]
- expected: FAIL
-
- [HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableRowElement interface: document.createElement("tr") must inherit property "ch" with the proper type]
- expected: FAIL
-
- [HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type]
- expected: FAIL
-
- [HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "headers" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "scope" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "headers" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "scope" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type]
- expected: FAIL
-
- [HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type]
- expected: FAIL
-
- [HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: attribute files]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "files" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "list" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "valueAsDate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "valueAsNumber" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "stepUp(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "stepDown(long)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type]
- expected: FAIL
-
- [HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "required" with the proper type]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLSelectElement interface: document.createElement("select") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type]
- expected: FAIL
-
- [HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "disabled" with the proper type]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "form" with the proper type]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "label" with the proper type]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "defaultSelected" with the proper type]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "selected" with the proper type]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "value" with the proper type]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "text" with the proper type]
- expected: FAIL
-
- [HTMLOptionElement interface: new Option() must inherit property "index" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autocomplete" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autofocus" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "dirName" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "maxLength" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "minLength" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "textLength" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validity" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "htmlFor" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "name" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "type" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "defaultValue" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "value" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "willValidate" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "validationMessage" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "checkValidity()" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "reportValidity()" with the proper type]
- expected: FAIL
-
- [HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity(DOMString)" with the proper type]
- expected: FAIL
-
- [HTMLProgressElement interface: document.createElement("progress") must inherit property "value" with the proper type]
- expected: FAIL
-
- [HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type]
- expected: FAIL
-
- [HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "value" with the proper type]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "min" with the proper type]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "max" with the proper type]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "low" with the proper type]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type]
- expected: FAIL
-
- [HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type]
- expected: FAIL
-
- [HTMLLegendElement interface: document.createElement("legend") must inherit property "align" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "valueMissing" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "typeMismatch" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "patternMismatch" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "tooLong" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "tooShort" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "rangeUnderflow" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "rangeOverflow" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "stepMismatch" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "badInput" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "customError" with the proper type]
- expected: FAIL
-
- [ValidityState interface: document.createElement("input").validity must inherit property "valid" with the proper type]
- expected: FAIL
-
- [HTMLScriptElement interface: document.createElement("script") must inherit property "noModule" with the proper type]
- expected: FAIL
-
- [HTMLScriptElement interface: document.createElement("script") must inherit property "nonce" with the proper type]
- expected: FAIL
-
- [HTMLSlotElement interface: document.createElement("slot") must inherit property "name" with the proper type]
- expected: FAIL
-
- [HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedNodes(AssignedNodesOptions)" with the proper type]
- expected: FAIL
-
- [HTMLCanvasElement interface: operation toBlob(BlobCallback, DOMString, any)]
- expected: FAIL
-
- [HTMLCanvasElement interface: operation transferControlToOffscreen()]
- expected: FAIL
-
- [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, DOMString, any)" with the proper type]
- expected: FAIL
-
- [HTMLCanvasElement interface: calling toBlob(BlobCallback, DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError]
- expected: FAIL
-
- [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "transferControlToOffscreen()" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation setTransform(DOMMatrix2DInit)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Path2D, Element)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getTransform()" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingQuality" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "filter" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "resetClip()" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke(unrestricted double, unrestricted double)" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling isPointInStroke(unrestricted double, unrestricted double) 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 "isPointInStroke(Path2D, unrestricted double, unrestricted double)" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling isPointInStroke(Path2D, unrestricted double, unrestricted double) 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(Element)" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "drawFocusIfNeeded(Path2D, Element)" with the proper type]
- 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]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView(Path2D)" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling fillText(DOMString, unrestricted double, unrestricted double, unrestricted double) 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 "strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: calling strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double) 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 "measureText(DOMString)" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "setLineDash([object Object\])" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getLineDash()" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineDashOffset" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "font" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textAlign" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textBaseline" with the proper type]
- expected: FAIL
-
- [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type]
- expected: FAIL
-
- [CanvasPattern interface: operation setTransform(DOMMatrix2DInit)]
- expected: FAIL
-
- [Path2D interface: operation addPath(Path2D, DOMMatrix2DInit)]
- expected: FAIL
-
- [Path2D interface: operation moveTo(unrestricted double, unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation lineTo(unrestricted double, unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [Path2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
- expected: FAIL
-
- [Path2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
- expected: FAIL
-
- [ImageBitmapRenderingContext interface: existence and properties of interface object]
- expected: FAIL
-
- [ImageBitmapRenderingContext interface object length]
- expected: FAIL
-
- [ImageBitmapRenderingContext interface object name]
- expected: FAIL
-
- [ImageBitmapRenderingContext interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [ImageBitmapRenderingContext interface: attribute canvas]
- expected: FAIL
-
- [ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap)]
- expected: FAIL
-
- [OffscreenCanvas interface: existence and properties of interface object]
- expected: FAIL
-
- [OffscreenCanvas interface object length]
- expected: FAIL
-
- [OffscreenCanvas interface object name]
- expected: FAIL
-
- [OffscreenCanvas interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [OffscreenCanvas interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [OffscreenCanvas interface: attribute width]
- expected: FAIL
-
- [OffscreenCanvas interface: attribute height]
- expected: FAIL
-
- [OffscreenCanvas interface: operation getContext(OffscreenRenderingContextType, any)]
- expected: FAIL
-
- [OffscreenCanvas interface: operation transferToImageBitmap()]
- expected: FAIL
-
- [OffscreenCanvas interface: operation convertToBlob(ImageEncodeOptions)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: existence and properties of interface object]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface object length]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface object name]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation commit()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute canvas]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation save()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation restore()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation rotate(unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation getTransform()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation setTransform(DOMMatrix2DInit)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation resetTransform()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute globalAlpha]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute globalCompositeOperation]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingEnabled]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute strokeStyle]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute fillStyle]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetX]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetY]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute shadowBlur]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute shadowColor]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute filter]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation beginPath()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation fill(CanvasFillRule)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, CanvasFillRule)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation stroke()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation clip(CanvasFillRule)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, CanvasFillRule)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation resetClip()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, CanvasFillRule)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, CanvasFillRule)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation createImageData(ImageData)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation getImageData(long, long, long, long)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute lineWidth]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute lineCap]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute lineJoin]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute miterLimit]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation setLineDash([object Object\])]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation getLineDash()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: attribute lineDashOffset]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation closePath()]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
- expected: FAIL
-
- [CustomElementRegistry interface: operation whenDefined(DOMString)]
- expected: FAIL
-
- [DataTransfer interface: operation setDragImage(Element, long, long)]
- expected: FAIL
-
- [DataTransfer interface: operation setData(DOMString, DOMString)]
- expected: FAIL
-
- [DataTransferItemList interface: operation add(DOMString, DOMString)]
- expected: FAIL
-
- [Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError]
- expected: FAIL
-
- [Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError]
- expected: FAIL
-
- [Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false]
- expected: FAIL
-
- [Window interface: operation open(USVString, DOMString, DOMString)]
- expected: FAIL
-
- [Window interface: operation prompt(DOMString, DOMString)]
- expected: FAIL
-
- [Window interface: attribute onsecuritypolicyviolation]
- expected: FAIL
-
- [Window interface: operation createImageBitmap(ImageBitmapSource, ImageBitmapOptions)]
- expected: FAIL
-
- [Window interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)]
- expected: FAIL
-
- [Window interface: internal [[SetPrototypeOf\]\] method of global platform object - setting to its original value via Object.setPrototypeOf should not throw]
- expected: FAIL
-
- [Window interface: internal [[SetPrototypeOf\]\] method of global platform object - setting to its original value via __proto__ should not throw]
- expected: FAIL
-
- [Window interface: internal [[SetPrototypeOf\]\] method of global platform object - setting to its original value via Reflect.setPrototypeOf should return true]
- expected: FAIL
-
- [Window interface: window must inherit property "self" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "locationbar" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "menubar" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "personalbar" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "scrollbars" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "statusbar" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "toolbar" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "stop()" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "focus()" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "blur()" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "frames" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "length" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "opener" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "parent" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "open(USVString, DOMString, DOMString)" with the proper type]
- expected: FAIL
-
- [Window interface: calling open(USVString, DOMString, DOMString) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "applicationCache" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "confirm(DOMString)" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "prompt(DOMString, DOMString)" with the proper type]
- expected: FAIL
-
- [Window interface: calling prompt(DOMString, DOMString) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "print()" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "external" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "onauxclick" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "onloadend" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "onmessageerror" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "origin" with the proper type]
- expected: FAIL
-
- [Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, ImageBitmapOptions)" with the proper type]
- expected: FAIL
-
- [Window interface: calling createImageBitmap(ImageBitmapSource, ImageBitmapOptions) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)" with the proper type]
- expected: FAIL
-
- [Window interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [History interface: window.history must inherit property "scrollRestoration" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "UNCACHED" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "IDLE" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "CHECKING" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "DOWNLOADING" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "UPDATEREADY" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "OBSOLETE" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "status" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "update()" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "abort()" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "swapCache()" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onchecking" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onerror" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onnoupdate" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "ondownloading" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onprogress" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onupdateready" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "oncached" with the proper type]
- expected: FAIL
-
- [ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type]
- expected: FAIL
-
- [PromiseRejectionEvent interface: existence and properties of interface object]
- expected: FAIL
-
- [PromiseRejectionEvent interface object length]
- expected: FAIL
-
- [PromiseRejectionEvent interface object name]
- expected: FAIL
-
- [PromiseRejectionEvent interface: existence and properties of interface prototype object]
- expected: FAIL
-
- [PromiseRejectionEvent interface: existence and properties of interface prototype object's "constructor" property]
- expected: FAIL
-
- [PromiseRejectionEvent interface: attribute promise]
- expected: FAIL
-
- [PromiseRejectionEvent interface: attribute reason]
- expected: FAIL
-
- [Navigator interface: attribute oscpu]
- expected: FAIL
-
- [Navigator interface: operation registerProtocolHandler(DOMString, USVString, DOMString)]
- expected: FAIL
-
- [Navigator interface: operation unregisterProtocolHandler(DOMString, USVString)]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "productSub" with the proper type]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "vendor" with the proper type]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "vendorSub" with the proper type]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "oscpu" with the proper type]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "languages" with the proper type]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "onLine" with the proper type]
- expected: FAIL
-
- [Navigator interface: window.navigator must inherit property "registerProtocolHandler(DOMString, USVString, DOMString)" with the proper type]
- 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 "unregisterProtocolHandler(DOMString, USVString)" with the proper type]
- 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 "hardwareConcurrency" with the proper type]
- expected: FAIL
-
- [ImageBitmap interface: operation close()]
- expected: FAIL
-
- [MessageEvent interface: operation initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\])]
- expected: FAIL
-
- [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type]
- expected: FAIL
-
- [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type]
- expected: FAIL
-
- [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\])" with the proper type]
- expected: FAIL
-
- [MessageEvent interface: calling initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError]
- expected: FAIL
-
- [WebSocket interface: new WebSocket("ws://foo") must inherit property "extensions" with the proper type]
- expected: FAIL
-
- [MessagePort interface: operation postMessage(any, [object Object\])]
- expected: FAIL
-
- [Worker interface: attribute onmessageerror]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "behavior" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "bgColor" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "direction" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "height" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "loop" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollAmount" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollDelay" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start()" with the proper type]
- expected: FAIL
-
- [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop()" with the proper type]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type]
- expected: FAIL
-
- [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessageerror" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "name" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "scrolling" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "src" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "frameBorder" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "longDesc" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "noResize" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "contentDocument" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type]
- expected: FAIL
-
- [HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type]
- expected: FAIL
-
- [HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type]
- expected: FAIL
-
- [External interface: window.external must inherit property "AddSearchProvider()" with the proper type]
- expected: FAIL
-
- [External interface: window.external must inherit property "IsSearchProviderInstalled()" with the proper type]
- expected: FAIL
-
- [HTMLIFrameElement interface: attribute delegateStickyUserActivation]
- expected: FAIL
-
- [History interface: attribute index]
- expected: FAIL
-
- [History interface: window.history must inherit property "index" with the proper type]
- expected: FAIL
-
- [HTMLElement interface: attribute inputMode]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "inputMode" with the proper type]
- expected: FAIL
-
- [HTMLSlotElement interface: operation assignedElements(AssignedNodesOptions)]
- expected: FAIL
-
- [HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(AssignedNodesOptions)" with the proper type]
- expected: FAIL
-
- [HTMLSlotElement interface: calling assignedElements(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError]
- expected: FAIL
-
- [OffscreenCanvas interface: operation getContext(OffscreenRenderingContextId, any)]
- expected: FAIL
-
- [HTMLAllCollection interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [DOMStringList interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [HTMLMenuElement interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [AudioTrackList interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [AudioTrack interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [VideoTrackList interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [VideoTrack interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [TextTrackList interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [TextTrack interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [TextTrackCueList interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [TextTrackCue interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [TimeRanges interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [TrackEvent interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [HTMLSlotElement interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [TextMetrics interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [Path2D interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [DataTransfer interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [DataTransferItemList interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [DataTransferItem interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [DragEvent interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [BarProp interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [ApplicationCache interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [PromiseRejectionEvent interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [MessageChannel interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [MessagePort interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [BroadcastChannel interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [SharedWorker interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [HTMLMarqueeElement interface: existence and properties of interface prototype object's @@unscopables property]
- expected: FAIL
-
- [SVGElement interface: attribute dataset]
- expected: FAIL
-
- [SVGElement interface: attribute nonce]
- expected: FAIL
-
- [SVGElement interface: attribute tabIndex]
- expected: FAIL
-
- [SVGElement interface: operation focus(FocusOptions)]
- expected: FAIL
-
- [SVGElement interface: operation blur()]
- expected: FAIL
-
- [HTMLElement interface: attribute nonce]
- expected: FAIL
-
- [HTMLElement interface: document.createElement("noscript") must inherit property "nonce" with the proper type]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/dom/interfaces.https.html.ini b/tests/wpt/metadata/html/dom/interfaces.https.html.ini
new file mode 100644
index 00000000000..c14ad62a925
--- /dev/null
+++ b/tests/wpt/metadata/html/dom/interfaces.https.html.ini
@@ -0,0 +1,5749 @@
+[interfaces.https.html]
+ [Document interface: attribute dir]
+ expected: FAIL
+
+ [Document interface: attribute designMode]
+ expected: FAIL
+
+ [Document interface: operation execCommand(DOMString, boolean, DOMString)]
+ expected: FAIL
+
+ [Document interface: operation queryCommandEnabled(DOMString)]
+ expected: FAIL
+
+ [Document interface: operation queryCommandIndeterm(DOMString)]
+ expected: FAIL
+
+ [Document interface: operation queryCommandState(DOMString)]
+ expected: FAIL
+
+ [Document interface: operation queryCommandSupported(DOMString)]
+ expected: FAIL
+
+ [Document interface: operation queryCommandValue(DOMString)]
+ expected: FAIL
+
+ [Document interface: attribute linkColor]
+ expected: FAIL
+
+ [Document interface: attribute vlinkColor]
+ expected: FAIL
+
+ [Document interface: attribute alinkColor]
+ expected: FAIL
+
+ [Document interface: attribute all]
+ expected: FAIL
+
+ [Document interface: attribute onauxclick]
+ expected: FAIL
+
+ [Document interface: attribute onloadend]
+ expected: FAIL
+
+ [Document interface: attribute onsecuritypolicyviolation]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must have own property "location"]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "dir" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "defaultView" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "designMode" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling execCommand(DOMString, boolean, DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandEnabled(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandEnabled(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandIndeterm(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandState(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandState(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandSupported(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandSupported(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "queryCommandValue(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandValue(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "linkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "vlinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "alinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "all" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "onloadend" with the proper type]
+ expected: FAIL
+
+ [Document interface: iframe.contentDocument must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must have own property "location"]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "dir" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "designMode" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling execCommand(DOMString, boolean, DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandEnabled(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandEnabled(DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandIndeterm(DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandState(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandState(DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandSupported(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandSupported(DOMString) on new Document() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "queryCommandValue(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandValue(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]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "vlinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "alinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "all" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "onloadend" with the proper type]
+ expected: FAIL
+
+ [Document interface: new Document() must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must have own property "location"]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "dir" with the proper type]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "designMode" with the proper type]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling execCommand(DOMString, boolean, 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 "queryCommandEnabled(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandEnabled(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 "queryCommandIndeterm(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandIndeterm(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 "queryCommandState(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandState(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 "queryCommandSupported(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandSupported(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 "queryCommandValue(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Document interface: calling queryCommandValue(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]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "vlinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "alinkColor" with the proper type]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "all" with the proper type]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onloadend" with the proper type]
+ expected: FAIL
+
+ [Document interface: document.implementation.createDocument(null, "", null) must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [SVGElement interface: attribute dataset]
+ expected: FAIL
+
+ [SVGElement interface: attribute nonce]
+ expected: FAIL
+
+ [SVGElement interface: attribute tabIndex]
+ expected: FAIL
+
+ [SVGElement interface: operation focus(FocusOptions)]
+ expected: FAIL
+
+ [SVGElement interface: operation blur()]
+ expected: FAIL
+
+ [HTMLAllCollection interface: existence and properties of interface object]
+ expected: FAIL
+
+ [HTMLAllCollection interface object length]
+ expected: FAIL
+
+ [HTMLAllCollection interface object name]
+ expected: FAIL
+
+ [HTMLAllCollection interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [HTMLAllCollection interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [HTMLAllCollection interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [HTMLAllCollection interface: attribute length]
+ expected: FAIL
+
+ [HTMLAllCollection interface: operation namedItem(DOMString)]
+ expected: FAIL
+
+ [HTMLAllCollection interface: operation item(DOMString)]
+ expected: FAIL
+
+ [HTMLAllCollection must be primary interface of document.all]
+ expected: FAIL
+
+ [Stringification of document.all]
+ expected: FAIL
+
+ [HTMLAllCollection interface: document.all must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [HTMLAllCollection interface: document.all must inherit property "namedItem(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLAllCollection interface: calling namedItem(DOMString) on document.all with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLAllCollection interface: document.all must inherit property "item(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLAllCollection interface: calling item(DOMString) on document.all with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DOMStringList interface object length]
+ expected: FAIL
+
+ [DOMStringList interface object name]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DOMStringList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DOMStringList interface: attribute length]
+ expected: FAIL
+
+ [DOMStringList interface: operation item(unsigned long)]
+ expected: FAIL
+
+ [DOMStringList interface: operation contains(DOMString)]
+ expected: FAIL
+
+ [HTMLElement interface: attribute translate]
+ expected: FAIL
+
+ [HTMLElement interface: attribute dir]
+ expected: FAIL
+
+ [HTMLElement interface: attribute accessKey]
+ expected: FAIL
+
+ [HTMLElement interface: attribute accessKeyLabel]
+ expected: FAIL
+
+ [HTMLElement interface: attribute draggable]
+ expected: FAIL
+
+ [HTMLElement interface: attribute spellcheck]
+ expected: FAIL
+
+ [HTMLElement interface: attribute onauxclick]
+ expected: FAIL
+
+ [HTMLElement interface: attribute onloadend]
+ expected: FAIL
+
+ [HTMLElement interface: attribute onsecuritypolicyviolation]
+ expected: FAIL
+
+ [HTMLElement interface: attribute contentEditable]
+ expected: FAIL
+
+ [HTMLElement interface: attribute isContentEditable]
+ expected: FAIL
+
+ [HTMLElement interface: attribute inputMode]
+ expected: FAIL
+
+ [HTMLElement interface: attribute nonce]
+ expected: FAIL
+
+ [HTMLElement interface: attribute tabIndex]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "dir" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "accessKey" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "accessKeyLabel" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "draggable" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "spellcheck" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "onloadend" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "contentEditable" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "isContentEditable" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "inputMode" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "nonce" with the proper type]
+ expected: FAIL
+
+ [HTMLElement interface: document.createElement("noscript") must inherit property "tabIndex" with the proper type]
+ expected: FAIL
+
+ [HTMLHtmlElement interface: attribute version]
+ expected: FAIL
+
+ [HTMLHtmlElement interface: document.createElement("html") must inherit property "version" with the proper type]
+ expected: FAIL
+
+ [HTMLBaseElement interface: attribute target]
+ expected: FAIL
+
+ [HTMLBaseElement interface: document.createElement("base") must inherit property "target" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute as]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute relList]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute sizes]
+ expected: FAIL
+
+ [HTMLLinkElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLLinkElement interface: document.createElement("link") must inherit property "as" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: document.createElement("link") must inherit property "sizes" with the proper type]
+ expected: FAIL
+
+ [HTMLLinkElement interface: document.createElement("link") must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLMetaElement interface: attribute httpEquiv]
+ expected: FAIL
+
+ [HTMLMetaElement interface: attribute scheme]
+ expected: FAIL
+
+ [HTMLMetaElement interface: document.createElement("meta") must inherit property "httpEquiv" with the proper type]
+ expected: FAIL
+
+ [HTMLMetaElement interface: document.createElement("meta") must inherit property "scheme" with the proper type]
+ expected: FAIL
+
+ [HTMLStyleElement interface: attribute media]
+ expected: FAIL
+
+ [HTMLStyleElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLStyleElement interface: document.createElement("style") must inherit property "media" with the proper type]
+ expected: FAIL
+
+ [HTMLStyleElement interface: document.createElement("style") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLBodyElement interface: attribute link]
+ expected: FAIL
+
+ [HTMLBodyElement interface: attribute vLink]
+ expected: FAIL
+
+ [HTMLBodyElement interface: attribute aLink]
+ expected: FAIL
+
+ [HTMLBodyElement interface: attribute onmessageerror]
+ expected: FAIL
+
+ [HTMLBodyElement interface: document.createElement("body") must inherit property "link" with the proper type]
+ expected: FAIL
+
+ [HTMLBodyElement interface: document.createElement("body") must inherit property "vLink" with the proper type]
+ expected: FAIL
+
+ [HTMLBodyElement interface: document.createElement("body") must inherit property "aLink" with the proper type]
+ expected: FAIL
+
+ [HTMLBodyElement interface: document.createElement("body") must inherit property "onmessageerror" with the proper type]
+ expected: FAIL
+
+ [HTMLHeadingElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLHeadingElement interface: document.createElement("h1") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLParagraphElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLParagraphElement interface: document.createElement("p") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLHRElement interface: attribute noShade]
+ expected: FAIL
+
+ [HTMLHRElement interface: attribute size]
+ expected: FAIL
+
+ [HTMLHRElement interface: document.createElement("hr") must inherit property "noShade" with the proper type]
+ expected: FAIL
+
+ [HTMLHRElement interface: document.createElement("hr") must inherit property "size" with the proper type]
+ expected: FAIL
+
+ [HTMLPreElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLPreElement interface: document.createElement("pre") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLPreElement interface: document.createElement("listing") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLPreElement interface: document.createElement("xmp") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLQuoteElement interface: attribute cite]
+ expected: FAIL
+
+ [HTMLQuoteElement interface: document.createElement("blockquote") must inherit property "cite" with the proper type]
+ expected: FAIL
+
+ [HTMLQuoteElement interface: document.createElement("q") must inherit property "cite" with the proper type]
+ expected: FAIL
+
+ [HTMLOListElement interface: attribute reversed]
+ expected: FAIL
+
+ [HTMLOListElement interface: attribute start]
+ expected: FAIL
+
+ [HTMLOListElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLOListElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLUListElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLUListElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLMenuElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [HTMLMenuElement interface object length]
+ expected: FAIL
+
+ [HTMLMenuElement interface object name]
+ expected: FAIL
+
+ [HTMLMenuElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [HTMLMenuElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [HTMLMenuElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [HTMLMenuElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLMenuElement must be primary interface of document.createElement("menu")]
+ expected: FAIL
+
+ [Stringification of document.createElement("menu")]
+ expected: FAIL
+
+ [HTMLMenuElement interface: document.createElement("menu") must inherit property "compact" with the proper type]
+ expected: FAIL
+
+ [HTMLLIElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLLIElement interface: document.createElement("li") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLDListElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute download]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute ping]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute relList]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute hreflang]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: attribute charset]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "download" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "ping" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "hreflang" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLAnchorElement interface: document.createElement("a") must inherit property "charset" with the proper type]
+ expected: FAIL
+
+ [HTMLBRElement interface: attribute clear]
+ expected: FAIL
+
+ [HTMLBRElement interface: document.createElement("br") must inherit property "clear" with the proper type]
+ expected: FAIL
+
+ [HTMLModElement interface: attribute cite]
+ expected: FAIL
+
+ [HTMLModElement interface: attribute dateTime]
+ expected: FAIL
+
+ [HTMLModElement interface: document.createElement("ins") must inherit property "cite" with the proper type]
+ expected: FAIL
+
+ [HTMLModElement interface: document.createElement("ins") must inherit property "dateTime" with the proper type]
+ expected: FAIL
+
+ [HTMLModElement interface: document.createElement("del") must inherit property "cite" with the proper type]
+ expected: FAIL
+
+ [HTMLModElement interface: document.createElement("del") must inherit property "dateTime" with the proper type]
+ expected: FAIL
+
+ [HTMLSourceElement interface: attribute src]
+ expected: FAIL
+
+ [HTMLSourceElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLSourceElement interface: attribute srcset]
+ expected: FAIL
+
+ [HTMLSourceElement interface: attribute sizes]
+ expected: FAIL
+
+ [HTMLSourceElement interface: attribute media]
+ expected: FAIL
+
+ [HTMLSourceElement interface: document.createElement("source") must inherit property "src" with the proper type]
+ expected: FAIL
+
+ [HTMLSourceElement interface: document.createElement("source") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLSourceElement interface: document.createElement("source") must inherit property "srcset" with the proper type]
+ expected: FAIL
+
+ [HTMLSourceElement interface: document.createElement("source") must inherit property "sizes" with the proper type]
+ expected: FAIL
+
+ [HTMLSourceElement interface: document.createElement("source") must inherit property "media" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute srcset]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute sizes]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLImageElement interface: operation decode()]
+ expected: FAIL
+
+ [HTMLImageElement interface: attribute lowsrc]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "srcset" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "sizes" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "decode()" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: document.createElement("img") must inherit property "lowsrc" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "srcset" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "sizes" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "decode()" with the proper type]
+ expected: FAIL
+
+ [HTMLImageElement interface: new Image() must inherit property "lowsrc" with the proper type]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute srcdoc]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute allowPaymentRequest]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute allowUserMedia]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: operation getSVGDocument()]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute delegateStickyUserActivation]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute scrolling]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute longDesc]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute marginHeight]
+ expected: FAIL
+
+ [HTMLIFrameElement interface: attribute marginWidth]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute src]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: operation getSVGDocument()]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "src" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "getSVGDocument()" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLEmbedElement interface: document.createElement("embed") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute data]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute typeMustMatch]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute useMap]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute contentDocument]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute contentWindow]
+ expected: FAIL
+
+ [HTMLObjectElement interface: operation getSVGDocument()]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLObjectElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLObjectElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLObjectElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute archive]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute code]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute declare]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute hspace]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute standby]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute vspace]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute codeBase]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute codeType]
+ expected: FAIL
+
+ [HTMLObjectElement interface: attribute border]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "typeMustMatch" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "contentDocument" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "contentWindow" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "getSVGDocument()" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: calling setCustomValidity(DOMString) on document.createElement("object") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "archive" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "code" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "declare" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "hspace" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "standby" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "vspace" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "codeBase" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "codeType" with the proper type]
+ expected: FAIL
+
+ [HTMLObjectElement interface: document.createElement("object") must inherit property "border" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLParamElement interface: attribute value]
+ expected: FAIL
+
+ [HTMLParamElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLParamElement interface: attribute valueType]
+ expected: FAIL
+
+ [HTMLParamElement interface: document.createElement("param") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: document.createElement("param") must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: document.createElement("param") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLParamElement interface: document.createElement("param") must inherit property "valueType" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLVideoElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLVideoElement interface: attribute videoWidth]
+ expected: FAIL
+
+ [HTMLVideoElement interface: attribute videoHeight]
+ expected: FAIL
+
+ [HTMLVideoElement interface: attribute poster]
+ expected: FAIL
+
+ [HTMLVideoElement interface: attribute playsInline]
+ expected: FAIL
+
+ [HTMLVideoElement interface: document.createElement("video") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: document.createElement("video") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: document.createElement("video") must inherit property "videoWidth" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: document.createElement("video") must inherit property "videoHeight" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: document.createElement("video") must inherit property "poster" with the proper type]
+ expected: FAIL
+
+ [HTMLVideoElement interface: document.createElement("video") must inherit property "playsInline" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "srcObject" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "crossOrigin" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "buffered" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "seeking" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "currentTime" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "fastSeek(double)" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: calling fastSeek(double) on document.createElement("video") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "duration" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "getStartDate()" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "defaultPlaybackRate" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "playbackRate" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "played" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "seekable" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "ended" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "loop" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "controls" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "volume" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "muted" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "defaultMuted" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "audioTracks" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "videoTracks" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "textTracks" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("video") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("video") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "srcObject" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "crossOrigin" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "buffered" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "seeking" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "currentTime" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "fastSeek(double)" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: calling fastSeek(double) on document.createElement("audio") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "duration" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "getStartDate()" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultPlaybackRate" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "playbackRate" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "played" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "seekable" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "ended" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "loop" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "controls" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "volume" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "muted" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "defaultMuted" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "audioTracks" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "videoTracks" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "textTracks" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: document.createElement("audio") must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on document.createElement("audio") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLAudioElement must be primary interface of new Audio()]
+ expected: FAIL
+
+ [Stringification of new Audio()]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "error" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "src" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "srcObject" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "currentSrc" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "crossOrigin" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_EMPTY" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_IDLE" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_LOADING" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "NETWORK_NO_SOURCE" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "networkState" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "preload" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "buffered" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "load()" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "canPlayType(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: calling canPlayType(DOMString) on new Audio() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "HAVE_NOTHING" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "HAVE_METADATA" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "HAVE_CURRENT_DATA" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "HAVE_FUTURE_DATA" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "HAVE_ENOUGH_DATA" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "readyState" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "seeking" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "currentTime" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "fastSeek(double)" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: calling fastSeek(double) on new Audio() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "duration" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "getStartDate()" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "paused" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "defaultPlaybackRate" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "playbackRate" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "played" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "seekable" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "ended" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "autoplay" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "loop" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "play()" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "pause()" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "controls" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "volume" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "muted" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "defaultMuted" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "audioTracks" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "videoTracks" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "textTracks" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: new Audio() must inherit property "addTextTrack(TextTrackKind, DOMString, DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: calling addTextTrack(TextTrackKind, DOMString, DOMString) on new Audio() with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLTrackElement interface: attribute kind]
+ expected: FAIL
+
+ [HTMLTrackElement interface: attribute src]
+ expected: FAIL
+
+ [HTMLTrackElement interface: attribute srclang]
+ expected: FAIL
+
+ [HTMLTrackElement interface: attribute label]
+ expected: FAIL
+
+ [HTMLTrackElement interface: attribute default]
+ expected: FAIL
+
+ [HTMLTrackElement interface: constant NONE on interface object]
+ expected: FAIL
+
+ [HTMLTrackElement interface: constant NONE on interface prototype object]
+ expected: FAIL
+
+ [HTMLTrackElement interface: constant LOADING on interface object]
+ expected: FAIL
+
+ [HTMLTrackElement interface: constant LOADING on interface prototype object]
+ expected: FAIL
+
+ [HTMLTrackElement interface: constant LOADED on interface object]
+ expected: FAIL
+
+ [HTMLTrackElement interface: constant LOADED on interface prototype object]
+ expected: FAIL
+
+ [HTMLTrackElement interface: constant ERROR on interface object]
+ expected: FAIL
+
+ [HTMLTrackElement interface: constant ERROR on interface prototype object]
+ expected: FAIL
+
+ [HTMLTrackElement interface: attribute readyState]
+ expected: FAIL
+
+ [HTMLTrackElement interface: attribute track]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "kind" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "src" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "srclang" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "label" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "default" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "NONE" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "LOADING" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "LOADED" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "ERROR" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "readyState" with the proper type]
+ expected: FAIL
+
+ [HTMLTrackElement interface: document.createElement("track") must inherit property "track" with the proper type]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute crossOrigin]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute buffered]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute seeking]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute currentTime]
+ expected: FAIL
+
+ [HTMLMediaElement interface: operation fastSeek(double)]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute duration]
+ expected: FAIL
+
+ [HTMLMediaElement interface: operation getStartDate()]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute defaultPlaybackRate]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute playbackRate]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute played]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute seekable]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute ended]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute loop]
+ expected: FAIL
+
+ [HTMLMediaElement interface: operation play()]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute controls]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute volume]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute muted]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute defaultMuted]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute audioTracks]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute videoTracks]
+ expected: FAIL
+
+ [HTMLMediaElement interface: attribute textTracks]
+ expected: FAIL
+
+ [HTMLMediaElement interface: operation addTextTrack(TextTrackKind, DOMString, DOMString)]
+ expected: FAIL
+
+ [AudioTrackList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [AudioTrackList interface object length]
+ expected: FAIL
+
+ [AudioTrackList interface object name]
+ expected: FAIL
+
+ [AudioTrackList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [AudioTrackList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [AudioTrackList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [AudioTrackList interface: attribute length]
+ expected: FAIL
+
+ [AudioTrackList interface: operation getTrackById(DOMString)]
+ expected: FAIL
+
+ [AudioTrackList interface: attribute onchange]
+ expected: FAIL
+
+ [AudioTrackList interface: attribute onaddtrack]
+ expected: FAIL
+
+ [AudioTrackList interface: attribute onremovetrack]
+ expected: FAIL
+
+ [AudioTrack interface: existence and properties of interface object]
+ expected: FAIL
+
+ [AudioTrack interface object length]
+ expected: FAIL
+
+ [AudioTrack interface object name]
+ expected: FAIL
+
+ [AudioTrack interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [AudioTrack interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [AudioTrack interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [AudioTrack interface: attribute id]
+ expected: FAIL
+
+ [AudioTrack interface: attribute kind]
+ expected: FAIL
+
+ [AudioTrack interface: attribute label]
+ expected: FAIL
+
+ [AudioTrack interface: attribute language]
+ expected: FAIL
+
+ [AudioTrack interface: attribute enabled]
+ expected: FAIL
+
+ [VideoTrackList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [VideoTrackList interface object length]
+ expected: FAIL
+
+ [VideoTrackList interface object name]
+ expected: FAIL
+
+ [VideoTrackList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [VideoTrackList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [VideoTrackList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [VideoTrackList interface: attribute length]
+ expected: FAIL
+
+ [VideoTrackList interface: operation getTrackById(DOMString)]
+ expected: FAIL
+
+ [VideoTrackList interface: attribute selectedIndex]
+ expected: FAIL
+
+ [VideoTrackList interface: attribute onchange]
+ expected: FAIL
+
+ [VideoTrackList interface: attribute onaddtrack]
+ expected: FAIL
+
+ [VideoTrackList interface: attribute onremovetrack]
+ expected: FAIL
+
+ [VideoTrack interface: existence and properties of interface object]
+ expected: FAIL
+
+ [VideoTrack interface object length]
+ expected: FAIL
+
+ [VideoTrack interface object name]
+ expected: FAIL
+
+ [VideoTrack interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [VideoTrack interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [VideoTrack interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [VideoTrack interface: attribute id]
+ expected: FAIL
+
+ [VideoTrack interface: attribute kind]
+ expected: FAIL
+
+ [VideoTrack interface: attribute label]
+ expected: FAIL
+
+ [VideoTrack interface: attribute language]
+ expected: FAIL
+
+ [VideoTrack interface: attribute selected]
+ expected: FAIL
+
+ [TextTrackList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [TextTrackList interface object length]
+ expected: FAIL
+
+ [TextTrackList interface object name]
+ expected: FAIL
+
+ [TextTrackList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TextTrackList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [TextTrackList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextTrackList interface: attribute length]
+ expected: FAIL
+
+ [TextTrackList interface: operation getTrackById(DOMString)]
+ expected: FAIL
+
+ [TextTrackList interface: attribute onchange]
+ expected: FAIL
+
+ [TextTrackList interface: attribute onaddtrack]
+ expected: FAIL
+
+ [TextTrackList interface: attribute onremovetrack]
+ expected: FAIL
+
+ [TextTrackList must be primary interface of document.createElement("video").textTracks]
+ expected: FAIL
+
+ [Stringification of document.createElement("video").textTracks]
+ expected: FAIL
+
+ [TextTrackList interface: document.createElement("video").textTracks must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [TextTrackList interface: document.createElement("video").textTracks must inherit property "getTrackById(DOMString)" with the proper type]
+ expected: FAIL
+
+ [TextTrackList interface: calling getTrackById(DOMString) on document.createElement("video").textTracks with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [TextTrackList interface: document.createElement("video").textTracks must inherit property "onchange" with the proper type]
+ expected: FAIL
+
+ [TextTrackList interface: document.createElement("video").textTracks must inherit property "onaddtrack" with the proper type]
+ expected: FAIL
+
+ [TextTrackList interface: document.createElement("video").textTracks must inherit property "onremovetrack" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: existence and properties of interface object]
+ expected: FAIL
+
+ [TextTrack interface object length]
+ expected: FAIL
+
+ [TextTrack interface object name]
+ expected: FAIL
+
+ [TextTrack interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TextTrack interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [TextTrack interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextTrack interface: attribute kind]
+ expected: FAIL
+
+ [TextTrack interface: attribute label]
+ expected: FAIL
+
+ [TextTrack interface: attribute language]
+ expected: FAIL
+
+ [TextTrack interface: attribute id]
+ expected: FAIL
+
+ [TextTrack interface: attribute inBandMetadataTrackDispatchType]
+ expected: FAIL
+
+ [TextTrack interface: attribute mode]
+ expected: FAIL
+
+ [TextTrack interface: attribute cues]
+ expected: FAIL
+
+ [TextTrack interface: attribute activeCues]
+ expected: FAIL
+
+ [TextTrack interface: operation addCue(TextTrackCue)]
+ expected: FAIL
+
+ [TextTrack interface: operation removeCue(TextTrackCue)]
+ expected: FAIL
+
+ [TextTrack interface: attribute oncuechange]
+ expected: FAIL
+
+ [TextTrack must be primary interface of document.createElement("track").track]
+ expected: FAIL
+
+ [Stringification of document.createElement("track").track]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "kind" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "label" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "language" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "id" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "inBandMetadataTrackDispatchType" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "mode" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "cues" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "activeCues" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "addCue(TextTrackCue)" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: calling addCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "removeCue(TextTrackCue)" with the proper type]
+ expected: FAIL
+
+ [TextTrack interface: calling removeCue(TextTrackCue) on document.createElement("track").track with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [TextTrack interface: document.createElement("track").track must inherit property "oncuechange" with the proper type]
+ expected: FAIL
+
+ [TextTrackCueList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [TextTrackCueList interface object length]
+ expected: FAIL
+
+ [TextTrackCueList interface object name]
+ expected: FAIL
+
+ [TextTrackCueList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TextTrackCueList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [TextTrackCueList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextTrackCueList interface: attribute length]
+ expected: FAIL
+
+ [TextTrackCueList interface: operation getCueById(DOMString)]
+ expected: FAIL
+
+ [TextTrackCueList must be primary interface of document.createElement("video").addTextTrack("subtitles").cues]
+ expected: FAIL
+
+ [Stringification of document.createElement("video").addTextTrack("subtitles").cues]
+ expected: FAIL
+
+ [TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [TextTrackCueList interface: document.createElement("video").addTextTrack("subtitles").cues must inherit property "getCueById(DOMString)" with the proper type]
+ expected: FAIL
+
+ [TextTrackCueList interface: calling getCueById(DOMString) on document.createElement("video").addTextTrack("subtitles").cues with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [TextTrackCue interface: existence and properties of interface object]
+ expected: FAIL
+
+ [TextTrackCue interface object length]
+ expected: FAIL
+
+ [TextTrackCue interface object name]
+ expected: FAIL
+
+ [TextTrackCue interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TextTrackCue interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [TextTrackCue interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextTrackCue interface: attribute track]
+ expected: FAIL
+
+ [TextTrackCue interface: attribute id]
+ expected: FAIL
+
+ [TextTrackCue interface: attribute startTime]
+ expected: FAIL
+
+ [TextTrackCue interface: attribute endTime]
+ expected: FAIL
+
+ [TextTrackCue interface: attribute pauseOnExit]
+ expected: FAIL
+
+ [TextTrackCue interface: attribute onenter]
+ expected: FAIL
+
+ [TextTrackCue interface: attribute onexit]
+ expected: FAIL
+
+ [TimeRanges interface: existence and properties of interface object]
+ expected: FAIL
+
+ [TimeRanges interface object length]
+ expected: FAIL
+
+ [TimeRanges interface object name]
+ expected: FAIL
+
+ [TimeRanges interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TimeRanges interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [TimeRanges interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TimeRanges interface: attribute length]
+ expected: FAIL
+
+ [TimeRanges interface: operation start(unsigned long)]
+ expected: FAIL
+
+ [TimeRanges interface: operation end(unsigned long)]
+ expected: FAIL
+
+ [TimeRanges must be primary interface of document.createElement("video").buffered]
+ expected: FAIL
+
+ [Stringification of document.createElement("video").buffered]
+ expected: FAIL
+
+ [TimeRanges interface: document.createElement("video").buffered must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [TimeRanges interface: document.createElement("video").buffered must inherit property "start(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [TimeRanges interface: calling start(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [TimeRanges interface: document.createElement("video").buffered must inherit property "end(unsigned long)" with the proper type]
+ expected: FAIL
+
+ [TimeRanges interface: calling end(unsigned long) on document.createElement("video").buffered with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [TrackEvent interface: existence and properties of interface object]
+ expected: FAIL
+
+ [TrackEvent interface object length]
+ expected: FAIL
+
+ [TrackEvent interface object name]
+ expected: FAIL
+
+ [TrackEvent interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TrackEvent interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [TrackEvent interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TrackEvent interface: attribute track]
+ expected: FAIL
+
+ [TrackEvent must be primary interface of new TrackEvent("addtrack", {track:document.createElement("track").track})]
+ expected: FAIL
+
+ [Stringification of new TrackEvent("addtrack", {track:document.createElement("track").track})]
+ expected: FAIL
+
+ [TrackEvent interface: new TrackEvent("addtrack", {track:document.createElement("track").track}) must inherit property "track" with the proper type]
+ expected: FAIL
+
+ [HTMLMapElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLMapElement interface: attribute areas]
+ expected: FAIL
+
+ [HTMLMapElement interface: document.createElement("map") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLMapElement interface: document.createElement("map") must inherit property "areas" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute alt]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute coords]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute shape]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute target]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute download]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute ping]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute rel]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute relList]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute referrerPolicy]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute noHref]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute href]
+ expected: FAIL
+
+ [HTMLAreaElement interface: stringifier]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute origin]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute protocol]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute username]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute password]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute host]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute hostname]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute port]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute pathname]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute search]
+ expected: FAIL
+
+ [HTMLAreaElement interface: attribute hash]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "alt" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "coords" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "shape" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "target" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "download" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "ping" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "rel" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "referrerPolicy" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "noHref" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "href" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "origin" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "protocol" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "username" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "password" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "host" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "hostname" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "port" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "pathname" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "search" with the proper type]
+ expected: FAIL
+
+ [HTMLAreaElement interface: document.createElement("area") must inherit property "hash" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute border]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute frame]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute rules]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute summary]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute cellPadding]
+ expected: FAIL
+
+ [HTMLTableElement interface: attribute cellSpacing]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "border" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "frame" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "rules" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "summary" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "cellPadding" with the proper type]
+ expected: FAIL
+
+ [HTMLTableElement interface: document.createElement("table") must inherit property "cellSpacing" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCaptionElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLTableCaptionElement interface: document.createElement("caption") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute span]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute ch]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute chOff]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute vAlign]
+ expected: FAIL
+
+ [HTMLTableColElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "span" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("colgroup") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "span" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLTableColElement interface: document.createElement("col") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: attribute ch]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: attribute chOff]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: attribute vAlign]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tbody") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("thead") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLTableSectionElement interface: document.createElement("tfoot") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: attribute ch]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: attribute chOff]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: attribute vAlign]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: document.createElement("tr") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: document.createElement("tr") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: document.createElement("tr") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute headers]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute scope]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute abbr]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute axis]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute ch]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute chOff]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute noWrap]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: attribute vAlign]
+ expected: FAIL
+
+ [HTMLTableCellElement must be primary interface of document.createElement("td")]
+ expected: FAIL
+
+ [Stringification of document.createElement("td")]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "headers" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "scope" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "abbr" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "axis" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "noWrap" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("td") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement must be primary interface of document.createElement("th")]
+ expected: FAIL
+
+ [Stringification of document.createElement("th")]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "headers" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "scope" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "abbr" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "axis" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "ch" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "chOff" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "noWrap" with the proper type]
+ expected: FAIL
+
+ [HTMLTableCellElement interface: document.createElement("th") must inherit property "vAlign" with the proper type]
+ expected: FAIL
+
+ [HTMLFormElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLFormElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLFormElement interface: document.createElement("form") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLFormElement interface: document.createElement("form") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute autocomplete]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute autofocus]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute files]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute list]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute valueAsDate]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute valueAsNumber]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation stepUp(long)]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation stepDown(long)]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute validity]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLInputElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLInputElement interface: attribute useMap]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on document.createElement("input") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on document.createElement("input") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on document.createElement("input") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: document.createElement("input") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("text") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("text") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("text") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("text") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("hidden") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("hidden") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("hidden") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("hidden") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("search") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("search") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("search") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("search") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("tel") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("tel") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("tel") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("tel") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("url") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("url") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("url") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("url") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("email") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("email") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("email") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("email") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("password") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("password") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("password") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("password") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("date") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("date") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("date") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("date") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("month") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("month") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("month") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("month") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("week") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("week") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("week") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("week") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("time") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("time") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("time") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("time") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("datetime-local") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("datetime-local") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("datetime-local") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("datetime-local") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("number") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("number") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("number") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("number") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("range") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("range") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("range") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("range") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("color") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("color") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("color") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("color") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("checkbox") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("checkbox") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("checkbox") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("checkbox") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("radio") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("radio") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("radio") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("radio") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "files" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("file") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("file") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("file") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("file") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("submit") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("submit") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("submit") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("submit") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("image") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("image") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("image") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("image") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("reset") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("reset") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("reset") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("reset") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "list" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "valueAsDate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "valueAsNumber" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "stepUp(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepUp(long) on createInput("button") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "stepDown(long)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling stepDown(long) on createInput("button") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: calling setCustomValidity(DOMString) on createInput("button") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [HTMLInputElement interface: createInput("button") must inherit property "useMap" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: attribute autofocus]
+ expected: FAIL
+
+ [HTMLButtonElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLButtonElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLButtonElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLButtonElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLButtonElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: document.createElement("button") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLButtonElement interface: calling setCustomValidity(DOMString) on document.createElement("button") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute autocomplete]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute autofocus]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute required]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute selectedOptions]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLSelectElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLSelectElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLSelectElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLSelectElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "required" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "selectedOptions" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: document.createElement("select") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLSelectElement interface: calling setCustomValidity(DOMString) on document.createElement("select") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLOptGroupElement interface: attribute label]
+ expected: FAIL
+
+ [HTMLOptGroupElement interface: document.createElement("optgroup") must inherit property "label" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: attribute index]
+ expected: FAIL
+
+ [HTMLOptionElement interface: document.createElement("option") must inherit property "index" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement must be primary interface of new Option()]
+ expected: FAIL
+
+ [Stringification of new Option()]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "disabled" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "form" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "label" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "defaultSelected" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "selected" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "text" with the proper type]
+ expected: FAIL
+
+ [HTMLOptionElement interface: new Option() must inherit property "index" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute autocomplete]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute autofocus]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute dirName]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute maxLength]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute minLength]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute textLength]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute validity]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autocomplete" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "autofocus" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "dirName" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "maxLength" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "minLength" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "textLength" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validity" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: document.createElement("textarea") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLTextAreaElement interface: calling setCustomValidity(DOMString) on document.createElement("textarea") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute htmlFor]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute defaultValue]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute value]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLOutputElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLOutputElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLOutputElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLOutputElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "htmlFor" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "type" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "defaultValue" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "willValidate" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "validationMessage" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "checkValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "reportValidity()" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: document.createElement("output") must inherit property "setCustomValidity(DOMString)" with the proper type]
+ expected: FAIL
+
+ [HTMLOutputElement interface: calling setCustomValidity(DOMString) on document.createElement("output") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLProgressElement interface: attribute value]
+ expected: FAIL
+
+ [HTMLProgressElement interface: attribute max]
+ expected: FAIL
+
+ [HTMLProgressElement interface: attribute position]
+ expected: FAIL
+
+ [HTMLProgressElement interface: document.createElement("progress") must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLProgressElement interface: document.createElement("progress") must inherit property "max" with the proper type]
+ expected: FAIL
+
+ [HTMLProgressElement interface: document.createElement("progress") must inherit property "position" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute value]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute min]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute max]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute low]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute high]
+ expected: FAIL
+
+ [HTMLMeterElement interface: attribute optimum]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "value" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "min" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "max" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "low" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "high" with the proper type]
+ expected: FAIL
+
+ [HTMLMeterElement interface: document.createElement("meter") must inherit property "optimum" with the proper type]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: attribute type]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: attribute willValidate]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: attribute validationMessage]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: operation checkValidity()]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: operation reportValidity()]
+ expected: FAIL
+
+ [HTMLFieldSetElement interface: operation setCustomValidity(DOMString)]
+ expected: FAIL
+
+ [HTMLLegendElement interface: attribute align]
+ expected: FAIL
+
+ [HTMLLegendElement interface: document.createElement("legend") must inherit property "align" with the proper type]
+ expected: FAIL
+
+ [ValidityState must be primary interface of document.createElement("input").validity]
+ expected: FAIL
+
+ [Stringification of document.createElement("input").validity]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "valueMissing" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "typeMismatch" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "patternMismatch" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "tooLong" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "tooShort" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "rangeUnderflow" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "rangeOverflow" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "stepMismatch" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "badInput" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "customError" with the proper type]
+ expected: FAIL
+
+ [ValidityState interface: document.createElement("input").validity must inherit property "valid" with the proper type]
+ expected: FAIL
+
+ [HTMLDialogElement interface: operation show()]
+ expected: FAIL
+
+ [HTMLDialogElement interface: operation showModal()]
+ expected: FAIL
+
+ [HTMLScriptElement interface: attribute noModule]
+ expected: FAIL
+
+ [HTMLScriptElement interface: document.createElement("script") must inherit property "noModule" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [HTMLSlotElement interface object length]
+ expected: FAIL
+
+ [HTMLSlotElement interface object name]
+ expected: FAIL
+
+ [HTMLSlotElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [HTMLSlotElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [HTMLSlotElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [HTMLSlotElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLSlotElement interface: operation assignedNodes(AssignedNodesOptions)]
+ expected: FAIL
+
+ [HTMLSlotElement interface: operation assignedElements(AssignedNodesOptions)]
+ expected: FAIL
+
+ [HTMLSlotElement must be primary interface of document.createElement("slot")]
+ expected: FAIL
+
+ [Stringification of document.createElement("slot")]
+ expected: FAIL
+
+ [HTMLSlotElement interface: document.createElement("slot") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedNodes(AssignedNodesOptions)" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: calling assignedNodes(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLSlotElement interface: document.createElement("slot") must inherit property "assignedElements(AssignedNodesOptions)" with the proper type]
+ expected: FAIL
+
+ [HTMLSlotElement interface: calling assignedElements(AssignedNodesOptions) on document.createElement("slot") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: operation toBlob(BlobCallback, DOMString, any)]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: operation transferControlToOffscreen()]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "toBlob(BlobCallback, DOMString, any)" with the proper type]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: calling toBlob(BlobCallback, DOMString, any) on document.createElement("canvas") with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [HTMLCanvasElement interface: document.createElement("canvas") must inherit property "transferControlToOffscreen()" with the proper type]
+ 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(DOMMatrix2DInit)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute imageSmoothingQuality]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute filter]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation resetClip()]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Element)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation drawFocusIfNeeded(Path2D, Element)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation scrollPathIntoView()]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation scrollPathIntoView(Path2D)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation measureText(DOMString)]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation setLineDash([object Object\])]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: operation getLineDash()]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute lineDashOffset]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute font]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute textAlign]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute textBaseline]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: attribute direction]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "getTransform()" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "imageSmoothingQuality" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "filter" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "resetClip()" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "isPointInStroke(unrestricted double, unrestricted double)" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling isPointInStroke(unrestricted double, unrestricted double) 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 "isPointInStroke(Path2D, unrestricted double, unrestricted double)" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling isPointInStroke(Path2D, unrestricted double, unrestricted double) 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(Element)" with the proper type]
+ 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(Path2D, Element)" with the proper type]
+ 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]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "scrollPathIntoView(Path2D)" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling scrollPathIntoView(Path2D) 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 "fillText(DOMString, unrestricted double, unrestricted double, unrestricted double)" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling fillText(DOMString, unrestricted double, unrestricted double, unrestricted double) 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 "strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double)" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling strokeText(DOMString, unrestricted double, unrestricted double, unrestricted double) 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 "measureText(DOMString)" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling measureText(DOMString) 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 "setLineDash([object Object\])" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: calling setLineDash([object Object\]) 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 "getLineDash()" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "lineDashOffset" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "font" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textAlign" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "textBaseline" with the proper type]
+ expected: FAIL
+
+ [CanvasRenderingContext2D interface: document.createElement("canvas").getContext("2d") must inherit property "direction" with the proper type]
+ expected: FAIL
+
+ [CanvasPattern interface: operation setTransform(DOMMatrix2DInit)]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface object]
+ expected: FAIL
+
+ [TextMetrics interface object length]
+ expected: FAIL
+
+ [TextMetrics interface object name]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [TextMetrics interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [TextMetrics interface: attribute width]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxLeft]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxRight]
+ expected: FAIL
+
+ [TextMetrics interface: attribute fontBoundingBoxAscent]
+ expected: FAIL
+
+ [TextMetrics interface: attribute fontBoundingBoxDescent]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxAscent]
+ expected: FAIL
+
+ [TextMetrics interface: attribute actualBoundingBoxDescent]
+ expected: FAIL
+
+ [TextMetrics interface: attribute emHeightAscent]
+ expected: FAIL
+
+ [TextMetrics interface: attribute emHeightDescent]
+ expected: FAIL
+
+ [TextMetrics interface: attribute hangingBaseline]
+ expected: FAIL
+
+ [TextMetrics interface: attribute alphabeticBaseline]
+ expected: FAIL
+
+ [TextMetrics interface: attribute ideographicBaseline]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface object]
+ expected: FAIL
+
+ [Path2D interface object length]
+ expected: FAIL
+
+ [Path2D interface object name]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [Path2D interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [Path2D interface: operation addPath(Path2D, DOMMatrix2DInit)]
+ expected: FAIL
+
+ [Path2D interface: operation closePath()]
+ expected: FAIL
+
+ [Path2D interface: operation moveTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Path2D interface: operation lineTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Path2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Path2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Path2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Path2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [Path2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [Path2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface object length]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface object name]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: attribute canvas]
+ expected: FAIL
+
+ [ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvas interface object length]
+ expected: FAIL
+
+ [OffscreenCanvas interface object name]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvas interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvas interface: attribute width]
+ expected: FAIL
+
+ [OffscreenCanvas interface: attribute height]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation getContext(OffscreenRenderingContextId, any)]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation transferToImageBitmap()]
+ expected: FAIL
+
+ [OffscreenCanvas interface: operation convertToBlob(ImageEncodeOptions)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface object length]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface object name]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation commit()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute canvas]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation save()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation restore()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation scale(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation rotate(unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation translate(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation transform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getTransform()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setTransform(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setTransform(DOMMatrix2DInit)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation resetTransform()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute globalAlpha]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute globalCompositeOperation]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingEnabled]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute imageSmoothingQuality]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute strokeStyle]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute fillStyle]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createLinearGradient(double, double, double, double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createRadialGradient(double, double, double, double, double, double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createPattern(CanvasImageSource, DOMString)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetX]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowOffsetY]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowBlur]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute shadowColor]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute filter]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clearRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fillRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation strokeRect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation beginPath()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fill(CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation stroke()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation stroke(Path2D)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clip(CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation resetClip()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(unrestricted double, unrestricted double, CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, CanvasFillRule)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation isPointInStroke(Path2D, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation drawImage(CanvasImageSource, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createImageData(long, long)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation createImageData(ImageData)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getImageData(long, long, long, long)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation putImageData(ImageData, long, long, long, long, long, long)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineWidth]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineCap]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineJoin]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute miterLimit]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation setLineDash([object Object\])]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation getLineDash()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: attribute lineDashOffset]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation closePath()]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation moveTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation lineTo(unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation quadraticCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation bezierCurveTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation arcTo(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation rect(unrestricted double, unrestricted double, unrestricted double, unrestricted double)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation arc(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [OffscreenCanvasRenderingContext2D interface: operation ellipse(unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, unrestricted double, boolean)]
+ expected: FAIL
+
+ [CustomElementRegistry interface: operation whenDefined(DOMString)]
+ expected: FAIL
+
+ [CustomElementRegistry interface: operation upgrade(Node)]
+ expected: FAIL
+
+ [DataTransfer interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DataTransfer interface object length]
+ expected: FAIL
+
+ [DataTransfer interface object name]
+ expected: FAIL
+
+ [DataTransfer interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [DataTransfer interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DataTransfer interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DataTransfer interface: attribute dropEffect]
+ expected: FAIL
+
+ [DataTransfer interface: attribute effectAllowed]
+ expected: FAIL
+
+ [DataTransfer interface: attribute items]
+ expected: FAIL
+
+ [DataTransfer interface: operation setDragImage(Element, long, long)]
+ expected: FAIL
+
+ [DataTransfer interface: attribute types]
+ expected: FAIL
+
+ [DataTransfer interface: operation getData(DOMString)]
+ expected: FAIL
+
+ [DataTransfer interface: operation setData(DOMString, DOMString)]
+ expected: FAIL
+
+ [DataTransfer interface: operation clearData(DOMString)]
+ expected: FAIL
+
+ [DataTransfer interface: attribute files]
+ expected: FAIL
+
+ [DataTransferItemList interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DataTransferItemList interface object length]
+ expected: FAIL
+
+ [DataTransferItemList interface object name]
+ expected: FAIL
+
+ [DataTransferItemList interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [DataTransferItemList interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DataTransferItemList interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DataTransferItemList interface: attribute length]
+ expected: FAIL
+
+ [DataTransferItemList interface: operation add(DOMString, DOMString)]
+ expected: FAIL
+
+ [DataTransferItemList interface: operation add(File)]
+ expected: FAIL
+
+ [DataTransferItemList interface: operation remove(unsigned long)]
+ expected: FAIL
+
+ [DataTransferItemList interface: operation clear()]
+ expected: FAIL
+
+ [DataTransferItem interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DataTransferItem interface object length]
+ expected: FAIL
+
+ [DataTransferItem interface object name]
+ expected: FAIL
+
+ [DataTransferItem interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [DataTransferItem interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DataTransferItem interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DataTransferItem interface: attribute kind]
+ expected: FAIL
+
+ [DataTransferItem interface: attribute type]
+ expected: FAIL
+
+ [DataTransferItem interface: operation getAsString(FunctionStringCallback)]
+ expected: FAIL
+
+ [DataTransferItem interface: operation getAsFile()]
+ expected: FAIL
+
+ [DragEvent interface: existence and properties of interface object]
+ expected: FAIL
+
+ [DragEvent interface object length]
+ expected: FAIL
+
+ [DragEvent interface object name]
+ expected: FAIL
+
+ [DragEvent interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [DragEvent interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [DragEvent interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [DragEvent interface: attribute dataTransfer]
+ expected: FAIL
+
+ [Window interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError]
+ expected: FAIL
+
+ [Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError]
+ expected: FAIL
+
+ [Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false]
+ expected: FAIL
+
+ [Window interface: attribute locationbar]
+ expected: FAIL
+
+ [Window interface: attribute menubar]
+ expected: FAIL
+
+ [Window interface: attribute personalbar]
+ expected: FAIL
+
+ [Window interface: attribute scrollbars]
+ expected: FAIL
+
+ [Window interface: attribute statusbar]
+ expected: FAIL
+
+ [Window interface: attribute toolbar]
+ expected: FAIL
+
+ [Window interface: operation stop()]
+ expected: FAIL
+
+ [Window interface: operation focus()]
+ expected: FAIL
+
+ [Window interface: operation blur()]
+ expected: FAIL
+
+ [Window interface: attribute length]
+ expected: FAIL
+
+ [Window interface: attribute opener]
+ expected: FAIL
+
+ [Window interface: attribute parent]
+ expected: FAIL
+
+ [Window interface: operation open(USVString, DOMString, DOMString)]
+ expected: FAIL
+
+ [Window interface: attribute applicationCache]
+ expected: FAIL
+
+ [Window interface: operation confirm(DOMString)]
+ expected: FAIL
+
+ [Window interface: operation prompt(DOMString, DOMString)]
+ expected: FAIL
+
+ [Window interface: operation print()]
+ expected: FAIL
+
+ [Window interface: attribute external]
+ expected: FAIL
+
+ [Window interface: attribute onauxclick]
+ expected: FAIL
+
+ [Window interface: attribute onloadend]
+ expected: FAIL
+
+ [Window interface: attribute onsecuritypolicyviolation]
+ expected: FAIL
+
+ [Window interface: attribute onmessageerror]
+ expected: FAIL
+
+ [Window interface: attribute origin]
+ expected: FAIL
+
+ [Window interface: operation createImageBitmap(ImageBitmapSource, ImageBitmapOptions)]
+ expected: FAIL
+
+ [Window interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)]
+ expected: FAIL
+
+ [Window interface: internal [[SetPrototypeOf\]\] method of global platform object - setting to its original value via Object.setPrototypeOf should not throw]
+ expected: FAIL
+
+ [Window interface: internal [[SetPrototypeOf\]\] method of global platform object - setting to its original value via __proto__ should not throw]
+ expected: FAIL
+
+ [Window interface: internal [[SetPrototypeOf\]\] method of global platform object - setting to its original value via Reflect.setPrototypeOf should return true]
+ expected: FAIL
+
+ [Window interface: window must inherit property "self" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must have own property "location"]
+ expected: FAIL
+
+ [Window interface: window must inherit property "locationbar" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "menubar" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "personalbar" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "scrollbars" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "statusbar" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "toolbar" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "stop()" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "focus()" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "blur()" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "frames" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "length" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "opener" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "parent" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "open(USVString, DOMString, DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: calling open(USVString, DOMString, DOMString) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: window must inherit property "applicationCache" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "confirm(DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: calling confirm(DOMString) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: window must inherit property "prompt(DOMString, DOMString)" with the proper type]
+ expected: FAIL
+
+ [Window interface: calling prompt(DOMString, DOMString) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: window must inherit property "print()" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "external" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "onauxclick" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "onloadend" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "onsecuritypolicyviolation" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "onmessageerror" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "origin" with the proper type]
+ expected: FAIL
+
+ [Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, ImageBitmapOptions)" with the proper type]
+ expected: FAIL
+
+ [Window interface: calling createImageBitmap(ImageBitmapSource, ImageBitmapOptions) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [Window interface: window must inherit property "createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions)" with the proper type]
+ expected: FAIL
+
+ [Window interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, ImageBitmapOptions) on window with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [BarProp interface: existence and properties of interface object]
+ expected: FAIL
+
+ [BarProp interface object length]
+ expected: FAIL
+
+ [BarProp interface object name]
+ expected: FAIL
+
+ [BarProp interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [BarProp interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [BarProp interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [BarProp interface: attribute visible]
+ expected: FAIL
+
+ [History interface: attribute index]
+ expected: FAIL
+
+ [History interface: attribute scrollRestoration]
+ expected: FAIL
+
+ [History interface: window.history must inherit property "index" with the proper type]
+ expected: FAIL
+
+ [History interface: window.history must inherit property "scrollRestoration" with the proper type]
+ expected: FAIL
+
+ [Location interface: stringifier]
+ expected: FAIL
+
+ [Location interface: window.location must have own property "ancestorOrigins"]
+ expected: FAIL
+
+ [ApplicationCache interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ApplicationCache interface object length]
+ expected: FAIL
+
+ [ApplicationCache interface object name]
+ expected: FAIL
+
+ [ApplicationCache interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [ApplicationCache interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [ApplicationCache interface: constant UNCACHED on interface object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant UNCACHED on interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant IDLE on interface object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant IDLE on interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant CHECKING on interface object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant CHECKING on interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant DOWNLOADING on interface object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant DOWNLOADING on interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant UPDATEREADY on interface object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant UPDATEREADY on interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant OBSOLETE on interface object]
+ expected: FAIL
+
+ [ApplicationCache interface: constant OBSOLETE on interface prototype object]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute status]
+ expected: FAIL
+
+ [ApplicationCache interface: operation update()]
+ expected: FAIL
+
+ [ApplicationCache interface: operation abort()]
+ expected: FAIL
+
+ [ApplicationCache interface: operation swapCache()]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onchecking]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onerror]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onnoupdate]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute ondownloading]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onprogress]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onupdateready]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute oncached]
+ expected: FAIL
+
+ [ApplicationCache interface: attribute onobsolete]
+ expected: FAIL
+
+ [ApplicationCache must be primary interface of window.applicationCache]
+ expected: FAIL
+
+ [Stringification of window.applicationCache]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "UNCACHED" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "IDLE" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "CHECKING" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "DOWNLOADING" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "UPDATEREADY" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "OBSOLETE" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "status" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "update()" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "abort()" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "swapCache()" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onchecking" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onerror" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onnoupdate" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "ondownloading" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onprogress" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onupdateready" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "oncached" with the proper type]
+ expected: FAIL
+
+ [ApplicationCache interface: window.applicationCache must inherit property "onobsolete" with the proper type]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface: existence and properties of interface object]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface object length]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface object name]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface: attribute promise]
+ expected: FAIL
+
+ [PromiseRejectionEvent interface: attribute reason]
+ expected: FAIL
+
+ [Navigator interface: attribute productSub]
+ expected: FAIL
+
+ [Navigator interface: attribute vendor]
+ expected: FAIL
+
+ [Navigator interface: attribute vendorSub]
+ expected: FAIL
+
+ [Navigator interface: attribute oscpu]
+ expected: FAIL
+
+ [Navigator interface: attribute languages]
+ expected: FAIL
+
+ [Navigator interface: attribute onLine]
+ expected: FAIL
+
+ [Navigator interface: operation registerProtocolHandler(DOMString, USVString, DOMString)]
+ expected: FAIL
+
+ [Navigator interface: operation unregisterProtocolHandler(DOMString, USVString)]
+ expected: FAIL
+
+ [Navigator interface: attribute hardwareConcurrency]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "productSub" with the proper type]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "vendor" with the proper type]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "vendorSub" with the proper type]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "oscpu" with the proper type]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "languages" with the proper type]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "onLine" with the proper type]
+ expected: FAIL
+
+ [Navigator interface: window.navigator must inherit property "registerProtocolHandler(DOMString, USVString, DOMString)" with the proper type]
+ 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 "unregisterProtocolHandler(DOMString, USVString)" with the proper type]
+ 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 "hardwareConcurrency" with the proper type]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface object]
+ expected: FAIL
+
+ [ImageBitmap interface object length]
+ expected: FAIL
+
+ [ImageBitmap interface object name]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [ImageBitmap interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [ImageBitmap interface: attribute width]
+ expected: FAIL
+
+ [ImageBitmap interface: attribute height]
+ expected: FAIL
+
+ [ImageBitmap interface: operation close()]
+ expected: FAIL
+
+ [MessageEvent interface: attribute source]
+ expected: FAIL
+
+ [MessageEvent interface: attribute ports]
+ expected: FAIL
+
+ [MessageEvent interface: operation initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\])]
+ expected: FAIL
+
+ [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "source" with the proper type]
+ expected: FAIL
+
+ [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "ports" with the proper type]
+ expected: FAIL
+
+ [MessageEvent interface: new MessageEvent("message", { data: 5 }) must inherit property "initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\])" with the proper type]
+ expected: FAIL
+
+ [MessageEvent interface: calling initMessageEvent(DOMString, boolean, boolean, any, USVString, DOMString, MessageEventSource, [object Object\]) on new MessageEvent("message", { data: 5 }) with too few arguments must throw TypeError]
+ expected: FAIL
+
+ [WebSocket interface: attribute extensions]
+ expected: FAIL
+
+ [WebSocket interface: new WebSocket("wss://foo") must inherit property "extensions" with the proper type]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface object]
+ expected: FAIL
+
+ [MessageChannel interface object length]
+ expected: FAIL
+
+ [MessageChannel interface object name]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [MessageChannel interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [MessageChannel interface: attribute port1]
+ expected: FAIL
+
+ [MessageChannel interface: attribute port2]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface object]
+ expected: FAIL
+
+ [MessagePort interface object length]
+ expected: FAIL
+
+ [MessagePort interface object name]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [MessagePort interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [MessagePort interface: operation postMessage(any, [object Object\])]
+ expected: FAIL
+
+ [MessagePort interface: operation start()]
+ expected: FAIL
+
+ [MessagePort interface: operation close()]
+ expected: FAIL
+
+ [MessagePort interface: attribute onmessage]
+ expected: FAIL
+
+ [MessagePort interface: attribute onmessageerror]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface object]
+ expected: FAIL
+
+ [BroadcastChannel interface object length]
+ expected: FAIL
+
+ [BroadcastChannel interface object name]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [BroadcastChannel interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [BroadcastChannel interface: attribute name]
+ expected: FAIL
+
+ [BroadcastChannel interface: operation postMessage(any)]
+ expected: FAIL
+
+ [BroadcastChannel interface: operation close()]
+ expected: FAIL
+
+ [BroadcastChannel interface: attribute onmessage]
+ expected: FAIL
+
+ [BroadcastChannel interface: attribute onmessageerror]
+ expected: FAIL
+
+ [Worker interface: attribute onmessageerror]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface object]
+ expected: FAIL
+
+ [SharedWorker interface object length]
+ expected: FAIL
+
+ [SharedWorker interface object name]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [SharedWorker interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [SharedWorker interface: attribute port]
+ expected: FAIL
+
+ [SharedWorker interface: attribute onerror]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: existence and properties of interface object]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface object length]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface object name]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: existence and properties of interface prototype object]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: existence and properties of interface prototype object's "constructor" property]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: existence and properties of interface prototype object's @@unscopables property]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute behavior]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute bgColor]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute direction]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute height]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute hspace]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute loop]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute scrollAmount]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute scrollDelay]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute trueSpeed]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute vspace]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute width]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute onbounce]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute onfinish]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: attribute onstart]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: operation start()]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: operation stop()]
+ expected: FAIL
+
+ [HTMLMarqueeElement must be primary interface of document.createElement("marquee")]
+ expected: FAIL
+
+ [Stringification of document.createElement("marquee")]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "behavior" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "bgColor" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "direction" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "height" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "loop" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollAmount" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "scrollDelay" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "trueSpeed" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "vspace" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "width" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onbounce" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onfinish" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "onstart" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "start()" with the proper type]
+ expected: FAIL
+
+ [HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "stop()" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: attribute cols]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: attribute rows]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: attribute onmessageerror]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "cols" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "rows" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameSetElement interface: document.createElement("frameset") must inherit property "onmessageerror" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute name]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute scrolling]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute src]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute frameBorder]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute longDesc]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute noResize]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute contentDocument]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute contentWindow]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute marginHeight]
+ expected: FAIL
+
+ [HTMLFrameElement interface: attribute marginWidth]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "name" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "scrolling" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "src" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "frameBorder" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "longDesc" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "noResize" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "contentDocument" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "contentWindow" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "marginHeight" with the proper type]
+ expected: FAIL
+
+ [HTMLFrameElement interface: document.createElement("frame") must inherit property "marginWidth" with the proper type]
+ expected: FAIL
+
+ [HTMLDirectoryElement interface: attribute compact]
+ expected: FAIL
+
+ [HTMLDirectoryElement interface: document.createElement("dir") must inherit property "compact" with the proper type]
+ expected: FAIL
+
+ [Stringification of window.external]
+ expected: FAIL
+
+ [External interface: window.external must inherit property "AddSearchProvider()" with the proper type]
+ expected: FAIL
+
+ [External interface: window.external must inherit property "IsSearchProviderInstalled()" with the proper type]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/link-rel-attribute.html.ini b/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/link-rel-attribute.html.ini
new file mode 100644
index 00000000000..01979cb5cd3
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/document-metadata/the-link-element/link-rel-attribute.html.ini
@@ -0,0 +1,4 @@
+[link-rel-attribute.html]
+ [Untitled]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini
index 1de3f8d68b2..559c27de134 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini
@@ -172,3 +172,63 @@
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
expected: FAIL
+ [HTML (quirks) IMG usemap="no-hash-name"]
+ expected: FAIL
+
+ [HTML (quirks) IMG usemap="no-hash-id"]
+ expected: FAIL
+
+ [HTML (quirks) IMG usemap="hash-last#"]
+ expected: FAIL
+
+ [HTML (quirks) IMG usemap=""]
+ expected: FAIL
+
+ [HTML (quirks) IMG usemap="#"]
+ expected: FAIL
+
+ [HTML (quirks) IMG usemap="#percent-escape-name-%41"]
+ expected: FAIL
+
+ [HTML (quirks) IMG usemap="#percent-escape-id-%41"]
+ expected: FAIL
+
+ [HTML (quirks) IMG usemap="#no-such-map"]
+ expected: FAIL
+
+ [HTML (quirks) IMG usemap="#different-CASE-name"]
+ expected: FAIL
+
+ [HTML (quirks) IMG usemap="#different-CASE-id"]
+ expected: FAIL
+
+ [XHTML img usemap="no-hash-name"]
+ expected: FAIL
+
+ [XHTML img usemap="no-hash-id"]
+ expected: FAIL
+
+ [XHTML img usemap="hash-last#"]
+ expected: FAIL
+
+ [XHTML img usemap=""]
+ expected: FAIL
+
+ [XHTML img usemap="#"]
+ expected: FAIL
+
+ [XHTML img usemap="#percent-escape-name-%41"]
+ expected: FAIL
+
+ [XHTML img usemap="#percent-escape-id-%41"]
+ expected: FAIL
+
+ [XHTML img usemap="#no-such-map"]
+ expected: FAIL
+
+ [XHTML img usemap="#different-CASE-name"]
+ expected: FAIL
+
+ [XHTML img usemap="#different-CASE-id"]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html.ini
new file mode 100644
index 00000000000..cb6e51865d4
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html.ini
@@ -0,0 +1,4 @@
+[document-getters-return-null-for-cross-origin.html]
+ [HTMLEmbedElement.getSVGDocument() for cross-origin document]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html.ini
new file mode 100644
index 00000000000..ab8cb13c0c8
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html.ini
@@ -0,0 +1,4 @@
+[document-getters-return-null-for-cross-origin.html]
+ [HTMLFrameElement.contentDocument for cross-origin document]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html.ini
new file mode 100644
index 00000000000..42e00ea31b4
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html.ini
@@ -0,0 +1,4 @@
+[document-getters-return-null-for-cross-origin.html]
+ [HTMLIFrameElement.getSVGDocument() for cross-origin document]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini
index f9c4569f49a..bc9b2091881 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html.ini
@@ -1920,3 +1920,123 @@
[<img srcset="/images/green-1x1.png?f47 50w, /images/green-16x16.png?f47 51w" style="--foo: 1px" sizes="var(--foo)"> ref sizes="100vw" (width:1000px)]
expected: FAIL
+ [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (standards mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (quirks mode)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (display:none)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
+ [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (width:1000px)]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html.ini
new file mode 100644
index 00000000000..fb05429c002
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html.ini
@@ -0,0 +1,7 @@
+[document-getters-return-null-for-cross-origin.html]
+ [HTMLObjectElement.contentDocument for cross-origin document]
+ expected: FAIL
+
+ [HTMLObjectElement.getSVGDocument() for cross-origin document]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html.ini
deleted file mode 100644
index bb7e3e4779f..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[string-compilation-integrity-classic.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html.ini
new file mode 100644
index 00000000000..eee66f705de
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html.ini
@@ -0,0 +1,2 @@
+[string-compilation-integrity-classic.sub.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html.ini
deleted file mode 100644
index da1840b68fb..00000000000
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[string-compilation-integrity-module.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html.ini
new file mode 100644
index 00000000000..815bfa98a5e
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html.ini
@@ -0,0 +1,2 @@
+[string-compilation-integrity-module.sub.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html.ini
new file mode 100644
index 00000000000..3a95d9aaff4
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html.ini
@@ -0,0 +1,13 @@
+[string-compilation-of-promise-result.html]
+ [Evaled the script via eval, successful import]
+ expected: FAIL
+
+ [Evaled the script via eval, failed import]
+ expected: FAIL
+
+ [Evaled the script via Function, successful import]
+ expected: FAIL
+
+ [Evaled the script via Function, failed import]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/url/urlsearchparams-foreach.html.ini b/tests/wpt/metadata/url/urlsearchparams-foreach.html.ini
new file mode 100644
index 00000000000..1357cf2358b
--- /dev/null
+++ b/tests/wpt/metadata/url/urlsearchparams-foreach.html.ini
@@ -0,0 +1,4 @@
+[urlsearchparams-foreach.html]
+ [Untitled]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/websockets/binary/001.html.ini b/tests/wpt/metadata/websockets/binary/001.html.ini
index e951021f33d..5bd89b3b338 100644
--- a/tests/wpt/metadata/websockets/binary/001.html.ini
+++ b/tests/wpt/metadata/websockets/binary/001.html.ini
@@ -4,3 +4,5 @@
[WebSockets: Send/Receive blob, blob size less than network array buffer]
expected: TIMEOUT
+
+[001.html]
diff --git a/tests/wpt/metadata/websockets/binary/002.html.ini b/tests/wpt/metadata/websockets/binary/002.html.ini
index e147562b356..95f1b8e77c8 100644
--- a/tests/wpt/metadata/websockets/binary/002.html.ini
+++ b/tests/wpt/metadata/websockets/binary/002.html.ini
@@ -3,3 +3,5 @@
[WebSockets: Send/Receive blob, blob size greater than network array buffer]
expected: TIMEOUT
+
+[002.html]
diff --git a/tests/wpt/metadata/websockets/binary/004.html.ini b/tests/wpt/metadata/websockets/binary/004.html.ini
index 81e00c88a70..1c519088836 100644
--- a/tests/wpt/metadata/websockets/binary/004.html.ini
+++ b/tests/wpt/metadata/websockets/binary/004.html.ini
@@ -3,3 +3,5 @@
[WebSockets: Send/Receive ArrayBuffer, size greater than network array buffer]
expected: TIMEOUT
+
+[004.html]
diff --git a/tests/wpt/metadata/websockets/binary/005.html.ini b/tests/wpt/metadata/websockets/binary/005.html.ini
index bf6e162f08d..12097e48faa 100644
--- a/tests/wpt/metadata/websockets/binary/005.html.ini
+++ b/tests/wpt/metadata/websockets/binary/005.html.ini
@@ -4,3 +4,5 @@
[WebSockets: Send/Receive ArrayBuffer, size less than network array buffer]
expected: TIMEOUT
+
+[005.html]
diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html.ini
index 01192f9a402..03f0d0a344c 100644
--- a/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html.ini
+++ b/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer.html.ini
@@ -4,3 +4,5 @@
[WebSockets: bufferedAmount for ArrayBuffer]
expected: TIMEOUT
+
+[bufferedAmount-arraybuffer.html]
diff --git a/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html.ini b/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html.ini
index 06242c11870..8c7df5100a0 100644
--- a/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html.ini
+++ b/tests/wpt/metadata/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob.html.ini
@@ -4,3 +4,5 @@
[WebSockets: bufferedAmount for blob]
expected: TIMEOUT
+
+[bufferedAmount-blob.html]
diff --git a/tests/wpt/metadata/xhr/overridemimetype-blob.html.ini b/tests/wpt/metadata/xhr/overridemimetype-blob.html.ini
index c9d8aff5a64..a72e097385e 100644
--- a/tests/wpt/metadata/xhr/overridemimetype-blob.html.ini
+++ b/tests/wpt/metadata/xhr/overridemimetype-blob.html.ini
@@ -12,3 +12,159 @@
[Bogus MIME type should end up as application/octet-stream, 2]
expected: FAIL
+ [1) MIME types need to be parsed and serialized: text/html;charset=gbk]
+ expected: FAIL
+
+ [2) MIME types need to be parsed and serialized: TEXT/HTML;CHARSET=GBK]
+ expected: FAIL
+
+ [3) MIME types need to be parsed and serialized: text/html;charset=gbk(]
+ expected: FAIL
+
+ [4) MIME types need to be parsed and serialized: text/html;x=(;charset=gbk]
+ expected: FAIL
+
+ [5) MIME types need to be parsed and serialized: text/html;charset=gbk;charset=windows-1255]
+ expected: FAIL
+
+ [6) MIME types need to be parsed and serialized: text/html;charset=();charset=GBK]
+ expected: FAIL
+
+ [8) MIME types need to be parsed and serialized: text/html ;charset=gbk]
+ expected: FAIL
+
+ [9) MIME types need to be parsed and serialized: text/html; charset=gbk]
+ expected: FAIL
+
+ [10) MIME types need to be parsed and serialized: text/html;charset= gbk]
+ expected: FAIL
+
+ [11) MIME types need to be parsed and serialized: text/html;charset= "gbk"]
+ expected: FAIL
+
+ [12) MIME types need to be parsed and serialized: text/html;charset='gbk']
+ expected: FAIL
+
+ [13) MIME types need to be parsed and serialized: text/html;charset='gbk]
+ expected: FAIL
+
+ [14) MIME types need to be parsed and serialized: text/html;charset=gbk']
+ expected: FAIL
+
+ [15) MIME types need to be parsed and serialized: text/html;charset=';charset=GBK]
+ expected: FAIL
+
+ [16) MIME types need to be parsed and serialized: text/html;test;charset=gbk]
+ expected: FAIL
+
+ [17) MIME types need to be parsed and serialized: text/html;test=;charset=gbk]
+ expected: FAIL
+
+ [18) MIME types need to be parsed and serialized: text/html;';charset=gbk]
+ expected: FAIL
+
+ [19) MIME types need to be parsed and serialized: text/html;";charset=gbk]
+ expected: FAIL
+
+ [20) MIME types need to be parsed and serialized: text/html ; ; charset=gbk]
+ expected: FAIL
+
+ [21) MIME types need to be parsed and serialized: text/html;;;;charset=gbk]
+ expected: FAIL
+
+ [22) MIME types need to be parsed and serialized: text/html;charset= ";charset=GBK]
+ expected: FAIL
+
+ [23) MIME types need to be parsed and serialized: text/html;charset=";charset=foo";charset=GBK]
+ expected: FAIL
+
+ [24) MIME types need to be parsed and serialized: text/html;charset="gbk"]
+ expected: FAIL
+
+ [25) MIME types need to be parsed and serialized: text/html;charset="gbk]
+ expected: FAIL
+
+ [26) MIME types need to be parsed and serialized: text/html;charset=gbk"]
+ expected: FAIL
+
+ [27) MIME types need to be parsed and serialized: text/html;charset=" gbk"]
+ expected: FAIL
+
+ [28) MIME types need to be parsed and serialized: text/html;charset="gbk "]
+ expected: FAIL
+
+ [29) MIME types need to be parsed and serialized: text/html;charset="\\ gbk"]
+ expected: FAIL
+
+ [30) MIME types need to be parsed and serialized: text/html;charset="\\g\\b\\k"]
+ expected: FAIL
+
+ [31) MIME types need to be parsed and serialized: text/html;charset="gbk"x]
+ expected: FAIL
+
+ [32) MIME types need to be parsed and serialized: text/html;charset="";charset=GBK]
+ expected: FAIL
+
+ [33) MIME types need to be parsed and serialized: text/html;charset=";charset=GBK]
+ expected: FAIL
+
+ [34) MIME types need to be parsed and serialized: text/html;charset={gbk}]
+ expected: FAIL
+
+ [35) MIME types need to be parsed and serialized: text/html;0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789=x;charset=gbk]
+ expected: FAIL
+
+ [37) MIME types need to be parsed and serialized: !#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz;!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=!#$%&'*+-.^_`|~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
+ expected: FAIL
+
+ [38) MIME types need to be parsed and serialized: x/x;x="\t !\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"]
+ expected: FAIL
+
+ [40) MIME types need to be parsed and serialized: x/x;test="\\]
+ expected: FAIL
+
+ [43) MIME types need to be parsed and serialized: text/html;test=ÿ;charset=gbk]
+ expected: FAIL
+
+ [44) MIME types need to be parsed and serialized: x/x;test=�;x=x]
+ expected: FAIL
+
+ [45) MIME types need to be parsed and serialized: ]
+ expected: FAIL
+
+ [46) MIME types need to be parsed and serialized: \t]
+ expected: FAIL
+
+ [47) MIME types need to be parsed and serialized: /]
+ expected: FAIL
+
+ [48) MIME types need to be parsed and serialized: bogus]
+ expected: FAIL
+
+ [49) MIME types need to be parsed and serialized: bogus/]
+ expected: FAIL
+
+ [50) MIME types need to be parsed and serialized: bogus/ ]
+ expected: FAIL
+
+ [51) MIME types need to be parsed and serialized: bogus/bogus/;]
+ expected: FAIL
+
+ [52) MIME types need to be parsed and serialized: </>]
+ expected: FAIL
+
+ [53) MIME types need to be parsed and serialized: (/)]
+ expected: FAIL
+
+ [54) MIME types need to be parsed and serialized: ÿ/ÿ]
+ expected: FAIL
+
+ [55) MIME types need to be parsed and serialized: text/html(;doesnot=matter]
+ expected: FAIL
+
+ [56) MIME types need to be parsed and serialized: {/}]
+ expected: FAIL
+
+ [57) MIME types need to be parsed and serialized: Ā/Ā]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/xhr/overridemimetype-edge-cases.window.js.ini b/tests/wpt/metadata/xhr/overridemimetype-edge-cases.window.js.ini
new file mode 100644
index 00000000000..a99bbb61fd9
--- /dev/null
+++ b/tests/wpt/metadata/xhr/overridemimetype-edge-cases.window.js.ini
@@ -0,0 +1,7 @@
+[overridemimetype-edge-cases.window.html]
+ [overrideMimeType() state needs to be reset across requests]
+ expected: FAIL
+
+ [Charset can be overridden by overrideMimeType() with a bogus charset]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/xhr/send-content-type-charset.htm.ini b/tests/wpt/metadata/xhr/send-content-type-charset.htm.ini
index 9c6e15cc513..62dd192867b 100644
--- a/tests/wpt/metadata/xhr/send-content-type-charset.htm.ini
+++ b/tests/wpt/metadata/xhr/send-content-type-charset.htm.ini
@@ -24,3 +24,24 @@
[charset given but wrong, fix it (known MIME, actual charset)]
expected: FAIL
+ [If no charset= param is given, implementation should not add one - known MIME, unknown param, two spaces]
+ expected: FAIL
+
+ [Multiple charset parameters deduplicate, bogus parameter dropped]
+ expected: FAIL
+
+ [charset with space]
+ expected: FAIL
+
+ [charset in double quotes]
+ expected: FAIL
+
+ [charset in double quotes with space]
+ expected: FAIL
+
+ [charset in double quotes with backslashes]
+ expected: FAIL
+
+ [unknown parameters need to be preserved]
+ expected: FAIL
+
diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_001_to_008.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/canvas/rapid-resizing.html.ini
index 7e17f982259..1e2567027d8 100644
--- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/ogles/GL/atan/atan_001_to_008.html.ini
+++ b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/canvas/rapid-resizing.html.ini
@@ -1,4 +1,4 @@
-[atan_001_to_008.html]
+[rapid-resizing.html]
expected: TIMEOUT
[Overall test]
expected: NOTRUN
diff --git a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-with-workers.html.ini b/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-with-workers.html.ini
deleted file mode 100644
index 7aab2f5f662..00000000000
--- a/tests/wpt/mozilla/meta/webgl/conformance-1.0.3/conformance/context/context-release-with-workers.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[context-release-with-workers.html]
- expected: TIMEOUT
- [Overall test]
- expected: NOTRUN
-
diff --git a/tests/wpt/web-platform-tests/.travis.yml b/tests/wpt/web-platform-tests/.travis.yml
index 26df65e9827..e3df73d1f21 100644
--- a/tests/wpt/web-platform-tests/.travis.yml
+++ b/tests/wpt/web-platform-tests/.travis.yml
@@ -64,8 +64,6 @@ matrix:
env: JOB=tools_unittest TOXENV=py27 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh
- python: 3.6
env: JOB=tools_unittest TOXENV=py36 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh
- - python: pypy-5.4
- env: JOB=tools_unittest TOXENV=pypy HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh
- python: 2.7
env: JOB=resources_unittest TOXENV=py27 SCRIPT=tools/ci/ci_resources_unittest.sh
- python: 2.7
diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html b/tests/wpt/web-platform-tests/2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html
deleted file mode 100644
index 56d5ebb5157..00000000000
--- a/tests/wpt/web-platform-tests/2dcontext/drawing-paths-to-the-canvas/canvas_focus_drawCustomFocusRing_001.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <title>canvas drawCustomFocusRing() step1 test</title>
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- <link rel="author" title="Takeshi Kurosawa" href="mailto:kurosawa-takeshi@mitsue.co.jp">
- <link rel="help" href="http://www.w3.org/TR/2dcontext/#dom-context-2d-drawcustomfocusring">
- </head>
- <body>
- <h1>Description</h1>
- <p>This test checks whether drawCustomFocusRing returns false if the element passed as an argument is not focused or is not a descendant of the element with whose context the method is associated.</p>
- <div id="log"></div>
- <div>
- <input type="text" id="text0">
- <canvas id="canvas"><input type="text" id="text1"></canvas>
- </div>
- <script>
- (function() {
- test(function() {
- var canvas = document.getElementById('canvas');
- var context = canvas.getContext('2d');
- var text0 = document.getElementById('text0');
- text0.focus(); // document.activeElement === text0;
-
- var text1 = document.getElementById('text1');
- assert_false(context.drawCustomFocusRing(text1));
- }, 'drawCustomFocusRing must return false for an element that is not focused.');
-
- test(function() {
- var canvas = document.getElementById('canvas');
- var context = canvas.getContext('2d');
- var text0 = document.getElementById('text0');
- text0.focus(); // document.activeElement === text0;
-
- assert_false(context.drawCustomFocusRing(text0));
- }, 'drawCustomFocusRing must return false for an element that is not a descendant of the canvas element.');
- })();
- </script>
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html
new file mode 100644
index 00000000000..030263472a3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-transfer.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>createImageBitmap transferring test</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/media.js"></script>
+<script src="/common/namespaces.js"></script>
+<script src="common.sub.js"></script>
+<div id=log></div>
+<script>
+let worker, continuations = {};
+setup(function() {
+ worker = new Worker("transfer-worker.js");
+ worker.addEventListener("message", function(event) {
+ let { name, bitmap } = event.data;
+ if (continuations.hasOwnProperty(name)) {
+ continuations[name](bitmap);
+ }
+ });
+});
+
+for (let { name, factory } of imageSourceTypes) {
+ promise_test(function(t) {
+ return factory().then(createImageBitmap).then(function(bitmap) {
+ assert_equals(bitmap.width, 20);
+ assert_equals(bitmap.height, 20);
+
+ worker.postMessage({ name: t.name, bitmap: bitmap }, [bitmap]);
+
+ assert_equals(bitmap.width, 0);
+ assert_equals(bitmap.height, 0);
+
+ return new Promise(function(resolve) {
+ continuations[t.name] = resolve;
+ });
+ }).then(function(bitmap) {
+ assert_class_string(bitmap, "ImageBitmap");
+ assert_equals(bitmap.width, 20);
+ assert_equals(bitmap.height, 20);
+ });
+ }, `Transfer ImageBitmap created from ${name}`);
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/transfer-worker.js b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/transfer-worker.js
new file mode 100644
index 00000000000..55465a899ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/transfer-worker.js
@@ -0,0 +1,3 @@
+addEventListener('message', evt => {
+ postMessage(evt.data, [evt.data.bitmap]);
+});
diff --git a/tests/wpt/web-platform-tests/BackgroundSync/interfaces.any.js b/tests/wpt/web-platform-tests/BackgroundSync/interfaces.any.js
new file mode 100644
index 00000000000..dd677fc4044
--- /dev/null
+++ b/tests/wpt/web-platform-tests/BackgroundSync/interfaces.any.js
@@ -0,0 +1,29 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+// https://wicg.github.io/BackgroundSync/spec/
+
+promise_test(async () => {
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+ const html = await fetch('/interfaces/html.idl').then(r => r.text());
+ const sw = await fetch('/interfaces/ServiceWorker.idl').then(r => r.text());
+ const idl = await fetch('/interfaces/BackgroundSync.idl').then(response => response.text());
+
+ const idlArray = new IdlArray();
+ idlArray.add_untested_idls(dom, { only: ['Event', 'EventInit', 'EventTarget'] });
+ idlArray.add_untested_idls(html, { only: [
+ 'WorkerGlobalScope',
+ 'WindowOrWorkerGlobalScope'
+ ] });
+ idlArray.add_untested_idls(sw, { only: [
+ 'ServiceWorkerRegistration',
+ 'ServiceWorkerGlobalScope',
+ 'ExtendableEvent',
+ 'ExtendableEventInit',
+ ] });
+ idlArray.add_idls(idl);
+ idlArray.test();
+ done();
+}, 'Background Sync interfaces.');
diff --git a/tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js b/tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js
index e610e0bff28..a564730c338 100644
--- a/tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js
+++ b/tests/wpt/web-platform-tests/FileAPI/url/url-in-tags-revoke.window.js
@@ -17,6 +17,27 @@ async_test(t => {
}, 'Fetching a blob URL immediately before revoking it works in an iframe.');
async_test(t => {
+ const run_result = 'test_frame_OK';
+ const blob_contents = '<!doctype html>\n<meta charset="utf-8">\n' +
+ '<script>window.test_result = "' + run_result + '";</script>';
+ const blob = new Blob([blob_contents], {type: 'text/html'});
+ const url = URL.createObjectURL(blob);
+
+ const frame = document.createElement('iframe');
+ frame.setAttribute('src', '/common/blank.html');
+ frame.setAttribute('style', 'display:none;');
+ document.body.appendChild(frame);
+
+ frame.onload = t.step_func(() => {
+ frame.contentWindow.location = url;
+ URL.revokeObjectURL(url);
+ frame.onload = t.step_func_done(() => {
+ assert_equals(frame.contentWindow.test_result, run_result);
+ });
+ });
+}, 'Fetching a blob URL immediately before revoking it works in an iframe navigation.');
+
+async_test(t => {
const run_result = 'test_script_OK';
const blob_contents = 'window.script_test_result = "' + run_result + '";';
const blob = new Blob([blob_contents]);
diff --git a/tests/wpt/web-platform-tests/README.md b/tests/wpt/web-platform-tests/README.md
index cc2870b78d2..307a886864d 100644
--- a/tests/wpt/web-platform-tests/README.md
+++ b/tests/wpt/web-platform-tests/README.md
@@ -110,7 +110,7 @@ line syntax is:
**On Windows**: You will need to preceed the prior command with
`python` or the path to the python binary.
```bash
-python wpt product [tests]
+python wpt run product [tests]
```
where `product` is currently `firefox` or `chrome` and `[tests]` is a
@@ -271,7 +271,7 @@ will be `C:\\OpenSSL-Win32\\bin\\openssl.cfg`).
### Trusting Root CA
To prevent browser SSL warnings when running HTTPS tests locally, the
-web-platform-tests Root CA file `rootca.pem` in [tools/certs](tools/certs)
+web-platform-tests Root CA file `cacert.pem` in [tools/certs](tools/certs)
must be added as a trusted certificate in your OS/browser.
Publication
diff --git a/tests/wpt/web-platform-tests/accelerometer/idlharness.https.html b/tests/wpt/web-platform-tests/accelerometer/idlharness.https.html
index 3c3c96e88e8..1f32be98685 100644
--- a/tests/wpt/web-platform-tests/accelerometer/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/accelerometer/idlharness.https.html
@@ -15,7 +15,7 @@ function doTest([dom, generic_sensor, accelerometer]) {
const idl_array = new IdlArray();
idl_array.add_untested_idls(dom);
idl_array.add_untested_idls('interface EventHandler {};');
- idl_array.add_idls(generic_sensor, { only: ['Sensor'] });
+ idl_array.add_idls(generic_sensor, { only: ['Sensor', 'SensorOptions'] });
idl_array.add_idls(accelerometer);
idl_array.add_objects({
Accelerometer: ['new Accelerometer();'],
diff --git a/tests/wpt/web-platform-tests/accname/description_1.0_combobox-focusable-manual.html b/tests/wpt/web-platform-tests/accname/description_1.0_combobox-focusable-manual.html
new file mode 100644
index 00000000000..ce26e8a6936
--- /dev/null
+++ b/tests/wpt/web-platform-tests/accname/description_1.0_combobox-focusable-manual.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Description 1.0 combobox-focusable</title>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <link rel="stylesheet" href="/resources/testharness.css">
+ <link rel="stylesheet" href="/wai-aria/scripts/manual.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/wai-aria/scripts/ATTAcomm.js"></script>
+ <script>
+ setup({explicit_timeout: true, explicit_done: true });
+
+ var theTest = new ATTAcomm(
+ {
+ "steps" : [
+ {
+ "element" : "test",
+ "test" : {
+ "ATK" : [
+ [
+ "property",
+ "description",
+ "is",
+ ""
+ ]
+ ],
+ "AXAPI" : [
+ [
+ "property",
+ "AXHelp",
+ "is",
+ ""
+ ]
+ ],
+ "IAccessible2" : [
+ [
+ "property",
+ "accDescription",
+ "is",
+ ""
+ ]
+ ],
+ "UIA" : [
+ [
+ "property",
+ "Description",
+ "is",
+ ""
+ ]
+ ]
+ },
+ "title" : "step 1",
+ "type" : "test"
+ }
+ ],
+ "title" : "Description 1.0 combobox-focusable"
+}
+
+ ) ;
+ </script>
+ </head>
+ <body>
+ <p>This test examines the ARIA properties for Description 1.0 combobox-focusable.</p>
+ <div id="test" role="combobox" tabindex="0" title="Choose your language.">
+ <span> English </span>
+ </div>
+
+ <div id="manualMode"></div>
+ <div id="log"></div>
+ <div id="ATTAmessages"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html
index 2e7c86c6873..167b52972f5 100644
--- a/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html
+++ b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element-manual.html
@@ -22,7 +22,7 @@
"property",
"description",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXHelp",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accDescription",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Description",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
]
},
@@ -62,7 +62,10 @@
</head>
<body>
<p>This test examines the ARIA properties for Description from content of describedby element.</p>
- <input id="test" type="text" aria-label="Important stuff" aria-describedby="descId" />
+ <style>
+ .hidden { display: none; }
+ </style>
+ <input id="test" type="text" aria-label="Important stuff" aria-describedby="descId" />
<div>
<div id="descId">
<span aria-hidden="true"><i> Hello, </i></span>
diff --git a/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html
index 9dbe3e5c7da..a49a9229512 100644
--- a/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html
+++ b/tests/wpt/web-platform-tests/accname/description_from_content_of_describedby_element_which_is_hidden-manual.html
@@ -22,7 +22,7 @@
"property",
"description",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXHelp",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accDescription",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Description",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
]
},
@@ -62,7 +62,10 @@
</head>
<body>
<p>This test examines the ARIA properties for Description from content of describedby element which is hidden.</p>
- <div>
+ <style>
+ .hidden { display: none; }
+ </style>
+ <div>
<input id="test" type="text" aria-labelledby="lbl1 lbl2" aria-describedby="descId" />
<span>
<span aria-hidden="true" id="lbl1">Important</span>
diff --git a/tests/wpt/web-platform-tests/accname/name_1.0_combobox-focusable-manual.html b/tests/wpt/web-platform-tests/accname/name_1.0_combobox-focusable-manual.html
index d525dc8d745..abc53273b7c 100644
--- a/tests/wpt/web-platform-tests/accname/name_1.0_combobox-focusable-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_1.0_combobox-focusable-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "Choose your language. English"
+ "Choose your language."
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "Choose your language. English"
+ "Choose your language."
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "Choose your language. English"
+ "Choose your language."
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "Choose your language. English"
+ "Choose your language."
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-alternative-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-alternative-manual.html
index 1539532598d..34bfd02b292 100644
--- a/tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-alternative-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-alternative-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "a test"
+ "a test This is"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "a test"
+ "a test This is"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "a test"
+ "a test This is"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "a test"
+ "a test This is"
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-manual.html b/tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-manual.html
index c18ecf21080..37486e1f950 100644
--- a/tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_checkbox-label-multiple-label-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "a test"
+ "This is a test"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "a test"
+ "This is a test"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "a test"
+ "This is a test"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "a test"
+ "This is a test"
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_file-label-inline-hidden-elements-manual.html b/tests/wpt/web-platform-tests/accname/name_file-label-inline-hidden-elements-manual.html
index cade7d1f507..2253f880bbe 100644
--- a/tests/wpt/web-platform-tests/accname/name_file-label-inline-hidden-elements-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_file-label-inline-hidden-elements-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "246810"
+ "2 4 6 8 10"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "246810"
+ "2 4 6 8 10"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "246810"
+ "2 4 6 8 10"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "246810"
+ "2 4 6 8 10"
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_from_content-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content-manual.html
index 583f30ad0e7..832652c2277 100644
--- a/tests/wpt/web-platform-tests/accname/name_from_content-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_from_content-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
]
},
@@ -62,7 +62,10 @@
</head>
<body>
<p>This test examines the ARIA properties for Name from content.</p>
- <div id="test" role="link" tabindex="0">
+ <style>
+ .hidden { display: none; }
+ </style>
+ <div id="test" role="link" tabindex="0">
<span aria-hidden="true"><i> Hello, </i></span>
<span>My</span> name is
<div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div>
diff --git a/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html
index d2407633ae8..1ceb4ab4dc1 100644
--- a/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_from_content_of_label-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
]
},
@@ -62,7 +62,10 @@
</head>
<body>
<p>This test examines the ARIA properties for Name from content of label.</p>
- <input type="text" id="test" />
+ <style>
+ .hidden { display: none; }
+ </style>
+ <input type="text" id="test" />
<label for="test" id="label">
<span aria-hidden="true"><i> Hello, </i></span>
<span>My</span> name is
diff --git a/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html
index 69304afa000..ebb0946a5ce 100644
--- a/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_element-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "My name is Garaventa the weird. (QED) Where are my marbles?"
+ "My name is Eli the weird. (QED) Where are my marbles?"
]
]
},
@@ -62,7 +62,10 @@
</head>
<body>
<p>This test examines the ARIA properties for Name from content of labelledby element.</p>
- <input id="test" type="text" aria-labelledby="lblId" />
+ <style>
+ .hidden { display: none; }
+ </style>
+ <input id="test" type="text" aria-labelledby="lblId" />
<div id="lblId" >
<span aria-hidden="true"><i> Hello, </i></span>
<span>My</span> name is
diff --git a/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html
index 18860233457..348d5622453 100644
--- a/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_from_content_of_labelledby_elements_one_of_which_is_hidden-manual.html
@@ -62,7 +62,10 @@
</head>
<body>
<p>This test examines the ARIA properties for Name from content of labelledby elements one of which is hidden.</p>
- <div>
+ <style>
+ .hidden { display: none; }
+ </style>
+ <div>
<input id="test" type="text" aria-labelledby="lbl1 lbl2" aria-describedby="descId" />
<span>
<span aria-hidden="true" id="lbl1">Important</span>
diff --git a/tests/wpt/web-platform-tests/accname/name_link-mixed-content-manual.html b/tests/wpt/web-platform-tests/accname/name_link-mixed-content-manual.html
index d1422175d02..9f8b92f971b 100644
--- a/tests/wpt/web-platform-tests/accname/name_link-mixed-content-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_link-mixed-content-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "My name is Garaventa the weird. (QED)"
+ "My name is Eli the weird. (QED)"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "My name is Garaventa the weird. (QED)"
+ "My name is Eli the weird. (QED)"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "My name is Garaventa the weird. (QED)"
+ "My name is Eli the weird. (QED)"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "My name is Garaventa the weird. (QED)"
+ "My name is Eli the weird. (QED)"
]
]
},
@@ -62,7 +62,10 @@
</head>
<body>
<p>This test examines the ARIA properties for Name link-mixed-content.</p>
- <div id="test" role="link" tabindex="0">
+ <style>
+ .hidden { display: none; }
+ </style>
+ <div id="test" role="link" tabindex="0">
<span aria-hidden="true"><i> Hello, </i></span>
<span>My</span> name is
<div><img src="file.jpg" title="Bryan" alt="" role="presentation" /></div>
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html
index 5f32846c406..f5f962a47b9 100644
--- a/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_548-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "crazy clown"
+ "crazy"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "crazy clown"
+ "crazy"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "crazy clown"
+ "crazy"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "crazy clown"
+ "crazy"
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html
index 1994cd992b8..0a5c42d27ef 100644
--- a/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_558-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "peanuts"
+ ""
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "peanuts"
+ ""
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "peanuts"
+ ""
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "peanuts"
+ ""
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html
index aff2a0916ef..ada84849ed6 100644
--- a/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_560-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "peanuts"
+ ""
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "peanuts"
+ ""
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "peanuts"
+ ""
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "peanuts"
+ ""
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html
index cf254067777..494dc333cce 100644
--- a/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_733-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "crazy clown"
+ "crazy"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "crazy clown"
+ "crazy"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "crazy clown"
+ "crazy"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "crazy clown"
+ "crazy"
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html
index ed014af05aa..7924d2cda45 100644
--- a/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_734-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "crazy clown"
+ "crazy"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "crazy clown"
+ "crazy"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "crazy clown"
+ "crazy"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "crazy clown"
+ "crazy"
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html
index c82e7f37d71..72b557ca323 100644
--- a/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_735-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "crazy clown"
+ "crazy"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "crazy clown"
+ "crazy"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "crazy clown"
+ "crazy"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "crazy clown"
+ "crazy"
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html
index b10508886ec..e9dfd7853d2 100644
--- a/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_736-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "crazy clown"
+ "crazy"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "crazy clown"
+ "crazy"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "crazy clown"
+ "crazy"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "crazy clown"
+ "crazy"
]
]
},
diff --git a/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html b/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html
index 6493316951f..59c49305fb9 100644
--- a/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html
+++ b/tests/wpt/web-platform-tests/accname/name_test_case_737-manual.html
@@ -22,7 +22,7 @@
"property",
"name",
"is",
- "crazy clown"
+ "crazy"
]
],
"AXAPI" : [
@@ -30,7 +30,7 @@
"property",
"AXDescription",
"is",
- "crazy clown"
+ "crazy"
]
],
"IAccessible2" : [
@@ -38,7 +38,7 @@
"property",
"accName",
"is",
- "crazy clown"
+ "crazy"
]
],
"UIA" : [
@@ -46,7 +46,7 @@
"property",
"Name",
"is",
- "crazy clown"
+ "crazy"
]
]
},
diff --git a/tests/wpt/web-platform-tests/acid/OWNERS b/tests/wpt/web-platform-tests/acid/OWNERS
new file mode 100644
index 00000000000..fd31fb27543
--- /dev/null
+++ b/tests/wpt/web-platform-tests/acid/OWNERS
@@ -0,0 +1 @@
+@Ms2ger
diff --git a/tests/wpt/web-platform-tests/background-fetch/interfaces.html b/tests/wpt/web-platform-tests/background-fetch/interfaces.html
index f512e454071..51e320e6437 100644
--- a/tests/wpt/web-platform-tests/background-fetch/interfaces.html
+++ b/tests/wpt/web-platform-tests/background-fetch/interfaces.html
@@ -12,15 +12,17 @@
<script>
'use strict';
-promise_test(function() {
- return fetch('/interfaces/background-fetch.idl')
- .then(response => response.text())
- .then(idls => {
- var idlArray = new IdlArray();
- idlArray.add_untested_idls('interface ServiceWorkerRegistration {};');
- idlArray.add_untested_idls('[Exposed=ServiceWorker] interface ServiceWorkerGlobalScope {};');
- idlArray.add_idls(idls);
- idlArray.test();
- });
+promise_test(async function () {
+ const idls = await fetch('/interfaces/background-fetch.idl').then(r => r.text());
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+
+ var idlArray = new IdlArray();
+ idlArray.add_untested_idls('interface ServiceWorkerRegistration {};');
+ idlArray.add_untested_idls('[Exposed=ServiceWorker] interface ServiceWorkerGlobalScope {};');
+ idlArray.add_untested_idls('interface ExtendableEvent{};');
+ idlArray.add_untested_idls('dictionary ExtendableEventInit{};');
+ idlArray.add_untested_idls(dom, { only: ['EventTarget'] });
+ idlArray.add_idls(idls);
+ idlArray.test();
}, 'Exposed interfaces in a Document.');
</script>
diff --git a/tests/wpt/web-platform-tests/background-fetch/interfaces.worker.js b/tests/wpt/web-platform-tests/background-fetch/interfaces.worker.js
index 89a7cb3da0a..0760ffd59af 100644
--- a/tests/wpt/web-platform-tests/background-fetch/interfaces.worker.js
+++ b/tests/wpt/web-platform-tests/background-fetch/interfaces.worker.js
@@ -3,16 +3,18 @@
importScripts('/resources/testharness.js');
importScripts('/resources/WebIDLParser.js', '/resources/idlharness.js');
-promise_test(function() {
- return fetch('/interfaces/background-fetch.idl')
- .then(response => response.text())
- .then(idls => {
- var idlArray = new IdlArray();
- idlArray.add_untested_idls('interface ServiceWorkerRegistration {};');
- idlArray.add_untested_idls('[Exposed=ServiceWorker] interface ServiceWorkerGlobalScope {};');
- idlArray.add_idls(idls);
- idlArray.test();
- });
+promise_test(async function() {
+ const idls = await fetch('/interfaces/background-fetch.idl').then(r => r.text());
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+
+ var idlArray = new IdlArray();
+ idlArray.add_untested_idls('interface ServiceWorkerRegistration {};');
+ idlArray.add_untested_idls('[SecureContext, Exposed = (Window, Worker)] interface ServiceWorkerGlobalScope {};');
+ idlArray.add_untested_idls('interface ExtendableEvent{};');
+ idlArray.add_untested_idls('dictionary ExtendableEventInit{};');
+ idlArray.add_untested_idls(dom, { only: ['EventTarget'] });
+ idlArray.add_idls(idls);
+ idlArray.test();
}, 'Exposed interfaces in a Service Worker.');
done();
diff --git a/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected.https.html b/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected.https.html
index 19ad407c93e..c406e50c199 100644
--- a/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected.https.html
@@ -9,7 +9,7 @@
const test_desc = 'A device disconnecting while connected should fire the ' +
'gattserverdisconnected event.';
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
.then(({device, fake_peripheral}) => {
fake_peripheral.simulateGATTDisconnection();
return eventPromise(device, 'gattserverdisconnected');
diff --git a/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html b/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html
index bde70370a7c..8208231bf55 100644
--- a/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/disconnected_gc.https.html
@@ -9,7 +9,7 @@
const test_desc = 'A device disconnecting after the BluetoothDevice object ' +
'has been GC\'ed should not access freed memory.';
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
.then(({fake_peripheral}) => {
// 1. Disconnect.
fake_peripheral.simulateGATTDisconnection();
diff --git a/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html b/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html
index 68bf79f2086..92be9c35039 100644
--- a/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/one-event-per-disconnection.https.html
@@ -12,7 +12,7 @@ const test_desc = 'If a site disconnects from a device while the platform is ' +
let device, fake_peripheral;
let num_events = 0;
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
.then(_ => ({device, fake_peripheral} = _))
// 1. Listen for disconnections.
.then(() =>
diff --git a/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html b/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html
index ee2e59882aa..6d0c8e28c5d 100644
--- a/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/device/gattserverdisconnected-event/reconnect-during-disconnected-event.https.html
@@ -10,7 +10,7 @@ let test_desc = 'A device that reconnects during the gattserverdisconnected ' +
'event should still receive gattserverdisconnected events after ' +
're-connection.';
let device, fake_peripheral;
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
.then(_ => ({device, fake_peripheral} = _))
// 1. Disconnect.
.then(() => new Promise(resolve => {
diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.html b/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.https.html
index 2835236d3b5..2835236d3b5 100644
--- a/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.html
+++ b/tests/wpt/web-platform-tests/bluetooth/idl/idl-Bluetooth.https.html
diff --git a/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothDevice.https.html b/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothDevice.https.html
index 855d8fed800..631d9dd4300 100644
--- a/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothDevice.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/idl/idl-BluetoothDevice.https.html
@@ -17,7 +17,7 @@ test(() => {
const test_desc_attr = 'BluetoothDevice attributes.';
let device;
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
.then(({device}) => {
assert_equals(device.constructor.name, 'BluetoothDevice');
var old_device_id = device.id;
diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html
index 5a1dca7c97b..bd9e5862aa7 100644
--- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/acceptAllDevices/optional-services-missing.https.html
@@ -14,7 +14,7 @@ const expected = new DOMException(
'requestDevice() options. https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true})
+bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true})
.then(({device}) => assert_promise_rejects_with_message(
device.gatt.getPrimaryServices(),
expected)),
diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html
index d77486fcbc3..7189b643eed 100644
--- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html
@@ -22,8 +22,6 @@ bluetooth_test(() => getDiscoveredHealthThermometerDevice({
.then(() =>
fake_peripheral.setNextGATTConnectionResponse({code: HCI_SUCCESS}))
.then(() => device.gatt.connect())
- .then(() =>
- fake_peripheral.setNextGATTDiscoveryResponse({code: HCI_SUCCESS}))
.then(() => Promise.all([
assert_promise_rejects_with_message(
device.gatt.getPrimaryService('human_interface_device'),
diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.html
index 858b73f5d57..e97991d6f55 100644
--- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/cross-origin-iframe.sub.https.html
@@ -13,7 +13,7 @@ const cross_origin_src = 'https://{{domains[www]}}:{{ports[https][0]}}' +
'/bluetooth/resources/health-thermometer-iframe.html'
let iframe = document.createElement('iframe');
-bluetooth_test(() => setUpConnectableHealthThermometerDevice()
+bluetooth_test(() => setUpHealthThermometerDevice()
// 1. Load the iframe.
.then(() => new Promise(resolve => {
iframe.src = cross_origin_src;
diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.html
index 2ac18485a1f..21219444f8d 100644
--- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.html
@@ -8,7 +8,7 @@
'use strict';
const test_desc = 'Discover a device using alias, name, or UUID.';
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
// Chrome will always close the previous chooser in the process of handling
// a user gesture for the next request, so these need to be done
// sequentially.
diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/consumes-user-gesture.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/doesnt-consume-user-gesture.https.html
index 12a062e2f59..3394a591cd4 100644
--- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/consumes-user-gesture.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/doesnt-consume-user-gesture.https.html
@@ -6,10 +6,7 @@
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
<script>
'use strict';
-const test_desc = 'Consumes a user gesture.';
-const expected = new DOMException(
- 'Must be handling a user gesture to show a permission request.',
- 'SecurityError');
+const test_desc = 'requestDevice calls do not consume user gestures.';
bluetooth_test(() => setUpHealthThermometerAndHeartRateDevices()
.then(() => callWithTrustedClick(() => {
@@ -20,8 +17,8 @@ bluetooth_test(() => setUpHealthThermometerAndHeartRateDevices()
return Promise.all([
first.then(device => assert_equals(
device.constructor.name, 'BluetoothDevice')),
- assert_promise_rejects_with_message(second,
- expected, 'A request should consume a user gesture')
+ second.then(device => assert_equals(
+ device.constructor.name, 'BluetoothDevice')),
]);
})), test_desc);
</script>
diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html
index 62a917a70f1..80798308b10 100644
--- a/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html
@@ -14,7 +14,7 @@ const expected = 'SecurityError: requestDevice() called from cross-origin ' +
let iframe = document.createElement('iframe');
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
// 1. Load the iframe.
.then(() => new Promise(resolve => {
iframe.sandbox.add('allow-scripts');
diff --git a/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js b/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js
index 7b23742fc4c..725e56d3f34 100644
--- a/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js
+++ b/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js
@@ -66,7 +66,9 @@ function bluetooth_test(func, name, properties) {
.then(() => promise_test(t => Promise.resolve()
// Trigger Chromium-specific setup.
.then(performChromiumSetup)
- .then(() => func(t)), name, properties));
+ .then(() => func(t))
+ .then(() => navigator.bluetooth.test.allResponsesConsumed())
+ .then(consumed => assert_true(consumed)), name, properties));
}
// HCI Error Codes. Used for simulateGATT[Dis]ConnectionResponse.
@@ -91,6 +93,8 @@ var request_disconnection_characteristic_uuid =
"01d7d88a-7451-419f-aeb8-d65e7b9277af";
// Descriptors:
var blocklist_test_descriptor_uuid = "bad2ddcf-60db-45cd-bef9-fd72b153cf7c";
+var blocklist_exclude_reads_descriptor_uuid =
+ "bad3ec61-3cc3-4954-9702-7977df514114";
// Sometimes we need to test that using either the name, alias, or UUID
// produces the same result. The following objects help us do that.
@@ -465,6 +469,15 @@ function generateRequestDeviceArgsWithServices(services = ['heart_rate']) {
}];
}
+// Causes |fake_peripheral| to disconnect and returns a promise that resolves
+// once `gattserverdisconnected` has been fired on |device|.
+function simulateGATTDisconnectionAndWait(device, fake_peripheral) {
+ return Promise.all([
+ eventPromise(device, 'gattserverdisconnected'),
+ fake_peripheral.simulateGATTDisconnection(),
+ ]);
+}
+
// Simulates a pre-connected device with |address|, |name| and
// |knownServiceUUIDs|.
function setUpPreconnectedDevice({
@@ -674,6 +687,162 @@ function getConnectedHealthThermometerDevice(options) {
.then(() => Object.assign({device}, fakes));
}
+// Returns an object containing a BluetoothDevice discovered using |options|,
+// its corresponding FakePeripheral and FakeRemoteGATTServices.
+// The simulated device is called 'Blocklist Device' and it has one known
+// service UUIDs |blocklist_test_service_uuid| which
+// correspond to a service with the same UUID. The
+// |blocklist_test_service_uuid| service contains two characteristics:
+// - |blocklist_exclude_reads_characteristic_uuid| (read, write)
+// - 'gap.peripheral_privacy_flag' (read, write)
+// The 'gap.peripheral_privacy_flag' characteristic contains three descriptors:
+// - |blocklist_test_descriptor_uuid|
+// - |blocklist_exclude_reads_descriptor_uuid|
+// - 'gatt.client_characteristic_configuration'
+// These are special UUIDs that have been added to the blocklist found at
+// https://github.com/WebBluetoothCG/registries/blob/master/gatt_blocklist.txt
+// There are also test UUIDs that have been added to the test environment which
+// other implementations should add as test UUIDs as well.
+// The device has been connected to and its attributes are ready to be
+// discovered.
+function getBlocklistDevice(
+ options = {filters: [{services: [blocklist_test_service_uuid]}]}) {
+ let device, fake_peripheral, fake_blocklist_test_service,
+ fake_blocklist_exclude_reads_characteristic,
+ fake_blocklist_exclude_writes_characteristic,
+ fake_blocklist_descriptor,
+ fake_blocklist_exclude_reads_descriptor,
+ fake_blocklist_exclude_writes_descriptor;
+ return setUpPreconnectedDevice({
+ address: '11:11:11:11:11:11',
+ name: 'Blocklist Device',
+ knownServiceUUIDs: ['generic_access', blocklist_test_service_uuid],
+ })
+ .then(_ => fake_peripheral = _)
+ .then(() => requestDeviceWithTrustedClick(options))
+ .then(_ => device = _)
+ .then(() => fake_peripheral.setNextGATTConnectionResponse({
+ code: HCI_SUCCESS,
+ }))
+ .then(() => device.gatt.connect())
+ .then(() => fake_peripheral.addFakeService({
+ uuid: blocklist_test_service_uuid,
+ }))
+ .then(_ => fake_blocklist_test_service = _)
+ .then(() => fake_blocklist_test_service.addFakeCharacteristic({
+ uuid: blocklist_exclude_reads_characteristic_uuid,
+ properties: ['read', 'write'],
+ }))
+ .then(_ => fake_blocklist_exclude_reads_characteristic = _)
+ .then(() => fake_blocklist_test_service.addFakeCharacteristic({
+ uuid: 'gap.peripheral_privacy_flag',
+ properties: ['read', 'write'],
+ }))
+ .then(_ => fake_blocklist_exclude_writes_characteristic = _)
+ .then(() => fake_blocklist_exclude_writes_characteristic
+ .addFakeDescriptor({uuid: blocklist_test_descriptor_uuid}))
+ .then(_ => fake_blocklist_descriptor = _)
+ .then(() => fake_blocklist_exclude_writes_characteristic
+ .addFakeDescriptor({uuid: blocklist_exclude_reads_descriptor_uuid}))
+ .then(_ => fake_blocklist_exclude_reads_descriptor = _)
+ .then(() => fake_blocklist_exclude_writes_characteristic
+ .addFakeDescriptor({
+ uuid: 'gatt.client_characteristic_configuration'
+ }))
+ .then(_ => fake_blocklist_exclude_writes_descriptor = _)
+ .then(() => fake_peripheral.setNextGATTDiscoveryResponse({
+ code: HCI_SUCCESS,
+ }))
+ .then(() => ({
+ device,
+ fake_peripheral,
+ fake_blocklist_test_service,
+ fake_blocklist_exclude_reads_characteristic,
+ fake_blocklist_exclude_writes_characteristic,
+ fake_blocklist_descriptor,
+ fake_blocklist_exclude_reads_descriptor,
+ fake_blocklist_exclude_writes_descriptor,
+ }));
+}
+
+// Returns an object containing a Blocklist Test BluetoothRemoveGattService and
+// its corresponding FakeRemoteGATTService.
+function getBlocklistTestService() {
+ let result;
+ return getBlocklistDevice()
+ .then(_ => result = _)
+ .then(() =>
+ result.device.gatt.getPrimaryService(blocklist_test_service_uuid))
+ .then(service => Object.assign(result, {
+ service,
+ fake_service: result.fake_blocklist_test_service,
+ }));
+}
+
+// Returns an object containing a blocklisted BluetoothRemoteGATTCharacteristic
+// that excludes reads and its corresponding FakeRemoteGATTCharacteristic.
+function getBlocklistExcludeReadsCharacteristic() {
+ let result, fake_characteristic;
+ return getBlocklistTestService()
+ .then(_ => result = _)
+ .then(() => result.service.getCharacteristic(
+ blocklist_exclude_reads_characteristic_uuid))
+ .then(characteristic =>
+ Object.assign(
+ result, {
+ characteristic,
+ fake_characteristic:
+ result.fake_blocklist_exclude_reads_characteristic
+ }));
+}
+
+// Returns an object containing a blocklisted BluetoothRemoteGATTCharacteristic
+// that excludes writes and its corresponding FakeRemoteGATTCharacteristic.
+function getBlocklistExcludeWritesCharacteristic() {
+ let result, fake_characteristic;
+ return getBlocklistTestService()
+ .then(_ => result = _)
+ .then(() => result.service.getCharacteristic(
+ 'gap.peripheral_privacy_flag'))
+ .then(characteristic =>
+ Object.assign(
+ result, {
+ characteristic,
+ fake_characteristic:
+ result.fake_blocklist_exclude_writes_characteristic
+ }));
+}
+
+// Returns an object containing a blocklisted BluetoothRemoteGATTDescriptor that
+// excludes reads and its corresponding FakeRemoteGATTDescriptor.
+function getBlocklistExcludeReadsDescriptor() {
+ let result;
+ return getBlocklistExcludeWritesCharacteristic()
+ .then(_ => result = _)
+ .then(() => result.characteristic.getDescriptor(
+ blocklist_exclude_reads_descriptor_uuid))
+ .then(descriptor => Object.assign(
+ result, {
+ descriptor,
+ fake_descriptor: result.fake_blocklist_exclude_reads_descriptor
+ }));
+}
+
+// Returns an object containing a blocklisted BluetoothRemoteGATTDescriptor that
+// excludes writes and its corresponding FakeRemoteGATTDescriptor.
+function getBlocklistExcludeWritesDescriptor() {
+ let result;
+ return getBlocklistExcludeWritesCharacteristic()
+ .then(_ => result = _)
+ .then(() => result.characteristic.getDescriptor(
+ 'gatt.client_characteristic_configuration'))
+ .then(descriptor => Object.assign(
+ result, {
+ descriptor: descriptor,
+ fake_descriptor: result.fake_blocklist_exclude_writes_descriptor,
+ }));
+}
+
// Returns the same device and fake peripheral as getHealthThermometerDevice()
// after another frame (an iframe we insert) discovered the device,
// connected to it and discovered its services.
@@ -768,42 +937,53 @@ function getEmptyHealthThermometerService(options) {
// The primary service with 'device_information' UUID has a characteristics
// with UUID 'serial_number_string'. The device has been connected to and its
// attributes are ready to be discovered.
-// TODO(crbug.com/719816): Add descriptors.
function getHIDDevice(options) {
+ let device, fake_peripheral;
+ return getConnectedHIDDevice(options)
+ .then(_ => ({device, fake_peripheral} = _))
+ .then(() => fake_peripheral.setNextGATTDiscoveryResponse({
+ code: HCI_SUCCESS,
+ }))
+ .then(() => ({device, fake_peripheral}));
+}
+
+// Similar to getHealthThermometerDevice except the GATT discovery
+// response has not been set yet so more attributes can still be added.
+// TODO(crbug.com/719816): Add descriptors.
+function getConnectedHIDDevice(options) {
+ let device, fake_peripheral;
return setUpPreconnectedDevice({
address: '10:10:10:10:10:10',
name: 'HID Device',
knownServiceUUIDs: [
'generic_access',
'device_information',
- 'human_interface_device'
+ 'human_interface_device',
],
})
- .then(fake_peripheral => {
- return requestDeviceWithTrustedClick(options)
- .then(device => {
- return fake_peripheral
- .setNextGATTConnectionResponse({
- code: HCI_SUCCESS})
- .then(() => device.gatt.connect())
- .then(() => fake_peripheral.addFakeService({
- uuid: 'generic_access'}))
- .then(() => fake_peripheral.addFakeService({
- uuid: 'device_information'}))
- // Blocklisted Characteristic:
- // https://github.com/WebBluetoothCG/registries/blob/master/gatt_blocklist.txt
- .then(dev_info => dev_info.addFakeCharacteristic({
- uuid: 'serial_number_string', properties: ['read']}))
- .then(() => fake_peripheral.addFakeService({
- uuid: 'human_interface_device'}))
- .then(() => fake_peripheral.setNextGATTDiscoveryResponse({
- code: HCI_SUCCESS}))
- .then(() => ({
- device: device,
- fake_peripheral: fake_peripheral
- }));
- });
- });
+ .then(_ => (fake_peripheral = _))
+ .then(() => requestDeviceWithTrustedClick(options))
+ .then(_ => (device = _))
+ .then(() => fake_peripheral.setNextGATTConnectionResponse({
+ code: HCI_SUCCESS,
+ }))
+ .then(() => device.gatt.connect())
+ .then(() => fake_peripheral.addFakeService({
+ uuid: 'generic_access',
+ }))
+ .then(() => fake_peripheral.addFakeService({
+ uuid: 'device_information',
+ }))
+ // Blocklisted Characteristic:
+ // https://github.com/WebBluetoothCG/registries/blob/master/gatt_blocklist.txt
+ .then(dev_info => dev_info.addFakeCharacteristic({
+ uuid: 'serial_number_string',
+ properties: ['read'],
+ }))
+ .then(() => fake_peripheral.addFakeService({
+ uuid: 'human_interface_device',
+ }))
+ .then(() => ({device, fake_peripheral}));
}
// Similar to getHealthThermometerDevice() except the device
diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-before.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-before.js
index fabc74ffb30..57704ee2992 100644
--- a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-before.js
+++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/disconnect-called-before.js
@@ -7,7 +7,7 @@ const expected = new DOMException(
'NetworkError');
let device;
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}],
optionalServices: ['generic_access']
})
diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/invalid-service-name.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/invalid-service-name.js
index 56e67f0ac13..52cbb24f4a3 100644
--- a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/invalid-service-name.js
+++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/invalid-service-name.js
@@ -11,7 +11,7 @@ const expected = new DOMException(
" e.g. 'alert_notification'.",
'TypeError');
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
.then(({device}) => assert_promise_rejects_with_message(
device.gatt.CALLS([
getPrimaryService('wrong_name')|
diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-absent-service.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-absent-service.js
index 9bab3be8046..200dab3e937 100644
--- a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-absent-service.js
+++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-absent-service.js
@@ -7,7 +7,7 @@ const expected = new DOMException(
'https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}]
})
.then(({device}) => Promise.all([
diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-for-any-service.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-for-any-service.js
index 52b07cc48ba..60e3ef00806 100644
--- a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-for-any-service.js
+++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-for-any-service.js
@@ -7,7 +7,7 @@ const expected = new DOMException(
'https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true})
+bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true})
.then(({device}) => assert_promise_rejects_with_message(
device.gatt.CALLS([
getPrimaryService('heart_rate')|
diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-present-service.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-present-service.js
index 67081ae56be..3257410685e 100644
--- a/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-present-service.js
+++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/server/no-permission-present-service.js
@@ -6,7 +6,7 @@ const expected = new DOMException(
'to \'optionalServices\' in requestDevice() options. https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}]
})
.then(({device}) => Promise.all([
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html
index 8a7e08f139f..af00c66d789 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-disconnect-called-before.https.html
@@ -15,7 +15,7 @@ const expected = new DOMException(
'NetworkError');
let device;
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}],
optionalServices: ['generic_access']
})
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html
index f055cb30751..40777eee906 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-invalid-service-name.https.html
@@ -19,7 +19,7 @@ const expected = new DOMException(
" e.g. 'alert_notification'.",
'TypeError');
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
.then(({device}) => assert_promise_rejects_with_message(
device.gatt.getPrimaryService('wrong_name'),
expected,
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html
index ced2bc653c8..7883ef36d4e 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-absent-service.https.html
@@ -15,7 +15,7 @@ const expected = new DOMException(
'https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}]
})
.then(({device}) => Promise.all([
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html
index 99d5c234044..566a9fbe091 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-for-any-service.https.html
@@ -15,7 +15,7 @@ const expected = new DOMException(
'https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true})
+bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true})
.then(({device}) => assert_promise_rejects_with_message(
device.gatt.getPrimaryService('heart_rate'),
expected)),
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html
index 2a578365e03..c9ce1b80aa4 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/gen-no-permission-present-service.https.html
@@ -14,7 +14,7 @@ const expected = new DOMException(
'to \'optionalServices\' in requestDevice() options. https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}]
})
.then(({device}) => Promise.all([
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html
index aa0b556c3fd..6ed24fda403 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html
@@ -12,7 +12,7 @@ const expected = new DOMException(
'UUID to \'optionalServices\' in requestDevice() options. ' +
'https://goo.gl/HxfxSQ', 'SecurityError');
-bluetooth_test(() => getHIDDevice({
+bluetooth_test(() => getConnectedHIDDevice({
filters: [{services: ['device_information']}],
optionalServices: ['human_interface_device']
})
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html
index bdf55a6a0aa..4449d2ebbd4 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html
@@ -15,7 +15,7 @@ const expected = new DOMException(
'NetworkError');
let device;
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}],
optionalServices: ['generic_access']
})
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html
index 45f13382f3c..3bf4ed6dccb 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-disconnect-called-before.https.html
@@ -15,7 +15,7 @@ const expected = new DOMException(
'NetworkError');
let device;
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}],
optionalServices: ['generic_access']
})
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html
index c497a0ab119..969ad61ea65 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-invalid-service-name.https.html
@@ -19,7 +19,7 @@ const expected = new DOMException(
" e.g. 'alert_notification'.",
'TypeError');
-bluetooth_test(() => getHealthThermometerDevice()
+bluetooth_test(() => getConnectedHealthThermometerDevice()
.then(({device}) => assert_promise_rejects_with_message(
device.gatt.getPrimaryServices('wrong_name'),
expected,
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html
index 0251ea02fbf..696b1f9471d 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-absent-service-with-uuid.https.html
@@ -15,7 +15,7 @@ const expected = new DOMException(
'https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}]
})
.then(({device}) => Promise.all([
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html
index 332f016ea45..41bbf6eecd0 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service-with-uuid.https.html
@@ -15,7 +15,7 @@ const expected = new DOMException(
'https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true})
+bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true})
.then(({device}) => assert_promise_rejects_with_message(
device.gatt.getPrimaryServices('heart_rate'),
expected)),
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html
index 34d7043caf6..58bea882946 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-for-any-service.https.html
@@ -15,7 +15,7 @@ const expected = new DOMException(
'https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({acceptAllDevices: true})
+bluetooth_test(() => getConnectedHealthThermometerDevice({acceptAllDevices: true})
.then(({device}) => assert_promise_rejects_with_message(
device.gatt.getPrimaryServices(),
expected)),
diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html
index 1f3f291a129..4f8254ad86e 100644
--- a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html
+++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/gen-no-permission-present-service-with-uuid.https.html
@@ -14,7 +14,7 @@ const expected = new DOMException(
'to \'optionalServices\' in requestDevice() options. https://goo.gl/HxfxSQ',
'SecurityError');
-bluetooth_test(() => getHealthThermometerDevice({
+bluetooth_test(() => getConnectedHealthThermometerDevice({
filters: [{services: ['health_thermometer']}]
})
.then(({device}) => Promise.all([
diff --git a/tests/wpt/web-platform-tests/budget-api/interfaces.any.js b/tests/wpt/web-platform-tests/budget-api/interfaces.any.js
new file mode 100644
index 00000000000..84e8874182a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/budget-api/interfaces.any.js
@@ -0,0 +1,24 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+// See https://wicg.github.io/budget-api/
+
+promise_test(async () => {
+ const html = await fetch('/interfaces/html.idl').then(r => r.text());
+ const workers = await fetch('/interfaces/dedicated-workers.idl').then(r => r.text());
+ const idl = await fetch('/interfaces/budget-api.idl').then(r => r.text());
+
+ const idlArray = new IdlArray();
+ idlArray.add_untested_idls(html, { only: [
+ 'Navigator',
+ 'NavigatorContentUtils',
+ 'NavigatorCookies',
+ 'NavigatorPlugins',
+ ] });
+ idlArray.add_untested_idls(workers);
+ idlArray.add_idls(idl);
+ idlArray.test();
+ done();
+}, 'budget-api interfaces.');
diff --git a/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html b/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html
index 68263267bd0..527a7c9d21d 100644
--- a/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html
+++ b/tests/wpt/web-platform-tests/client-hints/accept_ch.sub.https.html
@@ -7,25 +7,39 @@
// If the response for the HTML file contains "Accept-CH" in the response
// headers, then the browser should attach the specified client hints in the
-// HTTP request headers. Test this functionality by fetching an
-// XHR from this page. The response headers for this page include
-// "Accept-CH: device-memory, dpr, viewport-width".
+// HTTP request headers depending on whether the resource is being fetched from
+// the same origin or a different origin. Test this functionality by fetching
+// same-origin and cross-origin resources from this page. The response headers
+// for this page include "Accept-CH: device-memory, dpr, viewport-width".
//
// echo_client_hints_received.py includes "device-memory-received",
// "dpr-received" and "viewport-width-received" in the response headers
// depending on the set of client hints it receives in the request headers.
- promise_test(t => {
+promise_test(t => {
return fetch("https://{{domains[]}}:{{ports[https][0]}}/client-hints/echo_client_hints_received.py", {"mode": "no-cors"}).then(r => {
assert_equals(r.status, 200)
- // Verify that the browser includes client hints in the headers when
- // fetching the XHR.
+ // Verify that the browser includes client hints in the headers for a
+ // same-origin fetch.
assert_true(r.headers.has("device-memory-received"), "device-memory-received");
assert_true(r.headers.has("dpr-received"), "dpr-received");
assert_true(r.headers.has("viewport-width-received"), "viewport-width-received");
});
}, "Accept-CH header test");
+promise_test(t => {
+ return fetch("https://{{domains[www]}}:{{ports[https][0]}}/client-hints/echo_client_hints_received.py").then(r => {
+ assert_equals(r.status, 200)
+ // Verify that the browser does not include client hints in the headers
+ // for a cross-origin fetch.
+ assert_false(r.headers.has("device-memory-received"), "device-memory-received");
+ assert_false(r.headers.has("dpr-received"), "dpr-received");
+ assert_false(r.headers.has("viewport-width-received"), "viewport-width-received");
+ });
+}, "Cross-Origin Accept-CH header test");
+
+
+
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py b/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py
index a787fed1658..ffec0c1dfc1 100644
--- a/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py
+++ b/tests/wpt/web-platform-tests/client-hints/echo_client_hints_received.py
@@ -4,6 +4,8 @@ def main(request, response):
request header was received or not.
"""
+ response.headers.append("Access-Control-Allow-Origin", "*")
+
if "device-memory" in request.headers:
response.headers.set("device-memory-received", "true")
if "dpr" in request.headers:
diff --git a/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html b/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html
index d69fb70a731..1f523e5d565 100644
--- a/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html
+++ b/tests/wpt/web-platform-tests/clipboard-apis/async-interfaces.https.html
@@ -9,13 +9,13 @@
<script>
'use strict';
-function doTest(idls) {
+function doTest(idl, dom) {
var idl_array = new IdlArray();
idl_array.add_untested_idls('interface Navigator {};');
idl_array.add_untested_idls('interface EventTarget {};');
- for (let idl of idls) {
- idl_array.add_idls(idl);
- }
+ idl_array.add_untested_idls('dictionary PermissionDescriptor {};');
+ idl_array.add_untested_idls(dom, { only: ['Event', 'EventInit'] });
+ idl_array.add_idls(idl);
idl_array.add_objects({
Navigator: ['navigator'],
Clipboard: ['navigator.clipboard'],
@@ -29,7 +29,11 @@ function fetchText(url) {
}
promise_test(() => {
- return Promise.all(["/interfaces/clipboard-apis.idl"].map(fetchText))
- .then(doTest);
+ return Promise.all(
+ [
+ "/interfaces/clipboard-apis.idl",
+ "/interfaces/dom.idl",
+ ].map(fetchText))
+ .then(([idl, dom]) => doTest(idl, dom));
}, "Test driver");
</script>
diff --git a/tests/wpt/web-platform-tests/compat/interfaces.any.js b/tests/wpt/web-platform-tests/compat/interfaces.any.js
new file mode 100644
index 00000000000..1b87c90139a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/compat/interfaces.any.js
@@ -0,0 +1,17 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+// https://compat.spec.whatwg.org/
+
+promise_test(async () => {
+ const idl = await fetch('/interfaces/compat.idl').then(r => r.text());
+ const idlArray = new IdlArray();
+ idlArray.add_untested_idls('interface Window {};');
+ idlArray.add_untested_idls('interface EventTarget{};');
+ idlArray.add_untested_idls('interface HTMLBodyElement{};');
+ idlArray.add_idls(idl);
+ idlArray.test();
+ done();
+}, 'compat interfaces.');
diff --git a/tests/wpt/web-platform-tests/compat/webkit-background-origin-text-ref.html b/tests/wpt/web-platform-tests/compat/webkit-background-origin-text-ref.html
new file mode 100644
index 00000000000..d1f183874c0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/compat/webkit-background-origin-text-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>webkit-background-origin should not accept text as value</title>
+<link rel="author" title="Rob Buis" href="rob.buis@chromium.org">
+<p>There should be a green square below and no red.</p>
+<div style="width: 100px; height: 100px; background-color: green"></div>
diff --git a/tests/wpt/web-platform-tests/compat/webkit-background-origin-text.html b/tests/wpt/web-platform-tests/compat/webkit-background-origin-text.html
new file mode 100644
index 00000000000..06e728342cd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/compat/webkit-background-origin-text.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>webkit-background-origin should not accept text as value</title>
+<link rel="author" title="Rob Buis" href="rob.buis@chromium.org">
+<link rel="match" href="webkit-background-origin-text-ref.html">
+<style>
+#target {
+ width: 0px;
+ background-image: linear-gradient(green, green 50%, red 50%, red);
+ background-size: 200px 200px;
+ background-origin: border-box;
+ -webkit-background-origin: text;
+ padding: 25px;
+ border: 25px solid transparent;
+}
+</style>
+<p>There should be a green square below and no red.</p>
+<div id="target"></div>
diff --git a/tests/wpt/web-platform-tests/console/console-timeline-timelineEnd-historical.any.js b/tests/wpt/web-platform-tests/console/console-tests-historical.any.js
index 038c71582e2..4c4d4c276d0 100644
--- a/tests/wpt/web-platform-tests/console/console-timeline-timelineEnd-historical.any.js
+++ b/tests/wpt/web-platform-tests/console/console-tests-historical.any.js
@@ -1,3 +1,9 @@
+/**
+ * These tests assert the non-existence of certain
+ * legacy Console methods that are not included in
+ * the specification: http://console.spec.whatwg.org/
+ */
+
"use strict";
test(() => {
@@ -6,4 +12,8 @@ test(() => {
test(() => {
assert_equals(console.timelineEnd, undefined, "console.timelineEnd should be undefined");
-}, "'timelineEnd' function should not exist on the console object"); \ No newline at end of file
+}, "'timelineEnd' function should not exist on the console object");
+
+test(() => {
+ assert_equals(console.markTimeline, undefined, "console.markTimeline should be undefined");
+}, "'markTimeline' function should not exist on the console object");
diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js
index c48a136b936..127a94ba359 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js
+++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js
@@ -118,7 +118,7 @@ function assert_iframe_with_csp(t, url, csp, shouldBlock, urlId, blockedURI) {
window.onmessage = function (e) {
if (e.source != i.contentWindow)
return;
- t.unreached_func('No message should be sent from the frame.');
+ t.assert_unreached('No message should be sent from the frame.');
}
i.onload = t.step_func(function () {
// Delay the check until after the postMessage has a chance to execute.
@@ -138,12 +138,18 @@ function assert_iframe_with_csp(t, url, csp, shouldBlock, urlId, blockedURI) {
t.done();
}));
} else {
- // Assert iframe loads.
+ // Assert iframe loads. Wait for both the load event and the postMessage.
+ window.addEventListener('message', t.step_func(e => {
+ if (e.source != i.contentWindow)
+ return;
+ assert_true(loaded[urlId]);
+ if (i.onloadReceived)
+ t.done();
+ }));
i.onload = t.step_func(function () {
- // Delay the check until after the postMessage has a chance to execute.
- setTimeout(t.step_func_done(function () {
- assert_true(loaded[urlId]);
- }), 1);
+ if (loaded[urlId])
+ t.done();
+ i.onloadReceived = true;
});
}
document.body.appendChild(i);
diff --git a/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-overrides-xfo.html b/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-overrides-xfo.html
index 83654660331..2db0b7f6f7f 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-overrides-xfo.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-overrides-xfo.html
@@ -19,10 +19,7 @@
var i = document.createElement('iframe');
i.src = "support/frame-ancestors-and-x-frame-options.sub.html?policy=other-origin.com&xfo=SAMEORIGIN";
i.onload = t.step_func_done(function () {
- assert_throws(
- "SecurityError",
- function () { i.contentDocument.origin },
- "The same-origin page was blocked and sandboxed.");
+ assert_equals(i.contentDocument, null);
});
document.body.appendChild(i);
}, "A 'frame-ancestors' CSP directive overrides an 'x-frame-options' header which would allow the page.");
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html
index 3848c2fa910..6c05478190f 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-allowed.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<head>
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -15,4 +16,4 @@
<iframe srcdoc="<iframe src='support/navigate_parent.sub.html?csp=navigate-to%20%27self%27'>">
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.html
index a5bea3ffa2a..b665b7ac760 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/child-navigates-parent-blocked.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<head>
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -16,4 +17,4 @@
<iframe srcdoc="<iframe src='support/navigate_parent.sub.html?csp=navigate-to%20%27none%27'>">
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html
index 977b85dfb2c..3f7f678c72a 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-allowed.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<head>
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -13,4 +14,4 @@
});
</script>
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27self%27&target=post_message_to_frame_owner.html">
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.html
index 6817da212af..65de768802b 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-blocked.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<head>
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -14,4 +15,4 @@
});
</script>
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27none%27&target=post_message_to_frame_owner.html">
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html
index 4381bcb08d6..360ede37f1d 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-allowed.sub.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<head>
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -13,4 +14,4 @@
});
</script>
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html">
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html
index 1041506eb81..50f258ba7ff 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-cross-origin-blocked.sub.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<head>
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -14,4 +15,4 @@
});
</script>
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27self%27&target=http%3A%2F%2F{{domains[www1]}}:{{ports[http][0]}}%2Fcontent-security-policy%2Fnavigate-to%2Fsupport%2Fpost_message_to_frame_owner.html">
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html
index 87dea95b1dc..e75a7e5a502 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-allowed.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<head>
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -13,4 +14,4 @@
});
</script>
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20%27self%27&target=redirect_to_post_message_to_frame_owner.py">
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html
index f0bf4df25d6..355e2c8598b 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/navigate-to/link-click-redirected-blocked.sub.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<head>
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -14,4 +15,4 @@
});
</script>
<iframe src="support/link_click_navigation.sub.html?csp=navigate-to%20{{location[server]}}/content-security-policy/navigate-to/support/redirect_to_post_message_to_frame_owner.py&target=redirect_to_post_message_to_frame_owner.py">
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-allowed.html
index e103a9fb246..95177c13064 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-allowed.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/prefetch-src/prefetch-allowed.html
@@ -1,20 +1,27 @@
<!DOCTYPE html>
<html>
<head>
- <meta http-equiv="Content-Security-Policy" content="prefetch-src 'self'">
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='/content-security-policy/support/testharness-helper.js'></script>
<script src='/content-security-policy/support/prefetch-helper.js'></script>
<script>
async_test(t => {
- let url = window.origin + '/content-security-policy/support/pass.png';
+ var win = window.open('/content-security-policy/support/' +
+ 'file-prefetch-allowed.html');
+ win.addEventListener('load', function () {
+ // Cache control headers are added,since they are needed
+ // to enable prefetching.
+ let url = '/content-security-policy/support/pass.png' +
+ '?pipe=header(Cache-Control, max-age=604800)';
- let link = document.createElement('link');
- link.rel = 'prefetch';
- link.href = url;
-
- assert_link_prefetches(t, link);
+ // Link element is created on the new opened window.
+ let link = win.document.createElement('link');
+ link.rel = 'prefetch';
+ link.href = url;
+ assert_link_prefetches(t, link);
+ win.close();
+ }, false);
}, 'Prefetch succeeds when allowed by prefetch-src');
</script>
</head>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/idl.html b/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/idl.html
index a4f9e68f831..1849abc3446 100644
--- a/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/idl.html
+++ b/tests/wpt/web-platform-tests/content-security-policy/securitypolicyviolation/idl.html
@@ -21,9 +21,6 @@
long lineNumber;
long columnNumber;
};
-
- interface Event {
- };
</script>
<script type="text/plain" id="tested">
[Constructor(DOMString type, optional SecurityPolicyViolationEventInit eventInitDict)]
@@ -42,11 +39,16 @@
};
</script>
<script>
- var idl_array = new IdlArray();
+ promise_test(async function() {
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+
+ const idl_array = new IdlArray();
idl_array.add_untested_idls(document.querySelector('#untested').textContent);
+ idl_array.add_untested_idls(dom, { only: ['Event', 'EventInit'] });
idl_array.add_idls(document.querySelector('#tested').textContent);
idl_array.add_objects({
- SecurityPolicyViolationEvent: ['new SecurityPolicyViolationEvent({})']
+ SecurityPolicyViolationEvent: ['new SecurityPolicyViolationEvent({})']
});
idl_array.test();
+ })
</script>
diff --git a/tests/wpt/web-platform-tests/content-security-policy/support/file-prefetch-allowed.html b/tests/wpt/web-platform-tests/content-security-policy/support/file-prefetch-allowed.html
new file mode 100644
index 00000000000..bd60d262ad8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/content-security-policy/support/file-prefetch-allowed.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <!-- CSP directive 'prefetch-src' is not supported via meta tag though -->
+ <meta http-equiv="Content-Security-Policy" content="prefetch-src 'self'">
+</head>
+<body>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_set_expires_option.tentative.window.js b/tests/wpt/web-platform-tests/cookie-store/cookieStore_set_expires_option.tentative.window.js
new file mode 100644
index 00000000000..fdbe2d92c31
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_set_expires_option.tentative.window.js
@@ -0,0 +1,59 @@
+'use strict';
+
+// Workaround because add_cleanup doesn't support async functions yet.
+// See https://github.com/w3c/web-platform-tests/issues/6075
+async function async_cleanup(cleanup_function) {
+ try {
+ await cleanup_function();
+ } catch (e) {
+ // Errors in cleanup functions shouldn't result in test failures.
+ }
+}
+
+promise_test(async testCase => {
+ const inTwentyFourHours = new Date(Date.now() + 24 * 60 * 60 * 1000);
+
+ assert_equals(
+ await cookieStore.set(
+ 'cookie-name', 'cookie-value', { expires: inTwentyFourHours }),
+ undefined);
+
+ const cookie = await cookieStore.get('cookie-name');
+ assert_equals(cookie.name, 'cookie-name');
+ assert_equals(cookie.value, 'cookie-value');
+
+ await async_cleanup(() => cookieStore.delete('cookie-name'));
+}, 'cookieStore.set with expires option: Date object');
+
+promise_test(async testCase => {
+ const inTwentyFourHours = Date.now() + 24 * 60 * 60 * 1000;
+
+ assert_equals(
+ await cookieStore.set(
+ 'cookie-name', 'cookie-value', { expires: inTwentyFourHours }),
+ undefined);
+
+ const cookie = await cookieStore.get('cookie-name');
+ assert_equals(cookie.name, 'cookie-name');
+ assert_equals(cookie.value, 'cookie-value');
+
+ await async_cleanup(() => cookieStore.delete('cookie-name'));
+}, 'cookieStore.set with expires option: milliseconds since epoch object');
+
+promise_test(async testCase => {
+ const year = (new Date()).getUTCFullYear() + 1;
+ const date = new Date('07 Jun ' + year + ' 07:07:07 UTC');
+ const day = ('Sun Mon Tue Wed Thu Fri Sat'.split(' '))[date.getUTCDay()];
+ const nextJune = `${day}, 07 Jun ${year} + ' 07:07:07 GMT`;
+
+ assert_equals(
+ await cookieStore.set(
+ 'cookie-name', 'cookie-value', { expires: nextJune }),
+ undefined);
+
+ const cookie = await cookieStore.get('cookie-name');
+ assert_equals(cookie.name, 'cookie-name');
+ assert_equals(cookie.value, 'cookie-value');
+
+ await async_cleanup(() => cookieStore.delete('cookie-name'));
+}, 'cookieStore.set with expires option: HTTP date string');
diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.tentative.html b/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.tentative.html
index 3a80f83a03b..9859e100521 100644
--- a/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.tentative.html
+++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.tentative.html
@@ -1,6 +1,6 @@
<!doctype html>
<meta charset="utf-8">
-<title>Async Cookies: cookieStore handles special cookie names correctly</title>
+<title>Cookie Store: cookieStore handles special cookie names correctly</title>
<link rel="help" href="https://github.com/WICG/cookie-store">
<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
<script src="/resources/testharness.js"></script>
@@ -8,28 +8,64 @@
<script>
'use strict';
-promise_test(async testCase => {
- await promise_rejects(testCase, new TypeError(), cookieStore.set(
- '__Secure-cookie-name', 'secure-cookie-value'));
+['__Secure-', '__Host-'].forEach(prefix => {
+ promise_test(async testCase => {
+ await promise_rejects(
+ testCase, new TypeError(),
+ cookieStore.set(`${prefix}cookie-name`, `secure-cookie-value`),
+ `Setting ${prefix} cookies should fail in non-secure contexts`);
- try { await cookieStore.delete('__Secure-cookie-name'); } catch (e) {}
-}, 'cookieStore.set with __Secure- name on insecure origin');
+ try { await cookieStore.delete(`${prefix}cookie-name`); } catch (e) {}
+ }, `cookieStore.set with ${prefix} name on non-secure origin`);
-promise_test(async testCase => {
- await promise_rejects(testCase, new TypeError(), cookieStore.set(
- '__Host-cookie-name', 'host-cookie-value'));
+ promise_test(async testCase => {
+ await promise_rejects(
+ testCase, new TypeError(),
+ cookieStore.set(
+ `${prefix}cookie-name`, `secure-cookie-value`, {
+ expires: Date.now() - (24 * 60 * 60 * 1000)
+ }),
+ `Setting expired ${prefix} cookies should fail in non-secure contexts`);
- try { await cookieStore.delete('__Host-cookie-name'); } catch (e) {}
-}, 'cookieStore.set with __Host- name on insecure origin');
+ try { await cookieStore.delete(`${prefix}cookie-name`); } catch (e) {}
+ }, `cookieStore.set of expired ${prefix} cookie on non-secure origin`);
-promise_test(async testCase => {
- await promise_rejects(testCase, new TypeError(), cookieStore.delete(
- '__Secure-cookie-name', 'secure-cookie-value'));
-}, 'cookieStore.delete with __Secure- name on insecure origin');
+ promise_test(async testCase => {
+ assert_equals(
+ await cookieStore.get(`${prefix}cookie-name`),
+ null,
+ 'get with ${prefix} prefix should not reject');
+ assert_equals(
+ await cookieStore.get({name: `${prefix}cookie-name`}),
+ null,
+ 'get with ${prefix} prefix name option should not reject');
+ assert_equals(
+ await cookieStore.get({name: prefix, matchType: 'startsWith'}),
+ null,
+ 'get with ${prefix} name and startsWith options should not reject');
+ }, `cookieStore.get with ${prefix} name on non-secure origin`);
-promise_test(async testCase => {
- await promise_rejects(testCase, new TypeError(), cookieStore.delete(
- '__Host-cookie-name', 'host-cookie-value'));
-}, 'cookieStore.delete with __Host- name on insecure origin');
+ promise_test(async testCase => {
+ assert_array_equals(
+ await cookieStore.getAll(`${prefix}cookie-name`),
+ [],
+ 'getAll with ${prefix} prefix should not reject');
+ assert_array_equals(
+ await cookieStore.getAll({name: `${prefix}cookie-name`}),
+ [],
+ 'getAll with ${prefix} prefix name option should not reject');
+ assert_array_equals(
+ await cookieStore.getAll({name: prefix, matchType: 'startsWith'}),
+ [],
+ 'getAll with ${prefix} name and startsWith options should not reject');
+ }, `cookieStore.getAll with ${prefix} name on non-secure origin`);
+
+ promise_test(async testCase => {
+ await promise_rejects(
+ testCase, new TypeError(),
+ cookieStore.delete(`${prefix}cookie-name`, `host-cookie-value`),
+ `Deleting ${prefix} cookies should fail in non-secure contexts`);
+ }, `cookieStore.delete with ${prefix} name on non-secure origin`);
+});
</script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.tentative.https.html
new file mode 100644
index 00000000000..0d1be12fa18
--- /dev/null
+++ b/tests/wpt/web-platform-tests/cookie-store/cookieStore_special_names.tentative.https.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Cookie Store: cookieStore handles special cookie names correctly (secure context)</title>
+<link rel="help" href="https://github.com/WICG/cookie-store">
+<link rel="author" href="pwnall@chromium.org" title="Victor Costan">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+'use strict';
+
+['__Secure-', '__Host-'].forEach(prefix => {
+ promise_test(async testCase => {
+ await cookieStore.set(`${prefix}cookie-name`, `secure-cookie-value`);
+ assert_equals(
+ (await cookieStore.get(`${prefix}cookie-name`)).value,
+ 'secure-cookie-value',
+ `Setting ${prefix} cookies should not fail in secure context`);
+
+ try { await cookieStore.delete(`${prefix}cookie-name`); } catch (e) {}
+ }, `cookieStore.set with ${prefix} name on secure origin`);
+
+ promise_test(async testCase => {
+ // This test is for symmetry with the non-secure case. In non-secure
+ // contexts, the set() should fail even if the expiration date makes
+ // the operation a no-op.
+ await cookieStore.set(
+ `${prefix}cookie-name`, `secure-cookie-value`, {
+ expires: Date.now() - (24 * 60 * 60 * 1000)
+ });
+ assert_equals(await cookieStore.get(`${prefix}cookie-name`), null);
+ try { await cookieStore.delete(`${prefix}cookie-name`); } catch (e) {}
+ }, `cookieStore.set of expired ${prefix} cookie name on secure origin`);
+
+ promise_test(async testCase => {
+ assert_equals(
+ await cookieStore.delete(`${prefix}cookie-name`), undefined,
+ `Deleting ${prefix} cookies should not fail in secure context`);
+ }, `cookieStore.delete with ${prefix} name on secure origin`);
+});
+
+</script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/expiration.tentative.html b/tests/wpt/web-platform-tests/cookie-store/expiration.tentative.html
deleted file mode 100644
index d7164a94718..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/expiration.tentative.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Async Cookies: expiration</title>
-<meta name="help" href="https://github.com/WICG/cookie-store/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/cookie-test-helpers.js"></script>
-<script src="resources/expiration.js"></script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/expiration.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/expiration.tentative.https.html
deleted file mode 100644
index 638b0477e5a..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/expiration.tentative.https.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Async Cookies: expiration (HTTPS)</title>
-<meta name="help" href="https://github.com/WICG/cookie-store/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/cookie-test-helpers.js"></script>
-<script src="resources/expiration.js"></script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/idlharness.tentative.html b/tests/wpt/web-platform-tests/cookie-store/idlharness.tentative.html
index e9ffab3730f..e313b04ff8f 100644
--- a/tests/wpt/web-platform-tests/cookie-store/idlharness.tentative.html
+++ b/tests/wpt/web-platform-tests/cookie-store/idlharness.tentative.html
@@ -10,21 +10,38 @@
'use strict';
promise_test(async t => {
- const urls = ['/interfaces/html.idl', '/interfaces/cookie-store.idl'];
- const [html, cookie_store] = await Promise.all(
- urls.map(url => fetch(url).then(response => response.text())));
+ const urls = [
+ '/interfaces/uievents.idl',
+ '/interfaces/dom.idl',
+ '/interfaces/html.idl',
+ '/interfaces/cookie-store.idl'
+ ];
+ const [uievents, dom, html, cookie_store] = await Promise.all(
+ urls.map(url => fetch(url).then(r => r.text())));
const idl_array = new IdlArray();
// Dependencies of HTML
+ idl_array.add_untested_idls(dom, { only: [
+ 'Event',
+ 'EventInit',
+ 'EventTarget',
+ 'HTMLCollection',
+ 'NodeList',
+ ] });
idl_array.add_untested_idls('interface Document {};');
+ idl_array.add_untested_idls('interface Element {};');
idl_array.add_untested_idls('interface LinkStyle {};');
idl_array.add_untested_idls('interface SVGElement {};');
idl_array.add_untested_idls(html);
+ idl_array.add_untested_idls(uievents, { only: [
+ 'UIEvent',
+ 'UIEventInit',
+ 'MouseEvent',
+ 'MouseEventInit',
+ 'EventModifierInit',
+ ] });
- idl_array.add_untested_idls('interface Event {};');
- idl_array.add_untested_idls('dictionary EventInit {};');
- idl_array.add_untested_idls('interface EventTarget {};');
idl_array.add_untested_idls(
`[Global=ServiceWorker, Exposed=ServiceWorker]
interface ServiceWorkerGlobalScope {};`);
diff --git a/tests/wpt/web-platform-tests/cookie-store/one_simple_origin_cookie.tentative.html b/tests/wpt/web-platform-tests/cookie-store/one_simple_origin_cookie.tentative.html
deleted file mode 100644
index b1d264cde1b..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/one_simple_origin_cookie.tentative.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Async Cookies: One simple origin cookie</title>
-<meta name="help" href="https://github.com/WICG/cookie-store/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/cookie-test-helpers.js"></script>
-<script src="resources/one_simple_origin_cookie.js"></script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/one_simple_origin_cookie.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/one_simple_origin_cookie.tentative.https.html
deleted file mode 100644
index 132d8ccb575..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/one_simple_origin_cookie.tentative.https.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Async Cookies: One simple origin cookie (HTTPS)</title>
-<meta name="help" href="https://github.com/WICG/cookie-store/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/cookie-test-helpers.js"></script>
-<script src="resources/one_simple_origin_cookie.js"></script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/resources/expiration.js b/tests/wpt/web-platform-tests/cookie-store/resources/expiration.js
deleted file mode 100644
index 816ace48693..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/resources/expiration.js
+++ /dev/null
@@ -1,89 +0,0 @@
-'use strict';
-
-// Set the secure example.org-domain cookie __Secure-COOKIENAME with
-// value cookie-value on path /cgi-bin/ and 24 hour duration; domain
-// and path will be rewritten below.
-//
-// This uses a Date object for expiration.
-async function setOneDaySecureCookieWithDate() {
- // one day ahead, ignoring a possible leap-second
- let inTwentyFourHours = new Date(Date.now() + 24 * 60 * 60 * 1000);
- await cookieStore.set('__Secure-COOKIENAME', 'cookie-value', {
- path: kPath,
- expires: inTwentyFourHours,
- secure: true,
- domain: location.hostname
- });
-}
-
-// Set the secured example.org-domain cookie __Secure-COOKIENAME with
-// value cookie-value on path /cgi-bin/ and expiration in June of next
-// year; domain and path will be rewritten below.
-//
-// This uses an HTTP-style date string for expiration.
-async function setSecureCookieWithHttpLikeExpirationString() {
- const year = (new Date()).getUTCFullYear() + 1;
- const date = new Date('07 Jun ' + year + ' 07:07:07 UTC');
- const day = ('Sun Mon Tue Wed Thu Fri Sat'.split(' '))[date.getUTCDay()];
- await cookieStore.set('__Secure-COOKIENAME', 'cookie-value', {
- path: kPath,
- expires: day + ', 07 Jun ' + year + ' 07:07:07 GMT',
- secure: true,
- domain: location.hostname
- });
-}
-
-// Set the unsecured example.org-domain cookie LEGACYCOOKIENAME with
-// value cookie-value on path /cgi-bin/ and 24 hour duration; domain
-// and path will be rewritten below.
-//
-// This uses milliseconds since the start of the Unix epoch for
-// expiration.
-async function setOneDayUnsecuredCookieWithMillisecondsSinceEpoch() {
- // one day ahead, ignoring a possible leap-second
- let inTwentyFourHours = Date.now() + 24 * 60 * 60 * 1000;
- await cookieStore.set('LEGACYCOOKIENAME', 'cookie-value', {
- path: kPath,
- expires: inTwentyFourHours,
- secure: false,
- domain: location.hostname
- });
-}
-
-// Delete the cookie written by
-// setOneDayUnsecuredCookieWithMillisecondsSinceEpoch.
-async function deleteUnsecuredCookieWithDomainAndPath() {
- await cookieStore.delete('LEGACYCOOKIENAME', {
- path: kPath,
- secure: false,
- domain: location.hostname
- });
-}
-
-cookie_test(async testCase => {
- await promise_rejects_when_unsecured(
- testCase,
- new TypeError(),
- setOneDaySecureCookieWithDate(),
- 'Secure cookies only writable from secure contexts');
-
- const eventPromise = observeNextCookieChangeEvent();
-
- await setOneDayUnsecuredCookieWithMillisecondsSinceEpoch();
- assert_equals(
- await getCookieString('LEGACYCOOKIENAME'),
- 'LEGACYCOOKIENAME=cookie-value',
- 'Ensure unsecured cookie we set is visible');
-
- await verifyCookieChangeEvent(
- eventPromise,
- {changed: [{name: 'LEGACYCOOKIENAME', value: 'cookie-value'}]},
- 'Ensure unsecured cookie we set is visible to observer');
-
- await deleteUnsecuredCookieWithDomainAndPath();
- await promise_rejects_when_unsecured(
- testCase,
- new TypeError(),
- setSecureCookieWithHttpLikeExpirationString(),
- 'Secure cookies only writable from secure contexts');
-}, 'expiration');
diff --git a/tests/wpt/web-platform-tests/cookie-store/resources/no_name_equals_in_value.js b/tests/wpt/web-platform-tests/cookie-store/resources/no_name_equals_in_value.js
index 3dc73e80799..b6cfab52562 100644
--- a/tests/wpt/web-platform-tests/cookie-store/resources/no_name_equals_in_value.js
+++ b/tests/wpt/web-platform-tests/cookie-store/resources/no_name_equals_in_value.js
@@ -3,10 +3,10 @@
cookie_test(async t => {
let eventPromise = observeNextCookieChangeEvent();
await cookieStore.set('', 'first-value');
- const actual1 =
- (await cookieStore.getAll('')).map(({ value }) => value).join(';');
- const expected1 = 'first-value';
- assert_equals(actual1, expected1);
+ assert_equals(
+ (await cookieStore.getAll('')).map(({ value }) => value).join(';'),
+ 'first-value',
+ 'Cookie with no name and normal value should have been set');
await verifyCookieChangeEvent(
eventPromise, {changed: [{name: '', value: 'first-value'}]},
'Observed no-name change');
@@ -16,31 +16,26 @@ cookie_test(async t => {
new TypeError(),
cookieStore.set('', 'suspicious-value=resembles-name-and-value'),
'Expected promise rejection when setting a cookie with' +
- ' no name and "=" in value');
+ ' no name and "=" in value (via arguments)');
+
+ await promise_rejects(
+ t,
+ new TypeError(),
+ cookieStore.set(
+ {name: '', value: 'suspicious-value=resembles-name-and-value'}),
+ 'Expected promise rejection when setting a cookie with' +
+ ' no name and "=" in value (via options)');
- const actual2 =
- (await cookieStore.getAll('')).map(({ value }) => value).join(';');
- const expected2 = 'first-value';
- assert_equals(actual2, expected2);
assert_equals(
- await getCookieString(),
+ (await cookieStore.getAll('')).map(({ value }) => value).join(';'),
'first-value',
- 'Earlier cookie jar after rejected');
+ 'Cookie with no name should still have previous value');
eventPromise = observeNextCookieChangeEvent();
await cookieStore.delete('');
await verifyCookieChangeEvent(
- eventPromise, {deleted: [{name: '', value: ''}]},
+ eventPromise, {deleted: [{name: ''}]},
'Observed no-name deletion');
- assert_equals(
- await getCookieString(),
- undefined,
- 'Empty cookie jar after cleanup');
- assert_equals(
- await getCookieStringHttp(),
- undefined,
- 'Empty HTTP cookie jar after cleanup');
-
}, "Verify that attempting to set a cookie with no name and with '=' in" +
" the value does not work.");
diff --git a/tests/wpt/web-platform-tests/cookie-store/resources/one_simple_origin_cookie.js b/tests/wpt/web-platform-tests/cookie-store/resources/one_simple_origin_cookie.js
deleted file mode 100644
index cbaf73d3443..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/resources/one_simple_origin_cookie.js
+++ /dev/null
@@ -1,57 +0,0 @@
-'use strict';
-
-// Helper to verify first-of-name get using async/await.
-//
-// Returns the first script-visible value of the __Host-COOKIENAME cookie or
-// undefined if no matching cookies are script-visible.
-async function getOneSimpleOriginCookie() {
- let cookie = await cookieStore.get('__Host-COOKIENAME');
- if (!cookie) return undefined;
- return cookie.value;
-}
-
-// Returns the number of script-visible cookies whose names start with
-// __Host-COOKIEN
-async function countMatchingSimpleOriginCookies() {
- let cookieList = await cookieStore.getAll({
- name: '__Host-COOKIEN',
- matchType: 'startsWith'
- });
- return cookieList.length;
-}
-
-// Set the secure implicit-domain cookie __Host-COOKIENAME with value
-// cookie-value on path / and session duration.
-async function setOneSimpleOriginSessionCookie() {
- await cookieStore.set('__Host-COOKIENAME', 'cookie-value');
-};
-
-cookie_test(async testCase => {
- await promise_rejects_when_unsecured(
- testCase,
- new TypeError(),
- setOneSimpleOriginSessionCookie(),
- '__Host- prefix only writable from secure contexts');
- if (!kIsUnsecured) {
- assert_equals(
- await getOneSimpleOriginCookie(),
- 'cookie-value',
- '__Host-COOKIENAME cookie should be found in a secure context');
- } else {
- assert_equals(
- await getOneSimpleOriginCookie(),
- undefined,
- '__Host-COOKIENAME cookie should not be found in an unsecured context');
- }
- if (kIsUnsecured) {
- assert_equals(
- await countMatchingSimpleOriginCookies(),
- 0,
- 'No __Host-COOKIEN* cookies should be found in an unsecured context');
- } else {
- assert_equals(
- await countMatchingSimpleOriginCookies(),
- 1,
- 'One __Host-COOKIEN* cookie should be found in a secure context');
- }
-}, 'One simple origin cookie');
diff --git a/tests/wpt/web-platform-tests/cookie-store/resources/secure_cookies.js b/tests/wpt/web-platform-tests/cookie-store/resources/secure_cookies.js
deleted file mode 100644
index 9f600ecdf3e..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/resources/secure_cookies.js
+++ /dev/null
@@ -1,46 +0,0 @@
-
-cookie_test(async t => {
- const theVeryRecentPast = Date.now();
- const expiredCookieSentinelValue = 'EXPIRED';
- await promise_rejects_when_unsecured(
- t,
- new TypeError(),
- cookieStore.set('__Secure-COOKIENAME', expiredCookieSentinelValue, {
- path: kPath,
- expires: theVeryRecentPast,
- secure: true,
- domain: location.hostname
- }),
- 'Secure cookies only writable from secure contexts');
-
-}, 'Set an already-expired secure cookie');
-
-['__Host-', '__Secure-'].forEach(prefix => {
- cookie_test(async t => {
- const name = prefix + 'COOKIENAME';
- const value = 'cookie-value';
-
- await promise_rejects_when_unsecured(
- t,
- new TypeError(),
- cookieStore.set(name, value),
- `Setting ${prefix} cookies should fail in non-secure contexts`);
-
- // Getting does not produce an exception, even in non-secure contexts.
- const pair = await cookieStore.get(name);
-
- if (kIsUnsecured) {
- assert_equals(pair, null);
- } else {
- assert_equals(pair.value, value);
- }
-
- await promise_rejects_when_unsecured(
- t,
- new TypeError(),
- cookieStore.delete(name),
- `Deleting ${prefix} cookies should fail in non-secure contexts`);
-
- assert_equals(await cookieStore.get(name), null);
- }, `${prefix} cookies only writable from secure context`);
-});
diff --git a/tests/wpt/web-platform-tests/cookie-store/secure_cookies.tentative.html b/tests/wpt/web-platform-tests/cookie-store/secure_cookies.tentative.html
deleted file mode 100644
index 4bbf718e3df..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/secure_cookies.tentative.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Async Cookies: __Secure- and __Host- cookies</title>
-<meta name="help" href="https://github.com/WICG/cookie-store/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/cookie-test-helpers.js"></script>
-<script src="resources/secure_cookies.js"></script>
diff --git a/tests/wpt/web-platform-tests/cookie-store/secure_cookies.tentative.https.html b/tests/wpt/web-platform-tests/cookie-store/secure_cookies.tentative.https.html
deleted file mode 100644
index 2fa9a412fc6..00000000000
--- a/tests/wpt/web-platform-tests/cookie-store/secure_cookies.tentative.https.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Async Cookies: __Secure- and __Host- cookies (HTTPS)</title>
-<meta name="help" href="https://github.com/WICG/cookie-store/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/cookie-test-helpers.js"></script>
-<script src="resources/secure_cookies.js"></script>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html
index 29ecc78f455..f3d3c1891a1 100644
--- a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html
@@ -4,7 +4,7 @@
<link rel="help" href="https://www.w3.org/TR/CSS22/visuren.html#flow-control" title="9.5.2 Controlling flow next to floats: the 'clear' property">
<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
<p>Test passes if there is a filled green square.</p>
-<div style="position:relative; z-index:-1; top:-50px; width:100px; background:green;">
+<div style="border-top:1px solid white; position:relative; z-index:-1; top:-51px; width:100px; background:green;">
<div style="float:left; width:100px; height:50px; background:white;"></div>
<div style="clear:left; margin-top:25px;">
<div style="height:50px; margin-top:150px; background:white;"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html b/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html
index 153f6dd3d71..150633360d7 100644
--- a/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html
+++ b/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-001.html
@@ -8,7 +8,7 @@
<script src="/css/css-align/resources/alignment-parsing-utils.js"></script>
<div id="log"></div>
<script>
- let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses);
+ let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses, overflowClasses);
for (var key in classes) {
let value = classes[key];
test(function() {
diff --git a/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html b/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html
index e8a7b33dae6..589feff0c07 100644
--- a/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html
+++ b/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-002.html
@@ -8,10 +8,12 @@
<script src="/css/css-align/resources/alignment-parsing-utils.js"></script>
<div id="log"></div>
<script>
- let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses, baselineClasses);
+ let classes = Object.assign({"Normal":"normal"}, contentPositionClasses, distributionClasses, baselineClasses,
+ overflowClasses);
for (var key1 in classes) {
let alignValue = classes[key1];
- let classes2 = Object.assign({"Normal":"normal", "Left":"left", "Right":"right"}, contentPositionClasses, distributionClasses);
+ let classes2 = Object.assign({"Normal":"normal", "Left":"left", "Right":"right"}, contentPositionClasses,
+ distributionClasses);
for (var key2 in classes2) {
let justifyValue = classes2[key2];
test(function() {
diff --git a/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html b/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html
index 3f9bd88efb0..f43741035af 100644
--- a/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html
+++ b/tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-004.html
@@ -14,11 +14,6 @@
}
test(function() {
- checkInvalidValues("safe center")
- checkInvalidValues("unsafe center")
- }, "Verify overflow keywords are invalid");
-
- test(function() {
checkInvalidValues("center space-between start")
}, "Verify fallback values are invalid");
@@ -29,8 +24,6 @@
}, "Verify 'left' and 'right' values are invalid for block/cross axis alignment");
test(function() {
- checkInvalidValues("baseline")
- checkInvalidValues("first baseline")
checkInvalidValues("start baseline")
checkInvalidValues("end last baseline")
}, "Verify <baseline-position> values are invalid for the justify-content property");
diff --git a/tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html b/tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html
index aa4b147352e..b2edd2affce 100644
--- a/tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html
+++ b/tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html
@@ -15,7 +15,7 @@
<div id="log"></div>
<script>
let classes = Object.assign({"Normal":"normal", "Stretch":"stretch", "Left":"left", "Right":"right"},
- selfPositionClasses, baselineClasses, overflowClasses);
+ selfPositionClasses, baselineClasses, overflowClasses, legacyClasses);
for (var key in classes) {
let specifiedValue = classes[key];
diff --git a/tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html b/tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html
index 9ab5ee3099a..6da7d7677a6 100644
--- a/tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html
+++ b/tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html
@@ -17,7 +17,7 @@
document.body.appendChild(element);
let classes = Object.assign({"Normal":"normal", "Stretch":"stretch", "Left":"left", "Right":"right"},
- selfPositionClasses, baselineClasses, overflowClasses);
+ selfPositionClasses, baselineClasses, overflowClasses, legacyClasses);
for (var key in classes) {
let specifiedValue = classes[key];
diff --git a/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html b/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html
index c67ca9cbaf2..5b63c878127 100644
--- a/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html
+++ b/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-001.html
@@ -8,7 +8,8 @@
<script src="/css/css-align/resources/alignment-parsing-utils.js"></script>
<div id="log"></div>
<script>
- let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses);
+ let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses,
+ overflowClasses);
for (var key in classes) {
let value = classes[key];
test(function() {
diff --git a/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html b/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html
index 61dab31b74e..3a075b20d8f 100644
--- a/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html
+++ b/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-002.html
@@ -8,10 +8,11 @@
<script src="/css/css-align/resources/alignment-parsing-utils.js"></script>
<div id="log"></div>
<script>
- let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses);
+ let classes = Object.assign({"Normal":"normal", "Stretch":"stretch"}, selfPositionClasses, baselineClasses,
+ overflowClasses);
for (var key1 in classes) {
let alignValue = classes[key1];
- let classes2 = Object.assign({"Left":"left", "Right":"right"}, classes);
+ let classes2 = Object.assign({"Left":"left", "Right":"right"}, legacyClasses, classes);
for (var key2 in classes2) {
let justifyValue = classes2[key2];
test(function() {
diff --git a/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html b/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html
index aa3ff30f70f..f0d245c0410 100644
--- a/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html
+++ b/tests/wpt/web-platform-tests/css/css-align/default-alignment/place-items-shorthand-004.html
@@ -14,12 +14,7 @@
}
test(function() {
- checkInvalidValues("safe center")
- checkInvalidValues("unsafe center")
- }, "Verify overflow keywords are invalid");
-
- test(function() {
- checkInvalidValues("center space-between start")
+ checkInvalidValues("center end start")
}, "Verify fallback values are invalid");
test(function() {
@@ -34,23 +29,6 @@
}, "Verify numeric values are invalid");
test(function() {
- checkInvalidValues("auto")
- checkInvalidValues("auto right")
- checkInvalidValues("auto auto")
- checkInvalidValues("center auto")
- }, "Verify 'auto' value is invalid.");
-
- test(function() {
- checkInvalidValues("legacy")
- checkInvalidValues("legacy start")
- checkInvalidValues("end legacy")
- checkInvalidValues("legacy left")
- checkInvalidValues("center legacy")
- checkInvalidValues("start legacy center")
- }, "Verify 'legacy' value is invalid.");
-
-
- test(function() {
checkInvalidValues("")
}, "Verify empty declaration is invalid");
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html b/tests/wpt/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html
new file mode 100644
index 00000000000..730b2ad867a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-align/default-alignment/shorthand-serialization-001.html
@@ -0,0 +1,131 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset=utf-8>
+ <title>Test serialization of CSS Align shorthand properties</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-align/">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+
+<script>
+
+var initial_values = {
+ alignContent: "normal",
+ alignItems: "normal",
+ alignSelf: "auto",
+ justifyContent: "normal",
+ justifyItems: "legacy",
+ justifySelf: "auto",
+};
+
+var place_content_test_cases = [
+ {
+ alignContent: "center",
+ shorthand: "center normal",
+ },
+ {
+ alignContent: "baseline safe right",
+ shorthand: "",
+ },
+ {
+ justifyContent: "safe start",
+ shorthand: "normal safe start",
+ },
+ {
+ justifyContent: "unsafe start",
+ shorthand: ["normal start", "normal unsafe start"],
+ },
+ {
+ justifyContent: "space-evenly start",
+ shorthand: "",
+ },
+ {
+ alignContent: "start",
+ justifyContent: "end",
+ shorthand: "start end",
+ },
+];
+
+var place_items_test_cases = [
+ {
+ alignItems: "center",
+ shorthand: "center legacy",
+ },
+ {
+ alignItems: "baseline",
+ shorthand: "baseline legacy",
+ },
+ {
+ justifyItems: "safe start",
+ shorthand: "normal safe start",
+ },
+ {
+ justifyItems: "unsafe start",
+ shorthand: ["normal start", "normal unsafe start"],
+ },
+ {
+ justifyItems: "stretch",
+ shorthand: "normal stretch",
+ },
+ {
+ justifyItems: "left legacy",
+ shorthand: "normal legacy left",
+ },
+ {
+ alignItems: "stretch",
+ justifyItems: "end",
+ shorthand: "stretch end",
+ },
+];
+
+var place_self_test_cases = [
+ {
+ alignSelf: "self-end safe",
+ shorthand: "",
+ },
+ {
+ justifySelf: "unsafe start",
+ shorthand: ["auto start", "auto unsafe start"],
+ },
+ {
+ justifySelf: "last baseline start",
+ shorthand: "",
+ },
+ {
+ alignSelf: "baseline",
+ justifySelf: "last baseline",
+ shorthand: "baseline last baseline",
+ },
+];
+
+function run_tests(test_cases, shorthand, subproperties) {
+ test_cases.forEach(function(test_case) {
+ test(function() {
+ var element = document.createElement('div');
+ document.body.appendChild(element);
+ subproperties.forEach(function(longhand) {
+ element.style[longhand] = test_case[longhand] ||
+ initial_values[longhand];
+ });
+ if (Array.isArray(test_case.shorthand)) {
+ assert_in_array(element.style[shorthand], test_case.shorthand);
+ } else {
+ assert_equals(element.style[shorthand], test_case.shorthand);
+ }
+ }, "test shorthand serialization " + JSON.stringify(test_case));
+ });
+}
+
+run_tests(place_content_test_cases, "placeContent", [
+ "alignContent", "justifyContent"]);
+run_tests(place_items_test_cases, "placeItems", [
+ "alignItems", "justifyItems"]);
+run_tests(place_self_test_cases, "placeSelf", [
+ "alignSelf", "justifySelf"]);
+
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js b/tests/wpt/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js
index 0cbb820ecb4..f549bedfab0 100644
--- a/tests/wpt/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js
+++ b/tests/wpt/web-platform-tests/css/css-align/resources/alignment-parsing-utils.js
@@ -3,7 +3,7 @@ var contentPositionClasses = {"Start":"start", "End":"end", "Center":"center", "
var distributionClasses = {"Stretch":"stretch", "SpaceAround":"space-around", "SpaceBetween":"space-between", "SpaceEvenly":"space-evenly"};
var baselineClasses = {"Baseline":"baseline", "FirstBaseline":"first baseline", "LastBaseline":"last baseline"};
var overflowClasses = {"SafeFlexEnd":"safe flex-end", "UnsafeEnd":"unsafe end", "SafeEnd":"safe end", "UnsafeFlexStart":"unsafe flex-start", "SafeCenter":"safe center"};
-var legacyClasses = {"LegacyLeft":"legacy left", "LegacyCenter":"legacy center", "LegacyRight":"legacy right", "LeftLegacy":"left legacy", "CenterLegacy":"center legacy", "RightLegacy":"right legacy", "Legacy":"legacy"};
+var legacyClasses = {"LegacyLeft":"legacy left", "LegacyCenter":"legacy center", "LegacyRight":"legacy right"};
var invalidPositionValues = ["auto safe", "auto left", "normal unsafe", "normal stretch", "baseline normal",
"baseline center", "first baseline center", "last baseline center", "baseline last",
diff --git a/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html b/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html
index d26df054d35..bd95302c3f2 100644
--- a/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html
+++ b/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-001.html
@@ -9,7 +9,7 @@
<div id="log"></div>
<script>
let classes = Object.assign({"Auto":"auto", "Normal":"normal", "Stretch":"stretch"}, selfPositionClasses,
- baselineClasses);
+ baselineClasses, overflowClasses);
for (var key in classes) {
let value = classes[key];
test(function() {
diff --git a/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html b/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html
index 3ba6c55b918..47bb78e3b94 100644
--- a/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html
+++ b/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-002.html
@@ -9,7 +9,7 @@
<div id="log"></div>
<script>
let classes = Object.assign({"Auto":"auto", "Normal":"normal", "Stretch":"stretch"}, selfPositionClasses,
- baselineClasses);
+ baselineClasses, overflowClasses);
for (var key1 in classes) {
let alignValue = classes[key1];
let classes2 = Object.assign({"Left":"left", "Right":"right"}, classes);
diff --git a/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html b/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html
index 8434d778e0c..b7c9d80e71b 100644
--- a/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html
+++ b/tests/wpt/web-platform-tests/css/css-align/self-alignment/place-self-shorthand-004.html
@@ -14,12 +14,7 @@
}
test(function() {
- checkInvalidValues("safe center")
- checkInvalidValues("unsafe center")
- }, "Verify overflow keywords are invalid");
-
- test(function() {
- checkInvalidValues("center space-between start")
+ checkInvalidValues("center end start")
}, "Verify fallback values are invalid");
test(function() {
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-syntax-001.html b/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-syntax-001.html
new file mode 100644
index 00000000000..a66c3b60c2b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-syntax-001.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<title>CSS Test: Box Shadow Syntax: Reordering Components</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="help" href="http://www.w3.org/TR/css3-background/#the-box-shadow"/>
+<meta name="assert" content="Box shadow color, inset, and length parameters can be mixed in any order, but lengths must stay adjacent." />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+<script>
+ // color only
+ test_valid_value("box-shadow", "4px 4px green", "green 4px 4px");
+ test_valid_value("box-shadow", "green -4px 4px", "green -4px 4px");
+ test_valid_value("box-shadow", "-4px 4px 0 green", "green -4px 4px 0px");
+ test_valid_value("box-shadow", "green -4px 4px 0", "green -4px 4px 0px");
+ test_valid_value("box-shadow", "-4px 4px 0 0 green", "green -4px 4px 0px 0px");
+ test_valid_value("box-shadow", "green -4px 4px 0 0", "green -4px 4px 0px 0px");
+
+ // inset only
+ test_valid_value("box-shadow", "4px -4px inset", "4px -4px inset");
+ test_valid_value("box-shadow", "inset 4px -4px", "4px -4px inset");
+ test_valid_value("box-shadow", "4px -4px 0 inset", "4px -4px 0px inset");
+ test_valid_value("box-shadow", "inset 4px -4px 0", "4px -4px 0px inset");
+ test_valid_value("box-shadow", "4px -4px 0 0 inset", "4px -4px 0px 0px inset");
+ test_valid_value("box-shadow", "inset 4px -4px 0 0", "4px -4px 0px 0px inset");
+
+ // color and inset
+ test_valid_value("box-shadow", "4px -4px green inset", "green 4px -4px inset");
+ test_valid_value("box-shadow", "4px -4px inset green", "green 4px -4px inset");
+ test_valid_value("box-shadow", "inset green 4px -4px", "green 4px -4px inset");
+ test_valid_value("box-shadow", "green inset 4px -4px", "green 4px -4px inset");
+ test_valid_value("box-shadow", "green 4px -4px inset", "green 4px -4px inset");
+ test_valid_value("box-shadow", "inset 4px -4px green", "green 4px -4px inset");
+ test_valid_value("box-shadow", "inset green 4px -4px 0", "green 4px -4px 0px inset");
+ test_valid_value("box-shadow", "green inset 4px -4px 0", "green 4px -4px 0px inset");
+ test_valid_value("box-shadow", "4px -4px 0 green inset", "green 4px -4px 0px inset");
+ test_valid_value("box-shadow", "4px -4px 0 inset green", "green 4px -4px 0px inset");
+ test_valid_value("box-shadow", "green 4px -4px 0 inset", "green 4px -4px 0px inset");
+ test_valid_value("box-shadow", "inset 4px -4px 0 green", "green 4px -4px 0px inset");
+ test_valid_value("box-shadow", "inset green 4px -4px 0 0", "green 4px -4px 0px 0px inset");
+ test_valid_value("box-shadow", "green inset 4px -4px 0 0", "green 4px -4px 0px 0px inset");
+ test_valid_value("box-shadow", "4px -4px 0 0 green inset", "green 4px -4px 0px 0px inset");
+ test_valid_value("box-shadow", "4px -4px 0 0 inset green", "green 4px -4px 0px 0px inset");
+ test_valid_value("box-shadow", "green 4px -4px 0 0 inset", "green 4px -4px 0px 0px inset");
+ test_valid_value("box-shadow", "inset 4px -4px 0 0 green", "green 4px -4px 0px 0px inset");
+
+ test_invalid_value("box-shadow", "red");
+ test_invalid_value("box-shadow", "4px red");
+ test_invalid_value("box-shadow", "red 4px");
+ test_invalid_value("box-shadow", "-4px red 4px");
+ test_invalid_value("box-shadow", "red -4px 4px red");
+ test_invalid_value("box-shadow", "-4px 4px red 0");
+ test_invalid_value("box-shadow", "-4px 4px 0 red 0");
+ test_invalid_value("box-shadow", "inset");
+ test_invalid_value("box-shadow", "inset 4px");
+ test_invalid_value("box-shadow", "4px inset");
+ test_invalid_value("box-shadow", "4px inset -4px");
+ test_invalid_value("box-shadow", "inset 4px -4px inset");
+ test_invalid_value("box-shadow", "4px -4px inset 0");
+ test_invalid_value("box-shadow", "4px -4px 0 inset 0");
+ test_invalid_value("box-shadow", "red inset");
+ test_invalid_value("box-shadow", "inset red");
+ test_invalid_value("box-shadow", "4px red inset");
+ test_invalid_value("box-shadow", "red inset 4px");
+ test_invalid_value("box-shadow", "4px inset red");
+ test_invalid_value("box-shadow", "inset red 4px");
+ test_invalid_value("box-shadow", "4px red inset -4px");
+ test_invalid_value("box-shadow", "4px inset red -4px");
+ test_invalid_value("box-shadow", "inset 4px red -4px");
+ test_invalid_value("box-shadow", "4px red 4px inset");
+ test_invalid_value("box-shadow", "red 4px inset -4px");
+ test_invalid_value("box-shadow", "4px inset -4px red");
+ test_invalid_value("box-shadow", "4px -4px red inset 0");
+ test_invalid_value("box-shadow", "4px -4px inset red 0");
+ test_invalid_value("box-shadow", "inset 4px -4px red 0");
+ test_invalid_value("box-shadow", "4px -4px red 0 inset");
+ test_invalid_value("box-shadow", "red 4px -4px inset 0");
+ test_invalid_value("box-shadow", "4px -4px inset 0 red");
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-syntax-001.xht b/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-syntax-001.xht
deleted file mode 100644
index 4df5907080d..00000000000
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/box-shadow-syntax-001.xht
+++ /dev/null
@@ -1,147 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>CSS Test: Box Shadow Syntax: Reordering Components</title>
- <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
- <link rel="help" href="http://www.w3.org/TR/css3-background/#the-box-shadow"/>
- <link rel="match" href="reference/box-shadow-syntax-001.xht"/>
- <meta name="assert" content="Box shadow color, inset, and length parameters can be mixed in any order, but lengths must stay adjacent." />
- <style type="text/css">
-
- .container {
- margin: 4px;
- border: solid red 4px;
- padding-top: 1px;
- border-style: none none solid solid;
- }
- .outset {
- height: 12px;
- margin: -5px -4px 0 0;
-
- }
- .inset {
- color: green;
- height: 12px;
- margin: -1px 0 -4px -4px;
- }
-
- /* color */
- #c1 > div { box-shadow: -4px 4px green;
- box-shadow: red;
- box-shadow: 4px red;
- box-shadow: red 4px;
- box-shadow: -4px red 4px;
- box-shadow: red -4px 4px red;
- box-shadow: -4px 4px red 0;
- box-shadow: -4px 4px 0 red 0;
- }
- #c2 > div { box-shadow: green -4px 4px; }
- #c3 > div { box-shadow: -4px 4px 0 green; }
- #c4 > div { box-shadow: green -4px 4px 0; }
- #c5 > div { box-shadow: -4px 4px 0 0 green; }
- #c6 > div { box-shadow: green -4px 4px 0 0; }
-
- /* inset */
- #i1 > div { box-shadow: 4px -4px inset; }
- #i2 > div { box-shadow: inset 4px -4px; }
- #i3 > div { box-shadow: 4px -4px 0 inset; }
- #i4 > div { box-shadow: inset 4px -4px 0; }
- #i5 > div { box-shadow: 4px -4px 0 0 inset; }
- #i6 > div { box-shadow: inset 4px -4px 0 0; }
- #i7 { border-color: green; }
- #i7 > div { box-shadow: 4px -4px green inset;
- color: red;
- box-shadow: inset;
- box-shadow: inset 4px;
- box-shadow: 4px inset;
- box-shadow: 4px inset -4px;
- box-shadow: inset 4px -4px inset;
- box-shadow: 4px -4px inset 0;
- box-shadow: 4px -4px 0 inset 0;
- }
-
-
- /* color and inset */
- #ci1 > div { box-shadow: 4px -4px green inset;
-
- box-shadow: red inset;
- box-shadow: inset red;
-
- box-shadow: 4px red inset;
- box-shadow: red inset 4px;
- box-shadow: 4px inset red;
- box-shadow: inset red 4px;
-
- box-shadow: 4px red inset -4px;
- box-shadow: 4px inset red -4px;
- box-shadow: inset 4px red -4px;
- box-shadow: 4px red 4px inset;
- box-shadow: red 4px inset -4px;
- box-shadow: 4px inset -4px red;
-
- box-shadow: 4px -4px red inset 0;
- box-shadow: 4px -4px inset red 0;
- box-shadow: inset 4px -4px red 0;
- box-shadow: 4px -4px red 0 inset;
- box-shadow: red 4px -4px inset 0;
- box-shadow: 4px -4px inset 0 red;
- }
- #ci2 > div { box-shadow: 4px -4px inset green; }
- #ci3 > div { box-shadow: inset green 4px -4px; }
- #ci4 > div { box-shadow: green inset 4px -4px; }
- #ci5 > div { box-shadow: green 4px -4px inset; }
- #ci6 > div { box-shadow: inset 4px -4px green; }
-
- #ci11 > div { box-shadow: inset green 4px -4px 0; }
- #ci12 > div { box-shadow: green inset 4px -4px 0; }
- #ci13 > div { box-shadow: 4px -4px 0 green inset; }
- #ci14 > div { box-shadow: 4px -4px 0 inset green; }
- #ci15 > div { box-shadow: green 4px -4px 0 inset; }
- #ci16 > div { box-shadow: inset 4px -4px 0 green; }
-
- #ci21 > div { box-shadow: inset green 4px -4px 0 0; }
- #ci22 > div { box-shadow: green inset 4px -4px 0 0; }
- #ci23 > div { box-shadow: 4px -4px 0 0 green inset; }
- #ci24 > div { box-shadow: 4px -4px 0 0 inset green; }
- #ci25 > div { box-shadow: green 4px -4px 0 0 inset; }
- #ci26 > div { box-shadow: inset 4px -4px 0 0 green; }
- </style>
- </head>
- <body>
- <p>There must be 31 green L-shapes below and no red.</p>
-
-<div class="wrapper">
- <div id="c1" class="container"><div class="outset"></div></div>
- <div id="c2" class="container"><div class="outset"></div></div>
- <div id="c3" class="container"><div class="outset"></div></div>
- <div id="c4" class="container"><div class="outset"></div></div>
- <div id="c5" class="container"><div class="outset"></div></div>
- <div id="c6" class="container"><div class="outset"></div></div>
- <div id="i1" class="container"><div class="inset"></div></div>
- <div id="i2" class="container"><div class="inset"></div></div>
- <div id="i3" class="container"><div class="inset"></div></div>
- <div id="i4" class="container"><div class="inset"></div></div>
- <div id="i5" class="container"><div class="inset"></div></div>
- <div id="i6" class="container"><div class="inset"></div></div>
- <div id="i7" class="container"><div class="inset"></div></div>
- <div id="ci1" class="container"><div class="inset"></div></div>
- <div id="ci2" class="container"><div class="inset"></div></div>
- <div id="ci3" class="container"><div class="inset"></div></div>
- <div id="ci4" class="container"><div class="inset"></div></div>
- <div id="ci5" class="container"><div class="inset"></div></div>
- <div id="ci6" class="container"><div class="inset"></div></div>
- <div id="ci11" class="container"><div class="inset"></div></div>
- <div id="ci12" class="container"><div class="inset"></div></div>
- <div id="ci13" class="container"><div class="inset"></div></div>
- <div id="ci14" class="container"><div class="inset"></div></div>
- <div id="ci15" class="container"><div class="inset"></div></div>
- <div id="ci16" class="container"><div class="inset"></div></div>
- <div id="ci21" class="container"><div class="inset"></div></div>
- <div id="ci22" class="container"><div class="inset"></div></div>
- <div id="ci23" class="container"><div class="inset"></div></div>
- <div id="ci24" class="container"><div class="inset"></div></div>
- <div id="ci25" class="container"><div class="inset"></div></div>
- <div id="ci26" class="container"><div class="inset"></div></div>
-</div>
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-origin-padding-box.html b/tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-origin-padding-box.html
index 1b2fe5e973a..c1dc3f07880 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-origin-padding-box.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-origin-padding-box.html
@@ -2,11 +2,11 @@
<html lang="en">
<head>
<meta charset="utf-8" />
- <title>CSS Backgrounds Test:background origin property with value content-box</title>
+ <title>CSS Backgrounds Test:background origin property with value padding-box</title>
<link rel="author" title="yanshasha" href="mailto:yanshasha133@gmail.com" />
<link rel="reviewer" title="Dayang Shen" href="mailto:shendayang@baidu.com" /> <!-- 2013-08-26 -->
<link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-origin" />
- <link rel="match" href="reference/css3-background-origin-content-box-ref.html" />
+ <link rel="match" href="reference/css3-background-origin-padding-box-ref.html" />
<style type="text/css">
div {
width: 100px;
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-size-001.html b/tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-size-001.html
index f049ac3ba17..6da2c9d3267 100644
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-size-001.html
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/css3-background-size-001.html
@@ -6,7 +6,7 @@
<link rel="author" title="yanshasha" href="mailto:yanshasha133@gmail.com" />
<link rel="reviewer" title="Dayang Shen" href="mailto:shendayang@baidu.com" /><!-- 2013-08-26 -->
<link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-size" />
- <link rel="match" href="reference/css3-background-size-ref.html" />
+ <link rel="match" href="reference/css3-background-size-001-ref.html" />
<style type="text/css">
div {
width: 150px;
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-attachment-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-attachment-invalid.html
new file mode 100644
index 00000000000..e4924a244db
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-attachment-invalid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-attachment with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-attachment">
+<meta name="assert" content="background-attachment supports only the grammar '<attachment>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("background-attachment", "auto");
+test_invalid_value("background-attachment", "local, none");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-attachment-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-attachment-valid.html
new file mode 100644
index 00000000000..4c7243f878d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-attachment-valid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-attachment with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-attachment">
+<meta name="assert" content="background-attachment supports the full grammar '<attachment>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("background-attachment", "fixed");
+test_valid_value("background-attachment", "scroll, fixed, local, fixed, scroll");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-clip-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-clip-invalid.html
new file mode 100644
index 00000000000..50647e8904f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-clip-invalid.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-clip with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-clip">
+<meta name="assert" content="background-clip supports only the grammar '<box>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("background-clip", "fill-box");
+test_invalid_value("background-clip", "margin-box");
+test_invalid_value("background-clip", "stroke-box");
+test_invalid_value("background-clip", "view-box");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-clip-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-clip-valid.html
new file mode 100644
index 00000000000..2b6bd491130
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-clip-valid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-clip with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-clip">
+<meta name="assert" content="background-clip supports the full grammar '<box>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("background-clip", "border-box");
+test_valid_value("background-clip", "padding-box");
+test_valid_value("background-clip", "content-box");
+
+test_valid_value("background-clip", "border-box, padding-box, content-box");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-color-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-color-invalid.html
new file mode 100644
index 00000000000..cc31e26168c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-color-invalid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-color with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-color">
+<meta name="assert" content="background-color supports only the grammar '<color>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("background-color", "none");
+test_invalid_value("background-color", "black white");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-color-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-color-valid.html
new file mode 100644
index 00000000000..e5f582f820e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-color-valid.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-color with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-color">
+<meta name="assert" content="background-color supports the full grammar '<color>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+// Edge serializes as "currentColor".
+test_valid_value("background-color", "currentcolor", ["currentcolor", "currentColor"]);
+test_valid_value("background-color", "currentColor", ["currentcolor", "currentColor"]);
+
+test_valid_value("background-color", "red");
+test_valid_value("background-color", "#00FF00", "rgb(0, 255, 0)");
+test_valid_value("background-color", "rgb(0, 0, 255)");
+test_valid_value("background-color", "rgb(100%, 100%, 0%)", "rgb(255, 255, 0)");
+test_valid_value("background-color", "hsl(120, 100%, 50%)", ["rgb(0, 255, 0)", "hsl(120, 100%, 50%)"]); // Edge serializes as hsl
+test_valid_value("background-color", "teal");
+
+test_valid_value("background-color", "transparent");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html
new file mode 100644
index 00000000000..a5f2a905c1e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-image-invalid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-image with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-image">
+<meta name="assert" content="background-image supports only the grammar '<bg-image>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("background-image", "none, auto");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-image-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-image-valid.html
new file mode 100644
index 00000000000..873800f4beb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-image-valid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-image with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-image">
+<meta name="assert" content="background-image supports the full grammar '<bg-image>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("background-image", "none");
+
+// Safari removes quotes.
+test_valid_value("background-image", 'url("http://www.example.com/")', ['url("http://www.example.com/")', 'url(http://www.example.com/)']);
+test_valid_value("background-image", 'none, url("http://www.example.com/")', ['none, url("http://www.example.com/")', 'none, url(http://www.example.com/)']);
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-invalid.html
new file mode 100644
index 00000000000..adc178bddac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-invalid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background">
+<meta name="assert" content="background supports only the grammar '<bg-layer># , <final-bg-layer>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("background", "red, green");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-origin-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-origin-invalid.html
new file mode 100644
index 00000000000..54589257bf7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-origin-invalid.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-origin with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-origin">
+<meta name="assert" content="background-origin supports only the grammar '<box>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("background-origin", "fill-box");
+test_invalid_value("background-origin", "margin-box");
+test_invalid_value("background-origin", "stroke-box");
+test_invalid_value("background-origin", "view-box");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-origin-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-origin-valid.html
new file mode 100644
index 00000000000..ff5212667d6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-origin-valid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-origin with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-origin">
+<meta name="assert" content="background-origin supports the full grammar '<box>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("background-origin", "border-box");
+test_valid_value("background-origin", "padding-box");
+test_valid_value("background-origin", "content-box");
+
+test_valid_value("background-origin", "border-box, padding-box, content-box");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-position-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-position-invalid.html
new file mode 100644
index 00000000000..5ddf5e06683
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-position-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-position with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-position">
+<meta name="assert" content="background-position supports only the grammar '<bg-position>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("background-position", "left right");
+test_invalid_value("background-position", "top bottom");
+test_invalid_value("background-position", "1% center 2px");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-position-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-position-valid.html
new file mode 100644
index 00000000000..836f3481997
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-position-valid.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-position with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-position">
+<meta name="assert" content="background-position supports the full grammar '<bg-position>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("background-position", "1px", ["1px", "1px center"]);
+test_valid_value("background-position", "1px center", ["1px", "1px center"]);
+test_valid_value("background-position", "-2% -3%");
+test_valid_value("background-position", "5% top");
+test_valid_value("background-position", "center", ["center", "center center"]);
+test_valid_value("background-position", "center center", ["center", "center center"]);
+test_valid_value("background-position", "center 6px");
+test_valid_value("background-position", "center left", ["left center", "left"]);
+test_valid_value("background-position", "center right 7%", "right 7% center");
+test_valid_value("background-position", "center bottom", ["center bottom", "bottom"]);
+test_valid_value("background-position", "center top 8px", ["center top 8px", "center 8px"]);
+test_valid_value("background-position", "left", ["left center", "left"]);
+test_valid_value("background-position", "right 9%");
+test_valid_value("background-position", "left 10px center", ["left 10px center", "10px"]);
+test_valid_value("background-position", "right 11% bottom", ["right 11% bottom", "right 11% bottom 0%"]); // "right 11% bottom 0%" in Edge
+test_valid_value("background-position", "left 12px top 13px", ["left 12px top 13px", "12px 13px"]);
+test_valid_value("background-position", "right center", ["right center", "right"]);
+test_valid_value("background-position", "left bottom");
+test_valid_value("background-position", "right top 14%", ["right top 14%", "right 14%"]);
+test_valid_value("background-position", "bottom", ["center bottom", "bottom"]);
+test_valid_value("background-position", "top 15px center", ["center top 15px", "center 15px"]);
+test_valid_value("background-position", "bottom 16% left", ["left bottom 16%", "left 0% bottom 16%"]); // "left 0% bottom 16%" in Edge
+test_valid_value("background-position", "top 17px right 18px", "right 18px top 17px");
+test_valid_value("background-position", "bottom center", ["center bottom", "bottom"]);
+test_valid_value("background-position", "top left", "left top");
+test_valid_value("background-position", "bottom right 19%", ["right 19% bottom", "right 19% bottom 0%"]); // "right 19% bottom 0%" in Edge
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-repeat-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-repeat-invalid.html
new file mode 100644
index 00000000000..a32f5086f8c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-repeat-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-repeat with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-repeat">
+<meta name="assert" content="background-repeat supports only the grammar '<repeat-style>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("background-repeat", "repeat repeat-x");
+test_invalid_value("background-repeat", "repeat-y round");
+test_invalid_value("background-repeat", "repeat space round");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-repeat-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-repeat-valid.html
new file mode 100644
index 00000000000..75549090653
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-repeat-valid.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-repeat with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-repeat">
+<meta name="assert" content="background-repeat supports the full grammar '<repeat-style>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("background-repeat", "repeat");
+test_valid_value("background-repeat", "repeat-x, repeat-y, repeat", "repeat-x, repeat-y, repeat");
+test_valid_value("background-repeat", "repeat space, round no-repeat, repeat-x");
+test_valid_value("background-repeat", "repeat repeat", ["repeat", "repeat repeat"]);
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-size-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-size-invalid.html
new file mode 100644
index 00000000000..7259cbdf13b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-size-invalid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-size with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-size">
+<meta name="assert" content="background-size supports only the grammar '<bg-size>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+// Blink and WebKit fail these by accepting negative values.
+test_invalid_value("background-size", "-1px");
+test_invalid_value("background-size", "2% -3%");
+
+test_invalid_value("background-size", "1px 2px 3px");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-size-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-size-valid.html
new file mode 100644
index 00000000000..670316461b1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-size-valid.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background-size with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background-size">
+<meta name="assert" content="background-size supports the full grammar '<bg-size>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("background-size", "1px", ["1px", "1px auto"]);
+test_valid_value("background-size", "1px auto", ["1px", "1px auto"]);
+test_valid_value("background-size", "2% 3%");
+test_valid_value("background-size", "auto", ["auto", "auto auto"]);
+test_valid_value("background-size", "auto auto", ["auto", "auto auto"]);
+test_valid_value("background-size", "auto 4%");
+test_valid_value("background-size", "contain");
+test_valid_value("background-size", "cover");
+
+test_valid_value("background-size", "auto 1px, 2% 3%, contain");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-valid.html
new file mode 100644
index 00000000000..29737e2096f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/background-valid.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing background with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#background">
+<meta name="assert" content="background supports the full grammar '<bg-layer># , <final-bg-layer>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+// Background serialization varies across browsers. https://github.com/w3c/csswg-drafts/issues/418
+
+test_valid_value("background",
+ 'url("https://example.com/") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url("https://example.com/") 1px 2px / 3px 4px space round local padding-box content-box', [
+ 'url("https://example.com/") 1px 2px / 3px 4px space round local padding-box content-box, rgb(5, 6, 7) url("https://example.com/") 1px 2px / 3px 4px space round local padding-box content-box', // spec
+ 'url("https://example.com/") local space round 1px 2px / 3px 4px padding-box content-box, url("https://example.com/") local space round 1px 2px / 3px 4px padding-box content-box rgb(5, 6, 7)', // Edge
+ 'url("https://example.com/") space round local 1px 2px / 3px 4px padding-box content-box, rgb(5, 6, 7) url("https://example.com/") space round local 1px 2px / 3px 4px padding-box content-box', // Firefox
+ 'url("https://example.com/") 1px 2px / 3px 4px space round local padding-box content-box, url("https://example.com/") 1px 2px / 3px 4px space round local padding-box content-box rgb(5, 6, 7)', // Blink
+ 'url(https://example.com/) 1px 2px / 3px 4px space round local padding-box content-box, url(https://example.com/) 1px 2px / 3px 4px space round local padding-box content-box rgb(5, 6, 7)' // WebKit omits quotes - https://bugs.webkit.org/show_bug.cgi?id=28869
+]);
+
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-invalid.html
new file mode 100644
index 00000000000..5c63d8b4da8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-invalid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-color with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-color">
+<meta name="assert" content="border-color supports only the grammar '<color>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-color", "auto");
+
+test_invalid_value("border-color", "black, white");
+
+test_invalid_value("border-color", "black white red green blue");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-valid.html
new file mode 100644
index 00000000000..be78a06a49d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-color-valid.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-color with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-color">
+<meta name="assert" content="border-color supports the full grammar '<color>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+// Edge serializes as "currentColor".
+test_valid_value("border-color", "currentcolor", ["currentcolor", "currentColor"]);
+test_valid_value("border-color", "currentColor", ["currentcolor", "currentColor"]);
+
+test_valid_value("border-color", "red yellow green blue");
+
+test_valid_value("border-top-color", "red");
+test_valid_value("border-right-color", "yellow");
+test_valid_value("border-bottom-color", "green");
+test_valid_value("border-left-color", "blue");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-invalid.html
new file mode 100644
index 00000000000..762be9a9d53
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-invalid.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image">
+<meta name="assert" content="border-image supports only the grammar ' <‘border-image-source’> || <‘border-image-slice’> [ / <‘border-image-width’> | / <‘border-image-width’>? / <‘border-image-outset’> ]? || <‘border-image-repeat’>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-image", "auto");
+test_invalid_value("border-image", 'none, url("http://www.example.com/")');
+
+test_invalid_value("border-image", "stretch repeat round");
+
+test_invalid_value("border-image", "fill");
+test_invalid_value("border-image", "1 2 3 4 5");
+test_invalid_value("border-image", "1% fill 2%");
+
+test_invalid_value("border-image", "1 / -2px");
+test_invalid_value("border-image", "-1 / 2px");
+
+test_invalid_value("border-image", "1 / 1 2 3 4 5");
+
+test_invalid_value("border-image", "1 2 3 4 5 / / 1px");
+test_invalid_value("border-image", "1 / / auto");
+test_invalid_value("border-image", "1 2% 3 4% / / 1%");
+test_invalid_value("border-image", "1 2% 3 4% fill / / 1 2 3 4 5");
+
+test_invalid_value("border-image", "1 / none / 1px");
+test_invalid_value("border-image", "1 2% 3 4% / 1 2 3 4 5 / 2");
+test_invalid_value("border-image", "1 2 3 4 5 / 1px / 1px");
+test_invalid_value("border-image", "1 / 1px / auto");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-invalid.html
new file mode 100644
index 00000000000..ffe09591147
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-invalid.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-outset with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-outset">
+<meta name="assert" content="border-image-outset supports only the grammar '[ <length> | <number> ]{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-image-outset", "auto");
+
+test_invalid_value("border-image-outset", "-1");
+test_invalid_value("border-image-outset", "-2px");
+
+test_invalid_value("border-image-outset", "1%");
+
+test_invalid_value("border-image-outset", "1 2 3 4 5");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-valid.html
new file mode 100644
index 00000000000..dc189372600
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-outset-valid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-outset with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-outset">
+<meta name="assert" content="border-image-outset supports the full grammar '[ <length> | <number> ]{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("border-image-outset", "1px");
+test_valid_value("border-image-outset", "2");
+test_valid_value("border-image-outset", "1px 2 3px 4");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-repeat-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-repeat-invalid.html
new file mode 100644
index 00000000000..b17b531dd29
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-repeat-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-repeat with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-repeat">
+<meta name="assert" content="border-image-repeat supports only the grammar '[ stretch | repeat | round | space ]{1,2}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-image-repeat", "auto");
+
+test_invalid_value("border-image-repeat", "stretch repeat round");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-repeat-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-repeat-valid.html
new file mode 100644
index 00000000000..6e13dc85814
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-repeat-valid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-repeat with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-repeat">
+<meta name="assert" content="border-image-repeat supports the full grammar '[ stretch | repeat | round | space ]{1,2}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("border-image-repeat", "stretch");
+test_valid_value("border-image-repeat", "space space", "space");
+test_valid_value("border-image-repeat", "repeat round");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-invalid.html
new file mode 100644
index 00000000000..7bdb67f67b4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-invalid.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-slice with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-slice">
+<meta name="assert" content="border-image-slice supports only the grammar '[<number> | <percentage>]{1,4} && fill?'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-image-slice", "fill");
+
+test_invalid_value("border-image-slice", "1 -2% fill");
+test_invalid_value("border-image-slice", "-1 2% fill");
+
+test_invalid_value("border-image-slice", "1 2 3 4 5");
+
+test_invalid_value("border-image-slice", "1% fill 2%");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-valid.html
new file mode 100644
index 00000000000..257f276f739
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-slice-valid.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-slice with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-slice">
+<meta name="assert" content="border-image-slice supports the full grammar '[<number> | <percentage>]{1,4} && fill?'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("border-image-slice", "1");
+test_valid_value("border-image-slice", "1 2% 3 4%");
+
+test_valid_value("border-image-slice", "1 2% 3 4% fill");
+test_valid_value("border-image-slice", "fill 1 2% 3 4%", "1 2% 3 4% fill");
+
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-invalid.html
new file mode 100644
index 00000000000..99a06ce16fa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-source with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-source">
+<meta name="assert" content="border-image-source supports only the grammar 'none | <image>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-image-source", "auto");
+
+test_invalid_value("border-image-source", 'none, url("http://www.example.com/")');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-valid.html
new file mode 100644
index 00000000000..e12cb92716f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-source-valid.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-source with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-source">
+<meta name="assert" content="border-image-source supports the full grammar 'none | <image>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("border-image-source", "none");
+
+// Safari removes quotes.
+test_valid_value("border-image-source", 'url("http://www.example.com/")', ['url("http://www.example.com/")', 'url(http://www.example.com/)']);
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-valid.html
new file mode 100644
index 00000000000..79bff459ed8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-valid.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image">
+<meta name="assert" content="border-image supports the full grammar ' <‘border-image-source’> || <‘border-image-slice’> [ / <‘border-image-width’> | / <‘border-image-width’>? / <‘border-image-outset’> ]? || <‘border-image-repeat’>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+// WebKit fails all these tests by returning an empty string as the value of border-image.
+
+// "none" in Edge, "none 100% / 1 / 0 stretch" in Firefox and Blink.
+test_valid_value("border-image", "none", ["none", "none 100% / 1 / 0 stretch"]);
+test_valid_value("border-image", "stretch", ["none", "none 100% / 1 / 0 stretch"]);
+test_valid_value("border-image", "none 100% / 1 / 0 stretch", ["none", "none 100% / 1 / 0 stretch"]);
+
+test_valid_value("border-image", 'url("http://www.example.com/") 1 2 3 4 fill', ['url("http://www.example.com/") 1 2 3 4 fill', 'url("http://www.example.com/") 1 2 3 4 fill / 1 / 0 stretch']);
+test_valid_value("border-image", 'url("http://www.example.com/") 1 2 3 4 fill / 1 / 0 stretch', ['url("http://www.example.com/") 1 2 3 4 fill', 'url("http://www.example.com/") 1 2 3 4 fill / 1 / 0 stretch']);
+
+test_valid_value("border-image", 'url("http://www.example.com/")', ['url("http://www.example.com/")', 'url("http://www.example.com/") 100% / 1 / 0 stretch']);
+
+test_valid_value("border-image", "repeat round", ["repeat round", "none repeat round", "none 100% / 1 / 0 repeat round"]);
+test_valid_value("border-image", "none repeat round", ["repeat round", "none repeat round", "none 100% / 1 / 0 repeat round"]);
+
+test_valid_value("border-image", "space", ["space", "none space space", "none 100% / 1 / 0 space"]);
+test_valid_value("border-image", "none space space", ["space", "none space space", "none 100% / 1 / 0 space"]);
+test_valid_value("border-image", "none 100% / 1 / 0 space", ["space", "none space space", "none 100% / 1 / 0 space"]);
+
+test_valid_value("border-image", "1", ["1", "none 1 1 1 1", "none 1 / 1 / 0 stretch"]);
+test_valid_value("border-image", "none 1 1 1 1", ["1", "none 1 1 1 1", "none 1 / 1 / 0 stretch"]);
+test_valid_value("border-image", "none 1 / 1 / 0 stretch", ["1", "none 1 1 1 1", "none 1 / 1 / 0 stretch"]);
+
+test_valid_value("border-image", 'url("http://www.example.com/") 1 2% 3 4%', ['url("http://www.example.com/") 1 2% 3 4%', 'url("http://www.example.com/") 1 2% 3 4% / 1 / 0 stretch']);
+test_valid_value("border-image", 'url("http://www.example.com/") 1 2% 3 4% fill', ['url("http://www.example.com/") 1 2% 3 4% fill', 'url("http://www.example.com/") 1 2% 3 4% fill / 1 / 0 stretch']);
+test_valid_value("border-image", 'url("http://www.example.com/") fill 1 2% 3 4%', ['url("http://www.example.com/") 1 2% 3 4% fill', 'url("http://www.example.com/") 1 2% 3 4% fill / 1 / 0 stretch']);
+
+test_valid_value("border-image", "1 / 1px", ["1 / 1px", "none 1 / 1px / 0 stretch"]);
+test_valid_value("border-image", "1 2% 3 4% / 2%", ["1 2% 3 4% / 2%", "none 1 2% 3 4% / 2% 2% 2% 2%", "none 1 2% 3 4% / 2% / 0 stretch"]);
+test_valid_value("border-image", "1 2% 3 4% fill / 3", ["1 2% 3 4% fill / 3", "none 1 2% 3 4% fill / 3 3 3 3", "none 1 2% 3 4% fill / 3 / 0 stretch"]);
+test_valid_value("border-image", "fill 1 2% 3 4% / auto", ["1 2% 3 4% fill / auto", "none 1 2% 3 4% fill / auto / 0 stretch"]);
+test_valid_value("border-image", "1 / 1px 2% 3 auto", ["1 / 1px 2% 3 auto", "none 1 / 1px 2% 3 auto / 0 stretch"]);
+
+test_valid_value("border-image", "1 / / 1px", ["1 / / 1px", "none 1 / 1 / 1px stretch"]);
+test_valid_value("border-image", "1 2% 3 4% / / 2", ["1 2% 3 4% / / 2", "none 1 2% 3 4% / 1 / 2 stretch"]);
+test_valid_value("border-image", 'url("http://www.example.com/") 1 2% 3 4% fill / / 1px 2 3px 4', ['url("http://www.example.com/") 1 2% 3 4% fill / / 1px 2 3px 4', 'url("http://www.example.com/") 1 2% 3 4% fill / 1 / 1px 2 3px 4 stretch']);
+
+test_valid_value("border-image", "1 / 1px / 1px", ["1 / 1px / 1px", "none 1 / 1px / 1px stretch"]);
+test_valid_value("border-image", "1 2% 3 4% / 2% / 2", ["1 2% 3 4% / 2% / 2", "none 1 2% 3 4% / 2% / 2 stretch"]);
+test_valid_value("border-image", "1 2% 3 4% fill / 3 / 1px 2 3px 4", ["1 2% 3 4% fill / 3 / 1px 2 3px 4", "none 1 2% 3 4% fill / 3 / 1px 2 3px 4 stretch"]);
+test_valid_value("border-image", "1 / auto / 1px", ["1 / auto / 1px", "none 1 / auto / 1px stretch"]);
+test_valid_value("border-image", "1 2% 3 4% / 1px 2% 3 auto / 2", ["1 2% 3 4% / 1px 2% 3 auto / 2", "none 1 2% 3 4% / 1px 2% 3 auto / 2 2 2 2", "none 1 2% 3 4% / 1px 2% 3 auto / 2 stretch"]);
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-invalid.html
new file mode 100644
index 00000000000..f85e947e8c6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-invalid.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-width with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-width">
+<meta name="assert" content="border-image-width supports only the grammar '[ <length-percentage> | <number> | auto ]{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-image-width", "none");
+
+test_invalid_value("border-image-width", "-1px");
+test_invalid_value("border-image-width", "-2%");
+test_invalid_value("border-image-width", "-3");
+
+test_invalid_value("border-image-width", "1 2 3 4 5");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-valid.html
new file mode 100644
index 00000000000..503f23742c3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-image-width-valid.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-image-width with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-image-width">
+<meta name="assert" content="border-image-width supports the full grammar '[ <length-percentage> | <number> | auto ]{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("border-image-width", "1px");
+test_valid_value("border-image-width", "2%");
+test_valid_value("border-image-width", "3");
+test_valid_value("border-image-width", "auto");
+
+test_valid_value("border-image-width", "1px 2% 3 auto");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-invalid.html
new file mode 100644
index 00000000000..f59f2493f77
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-shorthands">
+<meta name="assert" content="border-width supports only the grammar '<line-width> || <line-style> || <color>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border", "auto");
+test_invalid_value("border", "thin double green 1px");
+test_invalid_value("border", "-2em");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-radius-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-radius-invalid.html
new file mode 100644
index 00000000000..a8afbbe9987
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-radius-invalid.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-radius with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-radius">
+<meta name="assert" content="border-radius supports only the grammar '<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-radius", "none");
+test_invalid_value("border-radius", "1px 2px 3px 4px 5px");
+test_invalid_value("border-radius", "-1px");
+test_invalid_value("border-radius", "1px -2px");
+test_invalid_value("border-radius", "1em /");
+test_invalid_value("border-radius", "1px / 2px / 3px");
+
+test_invalid_value("border-radius", "5em 1px 5em 2% 5em 3px 5em 4%");
+test_invalid_value("border-radius", "1px 5em 2% 5em 3px 5em 4% 5em");
+
+test_invalid_value("border-top-left-radius", "10px 20px 30px");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-radius-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-radius-valid.html
new file mode 100644
index 00000000000..cd6fa491c24
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-radius-valid.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-radius with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-radius">
+<meta name="assert" content="border-radius supports the full grammar '<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("border-radius", "1px");
+test_valid_value("border-radius", "1px 2% 3px 4%");
+test_valid_value("border-radius", "5em / 1px 2% 3px 4%"); // Blink and Webkit fail by serializing as "5em 1px 5em 2% 5em 3px 5em 4%"
+test_valid_value("border-radius", "1px 2% 3px 4% / 5em"); // Blink and Webkit fail by serializing as "1px 5em 2% 5em 3px 5em 4% 5em"
+
+test_valid_value("border-top-left-radius", "10px");
+test_valid_value("border-top-right-radius", "20%");
+test_valid_value("border-bottom-right-radius", "30px 40%");
+test_valid_value("border-bottom-left-radius", "50% 60px");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-invalid.html
new file mode 100644
index 00000000000..47e5422458e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-invalid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-style with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-style">
+<meta name="assert" content="border-style supports only the grammar '<line-style>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-style", "auto");
+test_invalid_value("border-style", "solid double groove ridge none");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-valid.html
new file mode 100644
index 00000000000..077985435b2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-style-valid.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-style with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-style">
+<meta name="assert" content="border-style supports the full grammar '<line-style>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("border-style", "none");
+test_valid_value("border-style", "none hidden dotted dashed");
+test_valid_value("border-style", "solid double groove ridge");
+test_valid_value("border-style", "inset outset");
+
+test_valid_value("border-top-style", "solid");
+test_valid_value("border-right-style", "double");
+test_valid_value("border-bottom-style", "groove");
+test_valid_value("border-left-style", "ridge");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-valid.html
new file mode 100644
index 00000000000..5f29f6b872c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-valid.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-shorthands">
+<meta name="assert" content="border-width supports the full grammar '<line-width> || <line-style> || <color>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("border", "1px dotted red");
+test_valid_value("border", "green double thin", "thin double green");
+
+test_valid_value("border-top", "thin", ["thin", "thin none"]);
+test_valid_value("border-right", "double", ["double", "medium double"]);
+test_valid_value("border-bottom", "green", ["green", "medium none green"]);
+test_valid_value("border-left", "1px dotted red");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-invalid.html
new file mode 100644
index 00000000000..ff908373212
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-invalid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-width with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-width">
+<meta name="assert" content="border-width supports only the grammar '<line-width>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("border-width", "none");
+test_invalid_value("border-width", "thin medium thick medium thin");
+test_invalid_value("border-width", "-1px");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-valid.html
new file mode 100644
index 00000000000..b98a2082e6e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/border-width-valid.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing border-width with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#border-width">
+<meta name="assert" content="border-width supports the full grammar '<line-width>{1,4}'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("border-width", "1em");
+test_valid_value("border-width", "2px thin medium thick");
+
+test_valid_value("border-top-width", "0px");
+test_valid_value("border-right-width", "thin");
+test_valid_value("border-bottom-width", "medium");
+test_valid_value("border-left-width", "thick");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/box-shadow-invalid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/box-shadow-invalid.html
new file mode 100644
index 00000000000..fa007373f44
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/box-shadow-invalid.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing box-shadow with invalid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#box-shadow">
+<meta name="assert" content="box-shadow supports only the grammar 'none | <shadow>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("box-shadow", "auto");
+test_invalid_value("box-shadow", "1 2");
+test_invalid_value("box-shadow", "1% 2%");
+test_invalid_value("box-shadow", "1px calc(2px + 2%)");
+
+test_invalid_value("box-shadow", "red inset");
+test_invalid_value("box-shadow", "1px");
+
+test_invalid_value("box-shadow", "1px 2px 3px 4px 5px");
+test_invalid_value("box-shadow", "red 1px 2px blue");
+
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/box-shadow-valid.html b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/box-shadow-valid.html
new file mode 100644
index 00000000000..4ea289b786a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/box-shadow-valid.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Backgrounds and Borders Module Level 3: parsing box-shadow with valid values</title>
+<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds/#box-shadow">
+<meta name="assert" content="box-shadow supports the full grammar 'none | <shadow>#'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("box-shadow", "none");
+test_valid_value("box-shadow", "1px 2px");
+test_valid_value("box-shadow", "red 1px 2px 3px -4px inset"); // Edge serializes as "inset 1px 2px 3px -4px red"
+test_valid_value("box-shadow", "inset 1px 2px red", "red 1px 2px inset");
+test_valid_value("box-shadow", "1px -2px inset, red -3px 4px"); // Edge serializes as "inset 1px -2px, -3px 4px red"
+test_valid_value("box-shadow", "inset 1px -2px, -3px 4px red", "1px -2px inset, red -3px 4px");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/resources/parsing-testcommon.js b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/resources/parsing-testcommon.js
new file mode 100644
index 00000000000..9427f53d81b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/parsing/resources/parsing-testcommon.js
@@ -0,0 +1,39 @@
+'use strict';
+
+// serializedValue can be the expected serialization of value,
+// or an array of permitted serializations,
+// or omitted if value should serialize as value.
+function test_valid_value(property, value, serializedValue) {
+ if (arguments.length < 3)
+ serializedValue = value;
+
+ var stringifiedValue = JSON.stringify(value);
+
+ test(function(){
+ var div = document.createElement('div');
+ div.style[property] = value;
+ assert_not_equals(div.style[property], "", "property should be set");
+
+ var div = document.createElement('div');
+ div.style[property] = value;
+ var readValue = div.style[property];
+ if (serializedValue instanceof Array)
+ assert_true(serializedValue.includes(readValue), "serialization should be sound");
+ else
+ assert_equals(readValue, serializedValue, "serialization should be canonical");
+
+ div.style[property] = readValue;
+ assert_equals(div.style[property], readValue, "serialization should round-trip");
+
+ }, "e.style['" + property + "'] = " + stringifiedValue + " should set the property value");
+}
+
+function test_invalid_value(property, value) {
+ var stringifiedValue = JSON.stringify(value);
+
+ test(function(){
+ var div = document.createElement('div');
+ div.style[property] = value;
+ assert_equals(div.style[property], "");
+ }, "e.style['" + property + "'] = " + stringifiedValue + " should not set the property value");
+}
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/box-shadow-syntax-001.xht b/tests/wpt/web-platform-tests/css/css-backgrounds/reference/box-shadow-syntax-001.xht
deleted file mode 100644
index 34be7bc52f1..00000000000
--- a/tests/wpt/web-platform-tests/css/css-backgrounds/reference/box-shadow-syntax-001.xht
+++ /dev/null
@@ -1,52 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>CSS Reference</title>
- <link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
- <style type="text/css">
-
- .container {
- margin: 4px;
- border: solid green 4px;
- padding-top: 1px;
- border-style: none none solid solid;
- height: 7px;
- }
- </style>
- </head>
- <body>
- <p>There must be 31 green L-shapes below and no red.</p>
-
- <div id="c1" class="container"><div></div></div>
- <div id="c2" class="container"><div></div></div>
- <div id="c3" class="container"><div></div></div>
- <div id="c4" class="container"><div></div></div>
- <div id="c5" class="container"><div></div></div>
- <div id="c6" class="container"><div></div></div>
- <div id="i1" class="container"><div></div></div>
- <div id="i2" class="container"><div></div></div>
- <div id="i3" class="container"><div></div></div>
- <div id="i4" class="container"><div></div></div>
- <div id="i5" class="container"><div></div></div>
- <div id="i6" class="container"><div></div></div>
- <div id="i7" class="container"><div></div></div>
- <div id="ci1" class="container"><div></div></div>
- <div id="ci2" class="container"><div></div></div>
- <div id="ci3" class="container"><div></div></div>
- <div id="ci4" class="container"><div></div></div>
- <div id="ci5" class="container"><div></div></div>
- <div id="ci6" class="container"><div></div></div>
- <div id="ci11" class="container"><div></div></div>
- <div id="ci12" class="container"><div></div></div>
- <div id="ci13" class="container"><div></div></div>
- <div id="ci14" class="container"><div></div></div>
- <div id="ci15" class="container"><div></div></div>
- <div id="ci16" class="container"><div></div></div>
- <div id="ci21" class="container"><div></div></div>
- <div id="ci22" class="container"><div></div></div>
- <div id="ci23" class="container"><div></div></div>
- <div id="ci24" class="container"><div></div></div>
- <div id="ci25" class="container"><div></div></div>
- <div id="ci26" class="container"><div></div></div>
- </body>
-</html>
diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/resources/parsing-testcommon.js b/tests/wpt/web-platform-tests/css/css-backgrounds/resources/parsing-testcommon.js
new file mode 100644
index 00000000000..9427f53d81b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-backgrounds/resources/parsing-testcommon.js
@@ -0,0 +1,39 @@
+'use strict';
+
+// serializedValue can be the expected serialization of value,
+// or an array of permitted serializations,
+// or omitted if value should serialize as value.
+function test_valid_value(property, value, serializedValue) {
+ if (arguments.length < 3)
+ serializedValue = value;
+
+ var stringifiedValue = JSON.stringify(value);
+
+ test(function(){
+ var div = document.createElement('div');
+ div.style[property] = value;
+ assert_not_equals(div.style[property], "", "property should be set");
+
+ var div = document.createElement('div');
+ div.style[property] = value;
+ var readValue = div.style[property];
+ if (serializedValue instanceof Array)
+ assert_true(serializedValue.includes(readValue), "serialization should be sound");
+ else
+ assert_equals(readValue, serializedValue, "serialization should be canonical");
+
+ div.style[property] = readValue;
+ assert_equals(div.style[property], readValue, "serialization should round-trip");
+
+ }, "e.style['" + property + "'] = " + stringifiedValue + " should set the property value");
+}
+
+function test_invalid_value(property, value) {
+ var stringifiedValue = JSON.stringify(value);
+
+ test(function(){
+ var div = document.createElement('div');
+ div.style[property] = value;
+ assert_equals(div.style[property], "");
+ }, "e.style['" + property + "'] = " + stringifiedValue + " should not set the property value");
+}
diff --git a/tests/wpt/web-platform-tests/css/css-contain/OWNERS b/tests/wpt/web-platform-tests/css/css-contain/OWNERS
new file mode 100644
index 00000000000..9d556e00e6f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-contain/OWNERS
@@ -0,0 +1,2 @@
+@tabatkins
+@frivoal
diff --git a/tests/wpt/web-platform-tests/css/css-content/attr-case-insensitive-ref.html b/tests/wpt/web-platform-tests/css/css-content/attr-case-insensitive-ref.html
new file mode 100644
index 00000000000..9b718b994e0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-content/attr-case-insensitive-ref.html
@@ -0,0 +1,3 @@
+<!doctype html>
+<meta charset=utf-8>
+aaabbbccc
diff --git a/tests/wpt/web-platform-tests/css/css-content/attr-case-insensitive.html b/tests/wpt/web-platform-tests/css/css-content/attr-case-insensitive.html
new file mode 100644
index 00000000000..e0cf16bd42a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-content/attr-case-insensitive.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Names specified in attr for a content property are case-insensitive in HTML documents</title>
+<link rel=match href=/css/css-content/attr-case-insensitive-ref.html>
+<link rel="help" href="https://drafts.csswg.org/css-content-3/#content-property" />
+<style type="text/css">
+div#gencon:before { content: attr(foo) attr(Foo) attr(fOO)
+ attr(bar) attr(Bar) attr(bAR)
+ attr(baz) attr(Baz) attr(BAZ) }
+</style>
+<body>
+<div id="gencon" foo="a" Bar="b" bAZ="c"></div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-details-001-ref.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-details-001-ref.html
new file mode 100644
index 00000000000..fc078b8150c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-details-001-ref.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<details>
+ <div>
+ <summary>summary</summary>
+ details
+ </div>
+</details>
diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-details-001.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-details-001.html
new file mode 100644
index 00000000000..b1cefa6ffde
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-details-001.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test: display: contents under a details element doesn't prevent content from getting suppressed</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-display-3/#valdef-display-contents">
+<link rel="match" href="display-contents-details-001-ref.html">
+<details>
+ <div style="display:contents">
+ <summary>summary</summary>
+ details
+ </div>
+</details>
diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-suppression-dynamic-001-ref.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-suppression-dynamic-001-ref.html
new file mode 100644
index 00000000000..07a5663748b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-suppression-dynamic-001-ref.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<p>Test passes if you see nothing below.</p>
diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-suppression-dynamic-001.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-suppression-dynamic-001.html
new file mode 100644
index 00000000000..5007e1f57d3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-suppression-dynamic-001.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test: display: contents unboxing works in presence of dynamic changes to the tree.</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-display-3/#valdef-display-contents">
+<link rel="help" href="https://drafts.csswg.org/css-display-3/#unbox">
+<link rel="match" href="display-contents-suppression-dynamic-001-ref.html">
+<p>Test passes if you see nothing below.</p>
+<textarea style="display: contents">
+ FAIL
+</textarea>
+<script>
+ let textarea = document.querySelector("textarea");
+ textarea.offsetTop;
+ textarea.appendChild(document.createTextNode("FAIL"));
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html b/tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html
index d1f29e3c6cc..6ea876bbe6a 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-items-invalid.html
@@ -17,6 +17,6 @@ test(function() {
var body = document.body;
assert_equals(getComputedStyle(body).getPropertyValue("align-items"),
- "stretch");
+ "normal");
});
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html b/tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html
index 0059bc20de3..5312ea81bb7 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/getcomputedstyle/flexbox_computedstyle_align-self-invalid.html
@@ -17,6 +17,6 @@ test(function() {
var body = document.body;
assert_equals(getComputedStyle(body).getPropertyValue("align-self"),
- "stretch");
+ "auto");
});
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-change-cell.html b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-change-cell.html
new file mode 100644
index 00000000000..a83f518a232
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/table-as-item-change-cell.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<title>CSS Flexbox Test: Flex item as table, change contents of cell</title>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#layout-algorithm" title="9. Flex Layout Algorithm">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="display:flex; flex-direction:column; width:100px; background:green;">
+ <div style="position:relative; z-index:-1; display:table; width:100%; height:100px; background:hotpink;">
+ <div style="display:table-cell; width:100px;"></div>
+ <div id="cell" style="display:table-cell;">
+ <div id="child" style="display:none; color:red;">
+ <!-- Add some whitespace after the word "FAIL", in case of negative glyph bearings. -->
+ FAIL&nbsp;
+ </div>
+ </div>
+ </div>
+</div>
+<script>
+ document.body.offsetTop;
+ document.getElementById("child").style.display = "block";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05.xht b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05.xht
index a90bdecb2b5..8321a8dc44a 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05.xht
+++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-05.xht
@@ -2,9 +2,10 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>CSS Test: font-variant in @font-face rule is overriden by equivalent style rules</title>
+<title>CSS Test: font-variant descriptor in @font-face rule is overriden by equivalent style rules</title>
<link rel="author" title="Mike Bremford" href="mike@bfo.com" />
<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-variant-prop" />
+<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-rend-desc" />
<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-feature-settings-prop" />
<link rel="match" href="font-variant-05-ref.xht" />
<meta name="assert" content="Setting ‘font-variant-ligatures’ properties will override the same properties set in the @font-face rule. But properties set there and not explicitly turned off or on later remain set." />
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06.xht b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06.xht
index 339cfe28260..69749e7417a 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06.xht
+++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-06.xht
@@ -2,9 +2,10 @@
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>CSS Test: font-variant in @font-face rule is overriden by equivalent style rules</title>
+<title>CSS Test: font-variant descriptor in @font-face rule is overriden by equivalent style rules</title>
<link rel="author" title="Mike Bremford" href="mike@bfo.com" />
<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-variant-prop" />
+<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-rend-desc" />
<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#feature-precedence" />
<link rel="match" href="font-variant-06-ref.xht" />
<meta name="assert" content="‘font-variant-numeric’ cannot turn OFF features turned ON in @font-face" />
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01-ref.html
new file mode 100644
index 00000000000..6a152db8cb4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01-ref.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<title>CSS Test: font-variant: normal; low level equivalence</title>
+<link rel="author" title="Chris Lilley" href="chris@w3.org">
+<style>
+ @font-face {
+ font-family: fwf;
+ src: url(support/fonts/FontWithFancyFeatures.otf);
+ }
+ .test {
+ font-family: fwf;
+ font-size: 2.4em;
+ line-height: 1.1;
+ color: purple;
+ }
+</style>
+
+<body>
+<p>Test passes if the three lines below are identical, with (in purple) eight check marks (✓)</p>
+<section class="test">
+ <p class="ref">AAAAAAAA</p>
+ <p class="ref">AAAAAAAA</p>
+ <p class="ref">AAAAAAAA</p>
+</section> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01.html b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01.html
new file mode 100644
index 00000000000..ba4ba86d373
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/font-variant-descriptor-01.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<title>CSS Test: font-variant: normal; low level equivalence</title>
+<link rel="author" title="Chris Lilley" href="chris@w3.org">
+<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-variant-prop">
+<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-feature-settings-prop">
+<link rel="help" href="https://www.w3.org/TR/css-fonts-3/#font-rend-desc">
+<link rel="match" href="font-variant-descriptor-01-ref.html">
+<meta name="assert" content="These descriptors define initial settings that apply when the font defined by an @font-face rule is rendered">
+<style>
+ @font-face {
+ font-family: fwf;
+ src: url(support/fonts/FontWithFancyFeatures.otf);
+ }
+ @font-face {
+ font-family: fwf2;
+ src: url(support/fonts/FontWithFancyFeatures.otf);
+ font-variant: common-ligatures discretionary-ligatures historical-ligatures contextual oldstyle-nums small-caps jis90;
+ }
+ .test {
+ font-family: fwf;
+ font-size: 2.4em;
+ line-height: 1.1;
+ color: purple;
+ }
+ .property {
+ font-variant-ligatures: common-ligatures discretionary-ligatures historical-ligatures contextual;
+ font-variant-numeric: oldstyle-nums;
+ font-variant-caps: small-caps;
+ font-variant-east-asian: jis90;
+ }
+ .test>p.descriptor {
+ font-family: fwf2;
+ }
+ .child {
+ color: green;
+ }
+</style>
+
+<body>
+<p>Test passes if the three lines below are identical, with (in purple) eight check marks (✓)</p>
+<section class="test">
+ <p class="descriptor">CDGFEJQa</p>
+ <p class="property">CDGFEJQa</p>
+ <p class="ref">AAAAAAAA</p>
+</section> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors.html
new file mode 100644
index 00000000000..9a70d1d8b8b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors.html
@@ -0,0 +1,169 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing @font-face descriptor values introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-face-rule" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style id="testStyle">
+ @font-face { font-family: Test; src: local('Courier New'), local('Courier'); }
+ </style>
+</head>
+<body>
+ <div>@font-face descriptor tests</div>
+ <script>
+
+ function updateFontFaceRule(descriptorName, descriptorValue) {
+ let testRule = document.getElementById("testStyle").sheet.cssRules[0];
+
+ testRule.style.fontWeight = "normal";
+ testRule.style.fontStyle = "normal";
+ testRule.style.fontStretch = "normal";
+ assert_equals(testRule.style.fontWeight, "normal", "Can't clear @font-face.");
+ assert_equals(testRule.style.fontStyle, "normal", "Can't clear @font-face.");
+ assert_equals(testRule.style.fontStretch, "normal", "Can't clear @font-face.");
+
+ testRule.style.fontWeight = "";
+ testRule.style.fontStyle = "";
+ testRule.style.fontStretch = "";
+ assert_true(!testRule.style.fontWeight, "", "Can't clear @font-face.");
+ assert_true(!testRule.style.fontStyle, "", "Can't clear @font-face.");
+ assert_true(!testRule.style.fontStretch, "", "Can't clear @font-face.");
+
+ testRule.style[descriptorName] = descriptorValue;
+
+ return testRule;
+ }
+
+ function testDescriptor(descriptorName, testCases) {
+ var propertyName = { 'font-weight':'fontWeight', 'font-stretch':'fontStretch', 'font-style':'fontStyle' }[descriptorName];
+ testCases.forEach(function (testCase) {
+ test(() => {
+ let rule = updateFontFaceRule(descriptorName, testCase.value);
+
+ if (testCase.isValid) {
+ assert_not_equals(rule.style[propertyName], "", "Valid value should be accepted.");
+
+ let expectedValue = (testCase.expectedValue) ? testCase.expectedValue : testCase.value;
+ assert_equals(rule.style[propertyName], expectedValue, "Unexpected resulting value.");
+ }
+ else {
+ assert_equals(rule.style[propertyName], "", "No properties should be set.");
+ }
+ }, descriptorName + (testCase.isValid ? "(valid): " : "(invalid): ") + testCase.description + ": " + testCase.value);
+
+ });
+ }
+
+ testDescriptor("font-weight", [
+ // Single value, keyword
+ { value: "normal", isValid: true, description: "'normal' keyword" },
+ { value: "bold", isValid: true, description: "'bold' keyword" },
+ { value: "lighter", isValid: false, description: "'lighter' keyword iside @font-face" },
+ { value: "bolder", isValid: false, description: "'lighter' keyword iside @font-face" },
+ { value: "bold a", isValid: false, description: "Extra content after keyword" },
+
+ // Single value, number
+ { value: "401", isValid: true, description: "Values that are not multiple of 100 should be parsed successfully" },
+ { value: "400.1", isValid: true, description: "Non-integer values should be parsed successfully" },
+ { value: "1", isValid: true, description: "Minimum allowed value should be parsed successfully" },
+ { value: "0.999", isValid: false, description: "Values below minimum should be rejected" },
+ { value: "-100", isValid: false, description: "Values below zero should be rejected" },
+ { value: "1000", isValid: true, description: "Maximum allowed value should be parsed successfully" },
+ { value: "1000.001", isValid: false, description: "Values above maximum should be rejected" },
+ { value: "100 a", isValid: false, description: "Extra content after value" },
+
+ // Single value, calc
+ { value: "calc(100.5)", isValid: true, expectedValue: "100.5", description: "Simple calc value" },
+ { value: "calc(1001)", isValid: false, description: "Out-of-range simple calc value" },
+ { value: "calc(100.5*3 + 50.5)", isValid: true, expectedValue: "352", description: "Valid calc expression" },
+ { value: "calc(100.5*3 + 800)", isValid: false, description: "Valid calc expression with out-of-range value" },
+ { value: "calc(100.5px + 50.5px)", isValid: false, description: "Valid calc expression with units" },
+
+ // Value range
+ { value: "100 900", isValid: true, description: "Simple range" },
+ { value: "500 500", isValid: true, expectedValue: "500", description: "Simple range with equal upper and lower bounds" },
+ { value: "0.9 100", isValid: false, description: "Lower bound out of range" },
+ { value: "100 1001", isValid: false, description: "Upper bound out of range" },
+ { value: "calc(100 + 100) 400", isValid: true, expectedValue: "200 400", description: "Lower bound calc()" },
+ { value: "200 calc(200 + 200)", isValid: true, expectedValue: "200 400", description: "Upper bound calc()" },
+ { value: "calc(100 + 100) calc(200 + 200)", isValid: true, expectedValue: "200 400", description: "Both bounds are calc()" },
+ { value: "400 200", isValid: true, expectedValue: "200 400", description: "Bounds out of order are valid" },
+ { value: "100 200 300", isValid: false, description: "Extra content after upper bound" },
+ ]);
+
+ testDescriptor("font-stretch", [
+ // Single value, keyword
+ { value: "ultra-condensed", isValid: true, description: "'ultra-condensed' keyword" },
+ { value: "extra-condensed", isValid: true, description: "'extra-condensed' keyword" },
+ { value: "condensed", isValid: true, description: "'condensed' keyword" },
+ { value: "semi-condensed", isValid: true, description: "'semi-condensed' keyword" },
+ { value: "normal", isValid: true, description: "'normal' keyword" },
+ { value: "semi-expanded", isValid: true, description: "'semi-expanded' keyword" },
+ { value: "expanded", isValid: true, description: "'expanded' keyword" },
+ { value: "extra-expanded", isValid: true, description: "'extra-expanded' keyword" },
+ { value: "ultra-expanded", isValid: true, description: "'ultra-expanded' keyword" },
+ { value: "expanded a", isValid: false, description: "Extra content after value" },
+
+ // Single value, number
+ { value: "1%", isValid: true, description:"Legal percentage" },
+ { value: "10.5%", isValid: true, description:"Legal percentage" },
+ { value: "100%", isValid: true, description:"Legal percentage" },
+ { value: "1000%", isValid: true, description:"Legal percentage" },
+ { value: "100", isValid: false, description:"Only percentages, not numbers allowed" },
+ { value: "-1%", isValid: false, description:"Negative values are illegal" },
+ { value: "0%", isValid: true, description:"Zero is legal" },
+ { value: "100% a", isValid: false, description:"Extra content after value" },
+
+ // Single value, calc
+ { value: "calc(200.5%)", isValid: true, expectedValue: "200.5%", description: "Simple calc value" },
+ { value: "calc(50%*2 - 20%)", isValid: true, expectedValue: "80%", description: "Valid calc expression" },
+ { value: "calc(-100%)", isValid: false, description: "Negative calc value" },
+ { value: "calc(50% - 50%*2)", isValid: false, description: "Negative calc expression" },
+ { value: "calc(100)", isValid: false, description: "Unit-less calc value" },
+ { value: "calc(100px)", isValid: false, description: "Calc value with units" },
+
+ // Value range
+ { value: "100% 200%", isValid: true, description: "Simple range" },
+ { value: "100% 100%", isValid: true, expectedValue: "100%", description: "Simple range with equal upper and lower bounds" },
+ { value: "-100% 100%", isValid: false, description: "Lower bound out of range" },
+ { value: "calc(10% + 10%) 30%", isValid: true, expectedValue: "20% 30%", description: "Lower bound calc()" },
+ { value: "10% calc(10% + 10%)", isValid: true, expectedValue: "10% 20%", description: "Upper bound calc()" },
+ { value: "calc(10% + 10%) calc(20% + 20%)", isValid: true, expectedValue: "20% 40%", description: "Both bounds are calc()" },
+ { value: "200% 100%", isValid: true, expectedValue: "100% 200%", description: "Bounds out of order" },
+ { value: "100% 200% 300%", isValid: false, description: "Extra content after upper bound" },
+ ]);
+
+ testDescriptor("font-style", [
+ // Single value, keyword
+ { value: "normal", isValid: true, description: "'normal' keyword" },
+ { value: "italic", isValid: true, description: "'italic' keyword" },
+ { value: "oblique", isValid: true, description: "'oblique' keyword" },
+
+ // Single value
+ { value: "italic 20deg", isValid: false, description: "'italic' followed by angle" },
+ { value: "italic a", isValid: false, description: "Extra content after keyword" },
+ { value: "oblique 0deg", isValid: true, description: "'oblique' followed by zero degrees" },
+ { value: "oblique 20deg", isValid: true, expectedValue: "oblique", description: "'oblique' followed by default 20deg angle" },
+ { value: "oblique 90deg", isValid: true, description: "'oblique' followed by maxumum 90 degree angle" },
+ { value: "oblique -90deg", isValid: true, description: "'oblique' followed by minimum -90 degree angle" },
+ { value: "oblique 0rad", isValid: true, expectedValue: "oblique 0deg", description: "'oblique' followed by angle in radians" },
+ { value: "oblique 20", isValid: false, description: "'oblique' followed by unit-less number" },
+ { value: "oblique 20px", isValid: false, description: "'oblique' followed by non-angle" },
+ { value: "oblique a", isValid: false, description: "'oblique' followed by non-number" },
+ { value: "oblique -", isValid: false, description: "'oblique' followed by isolated minus" },
+ { value: "oblique - 20deg", isValid: false, description: "'oblique' followed by minus and angle separated by space" },
+ { value: "oblique -a", isValid: false, description: "'oblique' followed by minus and non-number" },
+
+ // Value range
+ { value: "oblique 10deg 20deg", isValid: true, description: "Simple range" },
+ { value: "oblique 10deg 10deg", isValid: true, expectedValue: "oblique 10deg", description: "Simple range with equal upper and lower bounds" },
+ { value: "oblique 20deg 20deg", isValid: true, expectedValue: "oblique", description: "Simple range with default angle for both bounds" },
+ { value: "oblique 20deg 10deg", isValid: true, expectedValue: "oblique 10deg 20deg", description: "Bounds out of order" },
+ { value: "oblique -100deg 20deg", isValid: false, description: "Lower bound out of range" },
+ { value: "oblique 20deg 100deg", isValid: false, description: "Upper bound out of range" },
+ { value: "oblique 10deg 20deg 30deg", isValid: false, description: "Extra content after upper bound" },
+ ]);
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-font-matching.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-font-matching.html
new file mode 100644
index 00000000000..24f0bdcc1a7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/at-font-face-font-matching.html
@@ -0,0 +1,147 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing @font-face font matching logic introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-matching-algorithm" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+ .test
+ {
+ float:left;
+ border:1px solid red;
+ font-size:24pt;
+ white-space: nowrap;
+ clear:both;
+ }
+
+ @font-face { font-family: W100; src: url('./resources/csstest-weights-100-kerned.ttf'); }
+ @font-face { font-family: W200; src: url('./resources/csstest-weights-200-kerned.ttf'); }
+ @font-face { font-family: W300; src: url('./resources/csstest-weights-300-kerned.ttf'); }
+
+
+ @font-face { font-family: descriptorPriorityTest; src: url('./resources/csstest-weights-100-kerned.ttf'); font-stretch : 125%; }
+ @font-face { font-family: descriptorPriorityTest; src: url('./resources/csstest-weights-200-kerned.ttf'); font-style: italic; }
+ @font-face { font-family: descriptorPriorityTest; src: url('./resources/csstest-weights-300-kerned.ttf'); font-weight: 350; }
+ </style>
+ <style id="dynamicStyles">
+ </style>
+</head>
+<body>
+
+ <span style="position: absolute; top: -100vh;">
+ <span style="font-family: 'W100';">A</span>
+ <span style="font-family: 'W200';">A</span>
+ <span style="font-family: 'W300';">A</span>
+ </span>
+
+ <div id="master" class="test">A1 A2 A2 A3 A3 A3</div>
+ <div id="test" class="test">A1 A2 A2 A3 A3 A3</div>
+ <div style="clear:both"></div>
+ <script>
+
+ // wait for the fonts to load
+ // -- this should not be necessary if the fonts are installed as required
+ // -- but if they are not, the test is otherwise unstable
+ var once_fonts_are_ready = (document.fonts ? document.fonts.ready : new Promise(function(ready) { window.onload = time => [...document.querySelectorAll('body > span:nth-child(1) > span')].every(e => e.offsetWidth > 20) ? ready() : requestAnimationFrame(window.onload) }));
+
+ var masterElement = document.getElementById("master");
+ var testElement = document.getElementById("test");
+ var dynamicStyles = document.getElementById("dynamicStyles");
+
+ function verifyFont(testFamily, testWeight, testStyle, testStretch, expectedFamily) {
+
+ testElement.style.fontWeight = "normal";
+ testElement.style.fontStyle = "normal";
+ testElement.style.fontStretch = "normal";
+
+ masterElement.style.fontFamily = expectedFamily;
+ let masterWidth = masterElement.offsetWidth;
+
+ testElement.style.fontFamily = expectedFamily;
+ assert_equals(masterWidth, testElement.offsetWidth, "Sanity test: same family name gets same width" + dynamicStyles.innerHTML);
+
+ testElement.style.fontFamily = "serif";
+ assert_not_equals(masterWidth, testElement.offsetWidth, "Sanity test: different family get different width");
+
+ testElement.style.fontWeight = testWeight;
+ testElement.style.fontStyle = testStyle;
+ testElement.style.fontStretch = testStretch;
+ testElement.style.fontFamily = testFamily;
+
+ assert_true(masterWidth == testElement.offsetWidth, "Unexpected font on test element");
+ }
+
+ var descriptorPriorityCases = [
+ { weight: "normal", style: "oblique -5deg", stretch: "125%", expectedFamily: "'W100'", description: "Stretch has higher priority than style"},
+ { weight: "350", style: "normal", stretch: "125%", expectedFamily: "'W100'", description: "Stretch has higher priority than weight"},
+ { weight: "350", style: "oblique -5deg", stretch: "normal", expectedFamily: "'W200'", description: "Style has higher priority than weight"}
+ ];
+
+ descriptorPriorityCases.forEach(function (testCase) {
+ promise_test(
+ assert => once_fonts_are_ready.then(assert => {
+ verifyFont("descriptorPriorityTest", testCase.weight, testCase.style, testCase.stretch, testCase.expectedFamily);
+ }),
+ "Descriptor mathcing priority: " + testCase.description
+ );
+ });
+
+ function createFontFaceRules(fontFaceFamily, descriptorName, expectedMatch, unexpectedMatch) {
+ dynamicStyles.innerHTML =
+ "@font-face { font-family: " + fontFaceFamily + "; src: url('./resources/csstest-weights-100-kerned.ttf'); "+ descriptorName + ": " + expectedMatch + "; }" +
+ "@font-face { font-family: " + fontFaceFamily + "; src: url('./resources/csstest-weights-200-kerned.ttf'); " + descriptorName + ": " + unexpectedMatch + "; }";
+ }
+
+ function testDescriptor(descriptorName, testCases) {
+ testCases.forEach(function (testCase) {
+ // Go though test cases, checking each descriptor has higher priority than next in the list
+ for(let i = 0; i < testCase.testDescriptors.length - 1; i++) {
+ let expectedMatch = testCase.testDescriptors[i];
+ let unexpectedMatch = testCase.testDescriptors[i + 1];
+ promise_test(
+ assert => once_fonts_are_ready.then(assert => {
+ createFontFaceRules("MatchTestFamily", descriptorName, expectedMatch, unexpectedMatch);
+
+ let testWeight = (descriptorName == "font-weight") ? testCase.value : "normal";
+ let testStyle = (descriptorName == "font-style") ? testCase.value : "normal";
+ let testStretch = (descriptorName == "font-stretch") ? testCase.value : "normal";
+
+ verifyFont("MatchTestFamily", testWeight, testStyle, testStretch, "'W100'");
+ }),
+ "Matching " + descriptorName + ": '" + testCase.value + "' should prefer '" + expectedMatch + "' over '" + unexpectedMatch + "'");
+ }
+ });
+ }
+
+ // Each case defines property value being tested and set of descriptor values in order of matching priority from highest to lowest
+
+ testDescriptor("font-weight", [
+ { value: "400", testDescriptors: ["400", "450 460", "500", "350 399", "351 398", "501 550", "502 560"] },
+ { value: "430", testDescriptors: ["420 440", "450 460", "500", "400 425", "350 399", "340 398", "501 550", "502 560"] },
+ { value: "500", testDescriptors: ["500", "450 460", "400", "350 399", "351 398", "501 550", "502 560"] },
+ { value: "501", testDescriptors: ["501", "502 510", "503 520", "500", "450 460", "390 410", "300 350"] },
+ { value: "399", testDescriptors: ["350 399", "340 360", "200 300", "400", "450 460", "500 501", "502 510"] }
+ ]);
+
+ testDescriptor("font-stretch", [
+ { value: "100%", testDescriptors: ["100%", "110% 120%", "115% 116%"] },
+ { value: "110%", testDescriptors: ["110% 120%", "115% 116%", "105%", "100%", "50% 80%", "60% 70%"] },
+ { value: "90%", testDescriptors: ["90% 100%", "50% 80%", "60% 70%", "110% 140%", "120% 130%"] },
+ ]);
+
+ testDescriptor("font-style", [
+ { value: "normal", testDescriptors: ["normal", "oblique 0deg", "oblique 10deg 40deg", "oblique 20deg 30deg", "oblique -50deg -20deg", "oblique -40deg -30deg" ] },
+ { value: "italic", testDescriptors: ["italic", "oblique 20deg", "oblique 30deg 60deg", "oblique 40deg 50deg", "oblique 5deg 10deg", "oblique 5deg", "normal", "oblique 0deg", "oblique -60deg -30deg", "oblique -50deg -40deg" ] },
+ { value: "oblique 20deg", testDescriptors: ["oblique 20deg", "oblique 30deg 60deg", "oblique 40deg 50deg", "oblique 10deg", "italic", "oblique 0deg", "oblique -50deg -20deg", "oblique -40deg -30deg" ] },
+ { value: "oblique 21deg", testDescriptors: ["oblique 21deg", "oblique 30deg 60deg", "oblique 40deg 50deg", "oblique 20deg", "oblique 10deg", "italic", "oblique 0deg", "oblique -50deg -20deg", "oblique -40deg -30deg" ] },
+ { value: "oblique 10deg", testDescriptors: ["oblique 10deg", "oblique 5deg", "oblique 15deg 20deg", "oblique 30deg 60deg", "oblique 40deg 50deg", "italic", "oblique 0deg", "oblique -50deg -20deg", "oblique -40deg -30deg" ] },
+ { value: "oblique 0deg", testDescriptors: ["oblique 0deg", "oblique 5deg", "oblique 15deg 20deg", "oblique 30deg 60deg", "oblique 40deg 50deg", "italic", "oblique -50deg -20deg", "oblique -40deg -30deg" ] },
+ { value: "oblique -10deg", testDescriptors: ["oblique -10deg", "oblique -5deg", "oblique -1deg 0deg", "oblique -20deg -15deg", "oblique -60deg -30deg", "oblique -50deg -40deg", "italic", "oblique 0deg 10deg", "oblique 40deg 50deg" ] },
+ { value: "oblique -20deg", testDescriptors: ["oblique -20deg", "oblique -60deg -40deg", "oblique -10deg", "italic", "oblique 0deg", "oblique 30deg 60deg", "oblique 40deg 50deg"] },
+ { value: "oblique -21deg", testDescriptors: ["oblique -21deg", "oblique -60deg -40deg", "oblique -10deg", "italic", "oblique 0deg", "oblique 30deg 60deg", "oblique 40deg 50deg"] },
+ ]);
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-opentype-collections.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-opentype-collections.html
new file mode 100644
index 00000000000..1b403b32462
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-opentype-collections.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing support for OpenType collections in @font-face rules</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#src-desc" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+ @font-face {
+ font-family: OpenType;
+ src: url(/fonts/Ahem.ttf);
+ }
+
+ @font-face {
+ font-family: OpenType-Collection;
+ src: url(./resources/ahem.ttc);
+ }
+ </style>
+</head>
+<body onload="test()">
+ <div id="opentype" style="display:inline-block; font-family:OpenType,Georgia;">Test</div><br>
+ <div id="collection" style="display:inline-block; font-family:OpenType-Collection,Verdana;">Test</div>
+ <script>
+
+ var opentypeElement = document.getElementById("opentype");
+ var collectionElement = document.getElementById("collection");
+
+ var loadTest = async_test("Verify that collection font is loaded");
+
+ function test() {
+ if (opentypeElement.offsetWidth == collectionElement.offsetWidth) {
+ loadTest.done();
+ }
+ else {
+ window.requestAnimationFrame(test);
+ }
+ }
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html
index 5152424a71d..062e37325e3 100644
--- a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-parse-numeric-stretch-style-weight.html
@@ -20,6 +20,8 @@ var styleValidTests = {
'850.3',
'calc(100 + 300)',
'calc(0.2 + 205.5)',
+ 'calc(0 - 100)',
+ 'calc(200 + 801)',
],
'stretch': ['51%', '199%', 'calc(10% + 20%)'],
'style' : [ 'normal', 'italic', 'oblique', 'oblique 50deg', 'oblique -90deg', 'oblique 90deg',
@@ -27,7 +29,7 @@ var styleValidTests = {
};
var styleInvalidTests = {
- 'weight': ['100 400', 'calc(0 - 100)', 'calc(200 + 801)'],
+ 'weight': ['100 400'],
'stretch': ['100% 110%', '0%', '100% 150%', 'calc(1 + 10%)'],
'style' : [ 'normal 10deg', 'italic 10deg', 'oblique -91deg', 'oblique 91deg', 'oblique calc(90deg + 20deg)']
};
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-shorthand.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-shorthand.html
new file mode 100644
index 00000000000..33ce74ff88d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-shorthand.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing font shorthand for new values introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-prop" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+ <div id="shorthand-test">Shorthand test</div>
+
+ <script>
+
+ testFontShorthand = [
+ { value: "calc(24px) Arial", isValid:true, message: "Font size specified as calc()" },
+
+ // font-weight as number
+ { value: "700.5 24px Arial", isValid:true, expectedWeight:"700.5", message: "Font weight specified as number" },
+ { value: "0.9 24px Arial", isValid:false, message: "Font weight specified as number, value less than 1" },
+ { value: "1700.5 24px Arial", isValid:false, message: "Font weight specified as number, value greater than 1000" },
+
+ // font-weight as calc()
+ { value: "calc(900.7 - 200.1 * 2) calc(12px + 12px) Arial", isValid:true, expectedWeight:"500.5", message: "Font weight specified as calc()" },
+ { value: "calc(400.5 - 200.1 * 2) 24px Arial", isValid:true, expectedWeight:"1", message: "Font weight specified as calc(), value smaller than 1" },
+ { value: "calc(400.5 + 300.1 * 2) 24px Arial", isValid:true, expectedWeight:"1000", message: "Font weight specified as calc(), value greater than 1000" },
+
+ // font-style
+ { value: "oblique 45deg 24px Arial", isValid:true, expectedStyle: "oblique 45deg", message: "'oblique' with positive angle" },
+ { value: "oblique -45deg 24px Arial", isValid:true, expectedStyle: "oblique -45deg", message: "'oblique' with negative angle" },
+ { value: "oblique 24px Arial", isValid:true, expectedStyle: "oblique", message: "'oblique' without slant angle" },
+ { value: "oblique 100deg 24px Arial", isValid:false, message: "'oblique' with positive angle, value out of range" },
+ { value: "oblique -100deg 24px Arial", isValid:false, message: "'oblique' with negative angle, value out of range" },
+
+ // font-weight and font-style combined
+ { value: "oblique 50 24px Arial", isValid:true, expectedStyle: "oblique", expectedWeight:"50", message: "'oblique' followed by valid small weight" },
+ { value: "oblique 500 24px Arial", isValid:true, expectedStyle: "oblique", expectedWeight:"500", message: "'oblique' followed by valid large weight" },
+ { value: "oblique 45deg 500 24px Arial", isValid:true, expectedStyle: "oblique 45deg", expectedWeight:"500", message: "'oblique' with positive angle followed by valid weight" },
+ { value: "oblique -45deg 500 24px Arial", isValid:true, expectedStyle: "oblique -45deg", expectedWeight:"500", message: "'oblique' with negative angle followed by valid weight" },
+
+ // font-weight and font-style combined, with calc()
+ { value: "oblique calc(200 + 300) 24px Arial", isValid:true, expectedStyle: "oblique", expectedWeight:"500", message: "'oblique' followed by valid calc() weight" },
+ { value: "oblique 30deg calc(200 + 300) 24px Arial", isValid:true, expectedStyle: "oblique 30deg", expectedWeight:"500", message: "'oblique' with angle followed by valid calc() weight" },
+ { value: "oblique calc(900 + 300) 24px Arial", isValid:true, expectedStyle: "oblique", expectedWeight:"1000", message: "'oblique' followed by a to-be-clamped calc() weight" },
+ { value: "calc(200 + 300) oblique 24px Arial", isValid:true, expectedStyle: "oblique", expectedWeight:"500", message: "calc() weight folowed by 'oblique'" },
+ { value: "calc(200 + 300) oblique 45deg 24px Arial", isValid:true, expectedStyle: "oblique 45deg", expectedWeight:"500", message: "calc() weight folowed by 'oblique' and slant angle" },
+ { value: "calc(900 + 300) oblique 45deg 24px Arial", isValid:true, expectedStyle: "oblique", expectedWeight:"1000", message: "To-be-clamped calc() weight folowed by 'oblique' and slant angle" },
+ ];
+
+ testFontShorthand.forEach(function (testCase) {
+ test(() => {
+ assert_equals(window.CSS.supports("font", testCase.value), testCase.isValid, "Font shorthand: " + testCase.message);
+
+ let expectedStyle = (testCase.expectedStyle) ? testCase.expectedStyle : "normal";
+ let expectedWeight = (testCase.expectedWeight) ? testCase.expectedWeight : "400";
+ let expectedSize = (testCase.isValid) ? "24px" : "16px";
+
+ var testElement = document.getElementById("shorthand-test");
+ testElement.setAttribute("style", "font:" + testCase.value);
+ var style = window.getComputedStyle(testElement);
+ assert_equals(style.fontStyle, expectedStyle, "Font shorthand expected style: " + testCase.message);
+ assert_equals(style.fontWeight, expectedWeight, "Font shorthand expected weight: " + testCase.message);
+ assert_equals(style.fontSize, expectedSize, "Font shorthand expected size: " + testCase.message);
+ }, "Font shorthand: " + testCase.message);
+
+ });
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-stretch.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-stretch.html
new file mode 100644
index 00000000000..a27b251f480
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-stretch.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing new font-stretch values introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-stretch-prop" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+ <div id="computedStyleTest">Abc</span></div>
+ <div id="inheritanceTest"><span style="font-stretch:125%;">Abc</span><span style="font-stretch:expanded;">Abc</span><span style="font-weight: 700;">Abc</span></div>
+ <script>
+
+ testStretchValues = [
+ { stretch: "100", expectedComputedStretch: "100%" , expectedIsSupported: false, message: "only percentages, not numbers allowed" },
+ { stretch: "-1%", expectedComputedStretch: "" , expectedIsSupported: false, message: "negative values are illegal" },
+ { stretch: "0%", expectedComputedStretch: "0%", expectedIsSupported: true, message: "zero is legal" },
+ { stretch: "1%", expectedComputedStretch: "1%", expectedIsSupported: true, message: "legal percentage" },
+ { stretch: "10%", expectedComputedStretch: "10%", expectedIsSupported: true, message: "legal percentage" },
+ { stretch: "100%", expectedComputedStretch: "100%", expectedIsSupported: true, message: "legal percentage" },
+ { stretch: "1000%", expectedComputedStretch: "1000%", expectedIsSupported: true, message: "legal percentage" },
+ { stretch: "1e9%", expectedComputedStretch: "1e+009%", expectedIsSupported: true, message: "huge legal percentage" },
+ { stretch: "ultra-condensed", expectedComputedStretch: "50%", expectedIsSupported: true, message: "legal enum" },
+ { stretch: "extra-condensed", expectedComputedStretch: "62.5%", expectedIsSupported: true, message: "legal enum" },
+ { stretch: "condensed", expectedComputedStretch: "75%", expectedIsSupported: true, message: "legal enum" },
+ { stretch: "semi-condensed", expectedComputedStretch: "87.5%", expectedIsSupported: true, message: "legal enum" },
+ { stretch: "normal", expectedComputedStretch: "100%", expectedIsSupported: true, message: "legal enum" },
+ { stretch: "semi-expanded", expectedComputedStretch: "112.5%", expectedIsSupported: true, message: "legal enum" },
+ { stretch: "expanded", expectedComputedStretch: "125%", expectedIsSupported: true, message: "legal enum" },
+ { stretch: "extra-expanded", expectedComputedStretch: "150%", expectedIsSupported: true, message: "legal enum" },
+ { stretch: "ultra-expanded", expectedComputedStretch: "200%", expectedIsSupported: true, message: "legal enum" },
+ { stretch: "narrower", expectedComputedStretch: "", expectedIsSupported: false, message: "deprecated" },
+ { stretch: "wider", expectedComputedStretch: "", expectedIsSupported: false, message: "deprecated" },
+ { stretch: "calc(200.5%)", expectedComputedStretch: "200.5%", expectedIsSupported: true, message: "Simple calc value" },
+ { stretch: "calc(50%*2 - 20%)", expectedComputedStretch: "80%", expectedIsSupported: true, message: "Valid calc expression" },
+ { stretch: "calc(-100%)", expectedComputedStretch: "0%", expectedIsSupported: true, message: "Negative calc value (to be clamped)" },
+ { stretch: "calc(50% - 50%*2)", expectedComputedStretch: "0%", expectedIsSupported: true, message: "Negative calc expression (to be clamped)" },
+ { stretch: "calc(100)", expectedComputedStretch: "", expectedIsSupported: false, message: "Unit-less calc value" },
+ { stretch: "calc(100px)", expectedComputedStretch: "", expectedIsSupported: false, message: "Calc value with units" },
+ { stretch: "100% 700%", expectedComputedStretch: "", expectedIsSupported: false, message: "Extra percentage after numeric value" },
+ { stretch: "100% 100", expectedComputedStretch: "", expectedIsSupported: false, message: "Extra content after numeric value" },
+ { stretch: "condensed expanded",expectedComputedStretch: "", expectedIsSupported: false, message: "Extra content after keyword value" },
+ { stretch: "calc(100%) 100%", expectedComputedStretch: "", expectedIsSupported: false, message: "Extra content after calc value" }
+ ];
+
+ testStretchValues.forEach(function (element) {
+ test(() => { assert_equals(window.CSS.supports("font-stretch", element.stretch), element.expectedIsSupported, element.message); }, "@supports: " + element.stretch + " - " + element.message);
+
+ // If supported, verify the computed style.
+ if (element.expectedIsSupported)
+ {
+ var testSpan = document.getElementById("computedStyleTest");
+ testSpan.style.fontStretch = element.stretch;
+ var actualStretch = window.getComputedStyle(testSpan).fontStretch;
+
+ test(() => { assert_equals(actualStretch, element.expectedComputedStretch, element.message); }, "@getComputedStyle: " + element.stretch + " - " + element.message);
+ }
+ });
+
+ // Verify computed inheritance of nested elements.
+ {
+ var base = document.getElementById("inheritanceTest");
+ var parentStretch = "condensed";
+ base.style.fontStretch = parentStretch;
+
+ test(() => {
+ var actualStretch = window.getComputedStyle(base.children[0]).fontStretch;
+ assert_equals(actualStretch, "125%", "Overridden value for " + parentStretch + " should match expected value.");
+ }, "Test font-stretch for overridden number " + parentStretch);
+
+ test(() => {
+ var actualStretch = window.getComputedStyle(base.children[1]).fontStretch;
+ assert_equals(actualStretch, "125%", "Inherited value " + parentStretch + " should match expected value.");
+ }, "Test font-stretch for overridden enum name resolved to number " + parentStretch);
+
+ test(() => {
+ var actualStretch = window.getComputedStyle(base.children[2]).fontStretch;
+ assert_equals(actualStretch, "75%", "Inherited value " + parentStretch + " should match expected value.");
+ }, "Test font-stretch for inherited named enum resolved to number " + parentStretch);
+ }
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-style-interpolation.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-style-interpolation.html
new file mode 100644
index 00000000000..0e7eac4d1ee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-style-interpolation.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing the interpolation of new font-style values introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-style-prop" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+ @keyframes fontStyleAnimation {
+ from { font-style: oblique -12deg; }
+ to { font-style: oblique 12deg; }
+ }
+
+ #animation-test.animate {
+ animation: fontStyleAnimation 1s infinite alternate;
+ }
+
+ #transition-test {
+ font-style: oblique -12deg;
+ transition-property: font-style;
+ transition-duration: 10s;
+ }
+
+ #transition-test.animate {
+ font-style: oblique 12deg;
+ }
+
+ </style>
+</head>
+<body>
+ <div style="font-family: serif;">
+ <div id="animation-test">Animation test</div>
+ <div id="transition-test">Transition test</div>
+ </div>
+
+ <script>
+
+ async_test(function (test) {
+ var animationElement = document.getElementById("animation-test");
+
+ // Verify starting value
+ assert_equals(window.getComputedStyle(animationElement).fontStyle, "normal", "Font style before animation");
+
+ // Start animation
+ animationElement.classList.add("animate");
+
+ var waitForAnimationStep = test.step_func(function() {
+ var computedFontStyle = window.getComputedStyle(animationElement).fontStyle;
+ if (computedFontStyle != "normal" &&
+ computedFontStyle != "oblique -12deg" &&
+ computedFontStyle != "oblique 12deg") {
+ test.done();
+ }
+ else {
+ window.requestAnimationFrame(waitForAnimationStep);
+ }
+ });
+ waitForAnimationStep();
+
+ }, "font-style animation");
+
+ async_test(function (test) {
+ var transitionElement = document.getElementById("transition-test");
+
+ // Verify starting value
+ assert_equals(window.getComputedStyle(transitionElement).fontStyle, "oblique -12deg", "Font style before transition");
+
+ // Start transition
+ transitionElement.classList.add("animate");
+
+ var waitForTransitionStep = test.step_func(function() {
+ var computedFontStyle = window.getComputedStyle(transitionElement).fontStyle;
+ if (computedFontStyle != "normal" &&
+ computedFontStyle != "oblique -12deg" &&
+ computedFontStyle != "oblique 12deg") {
+ test.done();
+ }
+ else {
+ window.requestAnimationFrame(waitForTransitionStep);
+ }
+ });
+ waitForTransitionStep();
+
+ }, "font-style transition");
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-style-parsing.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-style-parsing.html
new file mode 100644
index 00000000000..0973d6340cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-style-parsing.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing the new font-style values introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-style-prop" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+
+ <script>
+
+ var testFontStyle = [
+ { style: "italic", expectedResult: true, message: "'italic' is valid" },
+ { style: "italic 20deg", expectedResult: false, message: "'italic' followed by angle is invalid" },
+ { style: "italic a", expectedResult: false, message: "'italic' followed by non-number is invalid" },
+ { style: "oblique", expectedResult: true, message: "'oblique' is valid" },
+ { style: "oblique 0deg", expectedResult: true, message: "'oblique' followed by zero degrees is valid" },
+ { style: "oblique 20deg", expectedResult: true, message: "'oblique' followed by positive angle in degrees is valid" },
+ { style: "oblique 0.5rad", expectedResult: true, message: "'oblique' followed by positive angle in radians is valid" },
+ { style: "oblique 20grad", expectedResult: true, message: "'oblique' followed by positive angle in gradians is valid" },
+ { style: "oblique 0.1turn", expectedResult: true, message: "'oblique' followed by positive angle in turns is valid" },
+ { style: "oblique 20px", expectedResult: false, message: "'oblique' followed by number with invalid unit type is in valid" },
+ { style: "oblique -20deg", expectedResult: true, message: "'oblique' followed by negative angle is valid" },
+ { style: "oblique 20.1deg", expectedResult: true, message: "'oblique' followed by fractional angle is valid" },
+ { style: "oblique 90deg", expectedResult: true, message: "'oblique' followed by maxumum 90 degree angle is valid" },
+ { style: "oblique -90deg", expectedResult: true, message: "'oblique' followed by minimum -90 degree angle is valid" },
+ { style: "oblique 90.01deg", expectedResult: false, message: "'oblique' followed by positive out of range angle is in invalid" },
+ { style: "oblique -90.01deg", expectedResult: false, message: "'oblique' followed by negative out of range angle is in invalid" },
+ { style: "oblique 10", expectedResult: false, message: "'oblique' followed by unit-less value is invalid" },
+ { style: "oblique 20deg ", expectedResult: true, message: "'oblique' followed by positive angle is valid" },
+ { style: "oblique a", expectedResult: false, message: "'oblique' followed by non-number is invalid" },
+ { style: "oblique 20deg a", expectedResult: false, message: "'oblique' and angle followed by non-number is invalid" },
+ { style: "oblique -", expectedResult: false, message: "'oblique' followed by isolated minus is invalid" },
+ { style: "oblique - 20deg", expectedResult: false, message: "'oblique' followed by minus and angle separated by space is invalid" },
+ { style: "oblique -a", expectedResult: false, message: "'oblique' followed by minus and non-number is invalid" },
+ { style: "oblique calc(50deg)", expectedResult: true, message: "'oblique' followed by calc is valid" },
+ { style: "oblique calc(-120deg)", expectedResult: true, message: "'oblique' followed by calc is valid even if it must be clamped (no computation)" },
+ { style: "oblique calc(6 * 20deg)", expectedResult: true, message: "'oblique' followed by calc is valid even if it must be clamped (with computation)" },
+ { style: "oblique calc(0.1rad + 1deg)", expectedResult: true, message: "'oblique' followed by calc is valid even if it mixes units (with computation)" }
+ ];
+
+ testFontStyle.forEach(function (testCase) {
+ test(() => { assert_equals(window.CSS.supports("font-style", testCase.style), testCase.expectedResult, "Font-style: " + testCase.message); }, "Font-style: " + testCase.message);
+ });
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-variation-settings-inherit.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-variation-settings-inherit.html
new file mode 100644
index 00000000000..f0d8f0b2a56
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-variation-settings-inherit.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing the inheritance of the font-variation-settings property</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#propdef-font-variation-settings" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+ <div id="inheritanceTestParent" style="font-variation-settings: 'xxxx' 1, 'xxxx' 2;">
+ <span id="inheritanceTestChildInherited">Abc</span>
+ <span id="inheritanceTestChildOverride" style="font-variation-settings: 'cccc' 1, 'bbbb' 2, 'aaaa' 3, 'aaaa' calc(2 + 2);">Abc</span>
+ </div>
+ <script>
+
+ // Verify computed inheritance of nested elements.
+ var elementParent = document.getElementById("inheritanceTestParent");
+ var elementChildInherited = document.getElementById("inheritanceTestChildInherited");
+ var elementChildOverride = document.getElementById("inheritanceTestChildOverride");
+
+ var parentValue = "'yyyy' 1, 'yyyy' 2";
+ elementParent.style.fontVariationSettings = parentValue;
+
+ test(() => {
+ var actualValue = window.getComputedStyle(elementParent).fontVariationSettings;
+ // The following strict test is subject to debate; softening for now:
+ // assert_equals(actualValue, "\"yyyy\" 2", "Duplicate axis tags should be removed, favoring the latter axis tag's value.");
+ assert_equals((/.*(?:"|')yyyy(?:"|') (\d)/.exec(actualValue)||[])[1], '2', "Child should override parent value.");
+ }, "Test font-variation-settings for duplicates using " + parentValue);
+
+ test(() => {
+ var actualValue = window.getComputedStyle(elementChildInherited).fontVariationSettings;
+ // The following strict test is subject to debate; softening for now:
+ // assert_equals(actualValue, "\"yyyy\" 2", "Child should inherit the parent value directly.");
+ assert_equals((/.*(?:"|')yyyy(?:"|') (\d)/.exec(actualValue)||[])[1], '2', "Child should override parent value.");
+ }, "Test font-variation-settings for child inheritance");
+
+ test(() => {
+ var actualValue = window.getComputedStyle(elementChildOverride).fontVariationSettings;
+ // The following strict test is subject to debate; softening for now:
+ // assert_equals(actualValue, "\"aaaa\" 4, \"bbbb\" 2, \"cccc\" 1", "Child should override parent value.");
+ assert_equals((/.*(?:"|')aaaa(?:"|') (\d)/.exec(actualValue)||[])[1], '4', "Child should override parent value.");
+ assert_equals((/.*(?:"|')yyyy(?:"|') (\d)/.exec(actualValue)||[])[1], undefined, "Child should override parent value.");
+ }, "Test font-variation-settings for child override");
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-variation-settings-parsing.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-variation-settings-parsing.html
new file mode 100644
index 00000000000..3d6bc5fa1c0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-variation-settings-parsing.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing the parsing of the font-variation-settings property</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#propdef-font-variation-settings" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+ <div id="value-parser-test"></div>
+ <script>
+
+ var valueParserTests = [
+ { value: "'wght' 1000, '9 ~A' -45", expectedComputedValue: "\"wght\" 1000, \"9 ~A\" -45", isValid: true, message: "Axis tag with valid non-letter ascii characters" },
+ { value: "'\u001Fbdc' 123", expectedComputedValue: "", isValid: false, message: "Invalid character below allowed range (first char)"},
+ { value: "'abc\u007F' 123", expectedComputedValue: "", isValid: false, message: "Invalid character above allowed range (mid char)"},
+ { value: "'wght' 1e3, 'slnt' -450.0e-1 ", expectedComputedValue: "\"wght\" 1000, \"slnt\" -45", isValid: true, message: "Axis values in scientific form are valid" },
+ { value: "normal", expectedComputedValue: "normal", isValid: true, message: "'normal' value is valid" },
+ { value: "'a' 1234", expectedComputedValue: "", isValid: false, message: "Tag with less than 4 characters is invalid"},
+ { value: "'abcde' 1234", expectedComputedValue: "", isValid: false, message: "Tag with more than 4 characters is invalid"},
+ { value: "'wght' 200, ", expectedComputedValue: "", isValid: false, message: "Trailing comma is invalid"},
+ { value: "abcd 123", expectedComputedValue: "", isValid: false, message: "Unquoted tags are invalid"},
+ { value: "'abcd\" 123", expectedComputedValue: "", isValid: false, message: "Unmatched quotes around tag are invalid" },
+ { value: "'abcd'", expectedComputedValue: "", isValid: false, message: "Tag without value isinvalid"},
+ { value: "123", expectedComputedValue: "", isValid: false, message: "Value without tag is invalid"},
+ { value: "123 'abcd'", expectedComputedValue: "", isValid: false, message: "Value before tag is invalid"},
+ { value: "'wght' 200 'abcd' 400", expectedComputedValue: "", isValid: false, message: "Missing comma between axes is invalid"},
+ { value: "'wght' calc(100 + 200)", expectedComputedValue: "\"wght\" 300", isValid: true, message: "Calculations should be supported" },
+ { value: "'wght' 100px", expectedComputedValue: "", isValid: false, message: "Units should not be supported" },
+ { value: "'wght' calc(100px + 200px)", expectedComputedValue: "", isValid: false, message: "Units should not be supported (in calc)" },
+ { value: "'wght' 42%", expectedComputedValue: "", isValid: false, message: "Percentages should not be supported" },
+ { value: "'wght' calc(100%)", expectedComputedValue: "", isValid: false, message: "Percentages should not be supported (in calc)" },
+ ];
+
+ valueParserTests.forEach(function (testCase) {
+ test(() => {
+ var element = document.getElementById("value-parser-test");
+ // Reset to empty in order for testing to continue in case the next test would not parse as valid
+ element.style.fontVariationSettings = "";
+ element.style.fontVariationSettings = testCase.value;
+ var computed = window.getComputedStyle(element).fontVariationSettings;
+ if (testCase.isValid) {
+ assert_equals(computed, testCase.expectedComputedValue, testCase.message);
+ }
+ else {
+ assert_equals(computed, "normal", testCase.message);
+ }
+
+ element.style.fontVariationSettings = "";
+ }, "Property value: " + testCase.message);
+ });
+
+ valueParserTests.forEach(function (testCase) {
+ test(() => { assert_equals(window.CSS.supports("font-variation-settings", testCase.value), testCase.isValid, testCase.message); }, "@supports: " + testCase.message);
+ });
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-interpolation.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-interpolation.html
new file mode 100644
index 00000000000..745be060aba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-interpolation.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing the interpolation of new font-weight values introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-weight-prop" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+ @keyframes fontWeightAnimation {
+ from { font-weight: 100; }
+ to { font-weight: 900; }
+ }
+
+ #animation-test.animate {
+ animation: fontWeightAnimation 1s infinite alternate;
+ }
+
+ #transition-test {
+ font-weight: 100;
+ transition-property: font-weight;
+ transition-duration: 10s;
+ }
+
+ #transition-test.animate {
+ font-weight: 900;
+ }
+
+ </style>
+</head>
+<body>
+ <div style="font-family: 'CSSTest Weights Full';">
+ <div id="animation-test">A</div>
+ <div id="transition-test">A</div>
+ </div>
+
+ <script>
+
+ async_test(function (test) {
+ var animationElement = document.getElementById("animation-test");
+
+ // Verify starting value
+ assert_equals(window.getComputedStyle(animationElement).fontWeight, "400", "Font weight before animation");
+
+ // Start animation
+ animationElement.classList.add("animate");
+
+ var waitForAnimationStep = test.step_func(function() {
+ var computedFontWeight = window.getComputedStyle(animationElement).fontWeight;
+ if (computedFontWeight[1] != "0" || computedFontWeight[2] != 0) { // the value should eventually not be a multiple of 100
+ test.done();
+ }
+ else {
+ window.requestAnimationFrame(waitForAnimationStep);
+ }
+ });
+ waitForAnimationStep();
+
+ }, "font-weight animation");
+
+ async_test(function (test) {
+ var transitionElement = document.getElementById("transition-test");
+
+ // Verify starting value
+ assert_equals(window.getComputedStyle(transitionElement).fontWeight, "100", "Font weight before transition");
+
+ // Start transition
+ transitionElement.classList.add("animate");
+
+ var waitForTransitionStep = test.step_func(function() {
+ var computedFontWeight = window.getComputedStyle(transitionElement).fontWeight;
+ if (computedFontWeight[1] != "0" || computedFontWeight[2] != 0) { // the value should eventually not be a multiple of 100
+ test.done();
+ }
+ else {
+ window.requestAnimationFrame(waitForTransitionStep);
+ }
+ });
+ waitForTransitionStep();
+
+ }, "font-weight transition");
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-lighter-bolder.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-lighter-bolder.html
new file mode 100644
index 00000000000..68321c50759
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-lighter-bolder.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing new font-weight lighter/bolder table introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-weight-prop" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+
+ <div id="testcases">
+ <div class="testcase" style="font-family: 'CSSTest Weights Full';">
+ <span style="font-weight:lighter;color:red;">A</span>A<span style="font-weight:bolder;color:red;">A</span>
+ <span style="font: menu; font-size: 10px;">(default)</span>
+ </div>
+ </div>
+
+ <script>
+
+ testRelativeWeights = [
+ { baseWeight: 99, lighter: "99", bolder: "400" },
+ { baseWeight: 100, lighter: "100", bolder: "400" },
+ { baseWeight: 349, lighter: "100", bolder: "400" },
+ { baseWeight: 350, lighter: "100", bolder: "700" },
+ { baseWeight: 549, lighter: "100", bolder: "700" },
+ { baseWeight: 550, lighter: "400", bolder: "900" },
+ { baseWeight: 749, lighter: "400", bolder: "900" },
+ { baseWeight: 750, lighter: "700", bolder: "900" },
+ { baseWeight: 899, lighter: "700", bolder: "900" },
+ { baseWeight: 900, lighter: "700", bolder: "900" },
+ { baseWeight: 901, lighter: "700", bolder: "901" },
+ ];
+
+ var testcases = document.getElementById("testcases");
+ var testcase_template = testcases.firstElementChild; testcases.removeChild(testcase_template);
+ testRelativeWeights.forEach(function(element) {
+
+ var base = testcase_template.cloneNode(true);
+ base.children[2].textContent = element.baseWeight;
+ base.style.fontWeight = element.baseWeight;
+ testcases.appendChild(base);
+
+ test(() => {
+ var actualLighter = window.getComputedStyle(base.children[0]).fontWeight;
+ assert_equals(actualLighter, element.lighter, "Lighter value for " + element.baseWeight + " should match expected value.");
+ base.children[0].style.color = 'green';
+ }, "Test lighter font-weight for base weight " + element.baseWeight);
+
+ test(() => {
+ var actualBolder = window.getComputedStyle(base.children[1]).fontWeight;
+ assert_equals(actualBolder, element.bolder, "Bolder value " + element.baseWeight + " should match expected value.");
+ base.children[1].style.color = 'green';
+ }, "Test bolder font-weight for base weight " + element.baseWeight);
+ });
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-matching-installed-fonts.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-matching-installed-fonts.html
new file mode 100644
index 00000000000..9d08d5b472e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-matching-installed-fonts.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing new font-matching algorithm for font-weight values introduced in CSS Fonts level 4 (for system fonts)</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-matching-algorithm" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <!-- THIS TEST REQUIRES THAT YOU INSTALL THE [csstest-*.ttf] FONTS OF THE [resources] FOLDER -->
+ <meta name="flags" content="font" />
+ <style>
+
+ .testcase {
+ float:left;
+ margin: 5px;
+ font-size:48pt;
+ font-feature-settings: "kern" 1;
+ color: rgba(0,0,0,0.5);
+ background: linear-gradient(to left, lime 0%, lime 91px, red 91px);
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 900');
+ font-weight: 100;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 800');
+ font-weight: 250;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 700');
+ font-weight: 400;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 600');
+ font-weight: 450;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 300');
+ font-weight: 500;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 200');
+ font-weight: 750;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 100');
+ font-weight: 900;
+ }
+
+ </style>
+</head>
+<body>
+
+ <span style="position: absolute; top: -100vh;">
+ <span style="font-family: fontMatch; font-weight: 100;">A</span>
+ <span style="font-family: fontMatch; font-weight: 250;">A</span>
+ <span style="font-family: fontMatch; font-weight: 400;">A</span>
+ <span style="font-family: fontMatch; font-weight: 450;">A</span>
+ <span style="font-family: fontMatch; font-weight: 500;">A</span>
+ <span style="font-family: fontMatch; font-weight: 750;">A</span>
+ <span style="font-family: fontMatch; font-weight: 900;">A</span>
+ </span>
+
+ <div id="testcases" style="overflow: hidden">
+ <!--
+ These testcases work using the new kerned CSSTest Weights fonts.
+ The letter A and its corresponding numeric digit kern as one character.
+ -->
+ <div class="testcase" style="font-family:'CSSTest Weights W2569'; font-weight: 375;">
+ A2
+ </div>
+ <div class="testcase" style="font-family:'CSSTest Weights Full'; font-weight: 375;">
+ A3
+ </div>
+ <div class="testcase" style="font-family:'CSSTest Weights W1479'; font-weight: 475;">
+ A4
+ </div>
+ <div class="testcase" style="font-family:'CSSTest Weights Full'; font-weight: 425;">
+ A5
+ </div>
+ <div class="testcase" style="font-family:'CSSTest Weights Full'; font-weight: 525;">
+ A6
+ </div>
+ <div class="testcase" style="font-family:'CSSTest Weights Full'; font-weight: 675;">
+ A7
+ </div>
+ <br clear="all">
+ </div>
+
+ <script>
+
+ var base_testcases = document.querySelectorAll('.testcase');
+ for(var i = 0; i < base_testcases.length; i++) {
+ test(
+ assert => { assert_approx_equals(base_testcases[i].getBoundingClientRect().width, 90, 2, "@font-face should be mapped to " + base_testcases[i].style.fontFamily + "."); },
+ "Test native font matching on " + base_testcases[i].style.fontFamily + " for weight " + base_testcases[i].style.fontWeight
+ );
+ }
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-matching.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-matching.html
new file mode 100644
index 00000000000..5eb9a99f874
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-matching.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing new font-matching algorithm for font-weight values introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-matching-algorithm" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+
+ .testcase {
+ float:left;
+ margin: 5px;
+ font-size:48pt;
+ font-feature-settings: "kern" 1;
+ color: rgba(0,0,0,0.5);
+ background: linear-gradient(to left, lime 0%, lime 91px, red 91px);
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 900'), url('./resources/csstest-weights-900-kerned.ttf');
+ font-weight: 100;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 800'), url('./resources/csstest-weights-800-kerned.ttf');
+ font-weight: 250;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 700'), url('./resources/csstest-weights-700-kerned.ttf');
+ font-weight: 400;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 600'), url('./resources/csstest-weights-600-kerned.ttf');
+ font-weight: 450;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 300'), url('./resources/csstest-weights-300-kerned.ttf');
+ font-weight: 500;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 200'), url('./resources/csstest-weights-200-kerned.ttf');
+ font-weight: 750;
+ }
+
+ @font-face {
+ font-family: fontMatch;
+ src: local('CSSTest Weights 100'), url('./resources/csstest-weights-100-kerned.ttf');
+ font-weight: 900;
+ }
+
+ </style>
+</head>
+<body>
+
+ <span style="position: absolute; top: -100vh;">
+ <span style="font-family: fontMatch; font-weight: 100;">A</span>
+ <span style="font-family: fontMatch; font-weight: 250;">A</span>
+ <span style="font-family: fontMatch; font-weight: 400;">A</span>
+ <span style="font-family: fontMatch; font-weight: 450;">A</span>
+ <span style="font-family: fontMatch; font-weight: 500;">A</span>
+ <span style="font-family: fontMatch; font-weight: 750;">A</span>
+ <span style="font-family: fontMatch; font-weight: 900;">A</span>
+ </span>
+
+ <div id="testcases" style="overflow: hidden">
+ <!--
+ These testcases work using the new kerned CSSTest Weights fonts.
+ The letter A and its corresponding numeric digit kern as one character.
+ -->
+ <div class="testcase" style="font-family:'CSSTest Weights W2569'; font-weight: 375;">
+ A2
+ </div>
+ </div>
+
+ <script>
+
+ var testFontFaceMatch = [
+ { weight: 99, expectedFont: "CSSTest Weights 900" },
+ { weight: 100, expectedFont: "CSSTest Weights 900" },
+ { weight: 249, expectedFont: "CSSTest Weights 900" },
+ { weight: 250, expectedFont: "CSSTest Weights 800" },
+ { weight: 399, expectedFont: "CSSTest Weights 800" },
+ { weight: 400, expectedFont: "CSSTest Weights 700" },
+ { weight: 420, expectedFont: "CSSTest Weights 600" },
+ { weight: 470, expectedFont: "CSSTest Weights 300" },
+ { weight: 500, expectedFont: "CSSTest Weights 300" },
+ { weight: 600, expectedFont: "CSSTest Weights 200" },
+ { weight: 750, expectedFont: "CSSTest Weights 200" },
+ { weight: 751, expectedFont: "CSSTest Weights 100" },
+ { weight: 900, expectedFont: "CSSTest Weights 100" },
+ { weight:1000, expectedFont: "CSSTest Weights 100" },
+ ];
+
+ // wait for the fonts to load
+ // -- this should not be necessary if the fonts are installed as required
+ // -- but if they are not, the test is otherwise unstable
+ var once_fonts_are_ready = (document.fonts ? document.fonts.ready : new Promise(function(ready) { window.onload = time => [...document.querySelectorAll('body > span:nth-child(1) > span')].every(e => e.offsetWidth > 20) ? ready() : requestAnimationFrame(window.onload) }));
+
+ var testcases = document.querySelector("#testcases");
+ var testcaseTemplate = document.querySelector('.testcase'); testcaseTemplate.remove();
+ testFontFaceMatch.forEach(function(element) {
+
+ var testcase = testcaseTemplate.cloneNode(true);
+
+ // setup the test case style
+ testcase.style.fontFamily = 'fontMatch';
+ testcase.style.fontWeight = element.weight;
+
+ // create the assertion
+ var assertText = 'A' + /\d/.exec(element.expectedFont)[0];
+ testcase.textContent = assertText;
+
+ // append the testcase
+ testcases.appendChild(testcase);
+
+ // verify the testcase
+ promise_test(
+ assert => once_fonts_are_ready.then(assert => { assert_approx_equals(testcase.getBoundingClientRect().width, 90, 2, "@font-face should be mapped to " + element.expectedFont + "."); }),
+ "Test @font-face matching for weight " + element.weight
+ );
+ });
+
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-parsing.html b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-parsing.html
new file mode 100644
index 00000000000..657616cd296
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/font-weight-parsing.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Testing the new font-weight values introduced in CSS Fonts level 4</title>
+ <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-weight-prop" />
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+
+ <div id="computedStyleTest">A</div>
+
+ <script>
+
+ var testContinuousWeights = [
+ { weight: "401", isValid: true, message: "Values that are not multiple of 100 should be parsed successfully" },
+ { weight: "400.5", isValid: true, message: "Non-integer Values should be parsed successfully" },
+ { weight: "1", isValid: true, message: "Minimum allowed value should be parsed successfully" },
+ { weight: "0.999", isValid: false, message: "Values below minimum should be rejected" },
+ { weight: "-100", isValid: false, message: "Values below zero should be rejected" },
+ { weight: "1000", isValid: true, message: "Maximum allowed value should be parsed successfully" },
+ { weight: "1000.001", isValid: false, message: "Values above maximum should be rejected" },
+ { weight: "calc(100.5)", isValid: true, expectedWeight: "100.5", message: "Simple calc value" },
+ { weight: "calc(-100)", isValid: true, expectedWeight: "1", message: "Negative simple calc value (to be clamped)" },
+ { weight: "calc(1001)", isValid: true, expectedWeight: "1000", message: "Out-of-range simple calc value (to be clamped)" },
+ { weight: "calc(100.5*3 + 50.5)", isValid: true, expectedWeight: "352", message: "Valid calc expression" },
+ { weight: "calc(100.5*3 + 800)", isValid: true, expectedWeight: "1000", message: "Valid calc expression with out-of-range value (to be clamped)" },
+ { weight: "calc(100.5px + 50.5px)", isValid: false, message: "Valid calc expression with units" },
+ { weight: "400 700", isValid: false, message: "Extra number after numeric value" },
+ { weight: "400 10px", isValid: false, message: "Extra content after numeric value" },
+ { weight: "bold 400", isValid: false, message: "Extra content after keyword value" },
+ { weight: "calc(100.5) 400", isValid: false, message: "Extra content after calc value" }
+ ];
+
+ testContinuousWeights.forEach(function (element) {
+ test(() => { assert_equals(window.CSS.supports("font-weight", element.weight), element.isValid, element.message); }, "@supports: " + element.message);
+ });
+
+ testContinuousWeights.forEach(function (element) {
+ var testElement = document.getElementById("computedStyleTest");
+
+ if (element.isValid) {
+ testElement.style.fontWeight = "300";
+ testElement.style.fontWeight = element.weight;
+ var expectedWeight = (element.expectedWeight) ? element.expectedWeight : element.weight;
+
+ test(() => { assert_equals(window.getComputedStyle(testElement).fontWeight, expectedWeight, element.message); }, "Computed style: " + element.message);
+ }
+ });
+
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/ahem.ttc b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/ahem.ttc
new file mode 100644
index 00000000000..096dd600a35
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/ahem.ttc
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-100-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-100-kerned.ttf
new file mode 100644
index 00000000000..33553bc3d03
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-100-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w1-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w1-kerned.ttf
new file mode 100644
index 00000000000..d3add1934cf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w1-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w4-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w4-kerned.ttf
new file mode 100644
index 00000000000..813e5da8f25
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w4-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w7-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w7-kerned.ttf
new file mode 100644
index 00000000000..a446f23f58a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w7-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w9-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w9-kerned.ttf
new file mode 100644
index 00000000000..4eb89ad3994
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-1479-w9-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-15-w1-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-15-w1-kerned.ttf
new file mode 100644
index 00000000000..78b0f9e5c3f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-15-w1-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-15-w5-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-15-w5-kerned.ttf
new file mode 100644
index 00000000000..ffbb5daa1fc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-15-w5-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-200-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-200-kerned.ttf
new file mode 100644
index 00000000000..9713a7de45e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-200-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-24-w2-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-24-w2-kerned.ttf
new file mode 100644
index 00000000000..838d54ae91b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-24-w2-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-24-w4-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-24-w4-kerned.ttf
new file mode 100644
index 00000000000..70bb0529f11
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-24-w4-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w2-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w2-kerned.ttf
new file mode 100644
index 00000000000..0af6a94c3b4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w2-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w5-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w5-kerned.ttf
new file mode 100644
index 00000000000..7ffd46fae1b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w5-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w6-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w6-kerned.ttf
new file mode 100644
index 00000000000..62c61c6c3f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w6-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w9-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w9-kerned.ttf
new file mode 100644
index 00000000000..dd4fdc05498
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-2569-w9-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w2-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w2-kerned.ttf
new file mode 100644
index 00000000000..8a8a09568b6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w2-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w5-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w5-kerned.ttf
new file mode 100644
index 00000000000..e7597aadef3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w5-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w8-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w8-kerned.ttf
new file mode 100644
index 00000000000..dd274d2d694
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-258-w8-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-300-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-300-kerned.ttf
new file mode 100644
index 00000000000..7668bc70acf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-300-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w3-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w3-kerned.ttf
new file mode 100644
index 00000000000..409bbb5fc74
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w3-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w5-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w5-kerned.ttf
new file mode 100644
index 00000000000..639cf41a17e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w5-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w8-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w8-kerned.ttf
new file mode 100644
index 00000000000..e5c85c6348e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w8-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w9-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w9-kerned.ttf
new file mode 100644
index 00000000000..25e46520f00
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-3589-w9-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-400-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-400-kerned.ttf
new file mode 100644
index 00000000000..3046e3c6345
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-400-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-47-w4-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-47-w4-kerned.ttf
new file mode 100644
index 00000000000..9d95fd95ef9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-47-w4-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-47-w7-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-47-w7-kerned.ttf
new file mode 100644
index 00000000000..796f4d56ad1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-47-w7-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-500-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-500-kerned.ttf
new file mode 100644
index 00000000000..d8d136d5d2c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-500-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-600-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-600-kerned.ttf
new file mode 100644
index 00000000000..ce7307e9aac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-600-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-700-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-700-kerned.ttf
new file mode 100644
index 00000000000..a80d8688d71
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-700-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-800-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-800-kerned.ttf
new file mode 100644
index 00000000000..1fb2730be76
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-800-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-900-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-900-kerned.ttf
new file mode 100644
index 00000000000..faf4bbcf2ed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-900-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w1-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w1-kerned.ttf
new file mode 100644
index 00000000000..8b4fc0ddc75
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w1-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w2-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w2-kerned.ttf
new file mode 100644
index 00000000000..112683da200
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w2-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w3-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w3-kerned.ttf
new file mode 100644
index 00000000000..d0ffa58d98e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w3-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w4-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w4-kerned.ttf
new file mode 100644
index 00000000000..faab4489511
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w4-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w5-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w5-kerned.ttf
new file mode 100644
index 00000000000..df6e7909ae2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w5-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w6-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w6-kerned.ttf
new file mode 100644
index 00000000000..9d4819220ee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w6-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w7-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w7-kerned.ttf
new file mode 100644
index 00000000000..a358362db56
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w7-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w8-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w8-kerned.ttf
new file mode 100644
index 00000000000..458e401df85
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w8-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w9-kerned.ttf b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w9-kerned.ttf
new file mode 100644
index 00000000000..006a280997e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-fonts/variations/resources/csstest-weights-full-w9-kerned.ttf
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-layout-api/crash-multicol.https.html b/tests/wpt/web-platform-tests/css/css-layout-api/crash-multicol.https.html
new file mode 100644
index 00000000000..dbcbd183def
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-layout-api/crash-multicol.https.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.css-houdini.org/css-layout-api/">
+<meta name="assert" content="This test checks that browser doesn't crash when the layout() function is used with multicol." />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+
+<style>
+#test {
+ display: layout('test');
+ columns: 2;
+}
+</style>
+
+<div id="test"></div>
+
+<script>
+promise_test(async function() {
+ await importWorklet(CSS.layoutWorklet, {url: 'support/layout-position-child-worklet.js'});
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/going-out-of-flow-after-spanner.html b/tests/wpt/web-platform-tests/css/css-multicol/going-out-of-flow-after-spanner.html
new file mode 100644
index 00000000000..24338643339
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/going-out-of-flow-after-spanner.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<title>Taking the sole box after a spanner out of flow, then remove it</title>
+<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org">
+<link rel="help" href="http://www.w3.org/TR/css3-multicol/" title="CSS Multi-column Layout Module Level 1">
+<meta name="assert" content="An absolutely positioned box is still contained by the multicol container if its containing block is inside the multicol container">
+<div id="multicol" style="columns:3;">
+ <div style="position:relative;">
+ <div style="column-span:all;"></div>
+ <div id="victim" style="width:100%; height:300px;"></div>
+ </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ var multicol = document.getElementById("multicol");
+ var victim = document.getElementById("victim");
+ assert_equals(multicol.getBoundingClientRect().height, 100);
+ victim.style.position = "absolute";
+ assert_equals(multicol.getBoundingClientRect().height, 100);
+ victim.style.display = "none";
+ assert_equals(multicol.getBoundingClientRect().height, 0);
+}, "Going out of flow and still fragmented");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-001.xht b/tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-001.xht
index 28ff467a0f4..ce5d4c6dbe7 100644
--- a/tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-001.xht
+++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-001.xht
@@ -6,8 +6,8 @@
<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-05 -->
<link rel="help" href="http://www.w3.org/TR/css3-multicol/#column-gap" title="4.1. 'column-gap'" />
<link rel="match" href="multicol-gap-001-ref.xht" />
- <meta name="flags" content="ahem may" />
- <meta name="assert" content="This test checks that the 'normal' column gap is 1em, which is suggested -- and not prescribed -- by the specification." />
+ <meta name="flags" content="ahem" />
+ <meta name="assert" content="This test checks that the 'normal' column gap is 1em." />
<style type="text/css"><![CDATA[
div
{
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-003.xht b/tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-003.xht
index 180fd3c55df..33011b87ecf 100644
--- a/tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-003.xht
+++ b/tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-003.xht
@@ -6,7 +6,7 @@
<link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" /> <!-- 2013-08-05 -->
<link rel="help" href="http://www.w3.org/TR/css3-multicol/#column-gap" title="4.1. 'column-gap'" />
<link rel="match" href="multicol-gap-002-ref.xht" />
- <meta name="flags" content="ahem may" />
+ <meta name="flags" content="ahem" />
<style type="text/css"><![CDATA[
div
{
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/zero-column-width-computed-style.html b/tests/wpt/web-platform-tests/css/css-multicol/zero-column-width-computed-style.html
new file mode 100644
index 00000000000..46d876f1a15
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/zero-column-width-computed-style.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<title>column-width:0</title>
+<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-multicol/#cw" title="3.1. column-width">
+<div id="longhand" style="column-width:0;"></div>
+<div id="shorthand" style="columns:0;"></div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+test(() => {
+ assert_equals(getComputedStyle(longhand).columnWidth, "0px");
+ assert_equals(getComputedStyle(shorthand).columnWidth, "0px");
+}, "column-width:0 is a valid CSS declaration");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/zero-column-width-layout.html b/tests/wpt/web-platform-tests/css/css-multicol/zero-column-width-layout.html
new file mode 100644
index 00000000000..aaae421912a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/zero-column-width-layout.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<title>column-width:0</title>
+<meta name="assert" content="column-width:0 is valid as specified and computed value, but its used value may never be less than 1px">
+<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-multicol/#cw" title="3.1. column-width">
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="float:left; width:50px; height:100px; column-width:0; column-gap:0;">
+ <div style="height:5000px; background:green;"></div>
+</div>
+<div style="float:left; width:50px; height:100px; columns:0; column-gap:0;">
+ <div style="height:5000px; background:green;"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-shorthand-001.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-shorthand-001.html
new file mode 100644
index 00000000000..f425636c3bb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-shorthand-001.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Overflow Test: Overflow longhand accepts two values</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="author" title="Emilio Cobos Álvarez <emilio@crisal.io>">
+<link rel="help" href="https://drafts.csswg.org/css-overflow/#propdef-overflow">
+<div id="test-div"></div>
+<script>
+let div = document.getElementById("test-div");
+function testOverflowShorthand(x, y) {
+ test(function() {
+ div.style.overflowX = x;
+ div.style.overflowY = y;
+
+ let expectedX = getComputedStyle(div).overflowX;
+ let expectedY = getComputedStyle(div).overflowY;
+ let expectedComputedSerialization = expectedX == expectedY ? expectedX : `${expectedX} ${expectedY}`;
+ let expectedSpecifiedSerialization = x == y ? x : `${x} ${y}`;
+
+ assert_equals(div.style.overflow, expectedSpecifiedSerialization);
+ assert_equals(getComputedStyle(div).overflow, expectedComputedSerialization);
+
+ div.style.overflowX = "";
+ div.style.overflowY = "";
+ assert_equals(div.style.overflow, "");
+
+ div.style.overflow = `${x} ${y}`;
+ assert_equals(div.style.overflow, expectedSpecifiedSerialization);
+ assert_equals(div.style.overflowX, x);
+ assert_equals(div.style.overflowY, y);
+ assert_equals(getComputedStyle(div).overflow, expectedComputedSerialization);
+ assert_equals(getComputedStyle(div).overflowX, expectedX);
+ assert_equals(getComputedStyle(div).overflowY, expectedY);
+ }, `overflow: ${x} ${y} works`);
+}
+
+let OVERFLOW_VALUES = [ "auto", "hidden", "scroll", "visible" ];
+for (let x of OVERFLOW_VALUES)
+ for (let y of OVERFLOW_VALUES)
+ testOverflowShorthand(x, y);
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-page/OWNERS b/tests/wpt/web-platform-tests/css/css-page/OWNERS
index 6c0d60473ec..a2285382418 100644
--- a/tests/wpt/web-platform-tests/css/css-page/OWNERS
+++ b/tests/wpt/web-platform-tests/css/css-page/OWNERS
@@ -1,3 +1,2 @@
@plinss
@fantasai
-@SimonSapin
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/host-descendant-001.html b/tests/wpt/web-platform-tests/css/css-scoping/host-descendant-001.html
new file mode 100644
index 00000000000..423beaf055b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/host-descendant-001.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector">
+<link rel="match" href="reference/green-box.html">
+<p>Test passes if you see a single 100px by 100px green box below.</p>
+<div id="host"><div></div></div>
+<script>
+ let root = host.attachShadow({ mode: "open" });
+ root.innerHTML = `
+ <style>
+ :host ::slotted(div) { width: 100px; height: 100px; background: green; }
+ * :host ::slotted(div) { background: red; }
+ </style>
+ <slot></slot>
+ `;
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/host-descendant-002.html b/tests/wpt/web-platform-tests/css/css-scoping/host-descendant-002.html
new file mode 100644
index 00000000000..6660d4a40c6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/host-descendant-002.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector">
+<link rel="match" href="reference/green-box.html">
+<p>Test passes if you see a single 100px by 100px green box below.</p>
+<div id="host"></div>
+<script>
+ let root = host.attachShadow({ mode: "open" });
+ root.innerHTML = `
+ <style>
+ :host { width: 100px; height: 100px; background: green; }
+ * :host { background: red; }
+ </style>
+ `;
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/host-descendant-invalidation.html b/tests/wpt/web-platform-tests/css/css-scoping/host-descendant-invalidation.html
new file mode 100644
index 00000000000..61ed4bbfc70
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/host-descendant-invalidation.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>CSS Test: element style is correctly updated for rule with :host</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector">
+<div id="host"><div id="slotted"></div></div>
+<script>
+test(function() {
+ let root = host.attachShadow({ mode: "open" });
+ root.innerHTML = `
+ <style>
+ :host ::slotted(div) { width: 100px; height: 100px; background: red; }
+ :host ::slotted(.foo) { background: green; }
+ </style>
+ <slot></slot>
+ `;
+ assert_equals(getComputedStyle(slotted).backgroundColor, "rgb(255, 0, 0)");
+ host.firstElementChild.classList.add('foo');
+ assert_equals(getComputedStyle(slotted).backgroundColor, "rgb(0, 128, 0)");
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/host-dom-001.html b/tests/wpt/web-platform-tests/css/css-scoping/host-dom-001.html
new file mode 100644
index 00000000000..fff0112b1e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/host-dom-001.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>CSS Test: :host in DOM APIs</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector">
+<div id="host"></div>
+<script>
+test(function() {
+ let root = host.attachShadow({ mode: "open" });
+ root.innerHTML = `<div></div>`;
+ assert_false(host.matches(":host"), ":host shouldn't match from CSSOM from outside the shadow tree");
+ assert_true(root.firstElementChild.matches(":host div"), ":host should match from within the shadow tree");
+ assert_equals(root.querySelector(":host div"), root.firstElementChild, ":host should match from within the shadow tree");
+})
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/host-functional-descendant-invalidation.html b/tests/wpt/web-platform-tests/css/css-scoping/host-functional-descendant-invalidation.html
new file mode 100644
index 00000000000..b9f1329a95d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/host-functional-descendant-invalidation.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>CSS Test: element style is correctly updated for rule with :host(..)</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector">
+<div id="host"><div id="slotted"></div></div>
+<script>
+test(function() {
+ let root = host.attachShadow({ mode: "open" });
+ root.innerHTML = `
+ <style>
+ :host ::slotted(div) { width: 100px; height: 100px; background: red; }
+ :host(.foo) ::slotted(div) { background: green; }
+ </style>
+ <slot></slot>
+ `;
+ assert_equals(getComputedStyle(slotted).backgroundColor, "rgb(255, 0, 0)");
+ host.classList.add('foo');
+ assert_equals(getComputedStyle(slotted).backgroundColor, "rgb(0, 128, 0)");
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/host-multiple-001.html b/tests/wpt/web-platform-tests/css/css-scoping/host-multiple-001.html
new file mode 100644
index 00000000000..c8833c4b5b7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/host-multiple-001.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS Test: :host multiple times in the same compound selector.</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector">
+<link rel="match" href="reference/green-box.html">
+<p>Test passes if you see a single 100px by 100px green box below.</p>
+<div id="host"></div>
+<script>
+ let root = host.attachShadow({ mode: "open" });
+ root.innerHTML = `
+ <style>
+ :host:host { width: 100px; height: 100px; background: green }
+ </style>
+ `;
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/host-nested-001.html b/tests/wpt/web-platform-tests/css/css-scoping/host-nested-001.html
new file mode 100644
index 00000000000..f8e412cc005
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/host-nested-001.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<title>CSS Test: :host doesn't match nested shadow hosts.</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector">
+<link rel="match" href="reference/green-box.html">
+<style>
+ #host {
+ width: 100px;
+ height: 100px;
+ }
+</style>
+<p>Test passes if you see a single 100px by 100px green box below.</p>
+<div id="host">FAIL</div>
+<script>
+ let root = host.attachShadow({ mode: "open" });
+ root.innerHTML = `
+ <style>
+ div {
+ background: green;
+ width: 100px;
+ height: 100px;
+ }
+ :host { background: red !important }
+ div:host { background: red !important }
+ </style>
+ <div id="nested-host">FAIL - nested shadow host</div>
+ `;
+ root.getElementById("nested-host").attachShadow({ mode: "open" });
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/host-slotted-001.html b/tests/wpt/web-platform-tests/css/css-scoping/host-slotted-001.html
new file mode 100644
index 00000000000..f05b7c729f3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/host-slotted-001.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>CSS Test: :host matches while collecting ::slotted rules</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector">
+<link rel="match" href="reference/green-box.html">
+<p>Test passes if you see a single 100px by 100px green box below.</p>
+<div id="host"><div></div></div>
+<script>
+ let root = host.attachShadow({ mode: "open" });
+ root.innerHTML = `
+ <style>
+ ::slotted(div) { width: 100px; height: 100px; background: red; }
+ :host ::slotted(div) { background: green; }
+ </style>
+ <slot></slot>
+ `;
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-assign-dynamic-001.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-assign-dynamic-001.html
new file mode 100644
index 00000000000..b9a0d1a2991
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-assign-dynamic-001.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Scoping Module Level 1 - Dynamic mutations to both shadow root and shadow host subtrees</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#selectors-data-model">
+<link rel="help" href="https://bugzil.la/1303605">
+<link rel="match" href="reference/green-box.html"/>
+<p>Test passes if you see a single 100px by 100px green box below.</p>
+<style>
+ #host {
+ width: 100px;
+ height: 100px;
+ background: red;
+ }
+
+ #host > div {
+ width: 100px;
+ height: 50px;
+ background: green;
+ }
+</style>
+<div id="host"></div>
+<script>
+ let root = host.attachShadow({ mode: "open" });
+ document.body.offsetTop;
+
+ root.innerHTML = `<slot name="slot1"></slot><slot name="slot2"></slot>`;
+ host.innerHTML = `<div slot="slot1"></div><div slot="slot2"></div>`;
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/shadow-reassign-dynamic-001.html b/tests/wpt/web-platform-tests/css/css-scoping/shadow-reassign-dynamic-001.html
new file mode 100644
index 00000000000..e8fe49ac96f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/shadow-reassign-dynamic-001.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Scoping: Dynamic reassignment of a slot.</title>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#selectors-data-model">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1435632">
+<link rel="match" href="reference/green-box.html"/>
+<div id="host">
+ <div id="green" style="background: green"></div>
+ <div id="red" style="background: red" slot="myslot"></div>
+</div>
+<script>
+ let root = host.attachShadow({ mode: "open" });
+ root.innerHTML = `
+ <style>::slotted(div) { width: 100px; height: 100px }</style>
+ <p>Test passes if you see a single 100px by 100px green box below.</p>
+ <slot name="myslot">FAIL</slot>
+ `;
+ document.body.offsetTop;
+ green.setAttribute("slot", "myslot");
+ red.removeAttribute("slot");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/all-hosts.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/all-hosts.html
new file mode 100644
index 00000000000..e6646c08433
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/all-hosts.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - All Hosts</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>::part(partp) { color: green; }</style>
+ <script>installCustomElement("custom-element", "custom-element-template");</script>
+ <template id="custom-element-template">
+ <style>span { color: red; }</style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ The following text should be green:
+ <custom-element id="c-e-1"></custom-element>
+ The following text should be green:
+ <custom-element id="c-e-2"></custom-element>
+ <script type="text/javascript">
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e-1", "part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "::part with host selector styles in first host");
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e-2", "part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "::part with host selector styles in second host");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/chaining-invalid-selector.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/chaining-invalid-selector.html
new file mode 100644
index 00000000000..11309329008
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/chaining-invalid-selector.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Chaining Invalid Selector</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e-outer::part(c-e-part)::part(partp) { color: red; }</style>
+ <div>
+ It's invalid to use 2 pseudoelements in a selector but if somehow it becomes valid,
+ it should not expose the internal structure of the shadow tree.
+ </div>
+ <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+ <template id="custom-element-inner-template">
+ <style>span { color: green; }</style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+ <template id="custom-element-outer-template">
+ The following text should be green:
+ <custom-element-inner id="c-e-inner" part="c-e-part"></custom-element-inner>
+ </template>
+ <custom-element-outer id="c-e-outer"></custom-element-outer>
+ <script type="text/javascript">
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "::part cannot be chained to reach elements in the inner host");
+ test(function() {
+ assert_equals(document.getElementsByTagName("body")[0].style.length, 0);
+ }, "Chained ::part selectors are dropped");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/complex-matching.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/complex-matching.html
new file mode 100644
index 00000000000..575edabcc45
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/complex-matching.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Complex Matching</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>div #c-e::part(partp) { color: green; }</style>
+ <script>installCustomElement("custom-element", "custom-element-template");</script>
+ <template id="custom-element-template">
+ <style>span { color: red; }</style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ The following text should be green:
+ <div><custom-element id="c-e"></custom-element></div>
+ <script type="text/javascript">
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e", "part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Complex selector for host works");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/complex-non-matching.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/complex-non-matching.html
new file mode 100644
index 00000000000..036713faf0f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/complex-non-matching.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Complex Non-matching</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>div #c-e::part(partp) { color: red; }</style>
+ <script>installCustomElement("custom-element", "custom-element-template");</script>
+ <template id="custom-element-template">
+ <style>span { color: green; }</style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ The following text should be green:
+ <pre><custom-element id="c-e"></custom-element></pre>
+ <script type="text/javascript">
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e", "part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Non-matching complex selector for host does not style");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/different-host.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/different-host.html
new file mode 100644
index 00000000000..c8b5f86327a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/different-host.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Different Host</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e-other::part(partp) { color: red; }</style>
+ <script>installCustomElement("custom-element", "custom-element-template");</script>
+ <template id="custom-element-template">
+ <style>span { color: green; }</style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ The following text should be green:
+ <custom-element id="c-e"></custom-element>
+ <script type="text/javascript">
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e", "part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Part is not styled when host is not selected");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/host-stylesheet.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/host-stylesheet.html
new file mode 100644
index 00000000000..ee8f4e72742
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/host-stylesheet.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Host Stylesheet</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <script>installCustomElement("custom-element", "custom-element-template");</script>
+ <template id="custom-element-template">
+ <style>
+ ::part(partp) { color: red; }
+ span { color: green; }
+ </style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ The following text should be green:
+ <custom-element id="c-e"></custom-element>
+ <script type="text/javascript">
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e", "part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Part in selected host is not styled by ::part in a stylesheet inside the host");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/inner-host.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/inner-host.html
new file mode 100644
index 00000000000..8c8cec75531
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/inner-host.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Inner Host</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e-outer::part(partp) { color: green; }</style>
+ <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+ <template id="custom-element-inner-template">
+ <style>span { color: blue; }</style>
+ <span id="blue_part" part="partp">This text</span>
+ </template>
+ <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+ <template id="custom-element-outer-template">
+ <style>span { color: red; }</style>
+ <span id="green_part" part="partp">This text</span>
+ The following text should be blue:
+ <custom-element-inner id="c-e-inner"></custom-element-inner>
+ </template>
+ The following text should be green:
+ <custom-element-outer id="c-e-outer"></custom-element-outer>
+ <script type="text/javascript">
+ "use strict";
+ const colorBlue = "rgb(0, 0, 255)";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e-outer", "green_part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Part in outer host is styled by document style sheet");
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "blue_part"]);
+ assert_equals(window.getComputedStyle(el).color, colorBlue);
+ }, "Part in inner host is not styled by document style sheet");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/simple.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/simple.html
new file mode 100644
index 00000000000..37336691301
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/simple.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Simple</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e::part(partp) { color: green; }</style>
+ <script>installCustomElement("custom-element", "custom-element-template");</script>
+ <template id="custom-element-template">
+ <style>span { color: red; }</style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ The following text should be green:
+ <custom-element id="c-e"></custom-element>
+ <script type="text/javascript">
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ var el = getElementByShadowIds(document, ["c-e", "part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Part in selected host is styled");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/support/shadow-helper.js b/tests/wpt/web-platform-tests/css/css-shadow-parts/support/shadow-helper.js
new file mode 100644
index 00000000000..94accd6b1f9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/support/shadow-helper.js
@@ -0,0 +1,33 @@
+// Takes a root element and a list of ids of shadow host elements. Each id refers to a shadow host
+// inside the previous id's shadow tree.
+function getElementByShadowIds(root, ids) {
+ for (var i = 0; ;i++) {
+ var host = root.getElementById(ids[i]);
+ if (host == null) {
+ throw "No element found: i=" + i + " id=" + ids[i] + ". Root was " + root;
+ }
+ if (i == ids.length - 1) {
+ return host;
+ }
+ root = host.shadowRoot;
+ if (root == null) {
+ throw "No shadowRoot found: i=" + i + " id=" + ids[i] + ". Host was " + host;
+ }
+ }
+}
+
+// Installs a mininal custom element based on this template.
+function installCustomElement(element_name, template_id) {
+ ceClass = class extends HTMLElement {
+ constructor() {
+ super();
+ var template = document
+ .getElementById(template_id)
+ .content;
+ this
+ .attachShadow({mode: 'open'})
+ .appendChild(template.cloneNode(true));
+ }
+ };
+ window.customElements.define(element_name, ceClass);
+}
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/basic-shape-circle-ellipse-serialization.html b/tests/wpt/web-platform-tests/css/css-shapes/basic-shape-circle-ellipse-serialization.html
index 9c82039ac4e..5e4842d234f 100644
--- a/tests/wpt/web-platform-tests/css/css-shapes/basic-shape-circle-ellipse-serialization.html
+++ b/tests/wpt/web-platform-tests/css/css-shapes/basic-shape-circle-ellipse-serialization.html
@@ -35,8 +35,8 @@ checkEquals("ellipse(closest-side farthest-side)",
"ellipse(closest-side farthest-side at 50% 50%)");
-checkEquals("circle(at right 5px top)", "circle(at right 5px top 0%)");
-checkEquals("ellipse(at right 10px top)", "ellipse(at right 10px top 0%)");
+checkEquals("circle(at top 0% right 5px)", "circle(at right 5px top 0%)");
+checkEquals("ellipse(at top 0% right 10px)", "ellipse(at right 10px top 0%)");
// Remove defaults like closest-side
checkEquals("circle(closest-side at center)",
"circle(at 50% 50%)");
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-invalid-position.html b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-invalid-position.html
index 4815402949a..7d2b64b328c 100644
--- a/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-invalid-position.html
+++ b/tests/wpt/web-platform-tests/css/css-shapes/parsing/shape-outside-invalid-position.html
@@ -14,15 +14,16 @@
<script>
// The following were supported in an earlier version of the spec.
// https://github.com/w3c/csswg-drafts/issues/2140
-// Deprecated in Blink with support to be removed in M68, around July 2018.
test_invalid_value("shape-outside", "circle(at center left 1px)");
test_invalid_value("shape-outside", "circle(at center top 2px)");
test_invalid_value("shape-outside", "circle(at right 3% center)");
test_invalid_value("shape-outside", "circle(at left 4px top)");
-test_invalid_value("shape-outside", "circle(at right top 5px)");
-test_invalid_value("shape-outside", "circle(at bottom 6% center)");
-test_invalid_value("shape-outside", "circle(at bottom 7% left)");
-test_invalid_value("shape-outside", "circle(at bottom right 8%)");
+test_invalid_value("shape-outside", "circle(at right 5px top)");
+test_invalid_value("shape-outside", "ellipse(at right top 5px)");
+test_invalid_value("shape-outside", "ellipse(at bottom 6% center)");
+test_invalid_value("shape-outside", "ellipse(at bottom 7% left)");
+test_invalid_value("shape-outside", "ellipse(at bottom right 8%)");
+test_invalid_value("shape-outside", "ellipse(at right 10px top)");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-box-009.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-box-009.html
new file mode 100644
index 00000000000..67786bc4f9e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-box/shape-outside-box-009.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Test: right float, shape-outside: border-box</title>
+ <link rel="author" title="Brad Werth" href="mailto:bwerth@mozilla.com">
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shapes-from-box-values">
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#border-box">
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property">
+ <link rel="match" href="reference/shape-outside-box-005-ref.html">
+ <meta name="flags" content="ahem" />
+ <meta name="assert" content="The test verifies that text wraps around a
+ right float with a shape-outside defined as
+ the border box, with negative margins.
+ The float area is clipped to the margin box.">
+ </head>
+ <style>
+ body {
+ margin: 0;
+ }
+ #container {
+ position: relative;
+ }
+ #test-container {
+ font: 40px/1 Ahem, sans-serif;
+ text-align: right;
+ width: 250px;
+ height: 200px;
+ color: green;
+ }
+ #test-shape {
+ float: right;
+ width: 150px;
+ height: 150px;
+ margin: -20px;
+ padding: 10px;
+ border: 10px solid transparent;
+ shape-outside: border-box;
+ }
+ #line {
+ position: absolute;
+ top: 0px;
+ left: 100px;
+ width: 2px;
+ height: 200px;
+ border-left: 2px solid blue;
+ }
+ #failure {
+ position: absolute;
+ top: 80px;
+ left: 60px;
+ width: 40px;
+ height: 40px;
+ background-color: red;
+ z-index: -1;
+ }
+ </style>
+ <body>
+ <p>The test passes if there is a green square to the left of the blue line. There should be no red.</p>
+ <div id="container">
+ <div id="test-container">
+ <div id="test-shape"></div>
+ <br/>
+ <br/>
+ X
+ </div>
+ <div id="line"></div>
+ <div id="failure"></div>
+ </div>
+ </body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-005.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-005.html
new file mode 100644
index 00000000000..a6228790df7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-005.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Test: Test float with linear gradient under writing-mode: vertical-rl</title>
+ <link rel="author" title="Ting-Yu Lin" href="mailto:aethanyc@gmail.com"/>
+ <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shapes-from-image"/>
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property"/>
+ <link rel="match" href="reference/shape-outside-linear-gradient-001-ref.html"/>
+ <meta name="flags" content="ahem"/>
+ <meta name="assert" content="This test verifies that shape-outside respects a simple linear gradient under vertical-rl."/>
+ <style type="text/css">
+ .container {
+ writing-mode: vertical-rl;
+ inline-size: 100px;
+ block-size: 200px;
+ background-color: red;
+ font-family: Ahem;
+ font-size: 50px;
+ line-height: 1;
+ }
+ #test {
+ color: green;
+ }
+ #float-left {
+ /* Note: In .container's writing-mode, "float: left" actually floats
+ us towards the top. */
+ float: left;
+ inline-size: 100px;
+ block-size: 200px;
+ background: linear-gradient(to bottom, green 50%, transparent 50%);
+ shape-outside: linear-gradient(to bottom, green 50%, transparent 50%);
+ }
+ #float-right {
+ /* Note: In .container's writing-mode, "float: right" actually floats
+ us towards the bottom. */
+ float: right;
+ inline-size: 100px;
+ block-size: 200px;
+ background: linear-gradient(to top, green 50%, transparent 50%);
+ shape-outside: linear-gradient(to top, green 50%, transparent 50%);
+ }
+ </style>
+ </head>
+ <body>
+ <p>
+ The test passes if you see a green square. There should be no red.
+ </p>
+ <div id="test" class="container">
+ <div id="float-left"></div>
+ x x x x
+ </div>
+ <div id="test" class="container" style="direction: rtl;">
+ <div id="float-right"></div>
+ x x x x
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-006.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-006.html
new file mode 100644
index 00000000000..18253edc778
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-006.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Test: Test float with linear gradient under writing-mode: vertical-lr</title>
+ <link rel="author" title="Ting-Yu Lin" href="mailto:aethanyc@gmail.com"/>
+ <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shapes-from-image"/>
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property"/>
+ <link rel="match" href="reference/shape-outside-linear-gradient-001-ref.html"/>
+ <meta name="flags" content="ahem"/>
+ <meta name="assert" content="This test verifies that shape-outside respects a simple linear gradient under vertical-lr."/>
+ <style type="text/css">
+ .container {
+ writing-mode: vertical-lr;
+ inline-size: 100px;
+ block-size: 200px;
+ background-color: red;
+ font-family: Ahem;
+ font-size: 50px;
+ line-height: 1;
+ }
+ #test {
+ color: green;
+ }
+ #float-left {
+ /* Note: In .container's writing-mode, "float: left" actually floats
+ us towards the top. */
+ float: left;
+ inline-size: 100px;
+ block-size: 200px;
+ background: linear-gradient(to bottom, green 50%, transparent 50%);
+ shape-outside: linear-gradient(to bottom, green 50%, transparent 50%);
+ }
+ #float-right {
+ /* Note: In .container's writing-mode, "float: right" actually floats
+ us towards the bottom. */
+ float: right;
+ inline-size: 100px;
+ block-size: 200px;
+ background: linear-gradient(to top, green 50%, transparent 50%);
+ shape-outside: linear-gradient(to top, green 50%, transparent 50%);
+ }
+ </style>
+ </head>
+ <body>
+ <p>
+ The test passes if you see a green square. There should be no red.
+ </p>
+ <div id="test" class="container">
+ <div id="float-left"></div>
+ x x x x
+ </div>
+ <div id="test" class="container" style="direction: rtl;">
+ <div id="float-right"></div>
+ x x x x
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-007.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-007.html
new file mode 100644
index 00000000000..9087fb0f093
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-007.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Test: Test float with linear gradient under writing-mode: sideways-rl</title>
+ <link rel="author" title="Ting-Yu Lin" href="mailto:aethanyc@gmail.com"/>
+ <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shapes-from-image"/>
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property"/>
+ <link rel="match" href="reference/shape-outside-linear-gradient-001-ref.html"/>
+ <meta name="flags" content="ahem"/>
+ <meta name="assert" content="This test verifies that shape-outside respects a simple linear gradient under sideways-rl."/>
+ <style type="text/css">
+ .container {
+ writing-mode: sideways-rl;
+ inline-size: 100px;
+ block-size: 200px;
+ background-color: red;
+ font-family: Ahem;
+ font-size: 50px;
+ line-height: 1;
+ }
+ #test {
+ color: green;
+ }
+ #float-left {
+ /* Note: In .container's writing-mode, "float: left" actually floats
+ us towards the top. */
+ float: left;
+ inline-size: 100px;
+ block-size: 200px;
+ background: linear-gradient(to bottom, green 50%, transparent 50%);
+ shape-outside: linear-gradient(to bottom, green 50%, transparent 50%);
+ }
+ #float-right {
+ /* Note: In .container's writing-mode, "float: right" actually floats
+ us towards the bottom. */
+ float: right;
+ inline-size: 100px;
+ block-size: 200px;
+ background: linear-gradient(to top, green 50%, transparent 50%);
+ shape-outside: linear-gradient(to top, green 50%, transparent 50%);
+ }
+ </style>
+ </head>
+ <body>
+ <p>
+ The test passes if you see a green square. There should be no red.
+ </p>
+ <div id="test" class="container">
+ <div id="float-left"></div>
+ x x x x
+ </div>
+ <div id="test" class="container" style="direction: rtl;">
+ <div id="float-right"></div>
+ x x x x
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-008.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-008.html
new file mode 100644
index 00000000000..05132b45c29
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/gradients/shape-outside-linear-gradient-008.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Test: Test float with linear gradient under writing-mode: sideways-lr</title>
+ <link rel="author" title="Ting-Yu Lin" href="mailto:aethanyc@gmail.com"/>
+ <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shapes-from-image"/>
+ <link rel="help" href="http://www.w3.org/TR/css-shapes-1/#shape-outside-property"/>
+ <link rel="match" href="reference/shape-outside-linear-gradient-001-ref.html"/>
+ <meta name="flags" content="ahem"/>
+ <meta name="assert" content="This test verifies that shape-outside respects a simple linear gradient under sideways-lr."/>
+ <style type="text/css">
+ .container {
+ writing-mode: sideways-lr;
+ inline-size: 100px;
+ block-size: 200px;
+ background-color: red;
+ font-family: Ahem;
+ font-size: 50px;
+ line-height: 1;
+ }
+ #test {
+ color: green;
+ }
+ #float-left {
+ /* Note: In .container's writing-mode, "float: left" actually floats
+ us towards the bottom. */
+ float: left;
+ inline-size: 100px;
+ block-size: 200px;
+ background: linear-gradient(to top, green 50%, transparent 50%);
+ shape-outside: linear-gradient(to top, green 50%, transparent 50%);
+ }
+ #float-right {
+ /* Note: In .container's writing-mode, "float: right" actually floats
+ us towards the top. */
+ float: right;
+ inline-size: 100px;
+ block-size: 200px;
+ background: linear-gradient(to bottom, green 50%, transparent 50%);
+ shape-outside: linear-gradient(to bottom, green 50%, transparent 50%);
+ }
+ </style>
+ </head>
+ <body>
+ <p>
+ The test passes if you see a green square. There should be no red.
+ </p>
+ <div id="test" class="container">
+ <div id="float-left"></div>
+ x x x x
+ </div>
+ <div id="test" class="container" style="direction: rtl;">
+ <div id="float-right"></div>
+ x x x x
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-001.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-001.html
index 8273030bc0a..ac2d92fba43 100644
--- a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-001.html
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-001.html
@@ -22,7 +22,7 @@
}
#image {
float: left;
- width: 150px;
+ width: 100px;
height: 100px;
shape-outside: url("support/left-half-rectangle-70.png");
}
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-002.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-002.html
index ee2dd75db6a..01d916d7cb8 100644
--- a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-002.html
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-002.html
@@ -22,7 +22,7 @@
}
#image {
float: left;
- shape-outside: url('data:image/svg+xml;utf8,<svg width="100px" height="100px" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>');
+ shape-outside: url('data:image/svg+xml;utf8,<svg width="100px" height="100px" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="%23006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>');
}
</style>
</head>
@@ -31,7 +31,7 @@
The test passes if you see a solid green square. There should be no red.
</p>
<div id="test" class="container">
- <img id="image" src='data:image/svg+xml;utf8,<svg width="100px" height="100px" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>'/>
+ <img id="image" src='data:image/svg+xml;utf8,<svg width="100px" height="100px" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="%23006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>'/>
X
X
</div>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-005.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-005.html
index 2c642c02d0b..93f39787ad1 100644
--- a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-005.html
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/shape-image-005.html
@@ -22,7 +22,7 @@
}
#image {
float: left;
- shape-outside: url('data:image/svg+xml;utf8,<svg width="100px" height="100px" style="background-color: rgba(0,0,0,0.7)" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>');
+ shape-outside: url('data:image/svg+xml;utf8,<svg width="100px" height="100px" style="background-color: rgba(0,0,0,0.7)" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="%23006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>');
shape-image-threshold: 0.8;
}
</style>
@@ -32,7 +32,7 @@
The test passes if you see a solid green square. There should be no red.
</p>
<div id="test" class="container">
- <img id="image" src='data:image/svg+xml;utf8,<svg width="100px" height="100px" style="background-color: rgba(0,0,0,0.7)" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="#006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>'/>
+ <img id="image" src='data:image/svg+xml;utf8,<svg width="100px" height="100px" style="background-color: rgba(0,0,0,0.7)" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="%23006400" d=" M 0.00 0.00 L 50.00 0.00 C 50.00 33.33 50.00 66.67 50.00 100.00 L 0.00 100.00 L 0.00 0.00 Z" /></svg>'/>
X
X
</div>
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/support/animated.gif b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/support/animated.gif
index 083c9a0a23d..9e424df7cdf 100644
--- a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/support/animated.gif
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/shape-image/support/animated.gif
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/support/parsing-utils.js b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/support/parsing-utils.js
index cc174ecb7fa..68b0c1b1f7c 100644
--- a/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/support/parsing-utils.js
+++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/values/support/parsing-utils.js
@@ -534,65 +534,6 @@ var validPositions = [
["60% center", "60% 50%"],
["60u1 center", "60u1 50%"],
-////// [ keyword | keyword percent ], [ keyword | keyword length ] x 5 keywords
- ["center top 50%", "50% 50%"],
- ["center top 50u1", "50% 50u1"],
- ["center left 50%", "50% 50%"],
- ["center left 50u1", "50u1 50%"],
- ["center right 70%", "30% 50%"],
- ["center right 70u1", "right 70u1 top 50%"],
- ["center bottom 70%", "50% 30%"],
- ["center bottom 70u1", "left 50% bottom 70u1"],
-
- ["left top 50%", "0% 50%"],
- ["left top 50u1", "0% 50u1"],
- ["left bottom 70%", "0% 30%"],
- ["left bottom 70u1", "left 0% bottom 70u1"],
-
- ["top left 50%", "50% 0%"],
- ["top left 50u1", "50u1 0%"],
- ["top right 70%", "30% 0%"],
- ["top right 70u1", "right 70u1 top 0%"],
-
- ["bottom left 50%", "50% 100%"],
- ["bottom left 50u1", "50u1 100%"],
- ["bottom right 70%", "30% 100%"],
- ["bottom right 70u1", "right 70u1 top 100%"],
-
- ["right bottom 70%", "100% 30%"],
- ["right bottom 70u1", "left 100% bottom 70u1"],
- ["right top 50%", "100% 50%"],
- ["right top 50u1", "100% 50u1"],
-
-////// [ keyword percent | keyword], [ keyword length | keyword ] x 5 keywords
- ["left 50% center", "50% 50%"],
- ["left 50u1 center", "50u1 50%"],
- ["left 50% top", "50% 0%"],
- ["left 50u1 top", "50u1 0%"],
- ["left 50% bottom", "50% 100%"],
- ["left 50u1 bottom", "50u1 100%"],
-
- ["top 50% center", "50% 50%"],
- ["top 50u1 center", "50% 50u1"],
- ["top 50% left", "0% 50%"],
- ["top 50u1 left", "0% 50u1"],
- ["top 50% right", "100% 50%"],
- ["top 50u1 right", "100% 50u1"],
-
- ["bottom 70% center", "50% 30%"],
- ["bottom 70u1 center", "left 50% bottom 70u1"],
- ["bottom 70% left", "0% 30%"],
- ["bottom 70u1 left", "left 0% bottom 70u1"],
- ["bottom 70% right", "100% 30%"],
- ["bottom 70u1 right", "left 100% bottom 70u1"],
-
- ["right 80% center", "20% 50%"],
- ["right 80u1 center", "right 80u1 top 50%"],
- ["right 80% bottom", "20% 100%"],
- ["right 80u1 bottom", "right 80u1 top 100%"],
- ["right 80% top", "20% 0%"],
- ["right 80u1 top", "right 80u1 top 0%"],
-
////// [ keyword percent | keyword percent], [ keyword percent | keyword length],
////// [ keyword length | keyword length], [ keyword length | keyword percent] x 5 keywords
["left 50% top 50%", "50% 50%"],
diff --git a/tests/wpt/web-platform-tests/css/css-sizing/OWNERS b/tests/wpt/web-platform-tests/css/css-sizing/OWNERS
new file mode 100644
index 00000000000..ea4a9a0a052
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-sizing/OWNERS
@@ -0,0 +1,2 @@
+@tabatkins
+@fantasai
diff --git a/tests/wpt/web-platform-tests/css/css-tables/anonymous-table-ws-001-ref.html b/tests/wpt/web-platform-tests/css/css-tables/anonymous-table-ws-001-ref.html
new file mode 100644
index 00000000000..4429239d965
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-tables/anonymous-table-ws-001-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<title>CSS Reference</title>
+<style>
+div { font: 16px monospace; }
+</style>
+<p>Test passes if there is a space between the "a" and "b".</p>
+<div>a b</div>
diff --git a/tests/wpt/web-platform-tests/css/css-tables/anonymous-table-ws-001.html b/tests/wpt/web-platform-tests/css/css-tables/anonymous-table-ws-001.html
new file mode 100644
index 00000000000..99d2cfc239f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-tables/anonymous-table-ws-001.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<title>CSS Test: White space should not be removed between elements for which a single anonymous table cell is generated</title>
+<link rel="author" title="Cameron McCormack" href="mailto:cam@mcc.id.au">
+<link rel="match" href="anonymous-table-ws-001-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-tables/#fixup-algorithm">
+<style>
+div { display: table; font: 16px monospace; }
+</style>
+<p>Test passes if there is a space between the "a" and "b".</p>
+<div>
+ <span>a</span> <span>b</span>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-emphasis-style-001-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-emphasis-style-001-ref.html
index 44588741312..6222a7c5ec7 100644
--- a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-emphasis-style-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-emphasis-style-001-ref.html
@@ -6,7 +6,7 @@
<link rel="author" title="Takanori Koroki" href="mailto:tak.koroki@gmail.com">
</head>
<body>
- <p>Test passes if there is no dots avobe the text of "Text sample".</p>
+ <p>Test passes if there is no dots above the text of "Text sample".</p>
<p>Text sample</p>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/css-timing/cubic-bezier-timing-functions-output.html b/tests/wpt/web-platform-tests/css/css-timing/cubic-bezier-timing-functions-output.html
index 3068e8c0827..5c2003b1394 100644
--- a/tests/wpt/web-platform-tests/css/css-timing/cubic-bezier-timing-functions-output.html
+++ b/tests/wpt/web-platform-tests/css/css-timing/cubic-bezier-timing-functions-output.html
@@ -15,7 +15,7 @@ href="https://drafts.csswg.org/css-timing/#cubic-bezier-timing-functions">
function assert_style_left_at(animation, time, easingFunction) {
animation.currentTime = time;
- var portion = time / animation.effect.timing.duration;
+ var portion = time / animation.effect.getTiming()['duration'];
assert_approx_equals(pxToNum(getComputedStyle(animation.effect.target).left),
easingFunction(portion) * 100,
0.01,
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/css-transform-animate-translate-implied-y-ref.html b/tests/wpt/web-platform-tests/css/css-transforms/css-transform-animate-translate-implied-y-ref.html
new file mode 100644
index 00000000000..43d17375b31
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/css-transform-animate-translate-implied-y-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Reftest Reference</title>
+ <link rel="author" title="Manish Goregaokar" href="mailto:manishearth@gmail.com">
+ <style>
+ #box {
+ background:red;
+ width: 200px;
+ height: 200px;
+ transform: translate(100px, 0px);
+ }
+ </style>
+ </head>
+ <body>
+ <div id=box></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/css-transform-animate-translate-implied-y.html b/tests/wpt/web-platform-tests/css/css-transforms/css-transform-animate-translate-implied-y.html
new file mode 100644
index 00000000000..dc0b957ca2b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-transforms/css-transform-animate-translate-implied-y.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Test (Transforms): Animating between translates where one has an implied `y` value</title>
+ <link rel="author" title="Manish Goregaokar" href="mailto:manishearth@gmail.com">
+ <meta name="assert" content='This tests that translate(x) is animated as if it were translate(x, 0px)'>
+ <link rel=match href=css-transform-animate-translate-implied-y-ref.html>
+ <link rel="help" href="https://drafts.csswg.org/css-transforms-1/#funcdef-transform-translate">
+ <style>
+ #box {
+ background:red;
+ width: 200px;
+ height: 200px;
+ }
+ </style>
+ </head>
+ <body>
+ <div id=box></div>
+ <script>
+ let anim = document.getElementById('box').animate([
+ { transform: 'translate(180px)' },
+ { transform: 'translate(20px, 0px)' }
+ ], {
+ duration: 1000,
+ });
+ anim.pause();
+ anim.currentTime = 500;
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transforms/parsing/perspective-origin-parsing-invalid.html b/tests/wpt/web-platform-tests/css/css-transforms/parsing/perspective-origin-parsing-invalid.html
index e9bb1740ba4..09f2f477c16 100644
--- a/tests/wpt/web-platform-tests/css/css-transforms/parsing/perspective-origin-parsing-invalid.html
+++ b/tests/wpt/web-platform-tests/css/css-transforms/parsing/perspective-origin-parsing-invalid.html
@@ -19,7 +19,6 @@ test_invalid_value("perspective-origin", "bottom 10% top 20%");
// The following were supported in an earlier version of the spec.
// https://github.com/w3c/csswg-drafts/issues/2140
-// Deprecated in Blink with support to be removed in M68, around July 2018.
test_invalid_value("perspective-origin", "center left 1px");
test_invalid_value("perspective-origin", "center top 2px");
test_invalid_value("perspective-origin", "right 3% center");
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-001.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-001.html
index bf01393bbba..e0bf09ae375 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-001.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-001.html
@@ -24,26 +24,24 @@
<script>
var transition = document.getElementById('transition');
- var ease = 'cubic-bezier(0.25, 0.1, 0.25, 1)';
- var easeIn = 'cubic-bezier(0.42, 0, 1, 1)';
// Note that order is important in this property. The first value that can be parsed as a time is assigned to
// the transition-duration. The second value that can be parsed as a time is assigned to transition-delay.
// [<‘transition-property’> || <‘transition-duration’> || <‘transition-timing-function’> || <‘transition-delay’> [, [<‘transition-property’> || <‘transition-duration’> || <‘transition-timing-function’> || <‘transition-delay’>]]*
var values = {
// [property, duration, timing, delay]
// random order
- '1s' : ["all", "1s", ease, "0s"],
- '1s 2s' : ["all", "1s", ease, "2s"],
- '1s 2s ease-in' : ["all", "1s", easeIn, "2s"],
- '1s ease-in 2s' : ["all", "1s", easeIn, "2s"],
- 'ease-in 1s 2s' : ["all", "1s", easeIn, "2s"],
- '1s width' : ["width", "1s", ease, "0s"],
- 'width 1s' : ["width", "1s", ease, "0s"],
- '1s width 2s' : ["width", "1s", ease, "2s"],
- '1s 2s width ease-in' : ["width", "1s", easeIn, "2s"],
- '1s ease-in 2s width' : ["width", "1s", easeIn, "2s"],
- 'width ease-in 1s 2s' : ["width", "1s", easeIn, "2s"],
- 'width .1s ease-in .2s' : ["width", "0.1s", easeIn, "0.2s"]
+ '1s' : ["all", "1s", "ease", "0s"],
+ '1s 2s' : ["all", "1s", "ease", "2s"],
+ '1s 2s ease-in' : ["all", "1s", "ease-in", "2s"],
+ '1s ease-in 2s' : ["all", "1s", "ease-in", "2s"],
+ 'ease-in 1s 2s' : ["all", "1s", "ease-in", "2s"],
+ '1s width' : ["width", "1s", "ease", "0s"],
+ 'width 1s' : ["width", "1s", "ease", "0s"],
+ '1s width 2s' : ["width", "1s", "ease", "2s"],
+ '1s 2s width ease-in' : ["width", "1s", "ease-in", "2s"],
+ '1s ease-in 2s width' : ["width", "1s", "ease-in", "2s"],
+ 'width ease-in 1s 2s' : ["width", "1s", "ease-in", "2s"],
+ 'width .1s ease-in .2s' : ["width", "0.1s", "ease-in", "0.2s"]
};
for (var key in values) {
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html
index 68669c7d126..75665450a1a 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-timing-function-001.html
@@ -24,15 +24,14 @@
<script>
var transition = document.getElementById('transition');
- // "ease"
- var defaultValue = 'cubic-bezier(0.25, 0.1, 0.25, 1)';
+ var defaultValue = 'ease';
var values = {
// keywords
- 'ease': 'cubic-bezier(0.25, 0.1, 0.25, 1)',
- 'linear': 'cubic-bezier(0, 0, 1, 1)',
- 'ease-in': 'cubic-bezier(0.42, 0, 1, 1)',
- 'ease-out': 'cubic-bezier(0, 0, 0.58, 1)',
- 'ease-in-out': 'cubic-bezier(0.42, 0, 0.58, 1)',
+ 'ease': 'ease',
+ 'linear': 'linear',
+ 'ease-in': 'ease-in',
+ 'ease-out': 'ease-out',
+ 'ease-in-out': 'ease-in-out',
'step-start': 'steps(1, start)',
'step-end': 'steps(1)',
// cubic bezier
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/resources/testhelper.js b/tests/wpt/web-platform-tests/css/css-typed-om/resources/testhelper.js
index cae0e2703c7..e1c1f0dc74a 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/resources/testhelper.js
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/resources/testhelper.js
@@ -9,6 +9,9 @@ function assert_style_value_equals(a, b) {
assert_equals(a.constructor.name, b.constructor.name);
const className = a.constructor.name;
switch (className) {
+ case 'CSSStyleValue':
+ assert_equals(a.toString(), b.toString());
+ break;
case 'CSSKeywordValue':
assert_equals(a.value, b.value);
break;
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html
index 15f67429edb..8631c054da9 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-normalization/positionvalue-normalization.tentative.html
@@ -52,9 +52,8 @@ for (const {cssText: xCssText, x, type: xType} of gXTestCases) {
for (const {cssText: yCssText, y, type: yType} of gYTestCases) {
const cssText = xCssText + ' ' + yCssText;
- // Can't have things like left 10px 20px
- if ((xType == 'offset' && yType == 'length') ||
- (xType == 'length' && yType == 'offset'))
+ // Can't have position values with 3 parts
+ if ((xType === 'offset') !== (yType === 'offset'))
continue;
test(t => {
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html
new file mode 100644
index 00000000000..aab4a6a5c30
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/alignment-baseline.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'alignment-baseline' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('alignment-baseline', [
+ { syntax: 'baseline' },
+ { syntax: 'text-bottom' },
+ { syntax: 'alphabetic' },
+ { syntax: 'ideographic' },
+ { syntax: 'middle' },
+ { syntax: 'central' },
+ { syntax: 'mathematical' },
+ { syntax: 'text-top' },
+ { syntax: 'bottom' },
+ { syntax: 'center' },
+ { syntax: 'top' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/all.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/all.html
new file mode 100644
index 00000000000..dd618bcde65
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/all.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'all' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('all', []);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-delay.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-delay.html
new file mode 100644
index 00000000000..91ee95ec1d5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-delay.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'animation-delay' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('animation-delay', [
+ { syntax: '<time>' }
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-duration.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-duration.html
new file mode 100644
index 00000000000..f0db5134fd6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-duration.html
@@ -0,0 +1,19 @@
+<meta charset="utf-8">
+<title>'animation-duration' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('animation-duration', [
+ { syntax: '<time>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-fill-mode.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-fill-mode.html
new file mode 100644
index 00000000000..419b98847ce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-fill-mode.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'animation-fill-mode' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('animation-fill-mode', [
+ { syntax: 'none' },
+ { syntax: 'forwards' },
+ { syntax: 'backwards' },
+ { syntax: 'both' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-iteration-count.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-iteration-count.html
new file mode 100644
index 00000000000..7902c80dd70
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-iteration-count.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'animation-iteration-count' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('animation-iteration-count', [
+ { syntax: 'infinite' },
+ { syntax: '<number>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-name.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-name.html
new file mode 100644
index 00000000000..df5d44ae38f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-name.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'animation-name' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('animation-name', [
+ { syntax: 'none' },
+ // FIXME: This should be <custom-ident>, but the test harness doesn't
+ // currently support it.
+ { syntax: 'custom-ident' },
+]);
+
+runUnsupportedPropertyTests('animation-name', [
+ '"foo"'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-play-state.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-play-state.html
new file mode 100644
index 00000000000..caa961131dc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-play-state.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'animation-play-state' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('animation-play-state', [
+ { syntax: 'running' },
+ { syntax: 'paused' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-timing-function.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-timing-function.html
new file mode 100644
index 00000000000..5ec3583d993
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation-timing-function.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'animation-timing-function' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('animation-timing-function', [
+ { syntax: 'linear' },
+ { syntax: 'ease' },
+ { syntax: 'ease-in' },
+ { syntax: 'ease-out' },
+ { syntax: 'ease-in-out' },
+ { syntax: 'step-start' },
+ { syntax: 'step-end' },
+]);
+
+runUnsupportedPropertyTests('animation-timing-function', [
+ 'cubic-bezier(0.1, 0.7, 1.0, 0.1)', 'steps(4, end)', 'frames(10)'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation.html
new file mode 100644
index 00000000000..92a49167473
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/animation.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'animation' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('animation', [
+ 'slidein 3s ease-in 1s infinite reverse both running',
+ 'slidein .5s linear 1s infinite alternate'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/backdrop-filter.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/backdrop-filter.html
new file mode 100644
index 00000000000..837ceb7c238
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/backdrop-filter.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'backdrop-filter' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('backdrop-filter', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('filter', [
+ 'blur(2px)',
+ 'url(filters.svg) blur(4px) saturate(150%)',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-attachment.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-attachment.html
new file mode 100644
index 00000000000..77adf0df03e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-attachment.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'background-attachment' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('background-attachment', [
+ { syntax: 'scroll' },
+ { syntax: 'fixed' },
+ { syntax: 'local' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-blend-mode.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-blend-mode.html
new file mode 100644
index 00000000000..92082e2f8a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-blend-mode.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'background-blend-mode' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('background-blend-mode', [
+ { syntax: 'normal' },
+ { syntax: 'multiply' },
+ { syntax: 'screen' },
+ { syntax: 'overlay' },
+ { syntax: 'darken' },
+ { syntax: 'lighten' },
+ { syntax: 'color-dodge' },
+ { syntax: 'color-burn' },
+ { syntax: 'hard-light' },
+ { syntax: 'soft-light' },
+ { syntax: 'difference' },
+ { syntax: 'exclusion' },
+ { syntax: 'hue' },
+ { syntax: 'saturation' },
+ { syntax: 'color' },
+ { syntax: 'luminosity' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-clip.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-clip.html
new file mode 100644
index 00000000000..46d16a6f601
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-clip.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'background-clip' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('background-clip', [
+ { syntax: 'border-box' },
+ { syntax: 'padding-box' },
+ { syntax: 'content-box' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-origin.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-origin.html
new file mode 100644
index 00000000000..511b5dc5bd8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-origin.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'background-origin' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('background-origin', [
+ { syntax: 'border-box' },
+ { syntax: 'padding-box' },
+ { syntax: 'content-box' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-position.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-position.html
new file mode 100644
index 00000000000..8e5b09b10a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-position.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'background-position' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('background-position', [
+ { syntax: '<position>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html
new file mode 100644
index 00000000000..bc50169c08c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-repeat.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'background-repeat' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('background-position', [
+ { syntax: 'repeat-x' },
+ { syntax: 'repeat-y' },
+ { syntax: 'repeat' },
+ { syntax: 'space' },
+ { syntax: 'round' },
+ { syntax: 'no-repeat' },
+]);
+
+runUnsupportedPropertyTests('background-position', [
+ 'space repeat'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-size.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-size.html
new file mode 100644
index 00000000000..7de0c445361
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/background-size.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'background-size' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('background-size', [
+ { syntax: '<length>' },
+ { syntax: '<percentage>' },
+ { syntax: 'auto' },
+ { syntax: 'cover' },
+ { syntax: 'contain' },
+]);
+
+runUnsupportedPropertyTests('background-size', [
+ '200px 100px'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/baseline-shift.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/baseline-shift.html
new file mode 100644
index 00000000000..c8e90b74c8d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/baseline-shift.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'baseline-shift' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('baseline-shift', [
+ { syntax: 'sub' },
+ { syntax: 'super' },
+ { syntax: '<percentage>' },
+ { syntax: '<length>' }
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-outset.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-outset.html
new file mode 100644
index 00000000000..46da4e34162
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-outset.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'border-image-outset' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('border-image-outset', [
+ // Computed value is always four values, which are not supported in
+ // Typed OM level 1.
+ {
+ syntax: '<length>',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ {
+ syntax: '<number>',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+]);
+
+runUnsupportedPropertyTests('border-image-outset', [
+ '1 1.2', '30px 2 45px', '7px 12px 14px 5px'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-repeat.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-repeat.html
new file mode 100644
index 00000000000..885a9479238
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-repeat.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'border-image-repeat' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('border-image-repeat', [
+ // Computed value is always a pair of values, which are not supported in
+ // Typed OM level 1.
+ {
+ syntax: 'stretch',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ {
+ syntax: 'repeat',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ {
+ syntax: 'round',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ {
+ syntax: 'space',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+]);
+
+runUnsupportedPropertyTests('border-image-repeat', [
+ 'stretch repeat', 'round space'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-slice.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-slice.html
new file mode 100644
index 00000000000..2649446cbb4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-slice.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'border-image-slice' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('border-image-slice', [
+ // Computed value is always four values, which are not supported in
+ // Typed OM level 1.
+ {
+ syntax: '<number>',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ {
+ syntax: '<percentage>',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+]);
+
+runUnsupportedPropertyTests('border-image-slice', [
+ '30 fill', '30 40 50', '30 40 50 60 fill'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-width.html
new file mode 100644
index 00000000000..7520a984682
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-image-width.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'border-image-width' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('border-image-width', [
+ // Computed value is always four values, which are not supported in
+ // Typed OM level 1.
+ {
+ syntax: '<length>',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ {
+ syntax: '<percentage>',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ {
+ syntax: '<number>',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ {
+ syntax: 'auto',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+]);
+
+runUnsupportedPropertyTests('border-image-width', [
+ '2em 3em', '5% 15% 10%', '5% 2em 10% auto'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-radius.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-radius.html
new file mode 100644
index 00000000000..1d7b3594761
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/border-radius.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>border radius properties</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+for (const suffix of ['top-left', 'top-right', 'bottom-left', 'bottom-right']) {
+ // Computed value is always a pair of values, which are not supported in
+ // Typed OM level 1.
+ runPropertyTests('border-' + suffix + '-radius', [
+ {
+ syntax: '<length>',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ {
+ syntax: '<percentage>',
+ computed: (_, result) => assert_is_unsupported(result)
+ },
+ ]);
+}
+
+// shorthand
+runUnsupportedPropertyTests('border-radius', [
+ '30px', '25% 10%', '10% / 50%', '50% 20% / 10% 40%'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/box-shadow.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/box-shadow.html
new file mode 100644
index 00000000000..040e992fea4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/box-shadow.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'box-shadow' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('box-shadow', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('box-shadow', [
+ '10px 5px 5px red',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip-path.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip-path.html
new file mode 100644
index 00000000000..d0c7d0ab9a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip-path.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'clip-path' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('clip-path', [
+ { syntax: 'none' },
+ { syntax: 'fill-box' },
+ { syntax: 'stroke-box' },
+ { syntax: 'view-box' },
+ { syntax: 'margin-box' },
+ { syntax: 'border-box' },
+ { syntax: 'padding-box' },
+ { syntax: 'content-box' },
+ { syntax: '<url>' },
+]);
+
+runUnsupportedPropertyTests('clip', [
+ 'inset(22% 12% 15px 35px)',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip-rule.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip-rule.html
new file mode 100644
index 00000000000..9e1c401dc9c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip-rule.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'clip-rule' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('clip-rule', [
+ { syntax: 'nonzero' },
+ { syntax: 'evenodd' }
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip.html
new file mode 100644
index 00000000000..fa08eb86abd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/clip.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'clip' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('clip', [
+ { syntax: 'auto' }
+]);
+
+runUnsupportedPropertyTests('clip', [
+ 'rect(0px, 1px, 2px, 3px)'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/color-interpolation.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/color-interpolation.html
new file mode 100644
index 00000000000..4713d90621d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/color-interpolation.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'color-interpolation' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('color-interpolation', [
+ { syntax: 'auto' },
+ { syntax: 'sRGB' },
+ { syntax: 'linearRGB' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/color-rendering.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/color-rendering.html
new file mode 100644
index 00000000000..3c47e3e47a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/color-rendering.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'color-rendering' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('color-rendering', [
+ { syntax: 'auto' },
+ { syntax: 'optimizeSpeed' },
+ { syntax: 'optimizeQuality' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-count.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-count.html
new file mode 100644
index 00000000000..9dfca6177bb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-count.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'column-count' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('column-count', [
+ { syntax: 'auto' },
+ // FIXME: This should say <integer>, but the test harness currently
+ // doesn't support <integer> data type.
+ {
+ syntax: '<number>',
+ // column-count needs to be a positive integer
+ specified: (input, result) => {
+ if (input instanceof CSSUnitValue && (!Number.isInteger(input.value) || input.value < 1))
+ assert_style_value_equals(result, new CSSMathSum(input));
+ else
+ assert_style_value_equals(result, input);
+ },
+ computed: (input, result) => {
+ const number = input.to('number');
+ if (number < 1)
+ assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+ else if (!Number.isInteger(number.value))
+ assert_style_value_equals(result, new CSSUnitValue(Math.round(number.value), 'number'));
+ else
+ assert_style_value_equals(result, number);
+ }
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-rule-style.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-rule-style.html
new file mode 100644
index 00000000000..8e56f621714
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-rule-style.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'column-rule-style' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('column-rule-style', [
+ { syntax: 'none' },
+ { syntax: 'hidden' },
+ { syntax: 'dotted' },
+ { syntax: 'dashed' },
+ { syntax: 'solid' },
+ { syntax: 'double' },
+ { syntax: 'groove' },
+ { syntax: 'ridge' },
+ { syntax: 'inset' },
+ { syntax: 'outset' }
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-rule-width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-rule-width.html
new file mode 100644
index 00000000000..bd3c0ac8f43
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/column-rule-width.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'column-rule-width' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+function assert_is_zero_px(result) {
+ assert_style_value_equals(result, new CSSUnitValue(0, 'px'));
+}
+
+runPropertyTests('column-rule-width', [
+ // Computed value is 0 when column-rule-style is 'none'.
+ // FIXME: Add separate test where column-rule-style is not 'none' or 'hidden'.
+ {
+ syntax: 'thin',
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+ {
+ syntax: 'medium',
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+ {
+ syntax: 'thick',
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling,
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/contain.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/contain.html
new file mode 100644
index 00000000000..0202da4ec21
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/contain.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'contain' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('contain', [
+ { syntax: 'none' },
+ { syntax: 'strict' },
+ { syntax: 'content' },
+ { syntax: 'size' },
+ { syntax: 'layout' },
+ { syntax: 'style' },
+ { syntax: 'paint' },
+]);
+
+runUnsupportedPropertyTests('contain', [
+ 'size layout', 'paint style layout size'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/counter-increment.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/counter-increment.html
new file mode 100644
index 00000000000..0dba6374fce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/counter-increment.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'counter-increment' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('counter-increment', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('counter-increment', [
+ 'chapter', 'chapter 3'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/counter-reset.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/counter-reset.html
new file mode 100644
index 00000000000..5323f18902c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/counter-reset.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'counter-reset' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('counter-reset', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('counter-reset', [
+ 'chapter', 'chapter 3'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/cursor.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/cursor.html
new file mode 100644
index 00000000000..7465b1a74a3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/cursor.html
@@ -0,0 +1,59 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'cursor' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('cursor', [
+ { syntax: 'auto' },
+ { syntax: 'default' },
+ { syntax: 'none' },
+ { syntax: 'context-menu' },
+ { syntax: 'help' },
+ { syntax: 'pointer' },
+ { syntax: 'progress' },
+ { syntax: 'wait' },
+ { syntax: 'cell' },
+ { syntax: 'crosshair' },
+ { syntax: 'text' },
+ { syntax: 'vertical-text' },
+ { syntax: 'alias' },
+ { syntax: 'copy' },
+ { syntax: 'move' },
+ { syntax: 'no-drop' },
+ { syntax: 'not-allowed' },
+ { syntax: 'grab' },
+ { syntax: 'grabbing' },
+ { syntax: 'e-resize' },
+ { syntax: 'n-resize' },
+ { syntax: 'ne-resize' },
+ { syntax: 'nw-resize' },
+ { syntax: 's-resize' },
+ { syntax: 'se-resize' },
+ { syntax: 'sw-resize' },
+ { syntax: 'w-resize' },
+ { syntax: 'ew-resize' },
+ { syntax: 'ns-resize' },
+ { syntax: 'nesw-resize' },
+ { syntax: 'nwse-resize' },
+ { syntax: 'col-resize' },
+ { syntax: 'row-resize' },
+ { syntax: 'all-scroll' },
+ { syntax: 'zoom-in' },
+ { syntax: 'zoom-out' }
+]);
+
+runUnsupportedPropertyTests('cursor', [
+ 'url(hand.cur), pointer', 'url(cursor1.png) 4 12, auto'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/d.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/d.html
new file mode 100644
index 00000000000..b73daa50672
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/d.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'d' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('d', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('d', [
+ 'path("M 100 100 L 300 100 L 200 300 Z")'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html
new file mode 100644
index 00000000000..9774ea2f489
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/dominant-baseline.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'dominant-baseline' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('dominant-baseline', [
+ { syntax: 'auto' },
+ { syntax: 'text-bottom' },
+ { syntax: 'alphabetic' },
+ { syntax: 'ideographic' },
+ { syntax: 'middle' },
+ { syntax: 'central' },
+ { syntax: 'mathematical' },
+ { syntax: 'hanging' },
+ { syntax: 'text-top' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-color.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-color.html
new file mode 100644
index 00000000000..5967f496edb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-color.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'fill-color' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('fill-color', [
+ {
+ syntax: 'currentcolor',
+ // computes to a <color>, which is not supported in level 1
+ computed: (_, result) => assert_class_string(result, 'CSSStyleValue')
+ }
+]);
+
+// <color>s are not supported in level 1
+runUnsupportedPropertyTests('fill-color', [
+ 'red', '#bbff00', 'rgb(255, 255, 128)', 'hsl(50, 33%, 25%)',
+ 'transparent'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html
new file mode 100644
index 00000000000..0985ac64e0d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-opacity.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'fill-opacity' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+function assert_is_equal_with_clamping(input, result) {
+ const number = input.to('number');
+
+ if (number.value < 0)
+ assert_style_value_equals(result, new CSSUnitValue(0, 'number'));
+ else if (number.value > 1)
+ assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+ else
+ assert_style_value_equals(result, input);
+}
+
+runPropertyTests('fill-opacity', [
+ {
+ syntax: '<number>',
+ computed: assert_is_equal_with_clamping
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-rule.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-rule.html
new file mode 100644
index 00000000000..30d5ea912be
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill-rule.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'fill-rule' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('fill-rule', [
+ { syntax: 'nonzero' },
+ { syntax: 'evenodd' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill.html
new file mode 100644
index 00000000000..28b3c55647e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/fill.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'fill' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('fill', [
+ 'black',
+ 'red gray',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/filter.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/filter.html
new file mode 100644
index 00000000000..62ddeff0089
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/filter.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'filter' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('filter', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('filter', [
+ 'blur(2px)',
+ 'url(filters.svg) blur(4px) saturate(150%)',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flood-color.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flood-color.html
new file mode 100644
index 00000000000..bb3ddc9fc9a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flood-color.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'flood-color' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('flood-color', [
+ {
+ syntax: 'currentcolor',
+ // computes to a <color>, which is not supported in level 1
+ computed: (_, result) => assert_class_string(result, 'CSSStyleValue')
+ }
+]);
+
+// <color>s are not supported in level 1
+runUnsupportedPropertyTests('flood-color', [
+ 'red', '#bbff00', 'rgb(255, 255, 128)', 'hsl(50, 33%, 25%)',
+ 'transparent'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flood-opacity.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flood-opacity.html
new file mode 100644
index 00000000000..15824c71034
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/flood-opacity.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'flood-opacity' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+function assert_is_equal_with_clamping(input, result) {
+ const number = input.to('number');
+
+ if (number.value < 0)
+ assert_style_value_equals(result, new CSSUnitValue(0, 'number'));
+ else if (number.value > 1)
+ assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+ else
+ assert_style_value_equals(result, input);
+}
+
+runPropertyTests('flood-opacity', [
+ {
+ syntax: '<number>',
+ computed: assert_is_equal_with_clamping
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-feature-settings.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-feature-settings.html
new file mode 100644
index 00000000000..4edf7064f9a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-feature-settings.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'font-feature-settings' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('font-feature-settings', [
+ { syntax: 'normal' }
+]);
+
+runUnsupportedPropertyTests('font-feature-settings', [
+ '"dlig" 1',
+ '"smcp" on',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-kerning.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-kerning.html
new file mode 100644
index 00000000000..4eea684892a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-kerning.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'font-kerning' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('font-kerning', [
+ { syntax: 'auto' },
+ { syntax: 'normal' },
+ { syntax: 'none' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-caps.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-caps.html
new file mode 100644
index 00000000000..6a84bbd6fbe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-caps.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'font-variant-caps' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('font-variant-caps', [
+ { syntax: 'normal' },
+ { syntax: 'small-caps' },
+ { syntax: 'all-small-caps' },
+ { syntax: 'petite-caps' },
+ { syntax: 'all-petite-caps' },
+ { syntax: 'unicase' },
+ { syntax: 'titling-caps' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-east-asian.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-east-asian.html
new file mode 100644
index 00000000000..018624e4e4f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-east-asian.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'font-variant-east-asian' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('font-variant-east-asian', [
+ { syntax: 'normal' },
+ { syntax: 'jis78' },
+ { syntax: 'jis83' },
+ { syntax: 'jis90' },
+ { syntax: 'jis04' },
+ { syntax: 'simplified' },
+ { syntax: 'traditional' },
+ { syntax: 'full-width' },
+ { syntax: 'proportional-width' },
+ { syntax: 'ruby' },
+]);
+
+runUnsupportedPropertyTests('font-variant-east-asian', [
+ 'jis78 full-width',
+ 'traditional proportional-width ruby',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-ligatures.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-ligatures.html
new file mode 100644
index 00000000000..c640dc219bf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-ligatures.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'font-variant-ligatures' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('font-variant-ligatures', [
+ { syntax: 'normal' },
+ { syntax: 'none' },
+ { syntax: 'common-ligatures' },
+ { syntax: 'no-common-ligatures' },
+ { syntax: 'discretionary-ligatures' },
+ { syntax: 'no-discretionary-ligatures' },
+ { syntax: 'historical-ligatures' },
+ { syntax: 'no-historical-ligatures' },
+ { syntax: 'contextual' },
+ { syntax: 'no-contextual' },
+]);
+
+runUnsupportedPropertyTests('font-variant-ligatures', [
+ 'common-ligatures contextual',
+ 'no-common-ligatures discretionary-ligatures no-historical-ligatures no-contextual',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-numeric.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-numeric.html
new file mode 100644
index 00000000000..cbd454da954
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/font-variant-numeric.html
@@ -0,0 +1,32 @@
+<meta charset="utf-8">
+<title>'font-variant-numeric' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('font-variant-numeric', [
+ { syntax: 'normal' },
+ { syntax: 'lining-nums' },
+ { syntax: 'oldstyle-nums' },
+ { syntax: 'proportional-nums' },
+ { syntax: 'tabular-nums' },
+ { syntax: 'diagonal-fractions' },
+ { syntax: 'stacked-fractions' },
+ { syntax: 'ordinal' },
+ { syntax: 'slashed-zero' },
+]);
+
+runUnsupportedPropertyTests('font-variant-numeric', [
+ 'lining-nums ordinal',
+ 'oldstyle-nums tabular-nums stacked-fractions ordinal slashed-zero',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-area.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-area.html
new file mode 100644
index 00000000000..16ac4d517df
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-area.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'grid-area' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('grid-area', [
+ 'a', 'a / a', 'auto', 'auto / auto', '2 / 1 / 2',
+ 'span 3', '2 span / a span'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-auto-columns-rows.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-auto-columns-rows.html
new file mode 100644
index 00000000000..9f31d9e9789
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-auto-columns-rows.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'grid-auto-columns' and 'grid-auto-rows' properties</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+// grid-auto-columns/rows are list-valued.
+// Run list-valued tests here too.
+for (const suffix of ['columns', 'rows']) {
+ runPropertyTests(`grid-auto-${suffix}`, [
+ { syntax: 'min-content' },
+ { syntax: 'max-content' },
+ { syntax: 'auto' },
+ { syntax: '<length>' },
+ { syntax: '<percentage>' },
+ { syntax: '<flex>' },
+ ]);
+
+ runUnsupportedPropertyTests(`grid-auto-${suffix}`, [
+ 'minmax(100px, auto)', 'fit-content(400px)'
+ ]);
+}
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-auto-flow.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-auto-flow.html
new file mode 100644
index 00000000000..4447afe11a5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-auto-flow.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'grid-auto-flow' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('grid-auto-flow', [
+ { syntax: 'row' },
+ { syntax: 'column' },
+]);
+
+runUnsupportedPropertyTests('grid-auto-flow', [
+ 'row dense', 'column dense',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-gap.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-gap.html
new file mode 100644
index 00000000000..c4a41acf59f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-gap.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'grid-gap' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('grid-gap', [
+ '20px', '16%', '20px 10px', '15% 100%', '21px 82%'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-start-end.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-start-end.html
new file mode 100644
index 00000000000..baa48cfb70d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-start-end.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'grid-{row/column}-{start/end}' properties</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+for (const orientation of ['row', 'column']) {
+ for (const suffix of ['start', 'end']) {
+ runPropertyTests(`grid-${orientation}-${suffix}`, [
+ { syntax: 'auto' },
+ ]);
+
+ runUnsupportedPropertyTests(`grid-${orientation}-${suffix}`, [
+ '3', 'span 2', '5 somegridarea span'
+ ]);
+ }
+}
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template-areas.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template-areas.html
new file mode 100644
index 00000000000..d367f8264ba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template-areas.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'grid-template-areas' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('grid-template-areas', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('grid-template-areas', [
+ '"a a a"', '"a a a" "b b b"',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template-columns-rows.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template-columns-rows.html
new file mode 100644
index 00000000000..ae53c2d3eb7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template-columns-rows.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'grid-template-columns' and 'grid-template-rows' properties</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+for (const suffix of ['columns', 'rows']) {
+ runPropertyTests(`grid-template-${suffix}`, [
+ { syntax: 'none' },
+ ]);
+
+ runUnsupportedPropertyTests(`grid-template-${suffix}`, [
+ '[linename1] 100px [linename2 linename3]',
+ '200px repeat(auto-fill, 100px) 300px'
+ ]);
+}
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template.html
new file mode 100644
index 00000000000..669b1bd92e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid-template.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'grid-template' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('grid-template', [
+ 'none', '100px 1fr / 50px 1fr', '[linename] 100px / [columnname1] 30% [columname2] 70%',
+ 'fit-content(100px) / fit-content(40%)', '"a a a" "b b b"',
+ '[header-top] "a a a" [header-bottom] [main-top] "b b b" 1fr [main-bottom] / auto 1fr auto'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid.html
new file mode 100644
index 00000000000..e6e5148e9ef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/grid.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'grid' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('grid', [
+ 'auto-flow / 1fr 1fr 1fr', 'auto-flow dense / 40px 40px 1fr',
+ 'repeat(3, 80px) / auto-flow'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/hyphens.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/hyphens.html
new file mode 100644
index 00000000000..cbbcd0c93fe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/hyphens.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'hyphens' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('hyphens', [
+ { syntax: 'none' },
+ { syntax: 'manual' },
+ { syntax: 'auto' }
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html
new file mode 100644
index 00000000000..c96aa9b3708
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/image-rendering.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'image-rendering' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('image-rendering', [
+ { syntax: 'auto' },
+ { syntax: 'smooth' },
+ { syntax: 'high-quality' },
+ { syntax: 'crisp-edges' },
+ { syntax: 'pixelated' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html
new file mode 100644
index 00000000000..ccbf0a0e6ac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/letter-spacing.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'letter-spacing' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('letter-spacing', [
+ { syntax: 'normal' },
+ { syntax: '<length>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/lighting-color.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/lighting-color.html
new file mode 100644
index 00000000000..aec16433723
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/lighting-color.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'lighting-color' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('lighting-color', [
+ {
+ syntax: 'currentcolor',
+ // computes to a <color>, which is not supported in level 1
+ computed: (_, result) => assert_class_string(result, 'CSSStyleValue')
+ }
+]);
+
+// <color>s are not supported in level 1
+runUnsupportedPropertyTests('lighting-color', [
+ 'red', '#bbff00', 'rgb(255, 255, 128)', 'hsl(50, 33%, 25%)',
+ 'transparent'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/line-break.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/line-break.html
new file mode 100644
index 00000000000..481a9e97fe8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/line-break.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'line-break' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('line-break', [
+ { syntax: 'auto' },
+ { syntax: 'loose' },
+ { syntax: 'normal' },
+ { syntax: 'strict' },
+ { syntax: 'anywhere' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/line-height-step.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/line-height-step.html
new file mode 100644
index 00000000000..2a25562f0f5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/line-height-step.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'line-height-step' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('line-height-step', [
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ }
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html
new file mode 100644
index 00000000000..61e75407b31
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/list-style-type.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'list-style-type' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('list-style-type', [
+ { syntax: 'none' },
+ // FIXME: This should be <custom-ident>, but the test harness doesn't
+ // currently support it.
+ { syntax: 'custom-ident' },
+]);
+
+runUnsupportedPropertyTests('list-style-type', [
+ '"Note: "', 'symbols("*" "A" "B" "C")'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mask-type.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mask-type.html
new file mode 100644
index 00000000000..35e81fb81c4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mask-type.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'mask-type' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('mask-type', [
+ { syntax: 'luminance' },
+ { syntax: 'alpha' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mask.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mask.html
new file mode 100644
index 00000000000..bfdc4c4fd35
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/mask.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'mask' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('mask', [
+ 'none', 'url(mask.png)'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html
index 56a8580cb80..c91e27c13c5 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/offset-rotate.html
@@ -12,6 +12,12 @@
<script>
'use strict';
+runPropertyTests('offset-rotate', [
+ { syntax: 'auto' },
+ { syntax: 'reverse' },
+ { syntax: '<angle>' },
+]);
+
runUnsupportedPropertyTests('offset-rotate', [
'auto 90deg',
'reverse -90deg',
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/order.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/order.html
new file mode 100644
index 00000000000..35b9d26a39d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/order.html
@@ -0,0 +1,35 @@
+<meta charset="utf-8">
+<title>'order' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('order', [
+ {
+ syntax: '<number>',
+ // order needs to be an integer
+ specified: (input, result) => {
+ if (input instanceof CSSUnitValue && !Number.isInteger(input.value))
+ assert_style_value_equals(result, new CSSMathSum(input));
+ else
+ assert_style_value_equals(result, input);
+ },
+ computed: (input, result) => {
+ const number = input.to('number');
+ if (!Number.isInteger(number.value))
+ assert_style_value_equals(result, new CSSUnitValue(Math.round(number.value), 'number'));
+ else
+ assert_style_value_equals(result, number);
+ }
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/orphans.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/orphans.html
new file mode 100644
index 00000000000..7d7558407a2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/orphans.html
@@ -0,0 +1,37 @@
+<meta charset="utf-8">
+<title>'orphans' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('orphans', [
+ {
+ syntax: '<number>',
+ // orphans needs to be a positive integer
+ specified: (input, result) => {
+ if (input instanceof CSSUnitValue && (!Number.isInteger(input.value) || input.value < 1))
+ assert_style_value_equals(result, new CSSMathSum(input));
+ else
+ assert_style_value_equals(result, input);
+ },
+ computed: (input, result) => {
+ const number = input.to('number');
+ if (number < 1)
+ assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+ else if (!Number.isInteger(number.value))
+ assert_style_value_equals(result, new CSSUnitValue(Math.round(number.value), 'number'));
+ else
+ assert_style_value_equals(result, number);
+ }
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/outline-offset.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/outline-offset.html
new file mode 100644
index 00000000000..f9c0f5643ff
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/outline-offset.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'outline-offset' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('outline-offset', [
+ { syntax: '<length>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/outline-width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/outline-width.html
new file mode 100644
index 00000000000..3686741ad12
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/outline-width.html
@@ -0,0 +1,41 @@
+<meta charset="utf-8">
+<title>'outline-width' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+function assert_is_zero_px(result) {
+ assert_style_value_equals(result, new CSSUnitValue(0, 'px'));
+}
+
+runPropertyTests('outline-width', [
+ // Computed value is 0 when outline-style is 'none'.
+ // FIXME: Add separate test where outline-style is not 'none' or 'hidden'.
+ {
+ syntax: 'thin',
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+ {
+ syntax: 'medium',
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+ {
+ syntax: 'thick',
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling,
+ computed: (_, result) => assert_is_zero_px(result)
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html
new file mode 100644
index 00000000000..0a7bcc7ac30
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/overflow-wrap.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'overflow-wrap' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('overflow-wrap', [
+ { syntax: 'normal' },
+ { syntax: 'break-word' },
+ { syntax: 'break-spaces' },
+]);
+
+runUnsupportedPropertyTests('overflow-wrap', [
+ 'break-overflow break-spaces'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/overscroll-behavior.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/overscroll-behavior.html
new file mode 100644
index 00000000000..5e440b2595e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/overscroll-behavior.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'overscroll-behavior' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+for (const suffix of ['x', 'y']) {
+ runPropertyTests(`overscroll-behavior-${suffix}`, [
+ { syntax: 'contain' },
+ { syntax: 'none' },
+ { syntax: 'auto' }
+ ]);
+}
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/page.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/page.html
new file mode 100644
index 00000000000..93255b8a679
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/page.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'page' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('page', [
+ { syntax: 'auto' },
+ // FIXME: This should be <custom-ident>, but the test harness doesn't
+ // currently support it.
+ { syntax: 'custom-ident' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/paint-order.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/paint-order.html
new file mode 100644
index 00000000000..a547a751126
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/paint-order.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'paint-order' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('paint-order', [
+ { syntax: 'normal' },
+ { syntax: 'fill' },
+ { syntax: 'stroke' },
+ { syntax: 'markers' },
+]);
+
+runUnsupportedPropertyTests('paint-order', [
+ 'fill stroke', 'markers fill stroke'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html
new file mode 100644
index 00000000000..a72f79c5037
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/perspective-origin.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'perspective-origin' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('perspective-origin', [
+ { syntax: 'none' },
+ { syntax: '<position>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/perspective.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/perspective.html
new file mode 100644
index 00000000000..d90d9392be4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/perspective.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'perspective' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('perspective', [
+ { syntax: 'none' },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/quotes.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/quotes.html
new file mode 100644
index 00000000000..99e844265d4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/quotes.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'quotes' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('quotes', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('quotes', [
+ '"<<" ">>" "<" ">"'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
index 1b0a0d71669..3ca0b55f3f1 100644
--- a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/resources/testsuite.js
@@ -16,6 +16,10 @@ function assert_is_equal_with_range_handling(input, result) {
assert_style_value_equals(result, input);
}
+function assert_is_unsupported(result) {
+ assert_class_string(result, 'CSSStyleValue');
+}
+
const gCssWideKeywordsExamples = [
{
description: 'initial keyword',
@@ -102,7 +106,36 @@ const gTestSyntaxExamples = {
},
{
description: "negative milliseconds",
- input: new CSSUnitValue(-3.14, 'ms')
+ input: new CSSUnitValue(-3.14, 'ms'),
+ // Computed values use canonical units
+ defaultComputed: (_, result) => assert_style_value_equals(result, new CSSUnitValue(-0.00314, 's'))
+ },
+ {
+ description: "positive seconds",
+ input: new CSSUnitValue(3.14, 's')
+ },
+ {
+ description: "a calc time",
+ input: new CSSMathSum(new CSSUnitValue(0, 's'), new CSSUnitValue(0, 'ms')),
+ // Specified/computed calcs are usually simplified.
+ // FIXME: Test this properly
+ defaultSpecified: (_, result) => assert_is_calc_sum(result),
+ defaultComputed: (_, result) => assert_is_unit('s', result)
+ }
+ ],
+ },
+ '<time>': {
+ description: 'a time',
+ examples: [
+ {
+ description: "zero seconds",
+ input: new CSSUnitValue(0, 's')
+ },
+ {
+ description: "negative milliseconds",
+ input: new CSSUnitValue(-3.14, 'ms'),
+ // Computed values use canonical units
+ defaultComputed: (_, result) => assert_style_value_equals(result, new CSSUnitValue(-0.00314, 's'))
},
{
description: "positive seconds",
@@ -118,6 +151,52 @@ const gTestSyntaxExamples = {
}
],
},
+ '<angle>': {
+ description: 'an angle',
+ examples: [
+ {
+ description: "zero degrees",
+ input: new CSSUnitValue(0, 'deg')
+ },
+ {
+ description: "positive radians",
+ input: new CSSUnitValue(3.14, 'rad'),
+ // Computed values use canonical units
+ defaultComputed: (_, result) => assert_style_value_equals(result, new CSSUnitValue(179.908752, 'deg'))
+ },
+ {
+ description: "negative degrees",
+ input: new CSSUnitValue(-3.14, 'deg')
+ },
+ {
+ description: "a calc angle",
+ input: new CSSMathSum(new CSSUnitValue(0, 'rad'), new CSSUnitValue(0, 'deg')),
+ // Specified/computed calcs are usually simplified.
+ // FIXME: Test this properly
+ defaultSpecified: (_, result) => assert_is_calc_sum(result),
+ defaultComputed: (_, result) => assert_is_unit('deg', result)
+ }
+ ],
+ },
+ '<flex>': {
+ description: 'a flexible length',
+ examples: [
+ {
+ description: "zero fractions",
+ input: new CSSUnitValue(0, 'fr')
+ },
+ {
+ description: "one fraction",
+ input: new CSSUnitValue(0, 'fr')
+ },
+ {
+ description: "negative fraction",
+ input: new CSSUnitValue(-3.14, 'fr')
+ },
+ // TODO(https://github.com/w3c/css-houdini-drafts/issues/734):
+ // Add calc tests involving 'fr' when that is spec'd in CSS.
+ ],
+ },
'<number>': {
description: 'a number',
examples: [
@@ -299,6 +378,11 @@ function testUnsupportedValue(propertyName, cssText) {
element2.attributeStyleMap.set(propertyName, result);
assert_equals(element2.style[propertyName], element1.style[propertyName],
'Unsupported value can be set on different element');
+
+ const resultAll = element2.attributeStyleMap.getAll(propertyName);
+ assert_style_value_equals(resultAll[0], result,
+ `getAll() with single unsupported value returns single-item list ` +
+ `with same result as get()`);
}, `'${propertyName}' does not supported '${cssText}'`);
}
@@ -359,7 +443,7 @@ function runPropertyTests(propertyName, testCases) {
// Retrieve test examples for this test case's syntax. If the syntax
// looks like a keyword, then create an example on the fly.
- const syntaxExamples = testCase.syntax.toLowerCase().match(/^[a-z\-]+$/) ?
+ const syntaxExamples = testCase.syntax.toLowerCase().match(/^[a-z0-9\-]+$/) ?
createKeywordExample(testCase.syntax) :
gTestSyntaxExamples[testCase.syntax];
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-behavior.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-behavior.html
new file mode 100644
index 00000000000..83baeb0d264
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-behavior.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'scroll-behavior' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('scroll-behavior', [
+ { syntax: 'auto' },
+ { syntax: 'smooth' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html
new file mode 100644
index 00000000000..fd92a90a0c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-align.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'scroll-snap-align' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('scroll-snap-align', [
+ {
+ syntax: 'none',
+ computed: assert_is_unsupported
+ },
+ {
+ syntax: 'start',
+ computed: assert_is_unsupported
+ },
+ {
+ syntax: 'end',
+ computed: assert_is_unsupported
+ },
+ {
+ syntax: 'center',
+ computed: assert_is_unsupported
+ },
+]);
+
+runUnsupportedPropertyTests('scroll-snap-align', [
+ 'none center', 'end start'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-stop.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-stop.html
new file mode 100644
index 00000000000..959a240a4fa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-stop.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'scroll-snap-stop' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('scroll-snap-stop', [
+ { syntax: 'normal' },
+ { syntax: 'always' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type.html
new file mode 100644
index 00000000000..4f9c4a46b6f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scroll-snap-type.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'scroll-snap-type' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('scroll-snap-type', [
+ { syntax: 'none' },
+ { syntax: 'x' },
+ { syntax: 'y' },
+ { syntax: 'block' },
+ { syntax: 'inline' },
+ { syntax: 'both' },
+]);
+
+runUnsupportedPropertyTests('scroll-snap-type', [
+ 'x mandatory', 'inline proximity'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-image-threshold.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-image-threshold.html
new file mode 100644
index 00000000000..d16d892c46a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-image-threshold.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'shape-image-threshold' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+function assert_is_equal_with_clamping(input, result) {
+ const number = input.to('number');
+
+ if (number.value < 0)
+ assert_style_value_equals(result, new CSSUnitValue(0, 'number'));
+ else if (number.value > 1)
+ assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+ else
+ assert_style_value_equals(result, input);
+}
+
+runPropertyTests('shape-image-threshold', [
+ {
+ syntax: '<number>',
+ computed: assert_is_equal_with_clamping
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-margin.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-margin.html
new file mode 100644
index 00000000000..ca517bbef44
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-margin.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'shape-margin' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('shape-margin', [
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
+ {
+ syntax: '<percentage>',
+ specified: assert_is_equal_with_range_handling
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-rendering.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-rendering.html
new file mode 100644
index 00000000000..28ecdabf402
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/shape-rendering.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'shape-rendering' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('shape-rendering', [
+ { syntax: 'auto' },
+ { syntax: 'optimizeSpeed' },
+ { syntax: 'crispEdges' },
+ { syntax: 'geometricPrecision' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/speak.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/speak.html
new file mode 100644
index 00000000000..33512fe24aa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/speak.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'speak' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('speak', [
+ { syntax: 'auto' },
+ { syntax: 'never' },
+ { syntax: 'always' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stop-color.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stop-color.html
new file mode 100644
index 00000000000..83dcf0218a0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stop-color.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stop-color' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stop-color', [
+ {
+ syntax: 'currentcolor',
+ // computes to a <color>, which is not supported in level 1
+ computed: (_, result) => assert_class_string(result, 'CSSStyleValue')
+ }
+]);
+
+// <color>s are not supported in level 1
+runUnsupportedPropertyTests('stop-color', [
+ 'red', '#bbff00', 'rgb(255, 255, 128)', 'hsl(50, 33%, 25%)',
+ 'transparent'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stop-opacity.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stop-opacity.html
new file mode 100644
index 00000000000..5ce713415d4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stop-opacity.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stop-opacity' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+function assert_is_equal_with_clamping(input, result) {
+ const number = input.to('number');
+
+ if (number.value < 0)
+ assert_style_value_equals(result, new CSSUnitValue(0, 'number'));
+ else if (number.value > 1)
+ assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+ else
+ assert_style_value_equals(result, input);
+}
+
+runPropertyTests('stop-opacity', [
+ {
+ syntax: '<number>',
+ computed: assert_is_equal_with_clamping
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html
new file mode 100644
index 00000000000..e907415f0a5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dasharray.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-dasharray' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-dasharray', [
+ { syntax: 'none' }
+]);
+
+runUnsupportedPropertyTests('stroke-dasharray', [
+ '5% 1em 2%',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html
new file mode 100644
index 00000000000..de3c78dc34a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-dashoffset.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-dashoffset' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-dashoffset', [
+ { syntax: '<length>' },
+ { syntax: '<percentage>' }
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html
new file mode 100644
index 00000000000..227b92274d5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linecap.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-linecap' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-linecap', [
+ { syntax: 'butt' },
+ { syntax: 'round' },
+ { syntax: 'square' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html
new file mode 100644
index 00000000000..2f01ee7f2a9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-linejoin.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-linejoin' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-linejoin', [
+ { syntax: 'crop' },
+ { syntax: 'arcs' },
+ { syntax: 'miter' },
+ { syntax: 'bevel' },
+ { syntax: 'round' },
+ { syntax: 'stupid' },
+]);
+
+runUnsupportedPropertyTests('stroke-linejoin', [
+ 'crop bevel', 'round arcs'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html
new file mode 100644
index 00000000000..2c2e01c5891
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-miterlimit.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-miterlimit' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('stroke-miterlimit', [
+ { syntax: '<number>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html
new file mode 100644
index 00000000000..6b9e0b5a01c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-opacity.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-opacity' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+function assert_is_equal_with_clamping(input, result) {
+ const number = input.to('number');
+
+ if (number.value < 0)
+ assert_style_value_equals(result, new CSSUnitValue(0, 'number'));
+ else if (number.value > 1)
+ assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+ else
+ assert_style_value_equals(result, input);
+}
+
+runPropertyTests('stroke-opacity', [
+ {
+ syntax: '<number>',
+ computed: assert_is_equal_with_clamping
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-width.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-width.html
new file mode 100644
index 00000000000..52b93207387
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke-width.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke-width' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('stroke-width', [
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
+ {
+ syntax: '<percentage>',
+ specified: assert_is_equal_with_range_handling
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke.html
new file mode 100644
index 00000000000..ff81024a946
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/stroke.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'stroke' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('stroke', [
+ 'black',
+ 'red gray',
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/tab-size.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/tab-size.html
new file mode 100644
index 00000000000..d03139e9bba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/tab-size.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'tab-size' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('tab-size', [
+ {
+ // tab-size can be a non-negative integer
+ syntax: '<number>',
+ specified: (input, result) => {
+ if (input instanceof CSSUnitValue && (!Number.isInteger(input.value) || input.value < 0))
+ assert_style_value_equals(result, new CSSMathSum(input));
+ else
+ assert_style_value_equals(result, input);
+ },
+ computed: (input, result) => {
+ const number = input.to('number');
+ if (number < 0)
+ assert_style_value_equals(result, new CSSUnitValue(0, 'number'));
+ else if (!Number.isInteger(number.value))
+ assert_style_value_equals(result, new CSSUnitValue(Math.round(number.value), 'number'));
+ else
+ assert_style_value_equals(result, number);
+ }
+ },
+ {
+ syntax: '<length>',
+ specified: assert_is_equal_with_range_handling
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-align-last.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-align-last.html
new file mode 100644
index 00000000000..242906fecb5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-align-last.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-align-last' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-align-last', [
+ { syntax: 'auto' },
+ { syntax: 'start' },
+ { syntax: 'end' },
+ { syntax: 'left' },
+ { syntax: 'right' },
+ { syntax: 'center' },
+ { syntax: 'justify' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-anchor.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-anchor.html
new file mode 100644
index 00000000000..00b04aaed60
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-anchor.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-anchor' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-anchor', [
+ { syntax: 'start' },
+ { syntax: 'middle' },
+ { syntax: 'end' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright.html
new file mode 100644
index 00000000000..c0a7f566436
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-combine-upright.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-combine-upright' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-combine-upright', [
+ { syntax: 'none' },
+ { syntax: 'all' },
+]);
+
+runUnsupportedPropertyTests('text-combine-upright', [
+ 'digits 3'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-indent.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-indent.html
new file mode 100644
index 00000000000..e7f1b8c7df1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-indent.html
@@ -0,0 +1,25 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-indent' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-indent', [
+ { syntax: '<length>' },
+ { syntax: '<percentage>' },
+]);
+
+runUnsupportedPropertyTests('text-indent', [
+ '5em each-line', '5em hanging', '5em hanging each-line'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-justify.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-justify.html
new file mode 100644
index 00000000000..29f7e600842
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-justify.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-justify' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-justify', [
+ { syntax: 'auto' },
+ { syntax: 'none' },
+ { syntax: 'inter-word' },
+ { syntax: 'inter-character' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html
new file mode 100644
index 00000000000..9d4a915985b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-overflow.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-overflow' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-overflow', [
+ { syntax: 'clip' },
+ { syntax: 'ellipsis' },
+ { syntax: 'fade' },
+]);
+
+runUnsupportedPropertyTests('text-overflow', [
+ 'clip ellipsis', '"..."', 'fade(1px, 50%)'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-rendering.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-rendering.html
new file mode 100644
index 00000000000..13d2e3bc755
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-rendering.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-rendering' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-rendering', [
+ { syntax: 'auto' },
+ { syntax: 'optimizeSpeed' },
+ { syntax: 'optimizeLegibility' },
+ { syntax: 'geometricPrecision' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-shadow.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-shadow.html
new file mode 100644
index 00000000000..930da94dc99
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-shadow.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-shadow' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-shadow', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('text-shadow', [
+ '1px 1px 2px pink', '1px 1px 2px red, 0 0 1em blue, 0 0 0.2em blue'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html
new file mode 100644
index 00000000000..29a60cbb305
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-size-adjust.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-size-adjust' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-size-adjust', [
+ { syntax: 'none' },
+ { syntax: 'auto' },
+ { syntax: '<percentage>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-underline-position.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-underline-position.html
new file mode 100644
index 00000000000..f6481713952
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/text-underline-position.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'text-underline-position' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('text-underline-position', [
+ { syntax: 'auto' },
+ { syntax: 'under' },
+ { syntax: 'left' },
+ { syntax: 'right' },
+]);
+
+runUnsupportedPropertyTests('text-underline-position', [
+ 'under left', 'right under'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/touch-action.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/touch-action.html
new file mode 100644
index 00000000000..2435e347c30
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/touch-action.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'touch-action' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('touch-action', [
+ { syntax: 'auto' },
+ { syntax: 'none' },
+ { syntax: 'pan-x' },
+ { syntax: 'pan-left' },
+ { syntax: 'pan-right' },
+ { syntax: 'pan-y' },
+ { syntax: 'pan-up' },
+ { syntax: 'pan-down' },
+ { syntax: 'pinch-zoom' },
+ { syntax: 'manipulation' },
+]);
+
+runUnsupportedPropertyTests('touch-action', [
+ 'pan-x pan-down', 'pan-down pinch-zoom pan-right'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transform-box.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transform-box.html
new file mode 100644
index 00000000000..a5556b10799
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transform-box.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'transform-box' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('transform-box', [
+ { syntax: 'border-box' },
+ { syntax: 'fill-box' },
+ { syntax: 'view-box' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transform-style.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transform-style.html
new file mode 100644
index 00000000000..2746db578e5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transform-style.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'transform-style' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('transform-style', [
+ { syntax: 'auto' },
+ { syntax: 'flat' },
+ { syntax: 'preserve-3d' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-delay.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-delay.html
new file mode 100644
index 00000000000..1ee47f4738f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-delay.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'transition-delay' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('transition-delay', [
+ { syntax: '<time>' }
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-property.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-property.html
new file mode 100644
index 00000000000..7f0c48a7255
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-property.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'transition-property' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('transition-property', [
+ { syntax: 'none' },
+]);
+
+runUnsupportedPropertyTests('transition-property', [
+ 'width', 'width, height', 'all'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-timing-function.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-timing-function.html
new file mode 100644
index 00000000000..4feb8179086
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition-timing-function.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'transition-timing-function' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runListValuedPropertyTests('transition-timing-function', [
+ { syntax: 'linear' },
+ { syntax: 'ease' },
+ { syntax: 'ease-in' },
+ { syntax: 'ease-out' },
+ { syntax: 'ease-in-out' },
+ { syntax: 'step-start' },
+ { syntax: 'step-end' },
+]);
+
+runUnsupportedPropertyTests('transition-timing-function', [
+ 'cubic-bezier(0.1, 0.7, 1.0, 0.1)', 'steps(4, end)', 'frames(10)'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition.html
new file mode 100644
index 00000000000..1264550bc9b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/transition.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'transition' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runUnsupportedPropertyTests('transition', [
+ 'none', 'none, none', 'margin-right 4s', 'all 0.5s ease-out, color 1s'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/user-select.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/user-select.html
new file mode 100644
index 00000000000..47ea14de672
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/user-select.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'user-select' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('user-select', [
+ { syntax: 'auto' },
+ { syntax: 'text' },
+ { syntax: 'none' },
+ { syntax: 'contain' },
+ { syntax: 'all' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/vector-effect.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/vector-effect.html
new file mode 100644
index 00000000000..692709529fa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/vector-effect.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'vector-effect' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('vector-effect', [
+ { syntax: 'non-scaling-stroke' },
+ { syntax: 'none' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/widows.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/widows.html
new file mode 100644
index 00000000000..7503bffd8c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/widows.html
@@ -0,0 +1,37 @@
+<meta charset="utf-8">
+<title>'widows' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('widows', [
+ {
+ syntax: '<number>',
+ // widows needs to be a positive integer
+ specified: (input, result) => {
+ if (input instanceof CSSUnitValue && (!Number.isInteger(input.value) || input.value < 1))
+ assert_style_value_equals(result, new CSSMathSum(input));
+ else
+ assert_style_value_equals(result, input);
+ },
+ computed: (input, result) => {
+ const number = input.to('number');
+ if (number < 1)
+ assert_style_value_equals(result, new CSSUnitValue(1, 'number'));
+ else if (!Number.isInteger(number.value))
+ assert_style_value_equals(result, new CSSUnitValue(Math.round(number.value), 'number'));
+ else
+ assert_style_value_equals(result, number);
+ }
+ },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/will-change.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/will-change.html
new file mode 100644
index 00000000000..2add50c0dfc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/will-change.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'will-change' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('will-change', [
+ { syntax: 'auto' },
+]);
+
+runUnsupportedPropertyTests('will-change', [
+ 'scroll-position', 'contents, foo, scroll-position'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-break.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-break.html
new file mode 100644
index 00000000000..12370df8867
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-break.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'word-break' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('word-break', [
+ { syntax: 'normal' },
+ { syntax: 'keep-all' },
+ { syntax: 'break-all' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html
new file mode 100644
index 00000000000..9a44c96aada
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-spacing.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'word-spacing' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('word-spacing', [
+ { syntax: 'normal' },
+ { syntax: '<length>' },
+ { syntax: '<percentage>' },
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html
new file mode 100644
index 00000000000..b8ec4fc5251
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/word-wrap.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'word-wrap' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('word-wrap', [
+ { syntax: 'normal' },
+ { syntax: 'break-word' },
+ { syntax: 'break-spaces' },
+]);
+
+runUnsupportedPropertyTests('word-wrap', [
+ 'break-word break-spaces'
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/z-index.html b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/z-index.html
new file mode 100644
index 00000000000..53773fb96fc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/z-index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>'z-index' property</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-get">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#dom-stylepropertymap-set">
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om-1/#property-stle-value-normalization">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../resources/testhelper.js"></script>
+<script src="resources/testsuite.js"></script>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+runPropertyTests('z-index', [
+ { syntax: 'auto' },
+ {
+ syntax: '<number>',
+ // z-index needs to be an integer
+ specified: (input, result) => {
+ if (input instanceof CSSUnitValue && !Number.isInteger(input.value))
+ assert_style_value_equals(result, new CSSMathSum(input));
+ else
+ assert_style_value_equals(result, input);
+ },
+ computed: (input, result) => {
+ const number = input.to('number');
+ if (!Number.isInteger(number.value))
+ assert_style_value_equals(result, new CSSUnitValue(Math.round(number.value), 'number'));
+ else
+ assert_style_value_equals(result, number);
+ }
+ }
+]);
+
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html b/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html
index a56c144c3fc..c427adecbeb 100644
--- a/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html
+++ b/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-001.html
@@ -7,7 +7,7 @@
Attribute references (types)
</title>
<meta name="assert" content="
- When the type of an att() function is known and unexpected, the declaration is ingored
+ When the type of an attr() function is known and unexpected, the declaration is ignored
" />
<link
diff --git a/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html b/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html
index 69766c0e11a..797700ddacf 100644
--- a/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html
+++ b/tests/wpt/web-platform-tests/css/css-values/attr-invalid-type-002.html
@@ -7,7 +7,7 @@
Attribute references (types)
</title>
<meta name="assert" content="
- When the type of an att() function is known and unexpected, the declaration is ignored
+ When the type of an attr() function is known and unexpected, the declaration is ignored
" />
<link
diff --git a/tests/wpt/web-platform-tests/css/css-values/calc-in-calc.html b/tests/wpt/web-platform-tests/css/css-values/calc-in-calc.html
index 3e035fecfdc..51a1ae59a0f 100644
--- a/tests/wpt/web-platform-tests/css/css-values/calc-in-calc.html
+++ b/tests/wpt/web-platform-tests/css/css-values/calc-in-calc.html
@@ -29,7 +29,7 @@
html { background: red; overflow: hidden; }
#outer { position: absolute; top: 0px; left: 0px; background: green; width: 100%; }
- #outer { height: calc(calc(100%));
+ #outer { height: calc(calc(100%)); }
</style>
diff --git a/tests/wpt/web-platform-tests/css/css-variables/OWNERS b/tests/wpt/web-platform-tests/css/css-variables/OWNERS
index 0d2ecd47955..0fbb0e97b61 100644
--- a/tests/wpt/web-platform-tests/css/css-variables/OWNERS
+++ b/tests/wpt/web-platform-tests/css/css-variables/OWNERS
@@ -1,4 +1,3 @@
@dbaron
@svgeesus
-@SimonSapin
@tabatkins
diff --git a/tests/wpt/web-platform-tests/css/css-variables/variable-cssText.html b/tests/wpt/web-platform-tests/css/css-variables/variable-cssText.html
index fd70ce9ea0f..b61d29746f0 100644
--- a/tests/wpt/web-platform-tests/css/css-variables/variable-cssText.html
+++ b/tests/wpt/web-platform-tests/css/css-variables/variable-cssText.html
@@ -28,15 +28,15 @@
"use strict";
var testcases = [
- { element: "target1", expectedCssText: "--var: var1;" },
+ { element: "target1", expectedCssText: "--var: var1;" },
{ element: "target2", expectedCssText: "margin: var(--prop);" },
{ element: "target3", expectedCssText: "background: var(--prop);" },
{ element: "target4", expectedCssText: "margin: var(--prop) !important;" },
{ element: "target5", expectedCssText: "background: var(--prop) !important;" },
{ element: "target6", expectedCssText: "background: green;" },
{ element: "target7", expectedCssText: "background: var(--prop);" },
- { element: "target8", expectedCssText: "color: var(--prop);" },
- { element: "target9", expectedCssText: "margin-top: 10px; margin-right: ; margin-bottom: ; margin-left: ;" },
+ { element: "target8", expectedCssText: "color: var(--prop);" },
+ { element: "target9", expectedCssText: "margin-right: ; margin-bottom: ; margin-left: ; margin-top: 10px;" },
{ element: "target10", expectedCssText: "" }
];
@@ -45,7 +45,7 @@
var div = document.getElementById(testcase.element);
var actualCssText = div.style.cssText;
assert_equals(actualCssText, testcase.expectedCssText);
- }, testcase.element + " " + testcase.propertyName);
+ }, testcase.element);
});
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-variables/variable-substitution-shadow-properties.html b/tests/wpt/web-platform-tests/css/css-variables/variable-substitution-shadow-properties.html
index 58a858ecf58..bd7b5ef334d 100644
--- a/tests/wpt/web-platform-tests/css/css-variables/variable-substitution-shadow-properties.html
+++ b/tests/wpt/web-platform-tests/css/css-variables/variable-substitution-shadow-properties.html
@@ -29,11 +29,11 @@
let templates = [
{
testName:"box-shadow",
- expectedValue:"1px 1px 1px 1px rgb(0,128,0)",
+ expectedValue:"rgb(0, 128, 0) 1px 1px 1px 1px",
},
{
testName:"text-shadow",
- expectedValue:"1px 1px 1px rgb(0,128,0)",
+ expectedValue:"rgb(0, 128, 0) 1px 1px 1px",
},
];
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/cssom-getBoxQuads-001.html b/tests/wpt/web-platform-tests/css/cssom-view/cssom-getBoxQuads-001.html
new file mode 100644
index 00000000000..813c245c7be
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/cssom-getBoxQuads-001.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSSOM View - getBoxQuads() returns proper border and margin boxes for block and flex</title>
+ <link rel="help" href="https://drafts.csswg.org/cssom-view/#the-geometryutils-interface">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+
+ <style>
+ .container {
+ width: 100px;
+ height: 50px;
+ background-color: gray;
+ }
+ span {
+ display: block;
+ background: gold;
+ height: 4px;
+ width: 14px;
+ margin: auto;
+ padding: 0px;
+ border: 3px solid blue;
+ }
+ </style>
+ </head>
+ <body>
+ <div class="container">
+ <span id="block-block"></span>
+ </div>
+
+ <div class="container" style="display:flex">
+ <span id="flex-block"></span>
+ </div>
+
+ <script>
+ test(function() {
+ let bb = document.getElementById("block-block");
+ assert_equals(bb.getBoxQuads({box: "border"})[0].bounds.width, 20, "Block layout border box is expected width.");
+ assert_equals(bb.getBoxQuads({box: "margin"})[0].bounds.width, 100, "Block layout margin box is expected width.");
+
+ // For containers that expand items to fill block-axis space, measure the box heights also.
+ let fb = document.getElementById("flex-block");
+ assert_equals(fb.getBoxQuads({box: "border"})[0].bounds.width, 20, "Flex layout border box is expected width.");
+ assert_equals(fb.getBoxQuads({box: "margin"})[0].bounds.width, 100, "Flex layout margin box is expected width.");
+
+ assert_equals(fb.getBoxQuads({box: "border"})[0].bounds.height, 10, "Flex layout border box is expected height.");
+ assert_equals(fb.getBoxQuads({box: "margin"})[0].bounds.height, 50, "Flex layout margin box is expected height.");
+ });
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/interfaces.html b/tests/wpt/web-platform-tests/css/cssom-view/interfaces.html
index c6e3662334e..366d275417e 100644
--- a/tests/wpt/web-platform-tests/css/cssom-view/interfaces.html
+++ b/tests/wpt/web-platform-tests/css/cssom-view/interfaces.html
@@ -17,11 +17,18 @@
<script>
"use strict";
-function doTest([html, dom, cssom, geometry, cssom_view]) {
+function doTest([html, dom, uievents, cssom, geometry, cssom_view]) {
var idlArray = new IdlArray();
var svg = "interface SVGElement : Element {};";
idlArray.add_untested_idls(html + dom + svg + cssom + geometry);
+ idlArray.add_untested_idls(uievents, { only: [
+ 'UIEvent',
+ 'UIEventInit',
+ 'MouseEvent',
+ 'MouseEventInit',
+ 'EventModifierInit']
+ });
idlArray.add_idls(cssom_view);
idlArray.add_objects({
@@ -57,6 +64,7 @@ promise_test(function() {
// Have to wait for onload
return Promise.all([fetchData("/interfaces/html.idl"),
fetchData("/interfaces/dom.idl"),
+ fetchData("/interfaces/uievents.idl"),
fetchData("/interfaces/cssom.idl"),
fetchData("/interfaces/geometry.idl"),
fetchData("/interfaces/cssom-view.idl"),
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-shadow.html b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-shadow.html
index 6d44df6e4ea..eb1bce37d2c 100644
--- a/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-shadow.html
+++ b/tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-shadow.html
@@ -14,7 +14,7 @@ add_completion_callback(() => document.getElementById("container").remove());
test(t => {
var shadow = document.getElementById("shadow");
- var shadowRoot = shadow.createShadowRoot();
+ var shadowRoot = shadow.attachShadow({ mode: "open" });
var shadowDiv = document.createElement("div");
shadowDiv.style.height = "200px";
shadowDiv.style.width = "200px";
@@ -30,4 +30,4 @@ test(t => {
assert_approx_equals(window.scrollX, expected_x, 1);
assert_approx_equals(window.scrollY, expected_y, 1);
}, "scrollIntoView should behave correctly if applies to shadow dom elements");
-</script> \ No newline at end of file
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleRule-set-selectorText-namespace.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleRule-set-selectorText-namespace.html
new file mode 100644
index 00000000000..4da0a333e93
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleRule-set-selectorText-namespace.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CSSOM StyleRule selectorText property setter with namespaces</title>
+<link rel="help" href="https://drafts.csswg.org/cssom-1/#dom-cssstylerule-selectortext">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+
+<style type="text/css" id="styleElement">
+@namespace url(http://www.w3.org/1999/xhtml);
+@namespace svg url(http://www.w3.org/2000/svg);
+
+svg|*.style0 { background-color: rgb(0, 0, 255) !important; }
+svg|*.style1 { background-color: rgb(255, 0, 255); }
+</style>
+
+<span>
+ <p></p>
+
+ <svg height="30" width="200" id="container" class="style1" lang="zh-CN" language segment="42 43">
+ <text x="0" y="15">SVG text</text>
+ </svg>
+</span>
+
+<script>
+ var styleSheet = document.getElementById("styleElement").sheet;
+ var rule = styleSheet.cssRules[2];
+
+ var divContainerStyle = getComputedStyle(document.getElementById("container"));
+
+ const originalStyleSelector = "svg|*.style0";
+
+ var assertColors = function(selectorMatches) {
+ assert_equals(divContainerStyle.getPropertyValue('background-color'), selectorMatches ? "rgb(0, 0, 255)" : "rgb(255, 0, 255)")
+ };
+
+ [
+ {selector: ".style1", isMatch: false, },
+ {selector: "svg|*.style1 ", isMatch: true, normalizedSelector: "svg|*.style1"},
+ {selector: "*|*.style1 ", isMatch: true, normalizedSelector: "*|*.style1"},
+ {selector: " *.style1 ", isMatch: false, normalizedSelector: ".style1"},
+ {selector: "p", isMatch: false},
+ ].forEach(function(testCase) {
+ test(function() {
+ // Check if starting with the default value.
+ assert_equals(rule.selectorText, originalStyleSelector);
+
+ this.add_cleanup(function() { rule.selectorText = originalStyleSelector; });
+
+ assertColors(false);
+
+ rule.selectorText = testCase.selector;
+
+ var expectedSelector = testCase.normalizedSelector ? testCase.normalizedSelector : testCase.selector;
+
+ assert_equals(rule.selectorText, expectedSelector);
+
+ assertColors(testCase.isMatch);
+ }, "CSSStyleRule: selectorText value: |" + testCase.selector + "| isMatch: " + testCase.isMatch);
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSStyleRule-set-selectorText.html b/tests/wpt/web-platform-tests/css/cssom/CSSStyleRule-set-selectorText.html
new file mode 100644
index 00000000000..e29db52ec63
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/CSSStyleRule-set-selectorText.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>CSSOM StyleRule selectorText property setter</title>
+<link rel="help" href="https://drafts.csswg.org/cssom-1/#dom-cssstylerule-selectortext">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+
+<style type="text/css" id="styleElement">
+ .style0 { background-color: rgb(0, 0, 255) !important; }
+ .style1 { background-color: rgb(255, 0, 255); }
+</style>
+
+<span>
+ <p></p>
+ <div id="container" class="style1" lang="zh-CN" language segment="42 43">
+ </div>
+</span>
+
+<script>
+ var styleSheet = document.getElementById("styleElement").sheet;
+ var rule = styleSheet.cssRules[0];
+
+ var divContainerStyle = getComputedStyle(document.getElementById("container"));
+
+ const originalStyleSelector = ".style0";
+
+ var assertColors = function(selectorMatches) {
+ assert_equals(divContainerStyle.backgroundColor, selectorMatches ? "rgb(0, 0, 255)" : "rgb(255, 0, 255)")
+ };
+
+ test(function() {
+ assert_equals(typeof rule.selectorText, "string");
+ assert_equals(rule.selectorText, originalStyleSelector);
+ }, "CSSStyleRule: Can read selectorText value.");
+
+ [ // Invalid selector values.
+ "",
+ " ",
+ "!!",
+ "123",
+ "-",
+ "$",
+ ":",
+ "::",
+ ":::",
+ "::gibberish",
+ ":gibberish",
+ ".",
+ "#",
+ "[]",
+ "[",
+ "()",
+ "(",
+ "{}",
+ "{",
+ ].forEach(function(selector) {
+ test(function() {
+ assert_equals(rule.selectorText, originalStyleSelector);
+
+ this.add_cleanup(function() { rule.selectorText = originalStyleSelector; });
+
+ rule.selectorText = selector;
+
+ assert_equals(rule.selectorText, originalStyleSelector);
+ }, "CSSStyleRule: Invalid CSS selector: " + selector);
+ });
+
+
+ [ // Valid selector values.
+ {selector: "#container", isMatch: true},
+ {selector: "#container ", isMatch: true, normalizedSelector: "#container"},
+ {selector: " #container ", isMatch: true, normalizedSelector: "#container"},
+ {selector: ".style1", isMatch: true},
+ {selector: "div.style1", isMatch: true},
+ {selector: "div:not(#non-existing-id)", isMatch: true},
+ {selector: "div", isMatch: true},
+ {selector: "*", isMatch: true},
+
+ {selector: "#no-match", isMatch: false},
+ {selector: "ÇĞıİ", isMatch: false},
+ {selector: "🤓", isMatch: false},
+
+ {selector: "[language]", isMatch: true},
+ {selector: "[language-no]", isMatch: false},
+ {selector: "[lang=\"zh-CN\"]", isMatch: true},
+ {selector: "[lang=\"ab-CD\"]", isMatch: false},
+ {selector: "[segment~=\"43\"]", isMatch: true},
+ {selector: "[segment~=\"42\"]", isMatch: true},
+ {selector: "[lang|=\"zh\"]", isMatch: true},
+ {selector: "[lang|=\"zh-CN\"]", isMatch: true},
+ {selector: "[lang|=\"ab\"]", isMatch: false},
+ {selector: "[lang|=\"z\"]", isMatch: false},
+ {selector: "[lang^=\"z\"]", isMatch: true},
+ {selector: "[lang^=\"ab\"]", isMatch: false},
+ {selector: "[segment$=\"43\"]", isMatch: true},
+ {selector: "[segment$=\"3\"]", isMatch: true},
+ {selector: "[segment$=\"42\"]", isMatch: false},
+ {selector: "[lang*=\"-\"]", isMatch: true},
+ {selector: "[lang*=\"h-\"]", isMatch: true},
+ {selector: "[lang*=\"ab\"]", isMatch: false},
+
+ {selector: "*|div", isMatch: true, normalizedSelector: "div"},
+ {selector: "|div", isMatch: false},
+ {selector: "*|a", isMatch: false, normalizedSelector: "a"},
+ {selector: "*|*", isMatch: true, normalizedSelector: "*"},
+ {selector: "[*|lang]", isMatch: true, normalizedSelector: "[*|lang]"},
+ {selector: "[|lang]", isMatch: true, normalizedSelector: "[lang]"},
+
+ {selector: ":active", isMatch: false},
+ {selector: ":not(:active)", isMatch: true},
+ {selector: "*:not(:active)", isMatch: true, normalizedSelector: ":not(:active)"},
+ {selector: "div:not(:active)", isMatch: true},
+ {selector: "div:active", isMatch: false},
+
+ {selector: "span div", isMatch: true},
+ {selector: "span div ", isMatch: true, normalizedSelector: "span div"},
+ {selector: "span > div", isMatch: true},
+ {selector: "div div", isMatch: false},
+ {selector: "div > div", isMatch: false},
+ {selector: "p + div", isMatch: true},
+ {selector: "span + div", isMatch: false},
+ {selector: "p ~ div", isMatch: true},
+ {selector: "span ~ div", isMatch: false},
+
+ {selector: ":lang(zh-CN)", isMatch: true},
+ {selector: ":lang(zh)", isMatch: true},
+ {selector: ":lang(tr-AZ)", isMatch: false},
+
+ {selector: "::after", isMatch: false, normalizedSelector: "::after"},
+ {selector: ":after", isMatch: false, normalizedSelector: "::after"},
+ {selector: "::before", isMatch: false, normalizedSelector: "::before"},
+ {selector: ":before", isMatch: false, normalizedSelector: "::before"},
+ {selector: "::first-letter", isMatch: false, normalizedSelector: "::first-letter"},
+ {selector: ":first-letter", isMatch: false, normalizedSelector: "::first-letter"},
+ {selector: "::first-line", isMatch: false, normalizedSelector: "::first-line"},
+ {selector: ":first-line", isMatch: false, normalizedSelector: "::first-line"},
+
+ {selector: "div:focus:not([lang=\"zh-CN\"])", isMatch: false},
+ {selector: "div[lang=\"zh-CN\"]:not(:focus)", isMatch: true},
+ ].forEach(function(testCase) {
+ test(function() {
+ // Check if starting with the default value.
+ assert_equals(rule.selectorText, originalStyleSelector);
+
+ this.add_cleanup(function() { rule.selectorText = originalStyleSelector; });
+
+ assertColors(false);
+
+ rule.selectorText = testCase.selector;
+
+ var expectedSelector = testCase.normalizedSelector ? testCase.normalizedSelector : testCase.selector;
+
+ assert_equals(rule.selectorText, expectedSelector);
+
+ assertColors(testCase.isMatch);
+ }, "CSSStyleRule: selectorText value: |" + testCase.selector + "| isMatch: " + testCase.isMatch);
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/css-style-attribute-modifications.html b/tests/wpt/web-platform-tests/css/cssom/css-style-attribute-modifications.html
index 6177c336d76..524a5adca3c 100644
--- a/tests/wpt/web-platform-tests/css/cssom/css-style-attribute-modifications.html
+++ b/tests/wpt/web-platform-tests/css/cssom/css-style-attribute-modifications.html
@@ -9,5 +9,8 @@ test(function() {
var el = document.getElementById("test");
el.style.color = "";
assert_true(el.hasAttribute("style"));
+
+ el.removeAttribute("style");
+ assert_false(el.hasAttribute("style"));
}, "Mutating the style declaration doesn't remove the style attribute");
</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/css-style-reparse.html b/tests/wpt/web-platform-tests/css/cssom/css-style-reparse.html
new file mode 100644
index 00000000000..d5153cf2679
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/css-style-reparse.html
@@ -0,0 +1,59 @@
+<!doctype html>
+<html>
+<head>
+ <meta charset=utf-8>
+ <title>CSS Test: DOM modification re-parsing test</title>
+ <link rel="help" href="https://drafts.csswg.org/cssom/">
+ <link rel="help" href="http://www.w3.org/TR/cssom-1/#the-cssrule-interface">
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <style>div { min-width: 0px; }</style>
+ <style id="style-element"></style>
+</head>
+<body>
+<div id="test-div"></div>
+<script type="text/javascript">
+ var style = document.getElementById("style-element");
+ var div = document.getElementById("test-div");
+
+ function testProperty(prop) {
+ // Assigning an empty string to textContent or innerHTML should trigger a
+ // reparse only if the element is not empty.
+ style.sheet.insertRule("#test-div { min-width: 42px; }");
+ assert_equals(getComputedStyle(div).minWidth, "42px");
+
+ style[prop] = "";
+ assert_equals(getComputedStyle(div).minWidth, "42px");
+
+ style[prop] = " ";
+ assert_equals(getComputedStyle(div).minWidth, "0px");
+
+ style.sheet.insertRule("#test-div { min-width: 42px; }");
+ assert_equals(getComputedStyle(div).minWidth, "42px");
+
+ style[prop] = "";
+ assert_equals(getComputedStyle(div).minWidth, "0px");
+
+ style.sheet.insertRule("#test-div { min-width: 42px; }");
+ assert_equals(getComputedStyle(div).minWidth, "42px");
+
+ style.appendChild(document.createTextNode(""));
+ assert_equals(getComputedStyle(div).minWidth, "0px");
+
+ style.sheet.insertRule("#test-div { min-width: 42px; }");
+ assert_equals(getComputedStyle(div).minWidth, "42px");
+
+ style[prop] = "";
+ assert_equals(getComputedStyle(div).minWidth, "0px");
+ }
+
+ test(function() {
+ testProperty("textContent");
+ }, "style.textContent modification");
+
+ test(function() {
+ testProperty("innerHTML");
+ }, "style.innerHTML modification");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-001.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-001.html
new file mode 100644
index 00000000000..5bd8456ed70
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-001.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSSOM: CSSStyleDeclaration.setPropertyValue queues a mutation record when not actually mutated</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setpropertyvalue">
+<link rel="help" href="https://drafts.csswg.org/cssom/#update-style-attribute-for">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+ document.documentElement.style.top = "0px";
+
+ let test = async_test("CSSStyleDeclaration.setPropertyValue queues a mutation record, even if not mutated");
+ let m = new MutationObserver(function(r) {
+ assert_equals(r.length, 1);
+ test.done();
+ });
+
+ m.observe(document.documentElement, { attributes: true });
+ document.documentElement.style.top = "0px";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-002.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-002.html
new file mode 100644
index 00000000000..1cdb41a1814
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-002.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSSOM: CSSStyleDeclaration.setPropertyValue doesn't queue a mutation record for invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setpropertyvalue">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+ let test = async_test("CSSStyleDeclaration.setPropertyValue doesn't queue a mutation record when setting invalid values");
+ let m = new MutationObserver(test.unreached_func("shouldn't queue a mutation record"));
+ m.observe(document.documentElement, { attributes: true });
+
+ document.documentElement.style.width = "-100px";
+ requestAnimationFrame(() => test.done());
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-003.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-003.html
new file mode 100644
index 00000000000..7a99dfc645d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-003.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSSOM: CSSStyleDeclaration.removeProperty doesn't queue a mutation record when not actually removed, invoked from setPropertyValue</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setpropertyvalue">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+ let test = async_test("CSSStyleDeclaration.removeProperty doesn't queue a mutation record when not actually removed, invoked from setPropertyValue");
+ document.documentElement.style.top = "0";
+ let m = new MutationObserver(test.unreached_func("shouldn't queue a mutation record"));
+ m.observe(document.documentElement, { attributes: true });
+
+ document.documentElement.style.width = "";
+ requestAnimationFrame(() => test.done());
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-004.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-004.html
new file mode 100644
index 00000000000..55956dfdaae
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-mutationrecord-004.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSSOM: CSSStyleDeclaration.removeProperty doesn't queue a mutation record when not actually removed</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setpropertyvalue">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+ let test = async_test("CSSStyleDeclaration.removeProperty doesn't queue a mutation record when not actually removed");
+ document.documentElement.style.top = "0";
+ let m = new MutationObserver(test.unreached_func("shouldn't queue a mutation record"));
+ m.observe(document.documentElement, { attributes: true });
+
+ document.documentElement.style.removeProperty("width");
+ requestAnimationFrame(() => test.done());
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-order.html b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-order.html
new file mode 100644
index 00000000000..702b38fef06
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/cssstyledeclaration-setter-order.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<title>CSSOM test: order of declarations after setting via CSSOM</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#set-a-css-declaration-value">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+ function generateCSSDeclBlock(props) {
+ let elem = document.createElement("div");
+ let cssText = props.map(([prop, value]) => `${prop}: ${value};`).join(" ");
+ elem.setAttribute("style", cssText);
+ return elem.style;
+ }
+ function checkOrder(block, props, msg) {
+ assert_array_equals(Array.from(block), props, `Property order should match ${msg}`);
+ }
+ function arrayWithItemsAtEnd(array, items) {
+ let result = array.filter(item => !items.includes(item));
+ return result.concat(items);
+ }
+
+ const SUBPROPS = {
+ "margin": ["margin-top", "margin-right", "margin-bottom", "margin-left"],
+ "padding": ["padding-top", "padding-right", "padding-bottom", "padding-left"],
+ };
+
+ test(function() {
+ let block = generateCSSDeclBlock([
+ ["top", "1px"],
+ ["bottom", "2px"],
+ ["left", "3px"],
+ ["right", "4px"],
+ ]);
+ let expectedOrder = ["top", "bottom", "left", "right"];
+ checkOrder(block, expectedOrder, "in initial block");
+
+ block.setProperty("top", "5px");
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["top"]);
+ checkOrder(block, expectedOrder, "after setting existing property");
+
+ block.setProperty("bottom", "2px");
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["bottom"]);
+ checkOrder(block, expectedOrder, "after setting existing property with identical value");
+ }, "setProperty with existing longhand should change order");
+
+ test(function() {
+ let block = generateCSSDeclBlock([
+ ["top", "1px"],
+ ["bottom", "2px"],
+ ["left", "3px"],
+ ["right", "4px"],
+ ]);
+ let expectedOrder = ["top", "bottom", "left", "right"];
+ checkOrder(block, expectedOrder, "in initial block");
+
+ block.top = "5px";
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["top"]);
+ checkOrder(block, expectedOrder, "after setting existing property");
+
+ block.bottom = "2px";
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["bottom"]);
+ checkOrder(block, expectedOrder, "after setting existing property with identical value");
+ }, "invoke property setter with existing longhand should change order");
+
+ test(function() {
+ let block = generateCSSDeclBlock([
+ ["margin", "1px"],
+ ["top", "2px"],
+ ["padding", "3px"],
+ ]);
+ let expectedOrder = SUBPROPS["margin"].concat(["top"]).concat(SUBPROPS["padding"]);
+ checkOrder(block, expectedOrder, "in initial block");
+
+ block.setProperty("margin", "4px");
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, SUBPROPS["margin"]);
+ checkOrder(block, expectedOrder, "after setting an existing shorthand");
+
+ block.setProperty("padding", "3px");
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, SUBPROPS["padding"]);
+ checkOrder(block, expectedOrder, "after setting an existing shorthand with identical value");
+
+ block.setProperty("margin-bottom", "5px");
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["margin-bottom"]);
+ checkOrder(block, expectedOrder, "after setting a longhand in an existing shorthand");
+ }, "setProperty with existing shorthand should change order");
+
+ test(function() {
+ let block = generateCSSDeclBlock([
+ ["margin", "1px"],
+ ["top", "2px"],
+ ["padding", "3px"],
+ ]);
+ let expectedOrder = SUBPROPS["margin"].concat(["top"]).concat(SUBPROPS["padding"]);
+ checkOrder(block, expectedOrder, "in initial block");
+
+ block.margin = "4px";
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, SUBPROPS["margin"]);
+ checkOrder(block, expectedOrder, "after setting an existing shorthand");
+
+ block.padding = "3px";
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, SUBPROPS["padding"]);
+ checkOrder(block, expectedOrder, "after setting an existing shorthand with identical value");
+
+ block.marginBottom = "5px";
+ expectedOrder = arrayWithItemsAtEnd(expectedOrder, ["margin-bottom"]);
+ checkOrder(block, expectedOrder, "after setting a longhand in an existing shorthand");
+ }, "invoke property setter with existing shorthand should change order");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/font-shorthand-serialization.html b/tests/wpt/web-platform-tests/css/cssom/font-shorthand-serialization.html
new file mode 100644
index 00000000000..a56c204876f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/font-shorthand-serialization.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<html>
+<meta charset="utf-8">
+<title>Serialization of font shorthand</title>
+<link rel="help" href="https://drafts.csswg.org/cssom-1/#serialize-a-css-declaration-block">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="target" style="font: 10px/1 Ahem;"></div>
+<script>
+ test(function() {
+ var target = document.getElementById('target');
+ assert_equals(target.style.cssText, 'font: 10px/1 Ahem;');
+ assert_equals(target.style.font, '10px/1 Ahem');
+ }, "The font shorthand should be serialized just like any other shorthand.");
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html
new file mode 100644
index 00000000000..3b59ccb69c1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-detached-subtree.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSSOM: getComputedStyle returns no style for elements not in the tree</title>
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle">
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id="host">
+ <div id="non-slotted">
+ <div id="non-slotted-descendant"></div>
+ </div>
+</div>
+<iframe srcdoc="<html></html>" style="display: none"></iframe>
+<script>
+function testNoComputedStyle(element, description) {
+ test(function() {
+ assert_true(!!element);
+ let style = getComputedStyle(element);
+ assert_true(!!style);
+ assert_equals(style.length, 0);
+ assert_equals(style.color, "");
+ }, `getComputedStyle returns no style for ${description}`);
+}
+
+let detached = document.createElement('div');
+testNoComputedStyle(detached, "detached element");
+
+testNoComputedStyle(document.querySelector('iframe').contentDocument.documentElement,
+ "element in non-rendered iframe (display: none)");
+
+host.attachShadow({ mode: "open" });
+testNoComputedStyle(document.getElementById('non-slotted'),
+ "element outside the flat tree");
+
+testNoComputedStyle(document.getElementById('non-slotted-descendant'),
+ "descendant outside the flat tree");
+
+let shadowRoot = detached.attachShadow({ mode: "open" });
+shadowRoot.innerHTML = `
+ <div id="detached-shadow-tree-descendant"></div>
+`;
+testNoComputedStyle(shadowRoot.getElementById('detached-shadow-tree-descendant'),
+ "shadow tree outside of flattened tree");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-dynamic-subdoc.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-dynamic-subdoc.html
index 13bd694d97d..aa49dc33ef7 100644
--- a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-dynamic-subdoc.html
+++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-dynamic-subdoc.html
@@ -5,10 +5,6 @@
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
-<!--
- NOTE: The way this test is written doesn't match the spec, but matches all
- implementations, see https://github.com/w3c/csswg-drafts/issues/2403
--->
<iframe id="frm" style="width: 100px; height: 100px"></iframe>
<script>
test(function() {
diff --git a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html
index ec7a863a94c..f5a637a7d31 100644
--- a/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html
+++ b/tests/wpt/web-platform-tests/css/cssom/getComputedStyle-pseudo.html
@@ -109,4 +109,9 @@ test(function() {
"display: contents in " + pseudo + " should reflect other non-inherited properties in CSSOM");
});
}, "display: contents on pseudo-elements");
+test(function() {
+ var div = document.getElementById('test');
+ assert_throws(new TypeError(), () => getComputedStyle(div, "totallynotapseudo"),
+ "getComputedStyle with an unknown pseudo-element throws");
+}, "Unknown pseudo-elements throw");
</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/index-001.html b/tests/wpt/web-platform-tests/css/cssom/index-001.html
deleted file mode 100644
index ca53e503297..00000000000
--- a/tests/wpt/web-platform-tests/css/cssom/index-001.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!doctype html>
-<head>
- <title>CSS OM: CSS Values</title>
- <link rel="author" title="Divya Manian" href="mailto:manian@adobe.com">
- <link rel="help" href="http://www.w3.org/TR/cssom-1/#css-values">
- <meta name="flags" content="dom">
- <meta name="assert" content="The style value should be serialized to margin: 20px;">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-</head>
-<body>
- <div id="cssomtestElm"></div>
- <div id="log"></div>
- <script>
- var testElm = document.getElementById('cssomtestElm');
- // Set the transform
- document.getElementById('cssomtestElm').style.margin = "20px 20px 20px 20px";
-
- // Verify that the transform was set as expected
- test(function() {assert_equals(
- document.getElementById('cssomtestElm').style.cssText, //Actual
- "margin: 20px;", //Expected
- "Margin should be serialized as 'margin: 20px;'")}, //Description
- "margin_20px_20px"); //name
- </script>
- </body>
- </html>
-
diff --git a/tests/wpt/web-platform-tests/css/cssom/index-002.html b/tests/wpt/web-platform-tests/css/cssom/index-002.html
deleted file mode 100644
index 29ec3a90a11..00000000000
--- a/tests/wpt/web-platform-tests/css/cssom/index-002.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!doctype html>
-<head>
- <title>CSS OM: CSS Values</title>
- <link rel="author" title="Divya Manian" href="mailto:manian@adobe.com">
- <link rel="help" href="http://www.w3.org/TR/cssom-1/#css-values">
- <meta name="flags" content="dom">
- <meta name="assert" content="Testing Serialization of Shorthand Values">
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
-</head>
-<body>
- <div id="cssomtestElm"></div>
- <div id="log"></div>
- <script>
- var tests = {
- 'border': [
- ['border: 1px; border-top: 1px;', 'border: 1px;'],
- ['border: 1px solid red;', 'border: 1px solid red;'],
- ['border: 1px red;', 'border: 1px red;'],
- ['border: red;', 'border: red;'],
- ['border-top: 1px; border-right: 1px; border-bottom: 1px; border-left: 1px;', 'border: 1px;', ' (#2)'],
- ['border-top: 1px; border-right: 2px; border-bottom: 3px; border-left: 4px;', 'border-width: 1px 2px 3px 4px;'],
- ['border: 1px; border-top: 2px;', 'border-width: 2px 1px 1px;'],
- ['border: 1px; border-top: 1px !important;',
- 'border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-width: 1px !important;'],
-
- ['border: 1px; border-top-color: red;', 'border-width: 1px; border-top-color: red;'],
- ['border: solid; border-style: dotted', 'border: dotted;'],
- ['border-width: 1px;', 'border-width: 1px;']
- ],
-
- 'overflow': [
- ['overflow-x: scroll; overflow-y: hidden;', 'overflow: scroll hidden;'],
- ['overflow-x: scroll; overflow-y: scroll;', 'overflow: scroll;']
- ],
- 'outline': [
- ['outline-width: 2px; outline-style: dotted; outline-color: blue;', 'outline: blue dotted 2px;']
- ],
- 'margin': [
- ['margin-top: 1px; margin-right: 2px; margin-bottom: 3px; margin-left: 4px;', 'margin: 1px 2px 3px 4px;']
- ],
- 'list': [
- ['list-style-type: circle; list-style-position: inside; list-style-image: initial;', 'list-style: circle inside;'],
- ['list-style-type: lower-alpha;', 'list-style-type: lower-alpha;']
- ],
- 'font-family': [
- ['font-family: sans-serif; line-height: 2em; font-size: 3em; font-style: italic; font-weight: bold;',
- 'font-family: sans-serif; line-height: 2em; font-size: 3em; font-style: italic; font-weight: bold;']
- ],
- 'padding': [
- ['padding-top: 1px; padding-right: 2px; padding-bottom: 3px; padding-left: 4px;', 'padding: 1px 2px 3px 4px;'],
- ]
- }
-
- var results = {};
-
- var testElm = document.getElementById('cssomtestElm');
- for (var test in tests) {
- if(tests.hasOwnProperty(test)) {
- results[test] = [];
- var propertyTests = tests[test];
-
- for (i = 0; i < propertyTests.length; i++) {
- document.getElementById('cssomtestElm').setAttribute('style', propertyTests[i][0]);
- var titleSuffix = propertyTests[i][2] || "";
- results[test].push([
- test + ' is expected to be ' + propertyTests[i][1] + titleSuffix,
- document.getElementById('cssomtestElm').style.cssText,
- propertyTests[i][1]
- ]);
- }
-
- generate_tests(assert_equals, results[test]);
- }
- }
-
- </script>
- </body>
- </html>
diff --git a/tests/wpt/web-platform-tests/css/cssom/interfaces.html b/tests/wpt/web-platform-tests/css/cssom/interfaces.html
index e289c5a3496..08d04c076d9 100644
--- a/tests/wpt/web-platform-tests/css/cssom/interfaces.html
+++ b/tests/wpt/web-platform-tests/css/cssom/interfaces.html
@@ -31,7 +31,7 @@ Use a non-empty style attribute to get a non-empty CSSStyleDeclaration.
"use strict";
var style_element, svg_element, xmlss_pi;
-function doTest([html, dom, cssom]) {
+function doTest([html, dom, uievents, cssom]) {
style_element = document.getElementById('styleElement');
svg_element = document.getElementById('svgElement');
xmlss_pi = document.getElementById('xmlssPiIframe').contentDocument.firstChild;
@@ -39,6 +39,13 @@ function doTest([html, dom, cssom]) {
var idlArray = new IdlArray();
var svg = "interface SVGElement : Element {};";
idlArray.add_untested_idls(html + dom + svg);
+ idlArray.add_untested_idls(uievents, { only: [
+ 'UIEvent',
+ 'UIEventInit',
+ 'MouseEvent',
+ 'MouseEventInit',
+ 'EventModifierInit'
+ ]});
idlArray.add_idls(cssom);
idlArray.add_objects({
@@ -81,6 +88,7 @@ promise_test(function() {
// Have to wait for onload
return Promise.all([fetchData("/interfaces/html.idl"),
fetchData("/interfaces/dom.idl"),
+ fetchData("/interfaces/uievents.idl"),
fetchData("/interfaces/cssom.idl"),
waitForLoad()])
.then(doTest);
diff --git a/tests/wpt/web-platform-tests/css/cssom/serialize-variable-reference.html b/tests/wpt/web-platform-tests/css/cssom/serialize-variable-reference.html
index b543bf40de1..2b7e23ba692 100644
--- a/tests/wpt/web-platform-tests/css/cssom/serialize-variable-reference.html
+++ b/tests/wpt/web-platform-tests/css/cssom/serialize-variable-reference.html
@@ -14,23 +14,23 @@
var elem = document.getElementById('longhand-whitespace');
assert_equals(elem.style.cssText, 'font-size: var(--a);');
- }, 'Longhand with variable preserves original serialization: with withespace')
+ }, 'Longhand with variable preserves original serialization: with whitespace')
test(function() {
var elem = document.getElementById('shorthand-whitespace');
assert_equals(elem.style.cssText, 'font: var(--a);');
- }, 'Shorthand with variable preserves original serialization: with withespace')
+ }, 'Shorthand with variable preserves original serialization: with whitespace')
test(function() {
var elem = document.getElementById('longhand');
assert_equals(elem.style.cssText, 'font-size:var(--a);');
- }, 'Longhand with variable preserves original serialization: without withespace')
+ }, 'Longhand with variable preserves original serialization: without whitespace')
test(function() {
var elem = document.getElementById('shorthand');
assert_equals(elem.style.cssText, 'font:var(--a);');
- }, 'Shorthand with variable preserves original serialization: without withespace')
+ }, 'Shorthand with variable preserves original serialization: without whitespace')
</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/shorthand-serialization.html b/tests/wpt/web-platform-tests/css/cssom/shorthand-serialization.html
index 522e181dbf5..2178ba37a95 100644
--- a/tests/wpt/web-platform-tests/css/cssom/shorthand-serialization.html
+++ b/tests/wpt/web-platform-tests/css/cssom/shorthand-serialization.html
@@ -17,7 +17,8 @@
<div id="foo5" style="margin-right: 10px; margin-left: 10px; margin-top: 10px; margin-bottom: 10px!important;">foo</div>
<div id="foo6" style="margin-right: 10px !important; margin-left: 10px !important; margin-top: 10px !important; margin-bottom: 10px!important;">foo</div>
- <div id="foo7" style="background:var(--a);">foo</a>
+ <div id="foo7" style="background:var(--a);">foo</div>
+ <div id="test"></div>
<script>
test(function() {
@@ -50,6 +51,13 @@
assert_equals(elem7.style.background, 'var(--a)');
assert_equals(elem7.style.backgroundPosition, '');
}, "Shorthand serialization with variable and variable from other shorthand.");
+
+ test(function() {
+ var testElem = document.getElementById("test");
+ testElem.style.margin = "20px 20px 20px 20px";
+ assert_equals(testElem.style.margin, "20px");
+ assert_equals(testElem.style.cssText, "margin: 20px;")
+ }, "Shorthand serialization after setting");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom/shorthand-values.html b/tests/wpt/web-platform-tests/css/cssom/shorthand-values.html
new file mode 100644
index 00000000000..eb756b53927
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom/shorthand-values.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<head>
+ <title>CSS OM: CSS Values</title>
+ <link rel="author" title="Divya Manian" href="mailto:manian@adobe.com">
+ <link rel="help" href="https://drafts.csswg.org/cssom/#serialize-a-css-declaration-block">
+ <meta name="flags" content="dom">
+ <meta name="assert" content="Testing Serialization of Shorthand Values">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+ <div id="test"></div>
+ <script>
+ function test_shorthand_serialization(value, expected) {
+ test(function() {
+ const div = document.getElementById("test");
+ div.style.cssText = value;
+ assert_equals(div.style.cssText, expected);
+ }, "The serialization of " + value + " should be canonical.");
+ }
+
+ var tests = {
+ // specified -> expected
+ 'border: 1px; border-top: 1px;': 'border: 1px;',
+ 'border: 1px solid red;': 'border: 1px solid red;',
+ 'border: 1px red;': 'border: 1px red;',
+ 'border: red;': 'border: red;',
+ 'border-top: 1px; border-right: 1px; border-bottom: 1px; border-left: 1px;': 'border: 1px;',
+ 'border-top: 1px; border-right: 2px; border-bottom: 3px; border-left: 4px;': 'border-width: 1px 2px 3px 4px;',
+ 'border: 1px; border-top: 2px;': 'border-width: 2px 1px 1px;',
+ 'border: 1px; border-top: 1px !important;': 'border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-width: 1px !important;',
+ 'border: 1px; border-top-color: red;': 'border-width: 1px; border-top-color: red;',
+ 'border: solid; border-style: dotted': 'border: dotted;',
+ 'border-width: 1px;': 'border-width: 1px;',
+ 'overflow-x: scroll; overflow-y: hidden;': 'overflow-x: scroll; overflow-y: hidden;',
+ 'overflow-x: scroll; overflow-y: scroll;': 'overflow: scroll;',
+ 'outline-width: 2px; outline-style: dotted; outline-color: blue;': 'outline: blue dotted 2px;',
+ 'margin-top: 1px; margin-right: 2px; margin-bottom: 3px; margin-left: 4px;': 'margin: 1px 2px 3px 4px;',
+ 'list-style-type: circle; list-style-position: inside; list-style-image: initial;': 'list-style: circle inside;',
+ 'list-style-type: lower-alpha;': 'list-style-type: lower-alpha;',
+ 'font-family: sans-serif; line-height: 2em; font-size: 3em; font-style: italic; font-weight: bold;': 'font-family: sans-serif; line-height: 2em; font-size: 3em; font-style: italic; font-weight: bold;',
+ 'padding-top: 1px; padding-right: 2px; padding-bottom: 3px; padding-left: 4px;': 'padding: 1px 2px 3px 4px;'
+ }
+
+ for (let test in tests) {
+ test_shorthand_serialization(test, tests[test]);
+ }
+ </script>
+ </body>
+ </html>
diff --git a/tests/wpt/web-platform-tests/css/filter-effects/interfaces.any.js b/tests/wpt/web-platform-tests/css/filter-effects/interfaces.any.js
new file mode 100644
index 00000000000..86993b1f069
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/filter-effects/interfaces.any.js
@@ -0,0 +1,16 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+// https://drafts.fxtf.org/filter-effects/
+
+promise_test(async () => {
+ const filterEffectsIdl = await fetch('/interfaces/filter-effects.idl').then(r => r.text());
+ const idlArray = new IdlArray();
+ idlArray.add_idls(filterEffectsIdl);
+ idlArray.add_untested_idls('interface SVGElement {};');
+ idlArray.add_untested_idls('interface SVGURIReference {};');
+ idlArray.test();
+ done();
+}, 'Filter effects interfaces.');
diff --git a/tests/wpt/web-platform-tests/css/motion/OWNERS b/tests/wpt/web-platform-tests/css/motion/OWNERS
new file mode 100644
index 00000000000..ac8ec2642dc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/motion/OWNERS
@@ -0,0 +1,3 @@
+@dirkschulze
+@jihyerish
+@ewilligers
diff --git a/tests/wpt/web-platform-tests/css/selectors/child-indexed-pseudo-class.html b/tests/wpt/web-platform-tests/css/selectors/child-indexed-pseudo-class.html
index 06c3094a7f1..2e496d85418 100644
--- a/tests/wpt/web-platform-tests/css/selectors/child-indexed-pseudo-class.html
+++ b/tests/wpt/web-platform-tests/css/selectors/child-indexed-pseudo-class.html
@@ -6,22 +6,31 @@
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
-var check = function(element, selectors) {
+var check = function(element, selectors, qsRoot) {
for (var i = 0; i < selectors.length; ++i) {
var selector = selectors[i][0];
var expected = selectors[i][1];
test(function() {
assert_equals(expected, element.matches(selector));
+
+ if (qsRoot) {
+ assert_equals(expected, element === qsRoot.querySelector(selector));
+ var qsa = qsRoot.querySelectorAll(selector);
+ assert_equals(expected, !!qsa.length && element === qsa[0]);
+ }
}, "Expected " + element.tagName + " element to " +
- (expected ? "match " : "not match ") + selector);
+ (expected ? "match " : "not match ") + selector + " with matches" +
+ (qsRoot ? ", querySelector(), and querySelectorAll()" : ""));
}
}
var rootOfSubtreeSelectors = [
[ ":first-child", true ],
[ ":last-child", true ],
+ [ ":only-child", true ],
[ ":first-of-type", true ],
[ ":last-of-type", true ],
+ [ ":only-of-type", true ],
[ ":nth-child(1)", true ],
[ ":nth-child(n)", true ],
[ ":nth-last-child(1)", true ],
@@ -36,6 +45,11 @@ var rootOfSubtreeSelectors = [
[ ":nth-last-of-type(2)", false],
];
-check(document.documentElement, rootOfSubtreeSelectors);
+check(document.documentElement, rootOfSubtreeSelectors, document);
check(document.createElement('div'), rootOfSubtreeSelectors);
+
+var fragment = document.createDocumentFragment();
+var div = document.createElement('div');
+fragment.appendChild(div);
+check(div, rootOfSubtreeSelectors, fragment);
</script>
diff --git a/tests/wpt/web-platform-tests/css/selectors/resources/blue15x15.png b/tests/wpt/web-platform-tests/css/selectors/resources/blue15x15.png
new file mode 100644
index 00000000000..89de32fdb8a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/resources/blue15x15.png
Binary files differ
diff --git a/tests/wpt/web-platform-tests/css/selectors/selection-image-001-no-selection-noref.html b/tests/wpt/web-platform-tests/css/selectors/selection-image-001-no-selection-noref.html
new file mode 100644
index 00000000000..ad2104bef67
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selection-image-001-no-selection-noref.html
@@ -0,0 +1,7 @@
+<!doctype html>
+<title>CSS Test Reference</title>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1449010">
+<p>
+ Some text <img src="resources/blue15x15.png"> some more.
+</p>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selection-image-001-noref.html b/tests/wpt/web-platform-tests/css/selectors/selection-image-001-noref.html
new file mode 100644
index 00000000000..df3d946ecb3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selection-image-001-noref.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS Test Reference</title>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1449010">
+<p>
+ Some text <img src="resources/blue15x15.png"> some more.
+</p>
+<script>
+onload = () => {
+ getSelection().removeAllRanges();
+ let r = document.createRange();
+ r.selectNode(document.documentElement);
+ getSelection().addRange(r);
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selection-image-001.html b/tests/wpt/web-platform-tests/css/selectors/selection-image-001.html
new file mode 100644
index 00000000000..51a1643c4e5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selection-image-001.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<title>::selection is respected on images</title>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1449010">
+<link rel="mismatch" href="selection-image-001-noref.html">
+<style>
+img::-moz-selection {
+ background: green;
+}
+img::selection {
+ background: green;
+}
+</style>
+<p>
+ Some text <img src="resources/blue15x15.png"> some more.
+</p>
+<script>
+onload = () => {
+ getSelection().removeAllRanges();
+ let r = document.createRange();
+ r.selectNode(document.documentElement);
+ getSelection().addRange(r);
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selection-image-002.html b/tests/wpt/web-platform-tests/css/selectors/selection-image-002.html
new file mode 100644
index 00000000000..72958da2077
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selection-image-002.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>CSS Test: Image and text selection is painted.</title>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1449010">
+<link rel="mismatch" href="selection-image-001-no-selection-noref.html">
+<p>
+ Some text <img src="resources/blue15x15.png"> some more.
+</p>
+<script>
+onload = () => {
+ getSelection().removeAllRanges();
+ let r = document.createRange();
+ r.selectNode(document.documentElement);
+ getSelection().addRange(r);
+}
+</script>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002-ref.html
new file mode 100644
index 00000000000..876e5d6c2cb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002-ref.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>CSS Reftest Reference</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <style>
+ .tealBlock {
+ background: teal;
+ width: 10px;
+ height: 10px;
+ margin-bottom: 5px;
+ }
+ .purpleBlock {
+ background: purple;
+ width: 10px;
+ height: 10px;
+ margin-bottom: 5px;
+ }
+ </style>
+</head>
+<body>
+
+ <div class="purpleBlock"></div>
+ <div class="purpleBlock"></div>
+ <div class="purpleBlock"></div>
+ <div class="purpleBlock"></div>
+
+ <div class="tealBlock"></div>
+ <div class="tealBlock"></div>
+ <div class="tealBlock"></div>
+ <div class="tealBlock"></div>
+
+ <div class="tealBlock"></div>
+ <div class="tealBlock"></div>
+ <div class="tealBlock"></div>
+ <div class="tealBlock"></div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002.html
new file mode 100644
index 00000000000..2bbb5f0474f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-abspos-child-002.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>
+ CSS Test: Test that "flex-basis" doesn't affect layout of abspos flex child
+ </title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#abspos-items">
+ <link rel="match" href="flexbox-abspos-child-001-ref.html">
+ <style>
+ .flex {
+ display: flex;
+ height: 10px;
+ width: 10px;
+ background: purple;
+ margin-bottom: 5px;
+ position: relative;
+ }
+ .flex > * {
+ position: absolute;
+ background: teal;
+ height: 10px;
+ }
+ .sized {
+ width: 10px;
+ }
+ .implied {
+ left: 0;
+ right: 0;
+ }
+ </style>
+</head>
+<body>
+ <!-- In all cases below, flex-basis should have no effect on layout (because
+ it's on an element that is abspos and hence not a flex item). -->
+
+ <!-- Abspos child has auto width (which should end up 0): -->
+ <div class="flex"><div style="flex-basis: 2px"></div></div>
+ <div class="flex"><div style="flex-basis: 100px"></div></div>
+ <div class="flex"><div style="flex-basis: 80%"></div></div>
+ <div class="flex"><div style="flex-basis: content"></div></div>
+
+ <!-- Abspos child has explicit 10px width: -->
+ <div class="flex"><div class="sized" style="flex-basis: 2px"></div></div>
+ <div class="flex"><div class="sized" style="flex-basis: 100px"></div></div>
+ <div class="flex"><div class="sized" style="flex-basis: 80%"></div></div>
+ <div class="flex"><div class="sized" style="flex-basis: content"></div></div>
+
+ <!-- Abspos child has implicit 10px width (implied by auto width and
+ constrained left/right properties): -->
+ <div class="flex"><div class="implied" style="flex-basis: 2px"></div></div>
+ <div class="flex"><div class="implied" style="flex-basis: 100px"></div></div>
+ <div class="flex"><div class="implied" style="flex-basis: 80%"></div></div>
+ <div class="flex"><div class="implied" style="flex-basis: content"></div></div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html
new file mode 100644
index 00000000000..ed0cc575f56
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001-ref.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<style>
+div {
+ width: 100px;
+ height: 100px;
+ background: green;
+}
+</style>
+<p>Test passes if you see a green 100px x 100px square, and no red</p>
+<div></div>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001.html
new file mode 100644
index 00000000000..5bff6146e0e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-001.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test: nested flex containers with height established by 'min-height'</title>
+<link rel="match" href="flexbox-definite-sizes-001-ref.html">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#definite-sizes">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1449326">
+<style>
+div {
+ display: flex;
+}
+
+.item {
+ width: 100px;
+ background: red;
+ align-items: center;
+}
+
+.item span {
+ min-height: 100%;
+ width: 100%;
+ background: green;
+}
+</style>
+<p>Test passes if you see a green 100px x 100px square, and no red</p>
+<div style="min-height: 100px;">
+ <div class="item">
+ <span></span>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-002.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-002.html
new file mode 100644
index 00000000000..126fd5e50c2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-002.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test: nested flex containers with height established by 'min-height'</title>
+<link rel="match" href="flexbox-definite-sizes-001-ref.html">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#definite-sizes">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1449326">
+<style>
+div {
+ display: flex;
+}
+
+.item {
+ width: 100px;
+ background: red;
+ align-items: center;
+ min-height: 100px;
+}
+
+.item span {
+ min-height: 100%;
+ width: 100%;
+ background: green;
+}
+</style>
+<p>Test passes if you see a green 100px x 100px square, and no red</p>
+<div>
+ <div class="item">
+ <span></span>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-003.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-003.html
new file mode 100644
index 00000000000..bc5b0751dbe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-003.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test: nested flex containers with definite max-height</title>
+<link rel="match" href="flexbox-definite-sizes-001-ref.html">
+<link rel="author" href="mailto:dholbert@mozilla.com" title="Daniel Holbert">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#definite-sizes">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1449326">
+<style>
+body { overflow: hidden }
+
+.outerFlex {
+ display: flex;
+ width: 100px;
+ /* Implicit "align-items:stretch" */
+}
+
+.innerFlex {
+ display: flex;
+ width: 100px;
+ background: red;
+
+ /* This reveals if we miscalculate the height of our flex item: */
+ align-items: flex-end;
+}
+
+.block {
+ width: 100px;
+ max-height: 100%;
+ background-color: green;
+}
+</style>
+<p>Test passes if you see a green 100px x 100px square, and no red</p>
+<div class="outerFlex" style="max-height: 100px">
+ <div class="innerFlex">
+ <div class="block"><div style="height:9999px"></div></div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-004.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-004.html
new file mode 100644
index 00000000000..cf54aabe993
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-definite-sizes-004.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Test: nested flex containers with definite max-height</title>
+<link rel="match" href="flexbox-definite-sizes-001-ref.html">
+<link rel="author" href="mailto:dholbert@mozilla.com" title="Daniel Holbert">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#definite-sizes">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1449326">
+<style>
+body { overflow: hidden }
+
+.outerFlex {
+ display: flex;
+ width: 100px;
+ /* Implicit "align-items:stretch" */
+}
+
+.innerFlex {
+ display: flex;
+ width: 100px;
+ background: red;
+
+ /* This reveals if we miscalculate the height of our flex item: */
+ align-items: flex-end;
+}
+
+.block {
+ width: 100px;
+ max-height: 100%;
+ background-color: green;
+}
+</style>
+<p>Test passes if you see a green 100px x 100px square, and no red</p>
+<div class="outerFlex">
+ <div class="innerFlex" style="max-height: 100px">
+ <div class="block"><div style="height:9999px"></div></div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001-ref.html
new file mode 100644
index 00000000000..b5377110201
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001-ref.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Reftest Reference</title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="stylesheet" type="text/css" href="support/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-bottom: 2em;
+ height: 50px;
+ width: 200px;
+ }
+
+ .container > * {
+ flex-shrink: 0;
+ min-width: 0;
+ border: 2px solid teal;
+ }
+
+ .smallText { font: 10px Ahem; }
+ .bigText { font: 20px Ahem; }
+ .spacerChild::before {
+ content: '';
+ display: block;
+ background: brown;
+ height: 10px;
+ width: 10px;
+ }
+ .justPadding {
+ /* Empty div with 5px padding on each side */
+ padding: 5px;
+ background: cyan;
+ }
+ canvas { background: fuchsia }
+ </style>
+</head>
+<body>
+<!-- Flex items have unspecified size properties: -->
+<div class="container">
+ <div class="smallText">a b</div>
+ <div class="bigText">c</div>
+ <div class="spacerChild"></div>
+ <div class="justPadding"></div>
+ <canvas width="20"></canvas>
+</div>
+
+<!-- Various specified main-size values, in testcase
+ (removed here in reference case, because they shouldn't affect sizing): -->
+<div class="container">
+ <div class="smallText">a b</div>
+ <div class="bigText">c</div>
+ <div class="spacerChild"></div>
+ <div class="justPadding"></div>
+ <canvas width="20"></canvas>
+</div>
+
+<!-- Various specified cross-size values (should be honored): -->
+<div class="container">
+ <div class="smallText" style="height: 0px">a b</div>
+ <div class="bigText" style="height: 40px">c</div>
+ <div class="spacerChild" style="height: 20px"></div>
+ <div class="justPadding" style="height: 10px"></div>
+ <canvas width="20" style="height: 8px"></canvas>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001a.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001a.html
new file mode 100644
index 00000000000..4227f68ff17
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001a.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing "flex-basis: content" in a row-oriented flex container
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#propdef-flex-basis">
+ <link rel="match" href="flexbox-flex-basis-content-001-ref.html">
+ <link rel="stylesheet" type="text/css" href="support/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-bottom: 2em;
+ height: 50px;
+ width: 200px;
+ }
+
+ .container > * {
+ /* All flex items have "flex-basis: content" (and zero flex-shrink and
+ min-main-size, to avoid any influence from those). */
+ flex-basis: content;
+ flex-shrink: 0;
+ min-width: 0;
+ border: 2px solid teal;
+ }
+
+ .smallText { font: 10px Ahem; }
+ .bigText { font: 20px Ahem; }
+ .spacerChild::before {
+ content: '';
+ display: block;
+ background: brown;
+ height: 10px;
+ width: 10px;
+ }
+ .justPadding {
+ /* Empty div with 5px padding on each side */
+ padding: 5px;
+ background: cyan;
+ }
+ canvas { background: fuchsia }
+ </style>
+</head>
+<body>
+<!-- Flex items have unspecified size properties: -->
+<div class="container">
+ <div class="smallText">a b</div>
+ <div class="bigText">c</div>
+ <div class="spacerChild"></div>
+ <div class="justPadding"></div>
+ <canvas width="20"></canvas>
+</div>
+
+<!-- Various specified main-size values (should be ignored): -->
+<div class="container">
+ <div class="smallText" style="width: 0px">a b</div>
+ <div class="bigText" style="width: 40px">c</div>
+ <div class="spacerChild" style="width: 20px"></div>
+ <div class="justPadding" style="width: 10px"></div>
+ <canvas width="20" style="width: 8px"></canvas>
+</div>
+
+<!-- Various specified cross-size values (should be honored): -->
+<div class="container">
+ <div class="smallText" style="height: 0px">a b</div>
+ <div class="bigText" style="height: 40px">c</div>
+ <div class="spacerChild" style="height: 20px"></div>
+ <div class="justPadding" style="height: 10px"></div>
+ <canvas width="20" style="height: 8px"></canvas>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001b.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001b.html
new file mode 100644
index 00000000000..489ce65d8f9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-001b.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing "flex-basis: content" (set via the "flex" shorthand)
+ in a row-oriented flex container.
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#propdef-flex-basis">
+ <link rel="match" href="flexbox-flex-basis-content-001-ref.html">
+ <link rel="stylesheet" type="text/css" href="support/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-bottom: 2em;
+ height: 50px;
+ width: 200px;
+ }
+
+ .container > * {
+ /* All flex items have "flex-basis: content" (and zero flex-shrink and
+ min-main-size, to avoid any influence from those). */
+ flex: 0 0 content;
+ min-width: 0;
+ border: 2px solid teal;
+ }
+
+ .smallText { font: 10px Ahem; }
+ .bigText { font: 20px Ahem; }
+ .spacerChild::before {
+ content: '';
+ display: block;
+ background: brown;
+ height: 10px;
+ width: 10px;
+ }
+ .justPadding {
+ /* Empty div with 5px padding on each side */
+ padding: 5px;
+ background: cyan;
+ }
+ canvas { background: fuchsia }
+ </style>
+</head>
+<body>
+<!-- Flex items have unspecified size properties: -->
+<div class="container">
+ <div class="smallText">a b</div>
+ <div class="bigText">c</div>
+ <div class="spacerChild"></div>
+ <div class="justPadding"></div>
+ <canvas width="20"></canvas>
+</div>
+
+<!-- Various specified main-size values (should be ignored): -->
+<div class="container">
+ <div class="smallText" style="width: 0px">a b</div>
+ <div class="bigText" style="width: 40px">c</div>
+ <div class="spacerChild" style="width: 20px"></div>
+ <div class="justPadding" style="width: 10px"></div>
+ <canvas width="20" style="width: 8px"></canvas>
+</div>
+
+<!-- Various specified cross-size values (should be honored): -->
+<div class="container">
+ <div class="smallText" style="height: 0px">a b</div>
+ <div class="bigText" style="height: 40px">c</div>
+ <div class="spacerChild" style="height: 20px"></div>
+ <div class="justPadding" style="height: 10px"></div>
+ <canvas width="20" style="height: 8px"></canvas>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002-ref.html
new file mode 100644
index 00000000000..a7d1bcf77b9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002-ref.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Reftest Reference</title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="stylesheet" type="text/css" href="support/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-right: 2em;
+ width: 50px;
+ height: 200px;
+ float: left;
+ }
+
+ .container > * {
+ flex-shrink: 0;
+ min-height: 0;
+ border: 2px solid teal;
+ }
+
+ .smallText { font: 10px Ahem; }
+ .bigText { font: 20px Ahem; }
+ .spacerChild::before {
+ content: '';
+ display: block;
+ background: brown;
+ height: 10px;
+ width: 10px;
+ }
+ .justPadding {
+ /* Empty div with 5px padding on each side */
+ padding: 5px;
+ background: cyan;
+ }
+ canvas { background: fuchsia }
+ </style>
+</head>
+<body>
+<!-- Flex items have unspecified size properties: -->
+<div class="container">
+ <div class="smallText">a b</div>
+ <div class="bigText">c</div>
+ <div class="spacerChild"></div>
+ <div class="justPadding"></div>
+ <canvas height="20"></canvas>
+</div>
+
+<!-- Various specified main-size values, in testcase
+ (removed here in reference case, because they shouldn't affect sizing): -->
+<div class="container">
+ <div class="smallText">a b</div>
+ <div class="bigText">c</div>
+ <div class="spacerChild"></div>
+ <div class="justPadding"></div>
+ <canvas height="20"></canvas>
+</div>
+
+<!-- Various specified cross-size values (should be honored): -->
+<div class="container">
+ <div class="smallText" style="width: 0px">a b</div>
+ <div class="bigText" style="width: 40px">c</div>
+ <div class="spacerChild" style="width: 20px"></div>
+ <div class="justPadding" style="width: 10px"></div>
+ <canvas height="20" style="width: 8px"></canvas>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002a.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002a.html
new file mode 100644
index 00000000000..481a3f22905
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002a.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing "flex-basis: content" in a column-oriented flex container
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#propdef-flex-basis">
+ <link rel="match" href="flexbox-flex-basis-content-002-ref.html">
+ <link rel="stylesheet" type="text/css" href="support/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-right: 2em;
+ width: 50px;
+ height: 200px;
+ float: left;
+ }
+
+ .container > * {
+ /* All flex items have "flex-basis: content" (and zero flex-shrink and
+ min-main-size, to avoid any influence from those). */
+ flex-basis: content;
+ flex-shrink: 0;
+ min-height: 0;
+ border: 2px solid teal;
+ }
+
+ .smallText { font: 10px Ahem; }
+ .bigText { font: 20px Ahem; }
+ .spacerChild::before {
+ content: '';
+ display: block;
+ background: brown;
+ height: 10px;
+ width: 10px;
+ }
+ .justPadding {
+ /* Empty div with 5px padding on each side */
+ padding: 5px;
+ background: cyan;
+ }
+ canvas { background: fuchsia }
+ </style>
+</head>
+<body>
+<!-- Flex items have unspecified size properties: -->
+<div class="container">
+ <div class="smallText">a b</div>
+ <div class="bigText">c</div>
+ <div class="spacerChild"></div>
+ <div class="justPadding"></div>
+ <canvas height="20"></canvas>
+</div>
+
+<!-- Various specified main-size values (should be ignored): -->
+<div class="container">
+ <div class="smallText" style="height: 0px">a b</div>
+ <div class="bigText" style="height: 40px">c</div>
+ <div class="spacerChild" style="height: 20px"></div>
+ <div class="justPadding" style="height: 10px"></div>
+ <canvas height="20" style="height: 8px"></canvas>
+</div>
+
+<!-- Various specified cross-size values (should be honored): -->
+<div class="container">
+ <div class="smallText" style="width: 0px">a b</div>
+ <div class="bigText" style="width: 40px">c</div>
+ <div class="spacerChild" style="width: 20px"></div>
+ <div class="justPadding" style="width: 10px"></div>
+ <canvas height="20" style="width: 8px"></canvas>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002b.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002b.html
new file mode 100644
index 00000000000..694e67242eb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-002b.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing "flex-basis: content" (set via the "flex" shorthand)
+ in a column-oriented flex container.
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#propdef-flex-basis">
+ <link rel="match" href="flexbox-flex-basis-content-002-ref.html">
+ <link rel="stylesheet" type="text/css" href="support/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-right: 2em;
+ width: 50px;
+ height: 200px;
+ float: left;
+ }
+
+ .container > * {
+ /* All flex items have "flex-basis: content" (and zero flex-shrink and
+ min-main-size, to avoid any influence from those). */
+ flex: 0 0 content;
+ min-height: 0;
+ border: 2px solid teal;
+ }
+
+ .smallText { font: 10px Ahem; }
+ .bigText { font: 20px Ahem; }
+ .spacerChild::before {
+ content: '';
+ display: block;
+ background: brown;
+ height: 10px;
+ width: 10px;
+ }
+ .justPadding {
+ /* Empty div with 5px padding on each side */
+ padding: 5px;
+ background: cyan;
+ }
+ canvas { background: fuchsia }
+ </style>
+</head>
+<body>
+<!-- Flex items have unspecified size properties: -->
+<div class="container">
+ <div class="smallText">a b</div>
+ <div class="bigText">c</div>
+ <div class="spacerChild"></div>
+ <div class="justPadding"></div>
+ <canvas height="20"></canvas>
+</div>
+
+<!-- Various specified main-size values (should be ignored): -->
+<div class="container">
+ <div class="smallText" style="height: 0px">a b</div>
+ <div class="bigText" style="height: 40px">c</div>
+ <div class="spacerChild" style="height: 20px"></div>
+ <div class="justPadding" style="height: 10px"></div>
+ <canvas height="20" style="height: 8px"></canvas>
+</div>
+
+<!-- Various specified cross-size values (should be honored): -->
+<div class="container">
+ <div class="smallText" style="width: 0px">a b</div>
+ <div class="bigText" style="width: 40px">c</div>
+ <div class="spacerChild" style="width: 20px"></div>
+ <div class="justPadding" style="width: 10px"></div>
+ <canvas height="20" style="width: 8px"></canvas>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003-ref.html
new file mode 100644
index 00000000000..63ce9d74292
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003-ref.html
@@ -0,0 +1,103 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Reftest Reference</title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <style>
+ .container {
+ clear: both; /* In this reference case, we use floats instead of
+ flex items (see below), so the container just
+ needs to reset the float state for each example. */
+ }
+
+ .item {
+ border: 2px solid teal;
+ float: left; /* Use floated elements as a reference for (hopefully)
+ max-content sized flex items in testcase. */
+ }
+ ib {
+ display: inline-block;
+ background: blue;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ float {
+ float: left;
+ background: fuchsia;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ canvas {
+ background: brown;
+ border: 1px solid gray;
+ }
+ .innerFlex {
+ display: flex;
+ }
+ innerItem {
+ background: salmon;
+ border: 1px solid gray;
+ height: 10px;
+ width: 15px;
+ flex: none;
+ }
+ </style>
+</head>
+<body>
+<!-- In testcase, flex item has several inline-blocks
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item"><ib></ib><ib></ib><ib></ib></div>
+</div>
+
+<!-- In testcase, flex item has several floats: -->
+<div class="container">
+ <div class="item">
+ <float></float>
+ <float></float>
+ <float></float>
+ </div>
+</div>
+
+<!-- In testcase, flex item has several inline replaced elements:
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item">
+ <canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas>
+ </div>
+</div>
+
+<!-- In testcase, flex item *is* a replaced element: -->
+<div class="container">
+ <canvas class="item" width="25" height="10"></canvas>
+</div>
+
+<!-- In testcase, flex item is itself a flex container: -->
+<div class="container">
+ <div class="item innerFlex">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+<!-- In testcase, flex item is itself a multi-line flex container: -->
+<div class="container">
+ <div class="item innerFlex" style="flex-wrap: wrap">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003a.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003a.html
new file mode 100644
index 00000000000..83dbae08684
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003a.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing that explicit "flex-basis: content" is treated as
+ "max-content" when calculating flex base size
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-base-size">
+ <link rel="match" href="flexbox-flex-basis-content-003-ref.html">
+ <style>
+ .container {
+ display: flex;
+ /* flex container has an extremely-constrained width (and items will
+ overflow horizontally). This is intentional, as part of stress-testing
+ item sizing. */
+ width: 1px;
+ }
+
+ .item {
+ /* We give all flex items "flex-basis: content".
+ We also give them zero flex-grow, flex-shrink, and min-main-size, so
+ that the flex base size entirely determines the flex item's size. */
+ flex: 0 0 content;
+ min-width: 0;
+ border: 2px solid teal;
+ }
+ ib {
+ display: inline-block;
+ background: blue;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ float {
+ float: left;
+ background: fuchsia;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ canvas {
+ background: brown;
+ border: 1px solid gray;
+ }
+ .innerFlex {
+ display: flex;
+ }
+ innerItem {
+ background: salmon;
+ border: 1px solid gray;
+ height: 10px;
+ width: 15px;
+ flex: none;
+ }
+ </style>
+</head>
+<body>
+<!-- The idea of this test is to be sure the UA is using the "max-content" size
+ (and not e.g. the "fit-content size") when resolving the flex base size
+ inside each flex container. To differentiate between max-content and
+ other intrinsic size possibilities (min-content/fit-content), we:
+ - use flex items with a large difference between its min-content size &
+ its max-content size (e.g. wrappable content).
+ - use a very small container (to compress the size, if the UA incorrectly
+ allows the size to be influenced by the container size).
+-->
+
+<!-- Flex item has several inline-blocks
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item"><ib></ib><ib></ib><ib></ib></div>
+</div>
+
+<!-- Flex item has several floats: -->
+<div class="container">
+ <div class="item">
+ <float></float>
+ <float></float>
+ <float></float>
+ </div>
+</div>
+
+<!-- Flex item has several inline replaced elements:
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item">
+ <canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas>
+ </div>
+</div>
+
+<!-- Flex item *is* a replaced element: -->
+<div class="container">
+ <canvas class="item" width="25" height="10"></canvas>
+</div>
+
+<!-- Flex item is itself a flex container: -->
+<div class="container">
+ <div class="item innerFlex">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+<!-- Flex item is itself a multi-line flex container: -->
+<div class="container">
+ <div class="item innerFlex" style="flex-wrap: wrap">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003b.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003b.html
new file mode 100644
index 00000000000..a81403c098f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-003b.html
@@ -0,0 +1,124 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing that used "flex-basis: content" is treated as
+ "max-content" when calculating flex base size
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-base-size">
+ <link rel="match" href="flexbox-flex-basis-content-003-ref.html">
+ <style>
+ .container {
+ display: flex;
+ /* flex container has an extremely-constrained width (and items will
+ overflow horizontally). This is intentional, as part of stress-testing
+ item sizing. */
+ width: 1px;
+ }
+
+ .item {
+ /* We give all flex items a used "flex-basis" of "content"
+ (from "flex-basis:auto" and default "width:auto").
+ We also give them zero flex-grow, flex-shrink, and min-main-size, so
+ that the flex base size entirely determines the flex item's size. */
+ flex: 0 0 auto;
+ min-width: 0;
+ border: 2px solid teal;
+ }
+ ib {
+ display: inline-block;
+ background: blue;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ float {
+ float: left;
+ background: fuchsia;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ canvas {
+ background: brown;
+ border: 1px solid gray;
+ }
+ .innerFlex {
+ display: flex;
+ }
+ innerItem {
+ background: salmon;
+ border: 1px solid gray;
+ height: 10px;
+ width: 15px;
+ flex: none;
+ }
+ </style>
+</head>
+<body>
+<!-- The idea of this test is to be sure the UA is using the "max-content" size
+ (and not e.g. the "fit-content size") when resolving the flex base size
+ inside each flex container. To differentiate between max-content and
+ other intrinsic size possibilities (min-content/fit-content), we:
+ - use flex items with a large difference between its min-content size &
+ its max-content size (e.g. wrappable content).
+ - use a very small container (to compress the size, if the UA incorrectly
+ allows the size to be influenced by the container size).
+-->
+
+<!-- Flex item has several inline-blocks
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item"><ib></ib><ib></ib><ib></ib></div>
+</div>
+
+<!-- Flex item has several floats: -->
+<div class="container">
+ <div class="item">
+ <float></float>
+ <float></float>
+ <float></float>
+ </div>
+</div>
+
+<!-- Flex item has several inline replaced elements:
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item">
+ <canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas>
+ </div>
+</div>
+
+<!-- Flex item *is* a replaced element: -->
+<div class="container">
+ <canvas class="item" width="25" height="10"></canvas>
+</div>
+
+<!-- Flex item is itself a flex container: -->
+<div class="container">
+ <div class="item innerFlex">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+<!-- Flex item is itself a multi-line flex container: -->
+<div class="container">
+ <div class="item innerFlex" style="flex-wrap: wrap">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004-ref.html
new file mode 100644
index 00000000000..7da4de7a5af
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004-ref.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Reftest Reference</title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <style>
+ .container {
+ clear: both; /* In this reference case, we use floats instead of
+ flex items (see below), so the container just
+ needs to reset the float state for each example. */
+ height: 50px;
+ }
+
+ .item {
+ border: 2px solid teal;
+ float: left; /* Use floated elements as a reference for (hopefully)
+ max-content sized flex items in testcase. */
+ }
+ ib {
+ display: inline-block;
+ background: blue;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ float {
+ float: left;
+ background: fuchsia;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ canvas {
+ background: brown;
+ border: 1px solid gray;
+ }
+ .innerFlex {
+ display: flex;
+ flex-direction: column;
+ }
+ innerItem {
+ background: salmon;
+ border: 1px solid gray;
+ height: 10px;
+ width: 15px;
+ flex: none;
+ }
+ </style>
+</head>
+<body>
+<!-- In testcase, flex item has several inline-blocks
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item"><ib></ib><ib></ib><ib></ib></div>
+</div>
+
+<!-- In testcase, flex item has several floats: -->
+<div class="container">
+ <div class="item">
+ <float></float>
+ <float></float>
+ <float></float>
+ </div>
+</div>
+
+<!-- In testcase, flex item has several inline replaced elements:
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item">
+ <canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas>
+ </div>
+</div>
+
+<!-- In testcase, flex item *is* a replaced element: -->
+<div class="container">
+ <canvas class="item" width="25" height="10"></canvas>
+</div>
+
+<!-- In testcase, flex item is itself a flex container: -->
+<div class="container">
+ <div class="item innerFlex">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+<!-- In testcase, flex item is itself a multi-line flex container: -->
+<div class="container">
+ <div class="item innerFlex" style="flex-wrap: wrap">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004a.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004a.html
new file mode 100644
index 00000000000..65a86b508f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004a.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing that explicit "flex-basis: content" is treated as
+ "max-content" when calculating flex base size
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-base-size">
+ <link rel="match" href="flexbox-flex-basis-content-004-ref.html">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ /* flex container has an extremely-constrained height (and items will
+ overflow vertically). This is intentional, as part of stress-testing
+ item sizing. We add a large margin-bottom so that overflowing
+ items don't overlap between examples. */
+ height: 1px;
+ margin-bottom: 49px;
+ }
+
+ .item {
+ /* We give all flex items "flex-basis: content".
+ We also give them zero flex-grow, flex-shrink, and min-main-size, so
+ that the flex base size entirely determines the flex item's size. */
+ flex: 0 0 content;
+ min-height: 0;
+ border: 2px solid teal;
+ }
+ ib {
+ display: inline-block;
+ background: blue;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ float {
+ float: left;
+ background: fuchsia;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ canvas {
+ background: brown;
+ border: 1px solid gray;
+ }
+ .innerFlex {
+ display: flex;
+ flex-direction: column;
+ }
+ innerItem {
+ background: salmon;
+ border: 1px solid gray;
+ height: 10px;
+ width: 15px;
+ flex: none;
+ }
+ </style>
+</head>
+<body>
+<!-- This test exists for symmetry with the previous set of tests
+ (flexbox-flex-basis-content-003*). Those previous tests check how
+ "flex-basis:content" is resolved to a flex base size, in the inline axis,
+ when the container's size is constrained in that axis. This test does the
+ same, but for the *block* axis, using flex-direction:column. As with the
+ previous set of tests, the expectation here is that we should use the
+ item's max-content size as its flex base size. Note that there's a bit
+ less subtlety here because intrinsic sizes (min-content, max-content) are
+ typically all the same in the block axis.
+-->
+
+<!-- Flex item has several inline-blocks
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item"><ib></ib><ib></ib><ib></ib></div>
+</div>
+
+<!-- Flex item has several floats: -->
+<div class="container">
+ <div class="item">
+ <float></float>
+ <float></float>
+ <float></float>
+ </div>
+</div>
+
+<!-- Flex item has several inline replaced elements:
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item">
+ <canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas>
+ </div>
+</div>
+
+<!-- Flex item *is* a replaced element: -->
+<div class="container">
+ <canvas class="item" width="25" height="10"></canvas>
+</div>
+
+<!-- Flex item is itself a flex container: -->
+<div class="container">
+ <div class="item innerFlex">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+<!-- Flex item is itself a multi-line flex container: -->
+<div class="container">
+ <div class="item innerFlex" style="flex-wrap: wrap">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004b.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004b.html
new file mode 100644
index 00000000000..a686f1aa1e1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-flex-basis-content-004b.html
@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing that used "flex-basis: content" is treated as
+ "max-content" when calculating flex base size
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-base-size">
+ <link rel="match" href="flexbox-flex-basis-content-004-ref.html">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ /* flex container has an extremely-constrained height (and items will
+ overflow vertically). This is intentional, as part of stress-testing
+ item sizing. We add a large margin-bottom so that overflowing
+ items don't overlap between examples. */
+ height: 1px;
+ margin-bottom: 49px;
+ }
+
+ .item {
+ /* We give all flex items a used "flex-basis" of "content"
+ (from "flex-basis:auto" and default "width:auto").
+ We also give them zero flex-grow, flex-shrink, and min-main-size, so
+ that the flex base size entirely determines the flex item's size. */
+ flex: 0 0 auto;
+ min-height: 0;
+ border: 2px solid teal;
+ }
+ ib {
+ display: inline-block;
+ background: blue;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ float {
+ float: left;
+ background: fuchsia;
+ border: 1px solid gray;
+ width: 15px;
+ height: 10px;
+ }
+ canvas {
+ background: brown;
+ border: 1px solid gray;
+ }
+ .innerFlex {
+ display: flex;
+ flex-direction: column;
+ }
+ innerItem {
+ background: salmon;
+ border: 1px solid gray;
+ height: 10px;
+ width: 15px;
+ flex: none;
+ }
+ </style>
+</head>
+<body>
+<!-- This test exists for symmetry with the previous set of tests
+ (flexbox-flex-basis-content-003*). Those previous tests check how
+ "flex-basis:content" is resolved to a flex base size, in the inline axis,
+ when the container's size is constrained in that axis. This test does the
+ same, but for the *block* axis, using flex-direction:column. As with the
+ previous set of tests, the expectation here is that we should use the
+ item's max-content size as its flex base size. Note that there's a bit
+ less subtlety here because intrinsic sizes (min-content, max-content) are
+ typically all the same in the block axis.
+-->
+
+<!-- Flex item has several inline-blocks
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item"><ib></ib><ib></ib><ib></ib></div>
+</div>
+
+<!-- Flex item has several floats: -->
+<div class="container">
+ <div class="item">
+ <float></float>
+ <float></float>
+ <float></float>
+ </div>
+</div>
+
+<!-- Flex item has several inline replaced elements:
+ (no spaces, to avoid any text-layout dependency): -->
+<div class="container">
+ <div class="item">
+ <canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas
+ ><canvas width="15" height="10"></canvas>
+ </div>
+</div>
+
+<!-- Flex item *is* a replaced element: -->
+<div class="container">
+ <canvas class="item" width="25" height="10"></canvas>
+</div>
+
+<!-- Flex item is itself a flex container: -->
+<div class="container">
+ <div class="item innerFlex">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+<!-- Flex item is itself a multi-line flex container: -->
+<div class="container">
+ <div class="item innerFlex" style="flex-wrap: wrap">
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ <innerItem></innerItem>
+ </div>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list
index d9252b29343..5c38083f0d8 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list
@@ -1,6 +1,7 @@
# Tests for absolutely-positioned children of a flex container
== flexbox-abspos-child-001a.html flexbox-abspos-child-001-ref.html
== flexbox-abspos-child-001b.html flexbox-abspos-child-001-ref.html
+== flexbox-abspos-child-002.html flexbox-abspos-child-002-ref.html
# Tests for handling anonymous flex items
== flexbox-anonymous-items-001.html flexbox-anonymous-items-001-ref.html
@@ -97,6 +98,16 @@
== flexbox-collapsed-item-horiz-002.html flexbox-collapsed-item-horiz-002-ref.html
== flexbox-collapsed-item-horiz-003.html flexbox-collapsed-item-horiz-003-ref.html
+# Tests for "flex-basis: content"
+== flexbox-flex-basis-content-001a.html flexbox-flex-basis-content-001-ref.html
+== flexbox-flex-basis-content-001b.html flexbox-flex-basis-content-001-ref.html
+== flexbox-flex-basis-content-002a.html flexbox-flex-basis-content-002-ref.html
+== flexbox-flex-basis-content-002b.html flexbox-flex-basis-content-002-ref.html
+== flexbox-flex-basis-content-003a.html flexbox-flex-basis-content-003-ref.html
+== flexbox-flex-basis-content-003b.html flexbox-flex-basis-content-003-ref.html
+== flexbox-flex-basis-content-004a.html flexbox-flex-basis-content-004-ref.html
+== flexbox-flex-basis-content-004b.html flexbox-flex-basis-content-004-ref.html
+
# Tests for flex-flow shorthand property
== flexbox-flex-flow-001.html flexbox-flex-flow-001-ref.html
== flexbox-flex-flow-002.html flexbox-flex-flow-002-ref.html
@@ -123,6 +134,12 @@
== flexbox-intrinsic-ratio-006.html flexbox-intrinsic-ratio-006-ref.html
== flexbox-intrinsic-ratio-006v.html flexbox-intrinsic-ratio-006-ref.html
+# Test for definite and indefinite sizes.
+== flexbox-definite-sizes-001.html flexbox-definite-sizes-001-ref.html
+== flexbox-definite-sizes-002.html flexbox-definite-sizes-001-ref.html
+== flexbox-definite-sizes-003.html flexbox-definite-sizes-001-ref.html
+== flexbox-definite-sizes-004.html flexbox-definite-sizes-001-ref.html
+
# Tests for flex items as (pseudo) stacking contexts
== flexbox-items-as-stacking-contexts-001.xhtml flexbox-items-as-stacking-contexts-001-ref.xhtml
== flexbox-items-as-stacking-contexts-002.html flexbox-items-as-stacking-contexts-002-ref.html
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1-ref.html
new file mode 100644
index 00000000000..a66a85e762d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1-ref.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<body style="direction: ltr">
+ <span style="display: block">x</span>
+ <span style="border: 5px solid blue; border-left: none; border-right: none;
+ padding-right: 10px"></span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1.html
new file mode 100644
index 00000000000..dcf9367d2a2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-1.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="emptyspan-1-ref.html">
+<body style="direction: ltr">
+ <span style="border: 5px solid blue; border-left: none; border-right: none;
+ padding-right: 10px">
+ <span style="display: block">x</span>
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2-ref.html
new file mode 100644
index 00000000000..941044b9260
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2-ref.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<body style="direction: rtl">
+ <span style="border: 5px solid blue; border-left: none; border-right: none;
+ padding-right: 10px"></span>
+ <span style="display: block">x</span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2.html
new file mode 100644
index 00000000000..b740fad71b8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-2.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="emptyspan-2-ref.html">
+<body style="direction: rtl">
+ <span style="border: 5px solid blue; border-left: none; border-right: none;
+ padding-right: 10px">
+ <span style="display: block">x</span>
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3-ref.html
new file mode 100644
index 00000000000..629c3424ca5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3-ref.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<body style="direction: ltr">
+ <span style="border: 5px solid blue; border-left: none; border-right: none;
+ padding-left: 10px"></span>
+ <span style="display: block">x</span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3.html
new file mode 100644
index 00000000000..1be809ec2d5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-3.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="emptyspan-3-ref.html">
+<body style="direction: ltr">
+ <span style="border: 5px solid blue; border-left: none; border-right: none;
+ padding-left: 10px">
+ <span style="display: block">x</span>
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4-ref.html
new file mode 100644
index 00000000000..af74e690e18
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4-ref.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<body style="direction: rtl">
+ <span style="display: block">x</span>
+ <span style="border: 5px solid blue; border-left: none; border-right: none;
+ padding-left: 10px"></span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4.html
new file mode 100644
index 00000000000..3656ada5042
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/emptyspan-4.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="emptyspan-4-ref.html">
+<body style="direction: rtl">
+ <span style="border: 5px solid blue; border-left: none; border-right: none;
+ padding-left: 10px">
+ <span style="display: block">x</span>
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1-ref.html
new file mode 100644
index 00000000000..d9146e2ae09
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<div style="position: relative; left: 100px">
+ aaa
+</div>
+<span style="position: relative; left: 100px">
+ <span style="float: left">bbb</span>
+</span>
+<div style="position: relative; left: 100px">
+ aaa
+</div>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1.html
new file mode 100644
index 00000000000..296dcb9bde9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/float-inside-inline-between-blocks-1.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="float-inside-inline-between-blocks-1-ref.html">
+<span style="position: relative; left: 100px">
+ <span style="display: block">
+ aaa
+ </span>
+ <span style="float: left">bbb</span>
+ <span style="display: block">
+ aaa
+ </span>
+</span>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1-ref.html
new file mode 100644
index 00000000000..0f74e18a85a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1-ref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<div style="height: 100px; border: 10px solid black"></div>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1.html
new file mode 100644
index 00000000000..91c1594b277
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/percent-height-1.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="percent-height-1-ref.html">
+<body style="height: 200px">
+ <span>
+ <span style="display: block; height: 50%; border: 10px solid black">
+ </span>
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/reftest.list
new file mode 100644
index 00000000000..2cc553143c4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/reftest.list
@@ -0,0 +1,23 @@
+== remove-split-inline-1.html remove-split-inline-1-ref.html
+== remove-from-split-inline-1.html remove-from-split-inline-1-ref.html
+== remove-from-split-inline-1-ref.html remove-from-split-inline-1-noib-ref.html
+== remove-from-split-inline-2.html remove-from-split-inline-2-ref.html
+== remove-from-split-inline-3.html remove-from-split-inline-3-ref.html
+== remove-from-split-inline-3-ref.html remove-from-split-inline-3-noib-ref.html
+== remove-from-split-inline-4.html remove-from-split-inline-4-ref.html
+== remove-from-split-inline-4-ref.html remove-from-split-inline-4-noib-ref.html
+== remove-from-split-inline-5.html remove-from-split-inline-5-ref.html
+== remove-from-split-inline-5-ref.html remove-from-split-inline-5-noib-ref.html
+== remove-from-split-inline-6.html remove-from-split-inline-6-ref.html
+== remove-from-split-inline-6-ref.html remove-from-split-inline-6-noib-ref.html
+== float-inside-inline-between-blocks-1.html float-inside-inline-between-blocks-1-ref.html
+== table-pseudo-in-part3-1.html table-pseudo-in-part3-1-ref.html
+== emptyspan-1.html emptyspan-1-ref.html
+== emptyspan-2.html emptyspan-2-ref.html
+== emptyspan-3.html emptyspan-3-ref.html
+== emptyspan-4.html emptyspan-4-ref.html
+== split-inner-inline-1.html split-inner-inline-1-ref.html
+== split-inner-inline-2.html split-inner-inline-2-ref.html
+== whitespace-present-1a.html whitespace-present-1-ref.html
+== whitespace-present-1b.html whitespace-present-1-ref.html
+== percent-height-1.html percent-height-1-ref.html
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-noib-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-noib-ref.html
new file mode 100644
index 00000000000..7b8a141e786
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-noib-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<style>
+ body > span { border: 3px solid blue }
+ #start { border-right: none; }
+ #two { border-left: none; }
+</style>
+<body>
+ <span id="start"></span>
+ <div>One</div>
+ <span id="two">
+ Two
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-ref.html
new file mode 100644
index 00000000000..f197d6ac93d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1-ref.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-1-noib-ref.html">
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body>
+ <span
+ ><div>One</div>
+ Two
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1.html
new file mode 100644
index 00000000000..07053efa19b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-1.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-1-ref.html">
+<script>
+function doit() {
+ var target = document.getElementById("target");
+ target.remove();
+}
+</script>
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body onload='doit()'>
+ <span
+ ><span id="target">Four</span
+ ><div>One</div>
+ Two
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2-ref.html
new file mode 100644
index 00000000000..9fd41e13849
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body>
+ <span>
+ One
+ Two
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2.html
new file mode 100644
index 00000000000..d4cf51040e5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-2.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-2-ref.html">
+<script>
+function doit() {
+ var target = document.getElementById("target");
+ target.remove();
+}
+</script>
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body onload='doit()'>
+ <span>
+ One
+ <div id="target">Three</div>
+ Two
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-noib-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-noib-ref.html
new file mode 100644
index 00000000000..124b8fd8909
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-noib-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<style>
+ body > span { border: 3px solid blue }
+ #one { border-right: none; }
+ #tail { border-left: none; }
+</style>
+<body>
+ <span id="one">
+ One
+ </span>
+ <div>Two</div>
+ <span id="tail"></span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-ref.html
new file mode 100644
index 00000000000..5822665ffee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3-ref.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-3-noib-ref.html">
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body>
+ <span>
+ One
+ <div>Two</div
+ ></span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3.html
new file mode 100644
index 00000000000..1d5e2a45bea
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-3.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-3-ref.html">
+<script>
+function doit() {
+ var target = document.getElementById("target");
+ target.remove();
+}
+</script>
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body onload='doit()'>
+ <span>
+ One
+ <div>Two</div
+ ><span id="target">Three</span
+ ></span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-noib-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-noib-ref.html
new file mode 100644
index 00000000000..10c563ce540
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-noib-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<style>
+ body > span { border: 3px solid blue }
+ #one { border-right: none; }
+ #four { border-left: none; }
+</style>
+<body>
+ <span id="one">
+ One
+ Two
+ </span>
+ <div>Three</div>
+ <span id="four">
+ Four
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-ref.html
new file mode 100644
index 00000000000..8768b0d25bb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-4-noib-ref.html">
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body>
+ <span>
+ One
+ Two
+ <div>Three</div>
+ Four
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4.html
new file mode 100644
index 00000000000..44c0ceed87d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-4.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-4-ref.html">
+<script>
+function doit() {
+ var target = document.getElementById("target");
+ target.remove();
+}
+</script>
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body onload='doit()'>
+ <span>
+ One
+ <div id="target">Five</div>
+ Two
+ <div>Three</div>
+ Four
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-noib-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-noib-ref.html
new file mode 100644
index 00000000000..8bd8802f665
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-noib-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<style>
+ body > span { border: 3px solid blue }
+ #one { border-right: none; }
+ #three { border-left: none; }
+</style>
+<body>
+ <span id="one">
+ One
+ </span>
+ <div>Two</div>
+ <span id="three">
+ Three
+ Four
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-ref.html
new file mode 100644
index 00000000000..68258ef8b1a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-5-noib-ref.html">
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body>
+ <span>
+ One
+ <div>Two</div>
+ Three
+ Four
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5.html
new file mode 100644
index 00000000000..539115e0301
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-5.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-5-ref.html">
+<script>
+function doit() {
+ var target = document.getElementById("target");
+ target.remove();
+}
+</script>
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body onload='doit()'>
+ <span>
+ One
+ <div>Two</div>
+ Three
+ <div id="target">Five</div>
+ Four
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-noib-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-noib-ref.html
new file mode 100644
index 00000000000..7678e811c0d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-noib-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<style>
+ body > span { border: 3px solid blue }
+ #one { border-right: none; }
+ #four { border-left: none; }
+</style>
+<body>
+ <span id="one">
+ One
+ </span>
+ <div>Two</div>
+ <div>Three</div>
+ <span id="four">
+ Four
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-ref.html
new file mode 100644
index 00000000000..bd43b45db5c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-from-split-inline-6-noib-ref.html">
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body>
+ <span>
+ One
+ <div>Two</div>
+ <div>Three</div>
+ Four
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6.html
new file mode 100644
index 00000000000..99bbcf7a0f0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-from-split-inline-6.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level"/>
+<link rel="match" href="remove-from-split-inline-6-ref.html">
+<script>
+function doit() {
+ var target = document.getElementById("target");
+ target.remove();
+}
+</script>
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body onload='doit()'>
+ <span>
+ One
+ <div>Two</div>
+ <span id="target">Five</span>
+ <div>Three</div>
+ Four
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1-ref.html
new file mode 100644
index 00000000000..cf4cfffd503
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+One
+Two
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1.html
new file mode 100644
index 00000000000..cfe6a5e8c02
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/remove-split-inline-1.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="remove-split-inline-1-ref.html">
+<script>
+function doit() {
+ var target = document.getElementById("target");
+ target.remove();
+}
+</script>
+<body onload='doit()'>
+ One
+ <span id="target">
+ Three
+ <div>Four</div>
+ Five
+ </span>
+ Two
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1-ref.html
new file mode 100644
index 00000000000..3f2a82f83c1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<span>First line</span>
+<div>Second line</div>
+<span>Third line, yes</span>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1.html
new file mode 100644
index 00000000000..3ae7392c234
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-1.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="split-inner-inline-1-ref.html">
+<span>
+ First
+ <span>
+ line
+ <span style="display: block">
+ Second line
+ </span>
+ Third
+ </span>
+ line, yes
+</span>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2-ref.html
new file mode 100644
index 00000000000..1ace2f8fb64
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2-ref.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<span>First line
+ <span style="border: 5px solid blue; border-right: none"></span>
+</span>
+<div>Second line</div>
+<span>
+ <span style="border: 5px solid blue; border-left: none"></span>
+ Third line, yes
+</span>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2.html
new file mode 100644
index 00000000000..318df5344f7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/split-inner-inline-2.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="split-inner-inline-2-ref.html">
+<span>
+ First line
+ <span style="border: 5px solid blue">
+ <span style="display: block">
+ Second line
+ </span>
+ </span>
+ Third line, yes
+</span>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1-ref.html
new file mode 100644
index 00000000000..b21050370d4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ </head>
+ <body>
+ <div>
+ aaa
+ <div>bbb</div>
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1.html
new file mode 100644
index 00000000000..cb50af9ca87
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/table-pseudo-in-part3-1.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="table-pseudo-in-part3-1-ref.html">
+<span style="display: table-row">
+ <span>
+ aaa
+ <span style="display: block"></span>
+ <span style="display: table-cell">bbb</span>
+ </span>
+</span>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1-ref.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1-ref.html
new file mode 100644
index 00000000000..46cac675c51
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test Reference</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<style>
+ body > span { border: 3px solid blue }
+ .notstart { border-left: none; }
+ .notend { border-right: none; }
+</style>
+<body>
+ <span class="notend"></span>
+ <div>One</div>
+ <span class="notstart notend"></span>
+ <div>Two</div>
+ <span class="notstart"></span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1a.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1a.html
new file mode 100644
index 00000000000..283884b0843
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1a.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="whitespace-present-1-ref.html">
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<body>
+ <span>
+ <div>One</div>
+ <div>Two</div>
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1b.html b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1b.html
new file mode 100644
index 00000000000..70239a8e085
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/ib-split/whitespace-present-1b.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS 2.1 Test Suite: handling of blocks inside inlines</title>
+<link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu">
+<link rel="author" title="Mozilla Corporation" href="http://mozilla.com/">
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#anonymous-block-level">
+<link rel="match" href="whitespace-present-1-ref.html">
+<style>
+ body > span { border: 3px solid blue }
+</style>
+<script>
+function doIt() {
+ var t = document.createTextNode(" ");
+ var d = document.getElementById("d");
+ d.parentNode.insertBefore(t, d);
+}
+</script>
+<body onload="doIt()">
+ <span>
+ <div>One</div><div id="d">Two</div>
+ </span>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list
index cbffb2612f1..663018700a7 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/reftest.list
@@ -40,6 +40,9 @@ include flexbox/reftest.list
# Fonts Level 3
include fonts3/reftest.list
+# block-inside-inline splits
+include ib-split/reftest.list
+
# Image Values and Replaced Content Level 3
include images3/reftest.list
diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list
index ef1d7aa77c6..f398b1b9da3 100644
--- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list
+++ b/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/transforms/reftest.list
@@ -5,8 +5,6 @@
== perspective-zero.html reference/green.html
== perspective-zero-2.html perspective-zero-2-ref.html
-# stylo-vs-gecko comparison fails since we support individual transform on new
-# style system only.
== individual-transform-1.html individual-transform-1-ref.html
== individual-transform-2a.html individual-transform-2-ref.html
== individual-transform-2b.html individual-transform-2-ref.html
diff --git a/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html b/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html
index cb6d5409962..a0bfa909bae 100644
--- a/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html
+++ b/tests/wpt/web-platform-tests/custom-elements/HTMLElement-constructor.html
@@ -91,6 +91,159 @@ test(function () {
}, 'HTMLElement constructor must allow subclassing an user-defined subclass of HTMLElement');
+test(function() {
+ class SomeCustomElement extends HTMLElement {};
+ var getCount = 0;
+ var countingProxy = new Proxy(SomeCustomElement, {
+ get: function(target, prop, receiver) {
+ if (prop == "prototype") {
+ ++getCount;
+ }
+ return Reflect.get(target, prop, receiver);
+ }
+ });
+ customElements.define("success-counting-element-1", countingProxy);
+ // define() gets the prototype of the constructor it's passed, so
+ // reset the counter.
+ getCount = 0;
+ var instance = new countingProxy();
+ assert_equals(getCount, 1, "Should have gotten .prototype once");
+ assert_true(instance instanceof countingProxy);
+ assert_true(instance instanceof HTMLElement);
+ assert_true(instance instanceof SomeCustomElement);
+ assert_equals(instance.localName, "success-counting-element-1");
+ assert_equals(instance.nodeName, "SUCCESS-COUNTING-ELEMENT-1");
+}, 'HTMLElement constructor must only get .prototype once, calling proxy constructor directly');
+
+test(function() {
+ class SomeCustomElement extends HTMLElement {};
+ var getCount = 0;
+ var countingProxy = new Proxy(SomeCustomElement, {
+ get: function(target, prop, receiver) {
+ if (prop == "prototype") {
+ ++getCount;
+ }
+ return Reflect.get(target, prop, receiver);
+ }
+ });
+ customElements.define("success-counting-element-2", countingProxy);
+ // define() gets the prototype of the constructor it's passed, so
+ // reset the counter.
+ getCount = 0;
+ var instance = Reflect.construct(HTMLElement, [], countingProxy);
+ assert_equals(getCount, 1, "Should have gotten .prototype once");
+ assert_true(instance instanceof countingProxy);
+ assert_true(instance instanceof HTMLElement);
+ assert_true(instance instanceof SomeCustomElement);
+ assert_equals(instance.localName, "success-counting-element-2");
+ assert_equals(instance.nodeName, "SUCCESS-COUNTING-ELEMENT-2");
+}, 'HTMLElement constructor must only get .prototype once, calling proxy constructor via Reflect');
+
+test(function() {
+ class SomeCustomElement {};
+ var getCount = 0;
+ var countingProxy = new Proxy(SomeCustomElement, {
+ get: function(target, prop, receiver) {
+ if (prop == "prototype") {
+ ++getCount;
+ }
+ return Reflect.get(target, prop, receiver);
+ }
+ });
+ customElements.define("success-counting-element-3", countingProxy);
+ // define() gets the prototype of the constructor it's passed, so
+ // reset the counter.
+ getCount = 0;
+ var instance = Reflect.construct(HTMLElement, [], countingProxy);
+ assert_equals(getCount, 1, "Should have gotten .prototype once");
+ assert_true(instance instanceof countingProxy);
+ assert_true(instance instanceof SomeCustomElement);
+ assert_equals(instance.localName, undefined);
+ assert_equals(instance.nodeName, undefined);
+}, 'HTMLElement constructor must only get .prototype once, calling proxy constructor via Reflect with no inheritance');
+
+test(function() {
+ class SomeCustomElement extends HTMLElement {};
+ var getCount = 0;
+ var countingProxy = new Proxy(SomeCustomElement, {
+ get: function(target, prop, receiver) {
+ if (prop == "prototype") {
+ ++getCount;
+ }
+ return Reflect.get(target, prop, receiver);
+ }
+ });
+ customElements.define("failure-counting-element-1", countingProxy,
+ { extends: "button" });
+ // define() gets the prototype of the constructor it's passed, so
+ // reset the counter.
+ getCount = 0;
+ assert_throws({'name': 'TypeError'},
+ function () { new countingProxy() },
+ "Should not be able to construct an HTMLElement named 'button'");
+ assert_equals(getCount, 0, "Should never have gotten .prototype");
+}, 'HTMLElement constructor must not get .prototype until it finishes its extends sanity checks, calling proxy constructor directly');
+
+test(function() {
+ class SomeCustomElement extends HTMLElement {};
+ var getCount = 0;
+ var countingProxy = new Proxy(SomeCustomElement, {
+ get: function(target, prop, receiver) {
+ if (prop == "prototype") {
+ ++getCount;
+ }
+ return Reflect.get(target, prop, receiver);
+ }
+ });
+ customElements.define("failure-counting-element-2", countingProxy,
+ { extends: "button" });
+ // define() gets the prototype of the constructor it's passed, so
+ // reset the counter.
+ getCount = 0;
+ assert_throws({'name': 'TypeError'},
+ function () { Reflect.construct(HTMLElement, [], countingProxy) },
+ "Should not be able to construct an HTMLElement named 'button'");
+ assert_equals(getCount, 0, "Should never have gotten .prototype");
+}, 'HTMLElement constructor must not get .prototype until it finishes its extends sanity checks, calling via Reflect');
+
+test(function() {
+ class SomeCustomElement extends HTMLElement {};
+ var getCount = 0;
+ var countingProxy = new Proxy(SomeCustomElement, {
+ get: function(target, prop, receiver) {
+ if (prop == "prototype") {
+ ++getCount;
+ }
+ return Reflect.get(target, prop, receiver);
+ }
+ });
+
+ // Purposefully don't register it.
+ assert_throws({'name': 'TypeError'},
+ function () { new countingProxy() },
+ "Should not be able to construct an HTMLElement named 'button'");
+ assert_equals(getCount, 0, "Should never have gotten .prototype");
+}, 'HTMLElement constructor must not get .prototype until it finishes its registration sanity checks, calling proxy constructor directly');
+
+test(function() {
+ class SomeCustomElement extends HTMLElement {};
+ var getCount = 0;
+ var countingProxy = new Proxy(SomeCustomElement, {
+ get: function(target, prop, receiver) {
+ if (prop == "prototype") {
+ ++getCount;
+ }
+ return Reflect.get(target, prop, receiver);
+ }
+ });
+
+ // Purposefully don't register it.
+ assert_throws({'name': 'TypeError'},
+ function () { Reflect.construct(HTMLElement, [], countingProxy) },
+ "Should not be able to construct an HTMLElement named 'button'");
+ assert_equals(getCount, 0, "Should never have gotten .prototype");
+}, 'HTMLElement constructor must not get .prototype until it finishes its registration sanity checks, calling via Reflect');
</script>
</body>
</html>
+
diff --git a/tests/wpt/web-platform-tests/custom-elements/htmlconstructor/newtarget.html b/tests/wpt/web-platform-tests/custom-elements/htmlconstructor/newtarget.html
index ab43803c244..7dad26493d2 100644
--- a/tests/wpt/web-platform-tests/custom-elements/htmlconstructor/newtarget.html
+++ b/tests/wpt/web-platform-tests/custom-elements/htmlconstructor/newtarget.html
@@ -124,5 +124,46 @@ test_with_window(w => {
}, "If prototype is not object (" + notAnObject + "), derives the fallback from NewTarget's realm (customized built-in elements)");
});
+test_with_window(w => {
+ class SomeCustomElement extends HTMLParagraphElement {};
+ var getCount = 0;
+ var countingProxy = new Proxy(SomeCustomElement, {
+ get: function(target, prop, receiver) {
+ if (prop == "prototype") {
+ ++getCount;
+ }
+ return Reflect.get(target, prop, receiver);
+ }
+ });
+ w.customElements.define("failure-counting-element", countingProxy);
+ // define() gets the prototype of the constructor it's passed, so
+ // reset the counter.
+ getCount = 0;
+ assert_throws({'name': 'TypeError'},
+ function () { new countingProxy() },
+ "Should not be able to construct an HTMLParagraphElement not named 'p'");
+ assert_equals(getCount, 0, "Should never have gotten .prototype");
+}, 'HTMLParagraphElement constructor must not get .prototype until it finishes its extends sanity checks, calling proxy constructor directly');
+
+test_with_window(w => {
+ class SomeCustomElement extends HTMLParagraphElement {};
+ var getCount = 0;
+ var countingProxy = new Proxy(SomeCustomElement, {
+ get: function(target, prop, receiver) {
+ if (prop == "prototype") {
+ ++getCount;
+ }
+ return Reflect.get(target, prop, receiver);
+ }
+ });
+ w.customElements.define("failure-counting-element", countingProxy);
+ // define() gets the prototype of the constructor it's passed, so
+ // reset the counter.
+ getCount = 0;
+ assert_throws({'name': 'TypeError'},
+ function () { Reflect.construct(HTMLParagraphElement, [], countingProxy) },
+ "Should not be able to construct an HTMLParagraphElement not named 'p'");
+ assert_equals(getCount, 0, "Should never have gotten .prototype");
+}, 'HTMLParagraphElement constructor must not get .prototype until it finishes its extends sanity checks, calling via Reflect');
</script>
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/chrome.md b/tests/wpt/web-platform-tests/docs/_running-tests/chrome.md
new file mode 100644
index 00000000000..b3b98742dec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/docs/_running-tests/chrome.md
@@ -0,0 +1,41 @@
+---
+layout: page
+title: Chrome
+---
+When running Chrome, there are some additional useful command line arguments.
+
+As with most products, you can use a different binary with `--binary`, e.g., to
+run Chrome Dev on Linux:
+
+```
+./wpt run --binary `which google-chrome-unstable` chrome
+```
+
+Extra arguments to Chrome can be passed with `--binary-args`.
+
+To enable all [experimental web platform features](https://www.chromium.org/blink/runtime-enabled-features) (chrome://flags/#enable-experimental-web-platform-features):
+
+```
+./wpt run --binary-arg=--enable-experimental-web-platform-features chrome fullscreen/
+```
+
+To enable a specific [runtime enabled feature](http://dev.chromium.org/blink/runtime-enabled-features):
+
+```
+./wpt run --binary-arg=--enable-blink-features=AsyncClipboard chrome clipboard-apis/
+```
+
+To bypass device selection and use mock media for tests using `getUserMedia`:
+
+```
+./wpt run --binary-arg=--use-fake-ui-for-media-stream --binary-arg=--use-fake-device-for-media-stream chrome mediacapture-streams/
+```
+
+Note: there's an [open issue for doing this using WebDriver](https://github.com/w3c/web-platform-tests/issues/7424).
+
+Some of the above are most useful in combination, e.g., to run all tests in
+Chrome Dev with experimental web platform features enabled:
+
+```
+./wpt run --binary `which google-chrome-unstable` --binary-arg=--enable-experimental-web-platform-features chrome
+```
diff --git a/tests/wpt/web-platform-tests/docs/_running-tests/index.md b/tests/wpt/web-platform-tests/docs/_running-tests/index.md
index f0cecfb15c2..c9e030f8325 100644
--- a/tests/wpt/web-platform-tests/docs/_running-tests/index.md
+++ b/tests/wpt/web-platform-tests/docs/_running-tests/index.md
@@ -27,6 +27,8 @@ customising the test run, see `./wpt run --help`.
Additional browser-specific documentation:
+ * [Chrome][chrome]
+
* [Chrome for Android][chrome android]
* [Safari][safari]
@@ -69,6 +71,7 @@ channel `#testing`). It's possible edge-case behavior isn't properly
documented!
+[chrome]: {{ site.baseurl }}{% link _running-tests/chrome.md %}
[chrome android]: {{ site.baseurl }}{% link _running-tests/chrome_android.md %}
[safari]: {{ site.baseurl }}{% link _running-tests/safari.md %}
[public-test-infra]: https://lists.w3.org/Archives/Public/public-test-infra/
diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md b/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md
index c5369755fbc..d818f4b0b38 100644
--- a/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md
+++ b/tests/wpt/web-platform-tests/docs/_writing-tests/lint-tool.md
@@ -58,6 +58,9 @@ below to fix all errors reported.
element whose `content` attribute has a malformed value; **fix**: ensure
the value of the `content` attribute starts with `?` or `#` or is empty.
+* **MISSING-LINK**: CSS test file is missing a link to a spec. **fix**: Ensure that there is a `<link rel="help" src="[url]">` for the spec.
+ * Note: `MISSING-LINK` is designed to ensure that the CSS build tool can find the tests. Note that the CSS build system is primarily used by [test.csswg.org/](http://test.csswg.org/), which doesn't use `wptserve`, so `*.any.js` and similar tests won't work there; stick with the `.html` equivalent.
+
* **MISSING-TESTHARNESSREPORT**: Test file is missing an instance of
`<script src='/resources/testharnessreport.js'>`; **fix**: ensure each
test file contains `<script src='/resources/testharnessreport.js'>`.
diff --git a/tests/wpt/web-platform-tests/docs/_writing-tests/testdriver.md b/tests/wpt/web-platform-tests/docs/_writing-tests/testdriver.md
index 3f5787f002a..51e09badbc2 100644
--- a/tests/wpt/web-platform-tests/docs/_writing-tests/testdriver.md
+++ b/tests/wpt/web-platform-tests/docs/_writing-tests/testdriver.md
@@ -19,6 +19,7 @@ NB: presently, testdriver.js only works in the top-level test browsing
context (and not therefore in any frame or window opened from it).
### `test_driver.click(element)`
+#### `element: a DOM Element object`
This function causes a click to occur on the target element (an
`Element` object), potentially scrolling the document to make it
@@ -30,5 +31,21 @@ Note that if the element to be clicked does not have a unique ID, the
document must not have any DOM mutations made between the function
being called and the promise settling.
+### `test_driver.send_keys(element, keys)`
+#### `element: a DOM Element object`
+#### `keys: string to send to the element`
+
+This function causes the string `keys` to be send to the target
+element (an `Element` object), potentially scrolling the document to
+make it possible to send keys. It returns a `Promise` that resolves
+after the keys have been send or rejects if the keys cannot be sent
+to the element.
+
+Note that if the element that's keys need to be send to does not have
+a unique ID, the document must not have any DOM mutations made
+between the function being called and the promise settling.
+
+To send special keys, one must send the respective key's codepoint. Since this uses the WebDriver protocol, you can find a list for code points to special keys in the spec (here)[https://w3c.github.io/webdriver/webdriver-spec.html#keyboard-actions].
+For example, to send the tab key you would send "\uE004".
[testharness]: {{ site.baseurl }}{% link _writing-tests/testharness.md %}
diff --git a/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-passive.html b/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-passive.html
index 1f0118efa63..bf41580325c 100644
--- a/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-passive.html
+++ b/tests/wpt/web-platform-tests/dom/events/AddEventListenerOptions-passive.html
@@ -55,6 +55,32 @@ test(function() {
testPassiveValue({passive: 1}, false);
}, "preventDefault should be ignored if-and-only-if the passive option is true");
+function testPassiveValueOnReturnValue(test, optionsValue, expectedDefaultPrevented) {
+ var defaultPrevented = undefined;
+ var handler = test.step_func(e => {
+ assert_false(e.defaultPrevented, "Event prematurely marked defaultPrevented");
+ e.returnValue = false;
+ defaultPrevented = e.defaultPrevented;
+ });
+ document.addEventListener('test', handler, optionsValue);
+ var uncanceled = document.body.dispatchEvent(new Event('test', {bubbles: true, cancelable: true}));
+
+ assert_equals(defaultPrevented, expectedDefaultPrevented, "Incorrect defaultPrevented for options: " + JSON.stringify(optionsValue));
+ assert_equals(uncanceled, !expectedDefaultPrevented, "Incorrect return value from dispatchEvent");
+
+ document.removeEventListener('test', handler, optionsValue);
+}
+
+async_test(t => {
+ testPassiveValueOnReturnValue(t, undefined, true);
+ testPassiveValueOnReturnValue(t, {}, true);
+ testPassiveValueOnReturnValue(t, {passive: false}, true);
+ testPassiveValueOnReturnValue(t, {passive: true}, false);
+ testPassiveValueOnReturnValue(t, {passive: 0}, true);
+ testPassiveValueOnReturnValue(t, {passive: 1}, false);
+ t.done();
+}, "returnValue should be ignored if-and-only-if the passive option is true");
+
function testPassiveWithOtherHandlers(optionsValue, expectedDefaultPrevented) {
var handlerInvoked1 = false;
var dummyHandler1 = function() {
@@ -81,7 +107,7 @@ test(function() {
testPassiveWithOtherHandlers({}, true);
testPassiveWithOtherHandlers({passive: false}, true);
testPassiveWithOtherHandlers({passive: true}, false);
-}, "passive behavior of one listener should be unaffeted by the presence of other listeners");
+}, "passive behavior of one listener should be unaffected by the presence of other listeners");
function testOptionEquivalence(optionValue1, optionValue2, expectedEquality) {
var invocationCount = 0;
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-constructors.html b/tests/wpt/web-platform-tests/dom/events/Event-constructors.html
index a3cd3f80cb8..5f1ed15792c 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-constructors.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-constructors.html
@@ -19,11 +19,13 @@ test(function() {
var ev = new Event("")
assert_equals(ev.type, "")
assert_equals(ev.target, null)
+ assert_equals(ev.srcElement, null)
assert_equals(ev.currentTarget, null)
assert_equals(ev.eventPhase, Event.NONE)
assert_equals(ev.bubbles, false)
assert_equals(ev.cancelable, false)
assert_equals(ev.defaultPrevented, false)
+ assert_equals(ev.returnValue, true)
assert_equals(ev.isTrusted, false)
assert_true(ev.timeStamp > 0)
assert_true("initEvent" in ev)
@@ -32,11 +34,13 @@ test(function() {
var ev = new Event("test")
assert_equals(ev.type, "test")
assert_equals(ev.target, null)
+ assert_equals(ev.srcElement, null)
assert_equals(ev.currentTarget, null)
assert_equals(ev.eventPhase, Event.NONE)
assert_equals(ev.bubbles, false)
assert_equals(ev.cancelable, false)
assert_equals(ev.defaultPrevented, false)
+ assert_equals(ev.returnValue, true)
assert_equals(ev.isTrusted, false)
assert_true(ev.timeStamp > 0)
assert_true("initEvent" in ev)
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented-after-dispatch.html b/tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented-after-dispatch.html
index decf7e9927f..8fef005eb57 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented-after-dispatch.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented-after-dispatch.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<meta charset=utf-8>
-<title>Event.defaultPrevented is not reset after dipatchEvent()</title>
+<title>Event.defaultPrevented is not reset after dispatchEvent()</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -22,5 +22,23 @@ test(function() {
assert_true(evt.defaultPrevented, "after dispatch");
assert_equals(evt.target, TARGET);
-});
+ assert_equals(evt.srcElement, TARGET);
+}, "Default prevention via preventDefault");
+
+test(function() {
+ var EVENT = "foo";
+ var TARGET = document.getElementById("target");
+ var evt = document.createEvent("Event");
+ evt.initEvent(EVENT, true, true);
+
+ TARGET.addEventListener(EVENT, this.step_func(function(e) {
+ e.returnValue = false;
+ assert_true(e.defaultPrevented, "during dispatch");
+ }), true);
+ TARGET.dispatchEvent(evt);
+
+ assert_true(evt.defaultPrevented, "after dispatch");
+ assert_equals(evt.target, TARGET);
+ assert_equals(evt.srcElement, TARGET);
+}, "Default prevention via returnValue");
</script>
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented.html b/tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented.html
index 2a3d171b107..f0230085bfa 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-defaultPrevented.html
@@ -22,6 +22,12 @@ test(function() {
assert_equals(ev.defaultPrevented, false, "defaultPrevented");
}, "preventDefault() should not change defaultPrevented if cancelable is false.");
test(function() {
+ assert_equals(ev.cancelable, false, "cancelable (before)");
+ ev.returnValue = false;
+ assert_equals(ev.cancelable, false, "cancelable (after)");
+ assert_equals(ev.defaultPrevented, false, "defaultPrevented");
+}, "returnValue should not change defaultPrevented if cancelable is false.");
+test(function() {
ev.initEvent("foo", true, true);
assert_equals(ev.bubbles, true, "bubbles");
assert_equals(ev.cancelable, true, "cancelable");
@@ -34,6 +40,12 @@ test(function() {
assert_equals(ev.defaultPrevented, true, "defaultPrevented");
}, "preventDefault() should change defaultPrevented if cancelable is true.");
test(function() {
+ assert_equals(ev.cancelable, true, "cancelable (before)");
+ ev.returnValue = false;
+ assert_equals(ev.cancelable, true, "cancelable (after)");
+ assert_equals(ev.defaultPrevented, true, "defaultPrevented");
+}, "returnValue should change defaultPrevented if cancelable is true.");
+test(function() {
ev.initEvent("foo", true, true);
assert_equals(ev.bubbles, true, "bubbles");
assert_equals(ev.cancelable, true, "cancelable");
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-click.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-click.html
index 29b0cae01d6..4aa4bbe4877 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-click.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-click.html
@@ -94,9 +94,11 @@ async_test(function(t) {
var clickEvent = new MouseEvent("click")
input.onchange = t.step_func_done(function() {
assert_false(clickEvent.defaultPrevented)
+ assert_true(clickEvent.returnValue)
assert_equals(clickEvent.eventPhase, 0)
assert_equals(clickEvent.currentTarget, null)
assert_equals(clickEvent.target, input)
+ assert_equals(clickEvent.srcElement, input)
assert_equals(clickEvent.composedPath().length, 0)
})
input.dispatchEvent(clickEvent)
@@ -110,6 +112,7 @@ async_test(function(t) {
var finalTarget = document.createElement("doesnotmatter")
finalTarget.onclick = t.step_func_done(function() {
assert_equals(clickEvent.target, finalTarget)
+ assert_equals(clickEvent.srcElement, finalTarget)
})
input.onchange = t.step_func(function() {
finalTarget.dispatchEvent(clickEvent)
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-detached-click.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-detached-click.html
index 30e15b8e44a..76ea3d78ba7 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-detached-click.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-detached-click.html
@@ -10,6 +10,7 @@ test(function() {
var t = async_test("Click event can be dispatched to an element that is not in the document.")
TARGET.addEventListener(EVENT, t.step_func(function(evt) {
assert_equals(evt.target, TARGET);
+ assert_equals(evt.srcElement, TARGET);
t.done();
}), true);
var e = document.createEvent("Event");
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-other-document.html b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-other-document.html
index 0252a4f7b61..689b48087a0 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-dispatch-other-document.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-dispatch-other-document.html
@@ -12,6 +12,7 @@ test(function() {
assert_false(called);
called = true;
assert_equals(ev.target, element);
+ assert_equals(ev.srcElement, element);
}));
doc.body.appendChild(element);
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 c6b85648a2a..34ed32af67b 100644
--- a/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html
+++ b/tests/wpt/web-platform-tests/dom/events/Event-initEvent.html
@@ -12,18 +12,20 @@ booleans.forEach(function(bubbles) {
var e = document.createEvent("Event")
e.initEvent("type", bubbles, cancelable)
- // Step 3.
+ // Step 2.
// Stop (immediate) propagation flag is tested later
assert_equals(e.defaultPrevented, false, "defaultPrevented")
- // Step 4.
+ assert_equals(e.returnValue, true, "returnValue")
+ // Step 3.
assert_equals(e.isTrusted, false, "isTrusted")
- // Step 5.
+ // Step 4.
assert_equals(e.target, null, "target")
- // Step 6.
+ assert_equals(e.srcElement, null, "srcElement")
+ // Step 5.
assert_equals(e.type, "type", "type")
- // Step 7.
+ // Step 6.
assert_equals(e.bubbles, bubbles, "bubbles")
- // Step 8.
+ // Step 7.
assert_equals(e.cancelable, cancelable, "cancelable")
}, "Properties of initEvent(type, " + bubbles + ", " + cancelable + ")")
})
diff --git a/tests/wpt/web-platform-tests/dom/events/Event-returnValue.html b/tests/wpt/web-platform-tests/dom/events/Event-returnValue.html
new file mode 100644
index 00000000000..50c26607415
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/events/Event-returnValue.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Event.returnValue</title>
+ <link rel="author" title="Chris Rebert" href="http://chrisrebert.com">
+ <link rel="help" href="https://dom.spec.whatwg.org/#dom-event-returnvalue">
+ <meta name="flags" content="dom">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+ <div id="log"></div>
+ <script>
+test(function() {
+ var ev = new Event("foo");
+ assert_true(ev.returnValue, "returnValue");
+}, "When an event is created, returnValue should be initialized to true.");
+test(function() {
+ var ev = new Event("foo", {"cancelable": false});
+ assert_false(ev.cancelable, "cancelable (before)");
+ ev.preventDefault();
+ assert_false(ev.cancelable, "cancelable (after)");
+ assert_true(ev.returnValue, "returnValue");
+}, "preventDefault() should not change returnValue if cancelable is false.");
+test(function() {
+ var ev = new Event("foo", {"cancelable": false});
+ assert_false(ev.cancelable, "cancelable (before)");
+ ev.returnValue = false;
+ assert_false(ev.cancelable, "cancelable (after)");
+ assert_true(ev.returnValue, "returnValue");
+}, "returnValue=false should have no effect if cancelable is false.");
+test(function() {
+ var ev = new Event("foo", {"cancelable": true});
+ assert_true(ev.cancelable, "cancelable (before)");
+ ev.preventDefault();
+ assert_true(ev.cancelable, "cancelable (after)");
+ assert_false(ev.returnValue, "returnValue");
+}, "preventDefault() should change returnValue if cancelable is true.");
+test(function() {
+ var ev = new Event("foo", {"cancelable": true});
+ assert_true(ev.cancelable, "cancelable (before)");
+ ev.returnValue = false;
+ assert_true(ev.cancelable, "cancelable (after)");
+ assert_false(ev.returnValue, "returnValue");
+}, "returnValue should change returnValue if cancelable is true.");
+test(function() {
+ var ev = document.createEvent("Event");
+ ev.returnValue = false;
+ ev.initEvent("foo", true, true);
+ assert_true(ev.bubbles, "bubbles");
+ assert_true(ev.cancelable, "cancelable");
+ assert_true(ev.returnValue, "returnValue");
+}, "initEvent should unset returnValue.");
+test(function() {
+ var ev = new Event("foo");
+ ev.preventDefault();
+ ev.returnValue = true;// no-op
+ assert_true(ev.defaultPrevented);
+ assert_false(ev.returnValue);
+}, "returnValue=true should have no effect once the canceled flag was set.");
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/dom/events/EventListener-handleEvent.html b/tests/wpt/web-platform-tests/dom/events/EventListener-handleEvent.html
index 3b58c49696d..b33b030a641 100644
--- a/tests/wpt/web-platform-tests/dom/events/EventListener-handleEvent.html
+++ b/tests/wpt/web-platform-tests/dom/events/EventListener-handleEvent.html
@@ -27,6 +27,7 @@ test(function(t) {
t.step(function() {
assert_equals(evt.type, event);
assert_equals(evt.target, target);
+ assert_equals(evt.srcElement, target);
assert_equals(that, event_listener);
});
}
diff --git a/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html b/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html
index 8804c38a53b..c4466e0d6cd 100644
--- a/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html
+++ b/tests/wpt/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html
@@ -3,6 +3,7 @@
<title>EventTarget.dispatchEvent: return value</title>
<link rel="help" href="https://dom.spec.whatwg.org/#concept-event-dispatch">
<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-preventdefault">
+<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-returnvalue">
<link rel="help" href="https://dom.spec.whatwg.org/#dom-event-defaultprevented">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
@@ -25,11 +26,13 @@ test(function() {
var target = document.getElementById("target");
var parent = document.getElementById("parent");
var default_prevented;
+ var return_value;
parent.addEventListener(event_type, function(e) {}, true);
target.addEventListener(event_type, function(e) {
evt.preventDefault();
default_prevented = evt.defaultPrevented;
+ return_value = evt.returnValue;
}, true);
target.addEventListener(event_type, function(e) {}, true);
@@ -39,5 +42,30 @@ test(function() {
assert_true(parent.dispatchEvent(evt));
assert_false(target.dispatchEvent(evt));
assert_true(default_prevented);
-}, "Return value of EventTarget.dispatchEvent.");
+ assert_false(return_value);
+}, "Return value of EventTarget.dispatchEvent() affected by preventDefault().");
+
+test(function() {
+ var event_type = "foo";
+ var target = document.getElementById("target");
+ var parent = document.getElementById("parent");
+ var default_prevented;
+ var return_value;
+
+ parent.addEventListener(event_type, function(e) {}, true);
+ target.addEventListener(event_type, function(e) {
+ evt.returnValue = false;
+ default_prevented = evt.defaultPrevented;
+ return_value = evt.returnValue;
+ }, true);
+ target.addEventListener(event_type, function(e) {}, true);
+
+ var evt = document.createEvent("Event");
+ evt.initEvent(event_type, true, true);
+
+ assert_true(parent.dispatchEvent(evt));
+ assert_false(target.dispatchEvent(evt));
+ assert_true(default_prevented);
+ assert_false(return_value);
+}, "Return value of EventTarget.dispatchEvent() affected by returnValue.");
</script>
diff --git a/tests/wpt/web-platform-tests/dom/events/event-global.worker.js b/tests/wpt/web-platform-tests/dom/events/event-global.worker.js
new file mode 100644
index 00000000000..116cf32932b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/events/event-global.worker.js
@@ -0,0 +1,14 @@
+importScripts("/resources/testharness.js");
+test(t => {
+ let seen = false;
+ const event = new Event("hi");
+ assert_equals(self.event, undefined);
+ self.addEventListener("hi", t.step_func(e => {
+ seen = true;
+ assert_equals(self.event, undefined);
+ assert_equals(e, event);
+ }));
+ self.dispatchEvent(event);
+ assert_true(seen);
+}, "There's no self.event (that's why we call it window.event) in workers");
+done();
diff --git a/tests/wpt/web-platform-tests/dom/lists/DOMTokenList-coverage-for-attributes.html b/tests/wpt/web-platform-tests/dom/lists/DOMTokenList-coverage-for-attributes.html
index 034e31c0ff1..e5f060b8ac9 100644
--- a/tests/wpt/web-platform-tests/dom/lists/DOMTokenList-coverage-for-attributes.html
+++ b/tests/wpt/web-platform-tests/dom/lists/DOMTokenList-coverage-for-attributes.html
@@ -10,9 +10,10 @@
var pairs = [
// Defined in DOM
{attr: "classList", sup: ["anyElement"]},
+ // Defined in HTML except for a which is also SVG
+ {attr: "relList", sup: ["a", "area", "link"]},
// Defined in HTML
{attr: "htmlFor", sup: ["output"]},
- {attr: "relList", sup: ["a", "area", "link"]},
{attr: "sandbox", sup: ["iframe"]},
{attr: "sizes", sup: ["link"]}
];
@@ -26,7 +27,11 @@ var namespaces = [
var elements = ["a", "area", "link", "iframe", "output", "td", "th"];
function testAttr(pair, new_el){
- return (pair.attr === "classList" || (new_el.namespaceURI === "http://www.w3.org/1999/xhtml" && pair.sup.indexOf(new_el.localName) != -1));
+ return (pair.attr === "classList" ||
+ (pair.attr === "relList" && new_el.localName === "a" &&
+ new_el.namespaceURI === "http://www.w3.org/2000/svg") ||
+ (new_el.namespaceURI === "http://www.w3.org/1999/xhtml" &&
+ pair.sup.indexOf(new_el.localName) != -1));
}
pairs.forEach(function(pair) {
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 edbac646d5a..c18b2069f98 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
@@ -190,4 +190,19 @@ function test_getElementsByTagName(context, element) {
get_elements(context);
assert_array_equals(actual, expected);
}, "getElementsByTagName('*')")
+
+ test(function() {
+ var t1 = element.appendChild(document.createElement("abc"));
+ this.add_cleanup(function() {element.removeChild(t1)});
+
+ var l = context.getElementsByTagName("abc");
+ assert_true(l instanceof HTMLCollection);
+ assert_equals(l.length, 1);
+
+ var t2 = element.appendChild(document.createElement("abc"));
+ assert_equals(l.length, 2);
+
+ element.removeChild(t2);
+ assert_equals(l.length, 1);
+ }, "getElementsByTagName() should be a live collection");
}
diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagNameNS.js b/tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagNameNS.js
index a1bb3158745..b610c49d864 100644
--- a/tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagNameNS.js
+++ b/tests/wpt/web-platform-tests/dom/nodes/Document-Element-getElementsByTagNameNS.js
@@ -125,4 +125,19 @@ function test_getElementsByTagNameNS(context, element) {
assert_array_equals(context.getElementsByTagNameNS(null, "0"), []);
assert_array_equals(context.getElementsByTagNameNS(null, "div"), []);
}, "Empty lists")
+
+ test(function() {
+ var t1 = element.appendChild(document.createElementNS("test", "abc"));
+ this.add_cleanup(function() {element.removeChild(t1)});
+
+ var l = context.getElementsByTagNameNS("test", "abc");
+ assert_true(l instanceof HTMLCollection);
+ assert_equals(l.length, 1);
+
+ var t2 = element.appendChild(document.createElementNS("test", "abc"));
+ assert_equals(l.length, 2);
+
+ element.removeChild(t2);
+ assert_equals(l.length, 1);
+ }, "getElementsByTagNameNS() should be a live collection");
}
diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-getElementsByClassName.html b/tests/wpt/web-platform-tests/dom/nodes/Document-getElementsByClassName.html
new file mode 100644
index 00000000000..db8fac212d7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/nodes/Document-getElementsByClassName.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<title>Document.getElementsByClassName</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+ var a = document.createElement("a"),
+ b = document.createElement("b");
+ a.className = "foo";
+ this.add_cleanup(function() {document.body.removeChild(a);});
+ document.body.appendChild(a);
+
+ var l = document.getElementsByClassName("foo");
+ assert_true(l instanceof HTMLCollection);
+ assert_equals(l.length, 1);
+
+ b.className = "foo";
+ document.body.appendChild(b);
+ assert_equals(l.length, 2);
+
+ document.body.removeChild(b);
+ assert_equals(l.length, 1);
+}, "getElementsByClassName() should be a live collection");
+</script>
diff --git a/tests/wpt/web-platform-tests/dom/nodes/Element-getElementsByClassName.html b/tests/wpt/web-platform-tests/dom/nodes/Element-getElementsByClassName.html
index 332c3060f1a..bc87b05d251 100644
--- a/tests/wpt/web-platform-tests/dom/nodes/Element-getElementsByClassName.html
+++ b/tests/wpt/web-platform-tests/dom/nodes/Element-getElementsByClassName.html
@@ -13,9 +13,31 @@ test(function() {
var secondList = a.getElementsByClassName("foo")
assert_true(list === secondList || list !== secondList, "Caching is allowed.")
}, "getElementsByClassName should work on disconnected subtrees.")
+
test(function() {
var list = document.getElementsByClassName("foo")
assert_false(list instanceof NodeList, "NodeList")
assert_true(list instanceof HTMLCollection, "HTMLCollection")
}, "Interface should be correct.")
+
+test(function() {
+ var a = document.createElement("a");
+ var b = document.createElement("b");
+ var c = document.createElement("c");
+ b.className = "foo";
+ document.body.appendChild(a);
+ this.add_cleanup(function() {document.body.removeChild(a)});
+ a.appendChild(b);
+
+ var l = a.getElementsByClassName("foo");
+ assert_true(l instanceof HTMLCollection);
+ assert_equals(l.length, 1);
+
+ c.className = "foo";
+ a.appendChild(c);
+ assert_equals(l.length, 2);
+
+ a.removeChild(c);
+ assert_equals(l.length, 1);
+}, "getElementsByClassName() should be a live collection");
</script>
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 f7586fa74a9..0d38df37b2d 100644
--- a/tests/wpt/web-platform-tests/dom/nodes/Node-childNodes.html
+++ b/tests/wpt/web-platform-tests/dom/nodes/Node-childNodes.html
@@ -7,6 +7,9 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
+<div style="display: none">
+ <ul id='test'><li>1</li><li>2</li><li>3</li><li>4</li></ul>
+</div>
<script>
test(function() {
var element = document.createElement("p");
@@ -96,4 +99,19 @@ test(function() {
assert_equals(list.entries, Array.prototype.entries);
assert_equals(list.forEach, Array.prototype.forEach);
}, "Iterator behavior of Node.childNodes");
+
+
+test(() => {
+ var node = document.getElementById("test");
+ var children = node.childNodes;
+ assert_true(children instanceof NodeList);
+ var li = document.createElement("li");
+ assert_equals(children.length, 4);
+
+ node.appendChild(li);
+ assert_equals(children.length, 5);
+
+ node.removeChild(li);
+ assert_equals(children.length, 4);
+}, "Node.childNodes should be a live collection");
</script>
diff --git a/tests/wpt/web-platform-tests/dom/nodes/Node-cloneNode.html b/tests/wpt/web-platform-tests/dom/nodes/Node-cloneNode.html
index 6c8663076a4..08d620b3b80 100644
--- a/tests/wpt/web-platform-tests/dom/nodes/Node-cloneNode.html
+++ b/tests/wpt/web-platform-tests/dom/nodes/Node-cloneNode.html
@@ -240,7 +240,6 @@ test(function() {
assert_equals(doc.contentType, copy.contentType, "contentType equality");
assert_equals(doc.URL, "about:blank", "URL value")
assert_equals(doc.URL, copy.URL, "URL equality");
- assert_equals(doc.origin, "null", "origin value")
assert_equals(doc.origin, copy.origin, "origin equality");
assert_equals(doc.compatMode, "CSS1Compat", "compatMode value");
assert_equals(doc.compatMode, copy.compatMode, "compatMode equality");
@@ -286,4 +285,17 @@ test(function() {
assert_equals(copy.childNodes.length, 0,
"copy.childNodes.length with non-deep copy");
}, "node with children");
+
+test(() => {
+ const proto = Object.create(HTMLElement.prototype),
+ node = document.createElement("hi");
+ Object.setPrototypeOf(node, proto);
+ assert_true(proto.isPrototypeOf(node));
+ const clone = node.cloneNode();
+ assert_false(proto.isPrototypeOf(clone));
+ assert_true(HTMLUnknownElement.prototype.isPrototypeOf(clone));
+ const deepClone = node.cloneNode(true);
+ assert_false(proto.isPrototypeOf(deepClone));
+ assert_true(HTMLUnknownElement.prototype.isPrototypeOf(deepClone));
+}, "Node with custom prototype")
</script>
diff --git a/tests/wpt/web-platform-tests/dom/nodes/ParentNode-children.html b/tests/wpt/web-platform-tests/dom/nodes/ParentNode-children.html
new file mode 100644
index 00000000000..6621e7d9def
--- /dev/null
+++ b/tests/wpt/web-platform-tests/dom/nodes/ParentNode-children.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>ParentNode.children</title>
+<link rel=help href="https://dom.spec.whatwg.org/#dom-parentnode-children">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<div style="display: none">
+ <ul><li id='test'>1</li><li>2</li><li>3</li><li>4</li></ul>
+</div>
+<script>
+test(() => {
+ var node = document.getElementById("test");
+ var parentNode = node.parentNode;
+ var children = parentNode.children;
+ assert_true(children instanceof HTMLCollection);
+ var li = document.createElement("li");
+ assert_equals(children.length, 4);
+
+ parentNode.appendChild(li);
+ assert_equals(children.length, 5);
+
+ parentNode.removeChild(li);
+ assert_equals(children.length, 4);
+}, "ParentNode.children should be a live collection");
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/dom/traversal/NodeIterator.html b/tests/wpt/web-platform-tests/dom/traversal/NodeIterator.html
index 677858d2a51..3db5dec0707 100644
--- a/tests/wpt/web-platform-tests/dom/traversal/NodeIterator.html
+++ b/tests/wpt/web-platform-tests/dom/traversal/NodeIterator.html
@@ -200,20 +200,15 @@ var callbacks = [
"(function(node) { return node.nodeName[0] == '#' })",
];
-var tests = [];
for (var i = 0; i < testNodes.length; i++) {
for (var j = 0; j < whatToShows.length; j++) {
for (var k = 0; k < callbacks.length; k++) {
- tests.push([
- "document.createNodeIterator(" + testNodes[i]
- + ", " + whatToShows[j] + ", " + callbacks[k] + ")",
- eval(testNodes[i]), eval(whatToShows[j]), eval(callbacks[k])
- ]);
+ test(() => {
+ testIterator(eval(testNodes[i]), eval(whatToShows[j]), eval(callbacks[k]));
+ }, "document.createNodeIterator(" + testNodes[i] + ", " + whatToShows[j] + ", " + callbacks[k] + ")");
}
}
}
-generate_tests(testIterator, tests);
-
testDiv.style.display = "none";
</script>
diff --git a/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html b/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html
index cd87ecdca26..a609f9483e6 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/encrypted-media/idlharness.https.html
@@ -33,6 +33,7 @@
idl_array.add_untested_idls("interface Navigator {};");
idl_array.add_untested_idls("interface HTMLMediaElement {};");
idl_array.add_untested_idls("interface Event {};");
+ idl_array.add_untested_idls("dictionary EventInit {};");
idl_array.add_untested_idls("interface EventTarget {};");
idl_array.add_idls(idls);
diff --git a/tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js b/tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js
index a6b0a968017..edfcbfc6133 100644
--- a/tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js
+++ b/tests/wpt/web-platform-tests/encrypted-media/scripts/requestmediakeysystemaccess.js
@@ -91,10 +91,12 @@ function runTest(config, qualifier) {
initDataTypes: [config.initDataType],
audioCapabilities: [{contentType: config.audioType}],
videoCapabilities: [{contentType: config.videoType}],
+ label: 'abcd',
}], {
initDataTypes: [config.initDataType],
audioCapabilities: [{contentType: config.audioType}],
videoCapabilities: [{contentType: config.videoType}],
+ label: 'abcd',
}, 'Basic supported configuration');
expect_config(config.keysystem, [{
diff --git a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html
index d757d4c4cf5..d71a09f9a9a 100644
--- a/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html
+++ b/tests/wpt/web-platform-tests/feature-policy/feature-policy-frame-policy-allowed-for-self.https.sub.html
@@ -28,6 +28,24 @@
test_frame_policy('fullscreen', cross_origin_src, false);
}, 'Test frame policy on cross origin iframe inherit from header policy.');
+ // Test that frame policy can be used for sandboxed frames
+ test(function() {
+ test_frame_policy(
+ 'fullscreen', same_origin_src, false, undefined, false, true);
+ }, 'Test frame policy on sandboxed iframe with no allow attribute.');
+ test(function() {
+ test_frame_policy(
+ 'fullscreen', same_origin_src, true, 'fullscreen', false, true);
+ }, 'Test frame policy on sandboxed iframe with allow="fullscreen".');
+ test(function() {
+ test_frame_policy(
+ 'fullscreen', same_origin_src, true, 'fullscreen \'src\'', false, true);
+ }, 'Test frame policy on sandboxed iframe with allow="fullscreen \'src\'".');
+ test(function() {
+ test_frame_policy(
+ 'fullscreen', cross_origin_src, false, 'fullscreen ' + cross_origin, false, true);
+ }, 'Test frame policy on sandboxed iframe with allow="fullscreen ' + cross_origin + '".');
+
// Test frame policy with allow attribute set to be one of the policies above.
for (var i = 0; i < policies.length; i++) {
test(function() {
diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js b/tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js
index be8629d153d..bf7693fd1b9 100644
--- a/tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js
+++ b/tests/wpt/web-platform-tests/feature-policy/resources/featurepolicy.js
@@ -393,8 +393,10 @@ function test_subframe_header_policy(
// test_expect: boolean value of whether the feature should be allowed.
// allow: optional, the allow attribute (container policy) of the iframe.
// allowfullscreen: optional, boolean value of allowfullscreen attribute.
+// sandbox: optional boolean. If true, the frame will be sandboxed (with
+// allow-scripts, so that tests can run in it.)
function test_frame_policy(
- feature, src, test_expect, allow, allowfullscreen) {
+ feature, src, test_expect, allow, allowfullscreen, sandbox) {
let frame = document.createElement('iframe');
document.body.appendChild(frame);
// frame_policy should be dynamically updated as allow and allowfullscreen is
@@ -406,6 +408,9 @@ function test_frame_policy(
if (!!allowfullscreen) {
frame.setAttribute('allowfullscreen', true);
}
+ if (!!sandbox) {
+ frame.setAttribute('sandbox', 'allow-scripts');
+ }
frame.src = src;
if (test_expect) {
assert_true(frame_policy.allowedFeatures().includes(feature));
diff --git a/tests/wpt/web-platform-tests/fetch/api/abort/general.any.js b/tests/wpt/web-platform-tests/fetch/api/abort/general.any.js
index eb5979756fe..91361cb00f2 100644
--- a/tests/wpt/web-platform-tests/fetch/api/abort/general.any.js
+++ b/tests/wpt/web-platform-tests/fetch/api/abort/general.any.js
@@ -57,7 +57,7 @@ for (const { args, testName } of badRequestArgTests) {
// Add signal to 2nd arg
args[1] = args[1] || {};
args[1].signal = controller.signal;
- await promise_rejects(t, err, fetch(...args));
+ await promise_rejects(t, new TypeError, fetch(...args));
}
}, `TypeError from request constructor takes priority - ${testName}`);
}
diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/mediasource.window.js b/tests/wpt/web-platform-tests/fetch/api/basic/mediasource.window.js
new file mode 100644
index 00000000000..ff58a5295ff
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/api/basic/mediasource.window.js
@@ -0,0 +1,5 @@
+promise_test(t => {
+ const mediaSource = new MediaSource(),
+ mediaSourceURL = URL.createObjectURL(mediaSource);
+ return promise_rejects(t, new TypeError(), fetch(mediaSourceURL));
+}, "Cannot fetch blob: URL from a MediaSource");
diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.any.js
index ee0572f361d..aae7146a5a1 100644
--- a/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.any.js
+++ b/tests/wpt/web-platform-tests/fetch/api/basic/scheme-about.any.js
@@ -1,34 +1,17 @@
// META: script=../resources/utils.js
-function checkFetchResponse(url, method, desc) {
- if (!desc) {
- var cut = (url.length >= 40) ? "[...]" : "";
- cut += " (" + method + ")"
- desc = "Fetching " + url.substring(0, 40) + cut + " is OK"
- }
+function checkNetworkError(url, method) {
+ method = method || "GET";
+ const desc = "Fetching " + url.substring(0, 45) + " with method " + method + " is KO"
promise_test(function(test) {
- 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"), "text/html;charset=utf-8", "Content-Type is " + resp.headers.get("Content-Type"));
- return resp.text();
- })
- }, desc);
-}
-
-checkFetchResponse("about:blank", "GET");
-checkFetchResponse("about:blank", "PUT");
-checkFetchResponse("about:blank", "POST");
-
-function checkKoUrl(url, desc) {
- if (!desc)
- desc = "Fetching " + url.substring(0, 45) + " is KO"
- promise_test(function(test) {
- var promise = fetch(url);
+ var promise = fetch(url, { method: method });
return promise_rejects(test, new TypeError(), promise);
}, desc);
}
-checkKoUrl("about:invalid.com");
-checkKoUrl("about:config");
-checkKoUrl("about:unicorn");
+checkNetworkError("about:blank", "GET");
+checkNetworkError("about:blank", "PUT");
+checkNetworkError("about:blank", "POST");
+checkNetworkError("about:invalid.com");
+checkNetworkError("about:config");
+checkNetworkError("about:unicorn");
diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/header-values-normalize.html b/tests/wpt/web-platform-tests/fetch/api/headers/header-values-normalize.html
index 616d83acb7e..30e7a58b36d 100644
--- a/tests/wpt/web-platform-tests/fetch/api/headers/header-values-normalize.html
+++ b/tests/wpt/web-platform-tests/fetch/api/headers/header-values-normalize.html
@@ -56,9 +56,9 @@ for(let i = 0; i < 0x21; i++) {
promise_test((t) => {
if(fail) {
return Promise.all([
- promise_rejects(t, new TypeError(), fetch("about:blank", { headers: {"val1": val1} })),
- promise_rejects(t, new TypeError(), fetch("about:blank", { headers: {"val2": val2} })),
- promise_rejects(t, new TypeError(), fetch("about:blank", { headers: {"val3": val3} }))
+ promise_rejects(t, new TypeError(), fetch(url, { headers: {"val1": val1} })),
+ promise_rejects(t, new TypeError(), fetch(url, { headers: {"val2": val2} })),
+ promise_rejects(t, new TypeError(), fetch(url, { headers: {"val3": val3} }))
])
} else {
return fetch(url, { headers: {"val1": val1, "val2": val2, "val3": val3} }).then((res) => {
diff --git a/tests/wpt/web-platform-tests/fetch/api/headers/header-values.html b/tests/wpt/web-platform-tests/fetch/api/headers/header-values.html
index 35e7b7e46a9..6dfe0d3a789 100644
--- a/tests/wpt/web-platform-tests/fetch/api/headers/header-values.html
+++ b/tests/wpt/web-platform-tests/fetch/api/headers/header-values.html
@@ -15,7 +15,7 @@
assert_throws("SyntaxError", () => xhr.setRequestHeader("value-test", val))
}, "XMLHttpRequest with value " + encodeURI(val) + " needs to throw")
- promise_test(t => promise_rejects(t, new TypeError(), fetch("about:blank", { headers: {"value-test": val} })), "fetch() with value " + encodeURI(val) + " needs to throw")
+ promise_test(t => promise_rejects(t, new TypeError(), fetch("/", { headers: {"value-test": val} })), "fetch() with value " + encodeURI(val) + " needs to throw")
})
// Valid values
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 b59a8d57b0d..969047d96c2 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
@@ -3,15 +3,22 @@ if (this.document === undefined) {
importScripts("/common/get-host-info.sub.js")
}
-function redirectMode(desc, redirectUrl, redirectLocation, redirectStatus, redirectMode) {
- var url = redirectUrl;
+var redirectLocation = "cors-top.txt";
+
+function testRedirect(origin, redirectStatus, redirectMode, corsMode) {
+ var url = new URL("../resources/redirect.py", self.location);
+ if (origin === "cross-origin") {
+ url.host = get_host_info().REMOTE_HOST;
+ }
+
var urlParameters = "?redirect_status=" + redirectStatus;
urlParameters += "&location=" + encodeURIComponent(redirectLocation);
- var requestInit = {"redirect": redirectMode};
+ var requestInit = {redirect: redirectMode, mode: corsMode};
promise_test(function(test) {
- if (redirectMode === "error")
+ if (redirectMode === "error" ||
+ (corsMode === "no-cors" && redirectMode !== "follow" && origin !== "same-origin"))
return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit));
if (redirectMode === "manual")
return fetch(url + urlParameters, requestInit).then(function(resp) {
@@ -22,20 +29,24 @@ function redirectMode(desc, redirectUrl, redirectLocation, redirectStatus, redir
});
if (redirectMode === "follow")
return fetch(url + urlParameters, requestInit).then(function(resp) {
- assert_true(new URL(resp.url).pathname.endsWith(locationUrl), "Response's url should be the redirected one");
- assert_equals(resp.status, 200, "Response's status is 200");
+ if (corsMode !== "no-cors" || origin === "same-origin") {
+ assert_true(new URL(resp.url).pathname.endsWith(redirectLocation), "Response's url should be the redirected one");
+ assert_equals(resp.status, 200, "Response's status is 200");
+ } else {
+ assert_equals(resp.type, "opaque", "Response is opaque");
+ }
});
assert_unreached(redirectMode + " is no a valid redirect mode");
- }, desc);
+ }, origin + " redirect " + redirectStatus + " in " + redirectMode + " redirect and " + corsMode + " mode");
}
-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]) {
- redirectMode("Redirect " + statusCode + " in \"error\" mode ", redirUrl, locationUrl, statusCode, "error");
- redirectMode("Redirect " + statusCode + " in \"follow\" mode ", redirUrl, locationUrl, statusCode, "follow");
- redirectMode("Redirect " + statusCode + " in \"manual\" mode ", redirUrl, locationUrl, statusCode, "manual");
+for (var origin of ["same-origin", "cross-origin"]) {
+ for (var statusCode of [301, 302, 303, 307, 308]) {
+ for (var redirect of ["error", "manual", "follow"]) {
+ for (var mode of ["cors", "no-cors"])
+ testRedirect(origin, statusCode, redirect, mode);
+ }
+ }
}
done();
diff --git a/tests/wpt/web-platform-tests/fetch/api/request/destination/fetch-destination-no-load-event.https.html b/tests/wpt/web-platform-tests/fetch/api/request/destination/fetch-destination-no-load-event.https.html
index 5be882ff138..1778bf2581a 100644
--- a/tests/wpt/web-platform-tests/fetch/api/request/destination/fetch-destination-no-load-event.https.html
+++ b/tests/wpt/web-platform-tests/fetch/api/request/destination/fetch-destination-no-load-event.https.html
@@ -9,7 +9,8 @@ let frame;
// Set up the service worker and the frame.
promise_test(t => {
- const kScope = 'resources/empty.https.html';
+ const kScope = 'resources/';
+ const kFrame = 'resources/empty.https.html';
const kScript = 'resources/fetch-destination-worker-no-load-event.js';
return service_worker_unregister_and_register(t, kScript, kScope)
.then(registration => {
@@ -20,7 +21,7 @@ promise_test(t => {
return wait_for_state(t, registration.installing, 'activated');
})
.then(() => {
- return with_iframe(kScope);
+ return with_iframe(kFrame);
})
.then(f => {
frame = f;
@@ -111,7 +112,6 @@ promise_test(async t => {
// style destination
/////////////////////
-
// @import - style destination
promise_test(async t => {
let node = frame.contentWindow.document.createElement("style");
diff --git a/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js b/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js
index fd71ffb2182..5a3c679cc03 100644
--- a/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js
+++ b/tests/wpt/web-platform-tests/fetch/api/request/destination/resources/fetch-destination-worker-no-load-event.js
@@ -2,11 +2,13 @@ self.addEventListener('fetch', function(event) {
if (event.request.url.includes('dummy')) {
event.waitUntil(async function() {
let destination = new URL(event.request.url).searchParams.get("dest");
- let client = await self.clients.get(event.clientId);
+ var result = "FAIL";
if (event.request.destination == destination) {
- client.postMessage("PASS");
- } else {
- client.postMessage("FAIL");
+ result = "PASS";
+ }
+ let cl = await clients.matchAll({includeUncontrolled: true});
+ for (i = 0; i < cl.length; i++) {
+ cl[i].postMessage(result);
}
}())
}
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 5d92b09c568..221b415a3c1 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
@@ -43,7 +43,7 @@
//not equals: cannot guess formData exact value
assert_true( bodyAsText.search(expectedTextBody) > -1, "Retrieve and verify request body");
});
- }, "Initialize Request's body with " + bodyType);
+ }, `Initialize Request's body with "${body}", ${bodyType}`);
}
var blob = new Blob(["This is a blob"], {type: "application/octet-binary"});
@@ -56,6 +56,7 @@
checkRequestInit(blob, "application/octet-binary", "This is a blob");
checkRequestInit(formaData, "multipart/form-data", "name=\"name\"\r\n\r\nvalue");
checkRequestInit(usvString, "text/plain;charset=UTF-8", "This is a USVString");
+ checkRequestInit({toString: () => "hi!"}, "text/plain;charset=UTF-8", "hi!");
// Ensure test does not time out in case of missing URLSearchParams support.
if (window.URLSearchParams) {
diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-init-003.sub.html b/tests/wpt/web-platform-tests/fetch/api/request/request-init-003.sub.html
index 507007f1f4c..79c91cdfe82 100644
--- a/tests/wpt/web-platform-tests/fetch/api/request/request-init-003.sub.html
+++ b/tests/wpt/web-platform-tests/fetch/api/request/request-init-003.sub.html
@@ -44,7 +44,7 @@
"referrer" : "about:client",
"referrerPolicy" : "",
"mode" : "cors",
- "credentials" : "omit",
+ "credentials" : "same-origin",
"cache" : "default",
"redirect" : "follow",
"integrity" : "",
diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html
index 98c24517e66..ccdb707795c 100644
--- a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html
+++ b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html
@@ -76,7 +76,7 @@
break;
case "credentials":
- defaultValue = "omit";
+ defaultValue = "same-origin";
newValue = "cors";
break;
diff --git a/tests/wpt/web-platform-tests/fetch/api/resources/cors-top.txt b/tests/wpt/web-platform-tests/fetch/api/resources/cors-top.txt
new file mode 100644
index 00000000000..83a3157d14d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/api/resources/cors-top.txt
@@ -0,0 +1 @@
+top \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/fetch/api/resources/cors-top.txt.headers b/tests/wpt/web-platform-tests/fetch/api/resources/cors-top.txt.headers
new file mode 100644
index 00000000000..cb762eff806
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/api/resources/cors-top.txt.headers
@@ -0,0 +1 @@
+Access-Control-Allow-Origin: *
diff --git a/tests/wpt/web-platform-tests/fetch/content-encoding/bad-gzip-body.any.js b/tests/wpt/web-platform-tests/fetch/content-encoding/bad-gzip-body.any.js
new file mode 100644
index 00000000000..34557de90f5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/content-encoding/bad-gzip-body.any.js
@@ -0,0 +1,20 @@
+promise_test((test) => {
+ return fetch("resources/bad-gzip-body.py").then(res => {
+ assert_equals(res.status, 200);
+ });
+}, "Fetching a resource with bad gzip content should still resolve");
+
+[
+ "arrayBuffer",
+ "blob",
+ "formData",
+ "json",
+ "text"
+].forEach(method => {
+ promise_test(t => {
+ return fetch("resources/bad-gzip-body.py").then(res => {
+ assert_equals(res.status, 200);
+ return promise_rejects(t, new TypeError(), res[method]());
+ });
+ }, "Consuming the body of a resource with bad gzip content with " + method + "() should reject");
+});
diff --git a/tests/wpt/web-platform-tests/fetch/content-encoding/resources/bad-gzip-body.py b/tests/wpt/web-platform-tests/fetch/content-encoding/resources/bad-gzip-body.py
new file mode 100644
index 00000000000..b2f8cfefd7e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/content-encoding/resources/bad-gzip-body.py
@@ -0,0 +1,3 @@
+def main(request, response):
+ headers = [("Content-Encoding", "gzip")]
+ return headers, "not actually gzip"
diff --git a/tests/wpt/web-platform-tests/fetch/data-urls/resources/base64.json b/tests/wpt/web-platform-tests/fetch/data-urls/resources/base64.json
index 7de20b28286..c4f79aafd93 100644
--- a/tests/wpt/web-platform-tests/fetch/data-urls/resources/base64.json
+++ b/tests/wpt/web-platform-tests/fetch/data-urls/resources/base64.json
@@ -49,6 +49,7 @@
["ab=c=", null],
["abc=d", null],
["abc=d=", null],
+ ["ab\u000Bcd", null],
["ab\tcd", [105, 183, 29]],
["ab\ncd", [105, 183, 29]],
["ab\fcd", [105, 183, 29]],
diff --git a/tests/wpt/web-platform-tests/fonts/README.md b/tests/wpt/web-platform-tests/fonts/README.md
index f69b95ab652..7c6ed9a5c86 100644
--- a/tests/wpt/web-platform-tests/fonts/README.md
+++ b/tests/wpt/web-platform-tests/fonts/README.md
@@ -1,2 +1,6 @@
This directory only contains auxiliary font files used by other tests. See
/css-fonts for tests covering the CSS Fonts Module specification.
+
+The font named `Ahem.ttf` is referenced from the project documentation and the
+CLI's scripts for provisioning virtual machines provided by Sauce Labs. If that
+file is re-located, the references should be updated accordingly.
diff --git a/tests/wpt/web-platform-tests/gamepad/idlharness.html b/tests/wpt/web-platform-tests/gamepad/idlharness.html
index 833449d72b6..9719d020196 100644
--- a/tests/wpt/web-platform-tests/gamepad/idlharness.html
+++ b/tests/wpt/web-platform-tests/gamepad/idlharness.html
@@ -14,8 +14,9 @@
promise_test(async () => {
const idl_array = new IdlArray();
const gamepad_idl = await fetch("/interfaces/gamepad.idl").then(r => r.text());
+ const dom = await fetch("/interfaces/dom.idl").then(r => r.text());
- idl_array.add_untested_idls('interface Event {};');
+ idl_array.add_untested_idls(dom, {only: ['Event', 'EventInit']});
idl_array.add_untested_idls('interface Navigator {};');
idl_array.add_idls(gamepad_idl);
diff --git a/tests/wpt/web-platform-tests/geolocation-sensor/idlharness.https.html b/tests/wpt/web-platform-tests/geolocation-sensor/idlharness.https.html
index d674a79fa5f..75d29ebaa80 100644
--- a/tests/wpt/web-platform-tests/geolocation-sensor/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/geolocation-sensor/idlharness.https.html
@@ -14,7 +14,7 @@ function doTest([generic_sensor, geolocation_sensor]) {
const idl_array = new IdlArray();
idl_array.add_untested_idls('interface EventTarget {};');
idl_array.add_untested_idls('interface EventHandler {};');
- idl_array.add_idls(generic_sensor, { only: ['Sensor'] });
+ idl_array.add_idls(generic_sensor, { only: ['Sensor', 'SensorOptions'] });
idl_array.add_idls(geolocation_sensor);
idl_array.add_objects({
GeolocationSensor: ['new GeolocationSensor'],
diff --git a/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html b/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html
index ca552a98211..4b3ed48a073 100644
--- a/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/gyroscope/idlharness.https.html
@@ -15,7 +15,7 @@ function doTest([dom, generic_sensor, gyroscope]) {
const idl_array = new IdlArray();
idl_array.add_untested_idls(dom);
idl_array.add_untested_idls('interface EventHandler {};');
- idl_array.add_idls(generic_sensor, { only: ['Sensor'] });
+ idl_array.add_idls(generic_sensor, { only: ['Sensor', 'SensorOptions'] });
idl_array.add_idls(gyroscope);
idl_array.add_objects({
Gyroscope: ['new Gyroscope();']
diff --git a/tests/wpt/web-platform-tests/hr-time/idlharness.html b/tests/wpt/web-platform-tests/hr-time/idlharness.html
index 4abaf6033fd..d28cee3a700 100644
--- a/tests/wpt/web-platform-tests/hr-time/idlharness.html
+++ b/tests/wpt/web-platform-tests/hr-time/idlharness.html
@@ -16,8 +16,9 @@
<script>
'use strict';
-function doTest([html, hr_time]) {
+function doTest([dom, html, hr_time]) {
var idl_array = new IdlArray();
+ idl_array.add_untested_idls(dom, { only: ['EventTarget'] });
idl_array.add_untested_idls(html, { only: ['WindowOrWorkerGlobalScope'] });
idl_array.add_idls(hr_time);
idl_array.add_objects({
@@ -32,7 +33,8 @@ function fetchText(url) {
}
promise_test(() => {
- return Promise.all(['/interfaces/html.idl',
+ return Promise.all(['/interfaces/dom.idl',
+ '/interfaces/html.idl',
'/interfaces/hr-time.idl'].map(fetchText))
.then(doTest);
}, 'Test driver');
diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/007.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/007.html
index 0d5b72e0fc5..4a2fed5facd 100644
--- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/007.html
+++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/unload/007.html
@@ -4,17 +4,17 @@
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
-var t = async_test(undefined, {timeout:2000});
+var t = async_test();
var loaded = false;
var unload_fired = false;
var timeout_fired = false;
function start_test() {
- setTimeout(t.step_func(function() {
- assert_true(unload_fired);
- assert_false(timeout_fired);
- t.done()
+ step_timeout(t.step_func(function() {
+ assert_true(unload_fired);
+ assert_false(timeout_fired);
+ t.done()
}), 1000);
}
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/appcache-worker.html b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/appcache-worker.https.html
index 96fe5f2b7d2..96fe5f2b7d2 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/appcache-worker.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/appcache/workers/appcache-worker.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_idle.html b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_idle.https.html
index 21725bb00d0..21725bb00d0 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_idle.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_idle.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_uncached.html b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_uncached.https.html
index 300c4a1b182..300c4a1b182 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_uncached.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_status_uncached.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_swapcache_error.html b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_swapcache_error.https.html
index 02e7b3cd8c0..02e7b3cd8c0 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_swapcache_error.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_swapcache_error.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update.html b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update.https.html
index 0cb281fba56..0cb281fba56 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update_error.html b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update_error.https.html
index 469baea8bad..469baea8bad 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update_error.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/api_update_error.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/secure_context.html b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/secure_context.html
new file mode 100644
index 00000000000..b9ccc1f854a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/application-cache-api/secure_context.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script>
+ test(t => {
+ assert_false('applicationCache' in window);
+ assert_equals(window.applicationCache, undefined);
+ }, "window.applicationCache does not exist in non-secure contexts.");
+
+ test(t => {
+ assert_false('ApplicationCache' in window);
+ assert_equals(typeof ApplicationCache, "undefined");
+ }, "ApplicationCache interface does not exist in non-secure contexts.");
+
+ test(t => {
+ assert_false('ApplicationCacheErrorEvent' in window);
+ assert_equals(typeof ApplicationCacheErrorEvent, "undefined");
+ }, "ApplicationCacheErrorEvent interface does not exist in non-secure contexts.");
+ </script>
+</head>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_event-manual.html b/tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_event-manual.https.html
index b100f177eb1..b100f177eb1 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_event-manual.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_event-manual.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online.html b/tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online.https.html
index 81547c3fb99..81547c3fb99 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/browser-state/navigator_online_online.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_cached.html b/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_cached.https.html
index 24f57769fc5..24f57769fc5 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_cached.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_cached.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_checking.html b/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_checking.https.html
index c180eca9d92..c180eca9d92 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_checking.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_checking.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_noupdate.html b/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_noupdate.https.html
index 1e4dd89cf31..1e4dd89cf31 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_noupdate.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_noupdate.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_progress.html b/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_progress.https.html
index a808db75704..a808db75704 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_progress.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/introduction-4/event_progress.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_main_empty-manual.html b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_main_empty-manual.https.html
index 317aaa11379..317aaa11379 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_main_empty-manual.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_main_empty-manual.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_notchanged_online-manual.html b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_notchanged_online-manual.https.html
index a464b426a71..a464b426a71 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_notchanged_online-manual.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_notchanged_online-manual.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_empty-manual.html b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_empty-manual.https.html
index eea2dbba357..eea2dbba357 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_empty-manual.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_empty-manual.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_many-manual.html b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_many-manual.https.html
index 9378df1b40f..9378df1b40f 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_many-manual.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_section_many-manual.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_url_check.html b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_url_check.https.https.html
index 02bf70b163d..02bf70b163d 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/manifest_url_check.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/manifest_url_check.https.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/no-appcache-in-shared-workers-historical.html b/tests/wpt/web-platform-tests/html/browsers/offline/no-appcache-in-shared-workers-historical.https.html
index edfcc3e4360..edfcc3e4360 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/no-appcache-in-shared-workers-historical.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/no-appcache-in-shared-workers-historical.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/section_network_offline-manual.html b/tests/wpt/web-platform-tests/html/browsers/offline/section_network_offline-manual.https.html
index c4121f5bc53..c4121f5bc53 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/section_network_offline-manual.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/section_network_offline-manual.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/offline/section_network_online-manual.html b/tests/wpt/web-platform-tests/html/browsers/offline/section_network_online-manual.https.html
index a5d8e59406e..a5d8e59406e 100644
--- a/tests/wpt/web-platform-tests/html/browsers/offline/section_network_online-manual.html
+++ b/tests/wpt/web-platform-tests/html/browsers/offline/section_network_online-manual.https.html
diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.https.html
index 8b067da8c67..912601488f5 100644
--- a/tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.html
+++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/security-window/window-security.https.html
@@ -195,7 +195,7 @@ onload = function() {
var frame = document.createElement('iframe');
frame.id = "fr";
frame.setAttribute("style", "display:none");
- frame.setAttribute('src', get_host_info().HTTP_REMOTE_ORIGIN + "/");
+ frame.setAttribute('src', get_host_info().HTTPS_REMOTE_ORIGIN + "/");
frame.setAttribute("onload", "fr_load()");
document.body.appendChild(frame);
}
diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.https.html
index 5ad6335c82a..5ad6335c82a 100644
--- a/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.html
+++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/window-properties.https.html
diff --git a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.embeds-document.plugins-01.html b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.embeds-document.plugins-01.html
index b4fe36d2430..e710798915d 100644
--- a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.embeds-document.plugins-01.html
+++ b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.embeds-document.plugins-01.html
@@ -52,4 +52,36 @@ test(function() {
assert_equals(document.embeds, document.plugins,
"embeds should be the same as plugins");
}, "Two plugins");
+
+test(function() {
+ var embed1 = document.createElement("embed"),
+ embed2 = document.createElement("embed");
+ document.body.appendChild(embed1);
+ this.add_cleanup(function() { document.body.removeChild(embed1) });
+ var embeds = document.embeds;
+ assert_true(embeds instanceof HTMLCollection);
+ assert_equals(embeds.length, 1);
+
+ document.body.appendChild(embed2);
+ assert_equals(embeds.length, 2);
+
+ document.body.removeChild(embed2);
+ assert_equals(embeds.length, 1);
+}, "Document.embeds should be a live collection");
+
+test(function() {
+ var embed1 = document.createElement("embed"),
+ embed2 = document.createElement("embed");
+ document.body.appendChild(embed1);
+ this.add_cleanup(function() { document.body.removeChild(embed1) });
+ var pls = document.plugins;
+ assert_true(pls instanceof HTMLCollection);
+ assert_equals(pls.length, 1);
+
+ document.body.appendChild(embed2);
+ assert_equals(pls.length, 2);
+
+ document.body.removeChild(embed2);
+ assert_equals(pls.length, 1);
+}, "Document.plugins should be a live collection");
</script>
diff --git a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.forms.html b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.forms.html
index e0689c7c799..093c47c6766 100644
--- a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.forms.html
+++ b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.forms.html
@@ -67,4 +67,17 @@ test(function() {
var result = Object.getOwnPropertyNames(document.forms);
assert_array_equals(result, ["0", "1", "2", "form1", "form2"])
}, "document.forms getOwnPropertyNames")
+
+test(function() {
+ var forms = document.forms;
+ assert_true(forms instanceof HTMLCollection);
+ assert_equals(forms.length, 3);
+
+ var form = document.createElement("form");
+ document.body.appendChild(form);
+ assert_equals(forms.length, 4);
+
+ document.body.removeChild(form);
+ assert_equals(forms.length, 3);
+}, "Document.forms should be a live collection");
</script>
diff --git a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html
new file mode 100644
index 00000000000..74aad6954fb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-liveness.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<title>Document.getElementsByName: liveness</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+ var input = document.createElement("input"),
+ embed = document.createElement("embed");
+ input.setAttribute("name", "test");
+ input.setAttribute("type", "text");
+ embed.setAttribute("name", "test");
+ document.body.appendChild(input);
+ this.add_cleanup(function() { document.body.removeChild(input) });
+ var e = document.getElementsByName("test");
+ assert_true(e instanceof NodeList);
+ assert_equals(e.length, 1);
+
+ document.body.appendChild(embed);
+ assert_equals(e.length, 2);
+
+ document.body.removeChild(embed);
+ assert_equals(e.length, 1);
+}, "Document.getElementsByName() should be a live collection");
+</script>
diff --git a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.images.html b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.images.html
index 558fdebc3a0..10ebe5ee8a7 100644
--- a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.images.html
+++ b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.images.html
@@ -102,4 +102,18 @@ test(function() {
assert_equals(c.namedItem(""), null);
assert_false("" in c, '"" in c');
}, "The empty string should not be in the collections");
+
+test(function() {
+ var div = document.getElementById("test");
+ var imgs = document.images;
+ assert_true(imgs instanceof HTMLCollection);
+ assert_equals(imgs.length, 10);
+
+ var img = document.createElement("img");
+ div.appendChild(img);
+ assert_equals(imgs.length, 11);
+
+ div.removeChild(img);
+ assert_equals(imgs.length, 10);
+}, "Document.images should be a live collection");
</script>
diff --git a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.links.html b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.links.html
new file mode 100644
index 00000000000..69c7d8c52c6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.links.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Document.links</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<div id=test>
+<a href=""></a>
+<a href=""></a>
+</div>
+<script>
+test(function() {
+ var div = document.getElementById("test");
+ var links = document.links;
+ assert_true(links instanceof HTMLCollection);
+ assert_equals(links.length, 2);
+
+ var a = document.createElement("a");
+ a.setAttribute("href", "");
+ div.appendChild(a);
+ assert_equals(links.length, 3);
+
+ div.removeChild(a);
+ assert_equals(links.length, 2);
+}, "Document.links should be a live collection");
+</script>
diff --git a/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.scripts.html b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.scripts.html
new file mode 100644
index 00000000000..82d3db14b2d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/dom/documents/dom-tree-accessors/document.scripts.html
@@ -0,0 +1,21 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Document.scripts</title>
+<link rel="author" title="Intel" href="http://www.intel.com">
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+test(function() {
+ var scripts = document.scripts;
+ assert_true(scripts instanceof HTMLCollection);
+ assert_equals(scripts.length, 3);
+
+ var script = document.createElement("script");
+ document.body.appendChild(script);
+ assert_equals(scripts.length, 4);
+
+ document.body.removeChild(script);
+ assert_equals(scripts.length, 3);
+}, "Document.scripts should be a live collection");
+</script>
diff --git a/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.html b/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.https.html
index 4fc5163ea44..4fc5163ea44 100644
--- a/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.html
+++ b/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/009.https.html
diff --git a/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext-subframe.txt b/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext-subframe.txt
new file mode 100644
index 00000000000..3e715502b97
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext-subframe.txt
@@ -0,0 +1 @@
+Some text.
diff --git a/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext.window.js b/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext.window.js
new file mode 100644
index 00000000000..52edd004ff6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/dom/dynamic-markup-insertion/opening-the-input-stream/type-argument-plaintext.window.js
@@ -0,0 +1,23 @@
+["replace",
+ "NOBODY",
+ "@ FD ;",
+ "it does not matter, you see \f",
+ "text/plain",
+ "text/xml",
+ "application/octet-stream",
+ "\0"].forEach(type => {
+ async_test(t => {
+ const frame = document.createElement("iframe");
+ frame.src = "type-argument-plaintext-subframe.txt";
+ document.body.appendChild(frame);
+ t.add_cleanup(() => frame.remove());
+ frame.onload = t.step_func_done(() => {
+ frame.contentDocument.open(type);
+ frame.contentDocument.write("<B>heya</b>");
+ frame.contentDocument.close();
+ assert_equals(frame.contentDocument.body.firstChild.localName, "b");
+ assert_equals(frame.contentDocument.body.textContent, "heya");
+ assert_equals(frame.contentDocument.contentType, "text/plain");
+ });
+ }, "document.open() on plaintext document with type set to: " + type + " (type argument is supposed to be ignored)");
+});
diff --git a/tests/wpt/web-platform-tests/html/dom/interfaces.html b/tests/wpt/web-platform-tests/html/dom/interfaces.https.html
index b8c2af39eae..4cb509d9f94 100644
--- a/tests/wpt/web-platform-tests/html/dom/interfaces.html
+++ b/tests/wpt/web-platform-tests/html/dom/interfaces.https.html
@@ -197,7 +197,7 @@ function doTest([html, dom, cssom, uievents, touchevents]) {
PeerConnection: [],
MediaStreamEvent: [],
ErrorEvent: [],
- WebSocket: ['new WebSocket("ws://foo")'],
+ WebSocket: ['new WebSocket("wss://foo")'],
CloseEvent: ['new CloseEvent("close")'],
AbstractWorker: [],
Worker: [],
diff --git a/tests/wpt/web-platform-tests/html/editing/focus/focus-01-manual.html b/tests/wpt/web-platform-tests/html/editing/focus/focus-01.html
index 16e0b0f6c1e..9d1bf1b6c7d 100644
--- a/tests/wpt/web-platform-tests/html/editing/focus/focus-01-manual.html
+++ b/tests/wpt/web-platform-tests/html/editing/focus/focus-01.html
@@ -7,17 +7,12 @@
<meta assert="assert" content="Check if the key events received by document are targeted at the element when it is focused">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<h2>Steps:</h2>
-<ol>
- <li>Input any character into the textbox by keyboard in 10 seconds.</li>
-</ol>
-<h2>Expect results:</h2>
-<p>PASS</p>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
<div id="log"></div>
<input id="test">
<script>
-//These tests can be automated once we have an uniform way to use webdriver.
var t1 = async_test("The keydown event must be targeted at the input element"),
t2 = async_test("The keypress event must be targeted at the input element"),
t3 = async_test("The keyup event must be targeted at the input element"),
@@ -40,4 +35,10 @@ document.onkeyup = t3.step_func_done(function(evt){
assert_equals(evt.target, testEle, "The keyup events must be targeted at the input element.");
});
+var input_element = document.getElementById("test");
+
+t1.step(function() {
+ test_driver.send_keys(input_element, "a");
+});
+
</script>
diff --git a/tests/wpt/web-platform-tests/html/editing/focus/focus-02-manual.html b/tests/wpt/web-platform-tests/html/editing/focus/focus-02.html
index 16dcfcf2a15..1858d6a21d2 100644
--- a/tests/wpt/web-platform-tests/html/editing/focus/focus-02-manual.html
+++ b/tests/wpt/web-platform-tests/html/editing/focus/focus-02.html
@@ -7,16 +7,11 @@
<meta assert="assert" content="Check if the key events received by document are targeted at the element when no element is focused">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<h2>Steps:</h2>
-<ol>
- <li>Press any key in [0-9a-zA-Z].</li>
-</ol>
-<h2>Expect results:</h2>
-<p>PASS</p>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
<div id="log"></div>
<script>
-//These tests can be automated once we have an uniform way to use webdriver.
var t1 = async_test("The keydown event must be targeted at the body element"),
t2 = async_test("The keypress event must be targeted at the body element"),
t3 = async_test("The keyup event must be targeted at the body element");
@@ -35,4 +30,8 @@ document.onkeyup = t3.step_func_done(function(evt){
assert_equals(evt.target, document.body, "The keyup events must be targeted at the document's body.");
});
+t1.step(function() {
+ test_driver.send_keys(document.body, "a");
+});
+
</script>
diff --git a/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative-manual.html b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative.html
index 506435074e3..92bf1743142 100644
--- a/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative-manual.html
+++ b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-negative.html
@@ -7,12 +7,8 @@
<meta assert="assert" content="Check if the tabindex attribute controls whether an element is supposed to be focusable">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<h2>Steps:</h2>
-<ol>
- <li>Press 'Tab' key in 10 seconds.</li>
-</ol>
-<h2>Expect results:</h2>
-<p>PASS</p>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
<div id="log"></div>
<form id="fm">
<input id="test1" tabindex="-1">
@@ -20,7 +16,6 @@
</form>
<script>
-//This test can be automated once we have an uniform way to use webdriver.
var t = async_test("The element with a negative tabindex must not be focused by press 'Tab' key");
setup({timeout: 10000});
@@ -41,4 +36,9 @@ document.addEventListener("keydown", function (evt) {
});
}, true);
+t.step(function () {
+ // TAB = '\ue004'
+ test_driver.send_keys(document.body, "\ue004");
+});
+
</script>
diff --git a/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order-manual.html b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order.html
index c837626293c..45429cc1a72 100644
--- a/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order-manual.html
+++ b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-order.html
@@ -2,17 +2,13 @@
<meta charset="utf-8">
<title>HTML Test: focus - the sequential focus navigation order</title>
<link rel="author" title="Intel" href="http://www.intel.com/">
-<link rel="help" href="https://html.spec.whatwg.org/multipage/#sequential-focus-navigation-and-the-tabindex-attribute">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#sequential-focus-navigation">
<meta assert="flag" content="interact">
<meta assert="assert" content="Check the sequential focus navigation order">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<h2>Steps:</h2>
-<ol>
- <li>Press 'Tab' key at least 10 times in 20 seconds.(Long press the 'Tab' key will be better.)</li>
-</ol>
-<h2>Expect results:</h2>
-<p>PASS</p>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
<div id="log"></div>
<form id="fm">
<button id="btn0">tabindex(omitted)</button>
@@ -28,32 +24,41 @@
</form>
<script>
-//This test can be automated once we have an uniform way to use webdriver.
var i = 0,
expectation = ["btn9", "btn6", "btn7", "btn8", "btn5", "btn0", "btn1", "btn2", "btn4"],
results = [],
- t = async_test("The element with a zero tabindex must be focused by press 'Tab' key");
+ t = async_test("Elements with different tabindex must be focused sequentially when pressing 'Tab' keys");
setup(function () {
document.body.focus();
}, {timeout: 20000});
+
+
document.forms.fm.addEventListener("focus", function (evt) {
results.push(evt.target.id);
- if (i >= 9) {
+ if (i >= 8) {
t.step(function () {
assert_array_equals(results, expectation);
});
+ t.done();
+ } else {
+ t.step(function () {
+ // TAB = '\ue004'
+ test_driver.send_keys(document.body, "\ue004");
+ });
}
+ i++;
}, true);
document.addEventListener("keydown", function (evt) {
- if (evt.keyCode === 9) {
- i += 1;
- if (i === 10) {
- t.done();
- }
- }
+ t.step(function () {
+ assert_equals(evt.keyCode, 9, "Please press 'Tab' key.");
+ });
}, true);
+t.step(function () {
+ // TAB = '\ue004'
+ test_driver.send_keys(document.body, "\ue004");
+});
</script>
diff --git a/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive-manual.html b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive.html
index 012a3e7ee29..9a131847703 100644
--- a/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive-manual.html
+++ b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-positive.html
@@ -7,19 +7,14 @@
<meta assert="assert" content="Check if the tabindex attribute controls whether an element is supposed to be focusable">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
-<h2>Steps:</h2>
-<ol>
- <li>Press 'Tab' key in 10 seconds.</li>
-</ol>
-<h2>Expect results:</h2>
-<p>PASS</p>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
<div id="log"></div>
<form id="fm">
<input id="test" tabindex="1">
</form>
<script>
-//This test can be automated once we have an uniform way to use webdriver.
var t = async_test("The element with a positive tabindex must be focused by press 'Tab' key");
setup({timeout: 10000});
@@ -40,4 +35,9 @@ document.addEventListener("keydown", function (evt) {
});
}, true);
+t.step(function () {
+ // TAB = '\ue004'
+ test_driver.send_keys(document.body, "\ue004");
+});
+
</script>
diff --git a/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero-manual.html b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero.html
index 108b818b1d1..c46acd0a413 100644
--- a/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero-manual.html
+++ b/tests/wpt/web-platform-tests/html/editing/focus/sequential-focus-navigation-and-the-tabindex-attribute/focus-tabindex-zero.html
@@ -8,20 +8,15 @@
<meta assert="assert" content="Check if the tabindex attribute controls whether an element is supposed to be focusable">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
</head>
-<h2>Steps:</h2>
-<ol>
- <li>Press 'Tab' key in 10 seconds.</li>
-</ol>
-<h2>Expect results:</h2>
-<p>PASS</p>
<div id="log"></div>
<form id="fm">
<input id="test" tabindex="0">
</form>
<script>
-//This test can be automated once we have an uniform way to use webdriver.
var t = async_test("The element with a zero tabindex must be focused by press 'Tab' key");
setup({timeout: 10000});
@@ -42,4 +37,9 @@ document.addEventListener("keydown", function (evt) {
});
}, true);
+t.step(function () {
+ // TAB = '\ue004'
+ test_driver.send_keys(document.body, "\ue004");
+});
+
</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/link-rel-attribute.html b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/link-rel-attribute.html
new file mode 100644
index 00000000000..4492f88bbb5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/link-rel-attribute.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<script src = "/resources/testharness.js"></script>
+<script src = "/resources/testharnessreport.js"></script>
+
+<link id="light-link" rel="stylesheet" href="resources/link-rel-attribute.css">
+<div id="light-div" class="green">I"m green when light DOM link is on</div>
+
+<div id="host">
+ I"m green when Shadow DOM link is on
+ <template id="shadow-dom">
+ <link id="shadow-link" rel="stylesheet" href="resources/link-rel-attribute.css">
+ <div id="shadow-div" class="green">
+ <slot></slot>
+ </div>
+ </template>
+</div>
+
+<script>
+var host = document.querySelector("#host");
+var shadow = host.attachShadow({ mode: "open" });
+var tmpl = document.querySelector("template#shadow-dom");
+var clone = document.importNode(tmpl.content, true);
+shadow.appendChild(clone);
+
+function testLinkRelModification(testDiv, testLink) {
+ assert_equals(getComputedStyle(testDiv).color, "rgb(0, 128, 0)");
+ testLink.setAttribute("rel", "no-stylesheet");
+ assert_equals(getComputedStyle(testDiv).color, "rgb(0, 0, 0)");
+ testLink.setAttribute("rel", "stylesheet");
+ assert_equals(getComputedStyle(testDiv).color, "rgb(0, 128, 0)");
+ testLink.removeAttribute("rel");
+ assert_equals(getComputedStyle(testDiv).color, "rgb(0, 0, 0)");
+}
+
+test (() => {
+ testLinkRelModification(document.querySelector("#light-div"),
+ document.querySelector("#light-link"));
+}, "Removing stylesheet from link rel attribute should remove the stylesheet for light DOM");
+
+test (() => {
+ testLinkRelModification(shadow.querySelector("#shadow-div"),
+ shadow.querySelector("#shadow-link"));
+}, "Removing stylesheet from link rel attribute should remove the stylesheet for shadow DOM");
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/resources/link-load-error-events.sub.js b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/resources/link-load-error-events.sub.js
index ac56a011963..33c8709579e 100644
--- a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/resources/link-load-error-events.sub.js
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/resources/link-load-error-events.sub.js
@@ -7,6 +7,10 @@
* avoids issues around caching of sheets based on URL.
*/
+// Our URLs are random, so we don't use them in error messages by
+// default, but enable doing it if someone wants to debug things.
+const DEBUG_URLS = false;
+
var isHttps = location.protocol == "https:";
var tests = [
@@ -113,12 +117,13 @@ for (var test of tests) {
var t = async_test(description);
var link = document.createElement("link");
link.rel = "stylesheet";
+ hrefString = DEBUG_URLS ? `: ${href}` : "";
if (success) {
link.onload = t.step_func_done(() => {});
- link.onerror = t.step_func_done(() => assert_unreached(`error fired when load expected: ${href}`) );
+ link.onerror = t.step_func_done(() => assert_unreached(`error fired when load expected${hrefString}`) );
} else {
link.onerror = t.step_func_done(() => {});
- link.onload = t.step_func_done(() => assert_unreached(`load fired when error expected: ${href}`) );
+ link.onload = t.step_func_done(() => assert_unreached(`load fired when error expected${hrefString}`) );
}
link.href = href;
document.head.appendChild(link);
diff --git a/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/resources/link-rel-attribute.css b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/resources/link-rel-attribute.css
new file mode 100644
index 00000000000..fa95e11ba9e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/document-metadata/the-link-element/resources/link-rel-attribute.css
@@ -0,0 +1,3 @@
+.green {
+ color: green;
+}
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html
new file mode 100644
index 00000000000..89dc5d6d95f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-embed-element/document-getters-return-null-for-cross-origin.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Test that getSVGDocument() returns null for a cross-origin document.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<embed src='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><rect height="100" width="100"/></svg>'></embed>
+<script>
+const embed = document.querySelector('embed');
+var t = async_test('HTMLEmbedElement.getSVGDocument() for cross-origin document');
+window.addEventListener(
+ 'load', t.step_func_done(() => { assert_equals(embed.getSVGDocument(), null); }));
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html
new file mode 100644
index 00000000000..2628e910098
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-frame-element/document-getters-return-null-for-cross-origin.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Test that contentDocument returns null for a cross-origin document.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+var t = async_test('HTMLFrameElement.contentDocument for cross-origin document');
+window.addEventListener(
+ 'load', t.step_func_done(() => { assert_equals(document.querySelector('frame').contentDocument, null); }));
+</script>
+<frameset>
+<frame src='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><rect height="100" width="100"/></svg>'></frame>
+</frameset>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html
new file mode 100644
index 00000000000..e3dc0b0e4e6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-iframe-element/document-getters-return-null-for-cross-origin.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Test that contentDocument/getSVGDocument() return null for a cross-origin document.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<iframe src='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><rect height="100" width="100"/></svg>'></iframe>
+<script>
+const iframe = document.querySelector('iframe');
+var t1 = async_test('HTMLIFrameElement.contentDocument for cross-origin document');
+window.addEventListener(
+ 'load', t1.step_func_done(() => { assert_equals(iframe.contentDocument, null); }));
+var t2 = async_test('HTMLIFrameElement.getSVGDocument() for cross-origin document');
+window.addEventListener(
+ 'load', t2.step_func_done(() => { assert_equals(iframe.getSVGDocument(), null); }));
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html
index bd204542081..711af8ca32f 100644
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute.html
@@ -14,7 +14,7 @@ setup({explicit_done:true});
function check(p, iframe) {
var current = p.firstElementChild;
var ref_sizes = current.getAttribute('sizes');
- var expect = p.firstElementChild.currentSrc;
+ var expect = current.currentSrc;
if (expect) {
expect = expect.split('?')[0];
}
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html
index 925bb46996d..47256487eeb 100644
--- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/sizes-iframed.sub.html
@@ -52,8 +52,14 @@
<img srcset='/images/green-1x1.png?e34 50w, /images/green-16x16.png?e34 51w' sizes='\[,1px'>
<img srcset='/images/green-1x1.png?e35 50w, /images/green-16x16.png?e35 51w' sizes='1\p\x'>
<img srcset='/images/green-1x1.png?e36 50w, /images/green-16x16.png?e36 51w' sizes='calc(1px)'>
+<img srcset='/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w' sizes='min(1px, 100px)'>
+<img srcset='/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w' sizes='min(-100px, 1px)'>
<img srcset='/images/green-1x1.png?e37 50w, /images/green-16x16.png?e37 51w' sizes='(min-width:0) calc(1px)'>
+<img srcset='/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w' sizes='(min-width:0) min(1px, 100px)'>
+<img srcset='/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w' sizes='(min-width:0) max(-100px, 1px)'>
<img srcset='/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w' sizes='(min-width:calc(0)) 1px'>
+<img srcset='/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w' sizes='(min-width:min(0, 200vw)) 1px'>
+<img srcset='/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w' sizes='(min-width:max(-200vw, 0)) 1px'>
<img srcset='/images/green-1x1.png?e39 50w, /images/green-16x16.png?e39 51w' sizes='(min-width:0) 1px, 100vw'>
<img srcset='/images/green-1x1.png?e40 50w, /images/green-16x16.png?e40 51w' sizes='(min-width:0) 1px, (min-width:0) 100vw, 100vw'>
<img srcset='/images/green-1x1.png?e41 50w, /images/green-16x16.png?e41 51w' sizes='(min-width:0) 1px'>
@@ -126,7 +132,11 @@
<img srcset='/images/green-1x1.png?e108 50w, /images/green-16x16.png?e108 51w' sizes='(max-width:0) or (unknown-general-enclosed !) 100vw, 1px'>
<img srcset='/images/green-1x1.png?e109 50w, /images/green-16x16.png?e109 51w' sizes='not ((max-width:0) or (unknown "general-enclosed")) 100vw, 1px'>
<img srcset='/images/green-1x1.png?f48 50w, /images/green-16x16.png?f48 51w' sizes='calc(1px'>
+<img srcset='/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w' sizes='min(1px, 200vw'>
+<img srcset='/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w' sizes='max(-200vw, 1px'>
<img srcset='/images/green-1x1.png?f49 50w, /images/green-16x16.png?f49 51w' sizes='(min-width:0) calc(1px'>
+<img srcset='/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w' sizes='(min-width:0) min(1px, 200vw'>
+<img srcset='/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w' sizes='(min-width:0) max(-200vw, 1px'>
<p>
<img srcset='/images/green-1x1.png?f1 50w, /images/green-16x16.png?f1 51w' sizes='100vw'>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html
new file mode 100644
index 00000000000..3d1077538e2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Test that contentDocument/getSVGDocument() return null for a cross-origin document.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<object data='data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><rect height="100" width="100"/></svg>'></object>
+<script>
+const object = document.querySelector('object');
+var t1 = async_test('HTMLObjectElement.contentDocument for cross-origin document');
+window.addEventListener(
+ 'load', t1.step_func_done(() => { assert_equals(object.contentDocument, null); }));
+var t2 = async_test('HTMLObjectElement.getSVGDocument() for cross-origin document');
+window.addEventListener(
+ 'load', t2.step_func_done(() => { assert_equals(object.getSVGDocument(), null); }));
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/html/semantics/rellist-feature-detection.html b/tests/wpt/web-platform-tests/html/semantics/rellist-feature-detection.html
index 92959134fd4..f4ce621172e 100644
--- a/tests/wpt/web-platform-tests/html/semantics/rellist-feature-detection.html
+++ b/tests/wpt/web-platform-tests/html/semantics/rellist-feature-detection.html
@@ -65,6 +65,7 @@ function test_rellist(tag_name, rel_table) {
let supported = rel_table['supported'];
for (let link_type in supported) {
assert_true(element.relList.supports(supported[link_type]), 'tag = ' + tag + ', link type = ' + supported[link_type] + ' must be supported');
+ assert_true(element.relList.supports(supported[link_type].toUpperCase()), 'tag = ' + tag + ', link type = ' + supported[link_type].toUpperCase() + ' must be supported');
}
let unsupported = rel_table['unsupported'];
for (let link_type in unsupported) {
diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html
index 666bc7ce479..80a298913a0 100644
--- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.html
+++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-classic.sub.html
@@ -4,8 +4,8 @@
<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
<meta http-equiv="Content-Security-Policy" content="require-sri-for script">
-<script src="/resources/testharness.js" integrity="sha384-4Nybydhnr3tOpv1yrTkDxu3RFpnxWAxlU5kGn7c8ebKvh1iUdfVMjqP6jf0dacrV"></script>
-<script src="/resources/testharnessreport.js" integrity="sha384-GOnHxuyo+nnsFAe4enY+RAl4/+w5NPMJPCQiDroTjxtR7ndRz7Uan8vNbM2qWKmU"></script>
+<script src="/resources/testharness.js" integrity="sha384-{{file_hash(sha384, resources/testharness.js)}}"></script>
+<script src="/resources/testharnessreport.js" integrity="sha384-{{file_hash(sha384, resources/testharnessreport.js)}}"></script>
<div id="dummy"></div>
diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html
index 497c9d97150..db3d3b1e15a 100644
--- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.html
+++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-integrity-module.sub.html
@@ -4,8 +4,8 @@
<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
<meta http-equiv="Content-Security-Policy" content="require-sri-for script">
-<script src="/resources/testharness.js" integrity="sha384-4Nybydhnr3tOpv1yrTkDxu3RFpnxWAxlU5kGn7c8ebKvh1iUdfVMjqP6jf0dacrV"></script>
-<script src="/resources/testharnessreport.js" integrity="sha384-GOnHxuyo+nnsFAe4enY+RAl4/+w5NPMJPCQiDroTjxtR7ndRz7Uan8vNbM2qWKmU"></script>
+<script src="/resources/testharness.js" integrity="sha384-{{file_hash(sha384, resources/testharness.js)}}"></script>
+<script src="/resources/testharnessreport.js" integrity="sha384-{{file_hash(sha384, resources/testharnessreport.js)}}"></script>
<div id="dummy"></div>
diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html
new file mode 100644
index 00000000000..e0e3ec8a94d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-of-promise-result.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>import() inside compiled strings inside a classic script</title>
+<link rel="help" href="https://github.com/whatwg/html/pull/3163">
+<link rel="help" href="https://github.com/tc39/ecma262/issues/871#issuecomment-292493142">
+<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+"use strict";
+
+self.ran = false;
+
+promise_test(t => {
+ t.add_cleanup(() => {
+ self.ran = false;
+ })
+
+ return Promise.resolve(`import("../imports-a.js?1").then(() => { self.ran = true; })`)
+ .then(eval)
+ .then(() => {
+ assert_true(self.ran);
+ });
+}, "Evaled the script via eval, successful import");
+
+promise_test(t => {
+ t.add_cleanup(() => {
+ self.ran = false;
+ })
+
+ return Promise.resolve(`import("bad-specifier?1").catch(() => { self.ran = true; })`)
+ .then(eval)
+ .then(() => {
+ assert_true(self.ran);
+ });
+}, "Evaled the script via eval, failed import");
+
+promise_test(t => {
+ t.add_cleanup(() => {
+ self.ran = false;
+ })
+
+ return Promise.resolve(`return import("../imports-a.js?2").then(() => { self.ran = true; })`)
+ .then(Function)
+ .then(Function.prototype.call.bind(Function.prototype.call))
+ .then(() => {
+ assert_true(self.ran);
+ });
+}, "Evaled the script via Function, successful import");
+
+promise_test(t => {
+ t.add_cleanup(() => {
+ self.ran = false;
+ })
+
+ return Promise.resolve(`return import("bad-specifier?2").catch(() => { self.ran = true; })`)
+ .then(Function)
+ .then(Function.prototype.call.bind(Function.prototype.call))
+ .then(() => {
+ assert_true(self.ran);
+ });
+}, "Evaled the script via Function, failed import");
+</script>
diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/send_keys.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/send_keys.html
new file mode 100644
index 00000000000..2170347c972
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/send_keys.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>TestDriver send keys method</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<input type="text" id="text">Text Input</button>
+
+<script>
+async_test(t => {
+ let input_text = "Hello, wpt!";
+ let text_box = document.getElementById("text");
+ test_driver
+ .send_keys(text_box, input_text)
+ .then(() => {
+ assert_true(text_box.value == input_text);
+ t.done();
+ })
+ .catch(t.unreached_func("send keys failed"));
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/infrastructure/webdriver/tests/conftest.py b/tests/wpt/web-platform-tests/infrastructure/webdriver/tests/conftest.py
new file mode 100644
index 00000000000..cbc4f83421b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/webdriver/tests/conftest.py
@@ -0,0 +1,7 @@
+import os
+import sys
+# Hack to avoid duplicating the conftest file
+wdpath = os.path.abspath(os.path.join(os.path.dirname(__file__),
+ "../../../webdriver/"))
+sys.path.insert(0, wdpath)
+from tests.conftest import *
diff --git a/tests/wpt/web-platform-tests/infrastructure/webdriver/tests/test_load_file.py b/tests/wpt/web-platform-tests/infrastructure/webdriver/tests/test_load_file.py
new file mode 100644
index 00000000000..370e63c2237
--- /dev/null
+++ b/tests/wpt/web-platform-tests/infrastructure/webdriver/tests/test_load_file.py
@@ -0,0 +1,4 @@
+from tests.support.inline import inline
+
+def test_load(session):
+ inline("PASS")
diff --git a/tests/wpt/web-platform-tests/innerText/OWNERS b/tests/wpt/web-platform-tests/innerText/OWNERS
new file mode 100644
index 00000000000..63851614695
--- /dev/null
+++ b/tests/wpt/web-platform-tests/innerText/OWNERS
@@ -0,0 +1 @@
+@zcorpan
diff --git a/tests/wpt/web-platform-tests/innerText/getter-tests.js b/tests/wpt/web-platform-tests/innerText/getter-tests.js
index 6df8912dc93..77a3ebbfc01 100644
--- a/tests/wpt/web-platform-tests/innerText/getter-tests.js
+++ b/tests/wpt/web-platform-tests/innerText/getter-tests.js
@@ -326,7 +326,7 @@ testText("<div><select class='poke-rp'></select>", "", "<rp> in a <select>");
/**** Shadow DOM ****/
-if ("createShadowRoot" in document.body) {
+if ("attachShadow" in document.body) {
testText("<div class='shadow'>", "", "Shadow DOM contents ignored");
testText("<div><div class='shadow'>", "", "Shadow DOM contents ignored");
}
diff --git a/tests/wpt/web-platform-tests/innerText/getter.html b/tests/wpt/web-platform-tests/innerText/getter.html
index 7a517db3d14..c84bb04a2f4 100644
--- a/tests/wpt/web-platform-tests/innerText/getter.html
+++ b/tests/wpt/web-platform-tests/innerText/getter.html
@@ -49,7 +49,7 @@ function textTextInContainer(cont, html, expectedPlain, msg) {
});
var shadows = document.getElementsByClassName('shadow');
for (var i = 0; i < shadows.length; ++i) {
- var s = shadows[i].createShadowRoot();
+ var s = shadows[i].attachShadow({ mode: "open" });
s.textContent = 'abc';
}
while (e && e.nodeType != Node.ELEMENT_NODE) {
diff --git a/tests/wpt/web-platform-tests/interfaces/BackgroundSync.idl b/tests/wpt/web-platform-tests/interfaces/BackgroundSync.idl
new file mode 100644
index 00000000000..3580e3b09bf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/BackgroundSync.idl
@@ -0,0 +1,28 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the Web Background Synchronization spec.
+// See https://wicg.github.io/BackgroundSync/spec/
+
+partial interface ServiceWorkerRegistration {
+ readonly attribute SyncManager sync;
+};
+
+[Exposed=(Window,Worker)]
+interface SyncManager {
+ Promise<void> register(DOMString tag);
+ Promise<sequence<DOMString>> getTags();
+};
+
+partial interface ServiceWorkerGlobalScope {
+ attribute EventHandler onsync;
+};
+
+[Constructor(DOMString type, SyncEventInit init), Exposed=ServiceWorker]
+interface SyncEvent : ExtendableEvent {
+ readonly attribute DOMString tag;
+ readonly attribute boolean lastChance;
+};
+
+dictionary SyncEventInit : ExtendableEventInit {
+ required DOMString tag;
+ boolean lastChance = false;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/FileAPI.idl b/tests/wpt/web-platform-tests/interfaces/FileAPI.idl
index 64aa0d651d6..af094c8a280 100644
--- a/tests/wpt/web-platform-tests/interfaces/FileAPI.idl
+++ b/tests/wpt/web-platform-tests/interfaces/FileAPI.idl
@@ -1,29 +1,34 @@
-// https://w3c.github.io/FileAPI/#idl-index
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the FileAPI spec.
+// See https://w3c.github.io/FileAPI/
-[Constructor(optional sequence<BlobPart> blobParts, optional BlobPropertyBag options),
-Exposed=(Window,Worker)]
+[Constructor(optional sequence<BlobPart> blobParts,
+ optional BlobPropertyBag options),
+ Exposed=(Window,Worker), Serializable]
interface Blob {
readonly attribute unsigned long long size;
readonly attribute DOMString type;
- //slice Blob into byte-ranged chunks
-
+ // slice Blob into byte-ranged chunks
Blob slice([Clamp] optional long long start,
[Clamp] optional long long end,
optional DOMString contentType);
};
+enum EndingType { "transparent", "native" };
+
dictionary BlobPropertyBag {
DOMString type = "";
+ EndingType endings = "transparent";
};
typedef (BufferSource or Blob or USVString) BlobPart;
[Constructor(sequence<BlobPart> fileBits,
- [EnsureUTF16] DOMString fileName,
- optional FilePropertyBag options),
-Exposed=(Window,Worker)]
+ USVString fileName,
+ optional FilePropertyBag options),
+ Exposed=(Window,Worker), Serializable]
interface File : Blob {
readonly attribute DOMString name;
readonly attribute long long lastModified;
@@ -33,7 +38,7 @@ dictionary FilePropertyBag : BlobPropertyBag {
long long lastModified;
};
-[Exposed=(Window,Worker)]
+[Exposed=(Window,Worker), Serializable]
interface FileList {
getter File? item(unsigned long index);
readonly attribute unsigned long length;
@@ -55,7 +60,6 @@ interface FileReader: EventTarget {
const unsigned short LOADING = 1;
const unsigned short DONE = 2;
-
readonly attribute unsigned short readyState;
// File or Blob data
@@ -73,7 +77,7 @@ interface FileReader: EventTarget {
};
-[Constructor, Exposed=Worker]
+[Constructor, Exposed=(DedicatedWorker,SharedWorker)]
interface FileReaderSync {
// Synchronously return strings
diff --git a/tests/wpt/web-platform-tests/interfaces/ServiceWorker.idl b/tests/wpt/web-platform-tests/interfaces/ServiceWorker.idl
new file mode 100644
index 00000000000..e9899cc0412
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/ServiceWorker.idl
@@ -0,0 +1,220 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the Service Workers spec.
+// See https://w3c.github.io/ServiceWorker/
+
+[SecureContext, Exposed=(Window,Worker)]
+interface ServiceWorker : EventTarget {
+ readonly attribute USVString scriptURL;
+ readonly attribute ServiceWorkerState state;
+ void postMessage(any message, optional sequence<object> transfer = []);
+
+ // event
+ attribute EventHandler onstatechange;
+};
+ServiceWorker includes AbstractWorker;
+
+enum ServiceWorkerState {
+ "installing",
+ "installed",
+ "activating",
+ "activated",
+ "redundant"
+};
+
+[SecureContext, Exposed=(Window,Worker)]
+interface ServiceWorkerRegistration : EventTarget {
+ readonly attribute ServiceWorker? installing;
+ readonly attribute ServiceWorker? waiting;
+ readonly attribute ServiceWorker? active;
+ [SameObject] readonly attribute NavigationPreloadManager navigationPreload;
+
+ readonly attribute USVString scope;
+ readonly attribute ServiceWorkerUpdateViaCache updateViaCache;
+
+ [NewObject] Promise<void> update();
+ [NewObject] Promise<boolean> unregister();
+
+ // event
+ attribute EventHandler onupdatefound;
+};
+
+enum ServiceWorkerUpdateViaCache {
+ "imports",
+ "all",
+ "none"
+};
+
+partial interface Navigator {
+ [SecureContext, SameObject] readonly attribute ServiceWorkerContainer serviceWorker;
+};
+
+partial interface WorkerNavigator {
+ [SecureContext, SameObject] readonly attribute ServiceWorkerContainer serviceWorker;
+};
+
+[SecureContext, Exposed=(Window,Worker)]
+interface ServiceWorkerContainer : EventTarget {
+ readonly attribute ServiceWorker? controller;
+ readonly attribute Promise<ServiceWorkerRegistration> ready;
+
+ [NewObject] Promise<ServiceWorkerRegistration> register(USVString scriptURL, optional RegistrationOptions options);
+
+ [NewObject] Promise<any> getRegistration(optional USVString clientURL = "");
+ [NewObject] Promise<FrozenArray<ServiceWorkerRegistration>> getRegistrations();
+
+ void startMessages();
+
+ // events
+ attribute EventHandler oncontrollerchange;
+ attribute EventHandler onmessage; // event.source of message events is ServiceWorker object
+ attribute EventHandler onmessageerror;
+};
+
+dictionary RegistrationOptions {
+ USVString scope;
+ WorkerType type = "classic";
+ ServiceWorkerUpdateViaCache updateViaCache = "imports";
+};
+
+[SecureContext, Exposed=(Window,Worker)]
+interface NavigationPreloadManager {
+ Promise<void> enable();
+ Promise<void> disable();
+ Promise<void> setHeaderValue(ByteString value);
+ Promise<NavigationPreloadState> getState();
+};
+
+dictionary NavigationPreloadState {
+ boolean enabled = false;
+ ByteString headerValue;
+};
+
+[Global=(Worker,ServiceWorker), Exposed=ServiceWorker]
+interface ServiceWorkerGlobalScope : WorkerGlobalScope {
+ [SameObject] readonly attribute Clients clients;
+ [SameObject] readonly attribute ServiceWorkerRegistration registration;
+
+ [NewObject] Promise<void> skipWaiting();
+
+ attribute EventHandler oninstall;
+ attribute EventHandler onactivate;
+ attribute EventHandler onfetch;
+
+ // event
+ attribute EventHandler onmessage; // event.source of the message events is Client object
+ attribute EventHandler onmessageerror;
+};
+
+[Exposed=ServiceWorker]
+interface Client {
+ readonly attribute USVString url;
+ readonly attribute DOMString id;
+ readonly attribute ClientType type;
+ void postMessage(any message, optional sequence<object> transfer = []);
+};
+
+[Exposed=ServiceWorker]
+interface WindowClient : Client {
+ readonly attribute VisibilityState visibilityState;
+ readonly attribute boolean focused;
+ [SameObject] readonly attribute FrozenArray<USVString> ancestorOrigins;
+ [NewObject] Promise<WindowClient> focus();
+ [NewObject] Promise<WindowClient?> navigate(USVString url);
+};
+
+[Exposed=ServiceWorker]
+interface Clients {
+ // The objects returned will be new instances every time
+ [NewObject] Promise<any> get(DOMString id);
+ [NewObject] Promise<FrozenArray<Client>> matchAll(optional ClientQueryOptions options);
+ [NewObject] Promise<WindowClient?> openWindow(USVString url);
+ [NewObject] Promise<void> claim();
+};
+
+dictionary ClientQueryOptions {
+ boolean includeUncontrolled = false;
+ ClientType type = "window";
+};
+
+enum ClientType {
+ "window",
+ "worker",
+ "sharedworker",
+ "all"
+};
+
+[Constructor(DOMString type, optional ExtendableEventInit eventInitDict), Exposed=ServiceWorker]
+interface ExtendableEvent : Event {
+ void waitUntil(Promise<any> f);
+};
+
+dictionary ExtendableEventInit : EventInit {
+ // Defined for the forward compatibility across the derived events
+};
+
+[Constructor(DOMString type, FetchEventInit eventInitDict), Exposed=ServiceWorker]
+interface FetchEvent : ExtendableEvent {
+ [SameObject] readonly attribute Request request;
+ readonly attribute Promise<any> preloadResponse;
+ readonly attribute DOMString clientId;
+ readonly attribute DOMString resultingClientId;
+ readonly attribute DOMString targetClientId;
+
+ void respondWith(Promise<Response> r);
+};
+
+dictionary FetchEventInit : ExtendableEventInit {
+ required Request request;
+ required Promise<any> preloadResponse;
+ DOMString clientId = "";
+ DOMString resultingClientId = "";
+ DOMString targetClientId = "";
+};
+
+[Constructor(DOMString type, optional ExtendableMessageEventInit eventInitDict), Exposed=ServiceWorker]
+interface ExtendableMessageEvent : ExtendableEvent {
+ readonly attribute any data;
+ readonly attribute USVString origin;
+ readonly attribute DOMString lastEventId;
+ [SameObject] readonly attribute (Client or ServiceWorker or MessagePort)? source;
+ readonly attribute FrozenArray<MessagePort> ports;
+};
+
+dictionary ExtendableMessageEventInit : ExtendableEventInit {
+ any data = null;
+ USVString origin = "";
+ DOMString lastEventId = "";
+ (Client or ServiceWorker or MessagePort)? source = null;
+ sequence<MessagePort> ports = [];
+};
+
+partial interface WindowOrWorkerGlobalScope {
+ [SecureContext, SameObject] readonly attribute CacheStorage caches;
+};
+
+[SecureContext, Exposed=(Window,Worker)]
+interface Cache {
+ [NewObject] Promise<any> match(RequestInfo request, optional CacheQueryOptions options);
+ [NewObject] Promise<FrozenArray<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
+ [NewObject] Promise<void> add(RequestInfo request);
+ [NewObject] Promise<void> addAll(sequence<RequestInfo> requests);
+ [NewObject] Promise<void> put(RequestInfo request, Response response);
+ [NewObject] Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options);
+ [NewObject] Promise<FrozenArray<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options);
+};
+
+dictionary CacheQueryOptions {
+ boolean ignoreSearch = false;
+ boolean ignoreMethod = false;
+ boolean ignoreVary = false;
+ DOMString cacheName;
+};
+
+[SecureContext, Exposed=(Window,Worker)]
+interface CacheStorage {
+ [NewObject] Promise<any> match(RequestInfo request, optional CacheQueryOptions options);
+ [NewObject] Promise<boolean> has(DOMString cacheName);
+ [NewObject] Promise<Cache> open(DOMString cacheName);
+ [NewObject] Promise<boolean> delete(DOMString cacheName);
+ [NewObject] Promise<sequence<DOMString>> keys();
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/budget-api.idl b/tests/wpt/web-platform-tests/interfaces/budget-api.idl
new file mode 100644
index 00000000000..a7fd1f24526
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/budget-api.idl
@@ -0,0 +1,31 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the budget-api spec.
+// See https://wicg.github.io/budget-api/
+
+[Exposed=Window]
+partial interface Navigator {
+ [SameObject] readonly attribute BudgetService budget;
+};
+
+[Exposed=Worker]
+partial interface WorkerNavigator {
+ [SameObject] readonly attribute BudgetService budget;
+};
+
+[Exposed=(Window,Worker)]
+interface BudgetService {
+ Promise<double> getCost(OperationType operation);
+ Promise<sequence<BudgetState>> getBudget();
+
+ Promise<boolean> reserve(OperationType operation);
+};
+
+[Exposed=(Window,Worker)]
+interface BudgetState {
+ readonly attribute double budgetAt;
+ readonly attribute DOMTimeStamp time;
+};
+
+enum OperationType {
+ "silent-push"
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/compat.idl b/tests/wpt/web-platform-tests/interfaces/compat.idl
new file mode 100644
index 00000000000..bbb268b60f0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/compat.idl
@@ -0,0 +1,12 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the compat spec.
+// See https://compat.spec.whatwg.org/
+
+partial interface Window {
+ readonly attribute short orientation;
+ attribute EventHandler onorientationchange;
+};
+
+partial interface HTMLBodyElement {
+ attribute EventHandler onorientationchange;
+};
diff --git a/tests/wpt/web-platform-tests/interfaces/cssom.idl b/tests/wpt/web-platform-tests/interfaces/cssom.idl
index b372ed6b2b5..708c6fc7095 100644
--- a/tests/wpt/web-platform-tests/interfaces/cssom.idl
+++ b/tests/wpt/web-platform-tests/interfaces/cssom.idl
@@ -1,3 +1,7 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the CSS Object Model (CSSOM) spec.
+// See https://drafts.csswg.org/cssom/
+
typedef USVString CSSOMString;
[Exposed=Window,
@@ -47,6 +51,7 @@ interface LinkStyle {
};
ProcessingInstruction implements LinkStyle;
+
[Exposed=Window,
LegacyArrayClass]
interface CSSRuleList {
diff --git a/tests/wpt/web-platform-tests/interfaces/dom.idl b/tests/wpt/web-platform-tests/interfaces/dom.idl
index 4186f1d2df5..45cae33f896 100644
--- a/tests/wpt/web-platform-tests/interfaces/dom.idl
+++ b/tests/wpt/web-platform-tests/interfaces/dom.idl
@@ -3,7 +3,9 @@
interface Event {
readonly attribute DOMString type;
readonly attribute EventTarget? target;
+ readonly attribute EventTarget? srcElement;
readonly attribute EventTarget? currentTarget;
+ sequence<EventTarget> composedPath();
const unsigned short NONE = 0;
const unsigned short CAPTURING_PHASE = 1;
@@ -16,8 +18,10 @@ interface Event {
readonly attribute boolean bubbles;
readonly attribute boolean cancelable;
+ attribute boolean returnValue;
void preventDefault();
readonly attribute boolean defaultPrevented;
+ readonly attribute boolean composed;
[Unforgeable] readonly attribute boolean isTrusted;
readonly attribute DOMTimeStamp timeStamp;
diff --git a/tests/wpt/web-platform-tests/interfaces/filter-effects.idl b/tests/wpt/web-platform-tests/interfaces/filter-effects.idl
new file mode 100644
index 00000000000..2e37464875c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/interfaces/filter-effects.idl
@@ -0,0 +1,301 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the Filter Effects spec.
+// See https://drafts.fxtf.org/filter-effects/
+
+interface SVGFilterElement : SVGElement {
+ readonly attribute SVGAnimatedEnumeration filterUnits;
+ readonly attribute SVGAnimatedEnumeration primitiveUnits;
+ readonly attribute SVGAnimatedLength x;
+ readonly attribute SVGAnimatedLength y;
+ readonly attribute SVGAnimatedLength width;
+ readonly attribute SVGAnimatedLength height;
+};
+
+SVGFilterElement implements SVGURIReference;
+
+interface mixin SVGFilterPrimitiveStandardAttributes {
+ readonly attribute SVGAnimatedLength x;
+ readonly attribute SVGAnimatedLength y;
+ readonly attribute SVGAnimatedLength width;
+ readonly attribute SVGAnimatedLength height;
+ readonly attribute SVGAnimatedString result;
+};
+
+interface SVGFEBlendElement : SVGElement {
+
+ // Blend Mode Types
+ const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0;
+ const unsigned short SVG_FEBLEND_MODE_NORMAL = 1;
+ const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2;
+ const unsigned short SVG_FEBLEND_MODE_SCREEN = 3;
+ const unsigned short SVG_FEBLEND_MODE_DARKEN = 4;
+ const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5;
+
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedString in2;
+ readonly attribute SVGAnimatedEnumeration mode;
+};
+
+SVGFEBlendElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEColorMatrixElement : SVGElement {
+
+ // Color Matrix Types
+ const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0;
+ const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1;
+ const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2;
+ const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3;
+ const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4;
+
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedEnumeration type;
+ readonly attribute SVGAnimatedNumberList values;
+};
+
+SVGFEColorMatrixElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEComponentTransferElement : SVGElement {
+ readonly attribute SVGAnimatedString in1;
+};
+
+SVGFEComponentTransferElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGComponentTransferFunctionElement : SVGElement {
+
+ // Component Transfer Types
+ const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0;
+ const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1;
+ const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2;
+ const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3;
+ const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4;
+ const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5;
+
+ readonly attribute SVGAnimatedEnumeration type;
+ readonly attribute SVGAnimatedNumberList tableValues;
+ readonly attribute SVGAnimatedNumber slope;
+ readonly attribute SVGAnimatedNumber intercept;
+ readonly attribute SVGAnimatedNumber amplitude;
+ readonly attribute SVGAnimatedNumber exponent;
+ readonly attribute SVGAnimatedNumber offset;
+};
+
+interface SVGFEFuncRElement : SVGComponentTransferFunctionElement {
+};
+
+interface SVGFEFuncGElement : SVGComponentTransferFunctionElement {
+};
+
+interface SVGFEFuncBElement : SVGComponentTransferFunctionElement {
+};
+
+interface SVGFEFuncAElement : SVGComponentTransferFunctionElement {
+};
+
+interface SVGFECompositeElement : SVGElement {
+
+ // Composite Operators
+ const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0;
+ const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1;
+ const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2;
+ const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3;
+ const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4;
+ const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5;
+ const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6;
+
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedString in2;
+ readonly attribute SVGAnimatedEnumeration operator;
+ readonly attribute SVGAnimatedNumber k1;
+ readonly attribute SVGAnimatedNumber k2;
+ readonly attribute SVGAnimatedNumber k3;
+ readonly attribute SVGAnimatedNumber k4;
+};
+
+SVGFECompositeElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEConvolveMatrixElement : SVGElement {
+
+ // Edge Mode Values
+ const unsigned short SVG_EDGEMODE_UNKNOWN = 0;
+ const unsigned short SVG_EDGEMODE_DUPLICATE = 1;
+ const unsigned short SVG_EDGEMODE_WRAP = 2;
+ const unsigned short SVG_EDGEMODE_NONE = 3;
+
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedInteger orderX;
+ readonly attribute SVGAnimatedInteger orderY;
+ readonly attribute SVGAnimatedNumberList kernelMatrix;
+ readonly attribute SVGAnimatedNumber divisor;
+ readonly attribute SVGAnimatedNumber bias;
+ readonly attribute SVGAnimatedInteger targetX;
+ readonly attribute SVGAnimatedInteger targetY;
+ readonly attribute SVGAnimatedEnumeration edgeMode;
+ readonly attribute SVGAnimatedNumber kernelUnitLengthX;
+ readonly attribute SVGAnimatedNumber kernelUnitLengthY;
+};
+
+SVGFEConvolveMatrixElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEDiffuseLightingElement : SVGElement {
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedNumber surfaceScale;
+ readonly attribute SVGAnimatedNumber diffuseConstant;
+ readonly attribute SVGAnimatedNumber kernelUnitLengthX;
+ readonly attribute SVGAnimatedNumber kernelUnitLengthY;
+};
+
+SVGFEDiffuseLightingElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEDistantLightElement : SVGElement {
+ readonly attribute SVGAnimatedNumber azimuth;
+ readonly attribute SVGAnimatedNumber elevation;
+};
+
+interface SVGFEPointLightElement : SVGElement {
+ readonly attribute SVGAnimatedNumber x;
+ readonly attribute SVGAnimatedNumber y;
+ readonly attribute SVGAnimatedNumber z;
+};
+
+interface SVGFESpotLightElement : SVGElement {
+ readonly attribute SVGAnimatedNumber x;
+ readonly attribute SVGAnimatedNumber y;
+ readonly attribute SVGAnimatedNumber z;
+ readonly attribute SVGAnimatedNumber pointsAtX;
+ readonly attribute SVGAnimatedNumber pointsAtY;
+ readonly attribute SVGAnimatedNumber pointsAtZ;
+ readonly attribute SVGAnimatedNumber specularExponent;
+ readonly attribute SVGAnimatedNumber limitingConeAngle;
+};
+
+interface SVGFEDisplacementMapElement : SVGElement {
+
+ // Channel Selectors
+ const unsigned short SVG_CHANNEL_UNKNOWN = 0;
+ const unsigned short SVG_CHANNEL_R = 1;
+ const unsigned short SVG_CHANNEL_G = 2;
+ const unsigned short SVG_CHANNEL_B = 3;
+ const unsigned short SVG_CHANNEL_A = 4;
+
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedString in2;
+ readonly attribute SVGAnimatedNumber scale;
+ readonly attribute SVGAnimatedEnumeration xChannelSelector;
+ readonly attribute SVGAnimatedEnumeration yChannelSelector;
+};
+
+SVGFEDisplacementMapElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEDropShadowElement : SVGElement {
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedNumber dx;
+ readonly attribute SVGAnimatedNumber dy;
+ readonly attribute SVGAnimatedNumber stdDeviationX;
+ readonly attribute SVGAnimatedNumber stdDeviationY;
+
+ void setStdDeviation(float stdDeviationX, float stdDeviationY);
+};
+
+SVGFEDropShadowElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEFloodElement : SVGElement {
+};
+
+SVGFEFloodElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEGaussianBlurElement : SVGElement {
+
+ // Edge Mode Values
+ const unsigned short SVG_EDGEMODE_UNKNOWN = 0;
+ const unsigned short SVG_EDGEMODE_DUPLICATE = 1;
+ const unsigned short SVG_EDGEMODE_WRAP = 2;
+ const unsigned short SVG_EDGEMODE_NONE = 3;
+
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedNumber stdDeviationX;
+ readonly attribute SVGAnimatedNumber stdDeviationY;
+ readonly attribute SVGAnimatedEnumeration edgeMode;
+
+ void setStdDeviation(float stdDeviationX, float stdDeviationY);
+};
+
+SVGFEGaussianBlurElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEImageElement : SVGElement {
+ readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
+ readonly attribute SVGAnimatedString crossOrigin;
+};
+
+SVGFEImageElement includes SVGFilterPrimitiveStandardAttributes;
+SVGFEImageElement implements SVGURIReference;
+
+interface SVGFEMergeElement : SVGElement {
+};
+
+SVGFEMergeElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEMergeNodeElement : SVGElement {
+ readonly attribute SVGAnimatedString in1;
+};
+
+interface SVGFEMorphologyElement : SVGElement {
+
+ // Morphology Operators
+ const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0;
+ const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1;
+ const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE = 2;
+
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedEnumeration operator;
+ readonly attribute SVGAnimatedNumber radiusX;
+ readonly attribute SVGAnimatedNumber radiusY;
+};
+
+SVGFEMorphologyElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFEOffsetElement : SVGElement {
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedNumber dx;
+ readonly attribute SVGAnimatedNumber dy;
+};
+
+SVGFEOffsetElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFESpecularLightingElement : SVGElement {
+ readonly attribute SVGAnimatedString in1;
+ readonly attribute SVGAnimatedNumber surfaceScale;
+ readonly attribute SVGAnimatedNumber specularConstant;
+ readonly attribute SVGAnimatedNumber specularExponent;
+ readonly attribute SVGAnimatedNumber kernelUnitLengthX;
+ readonly attribute SVGAnimatedNumber kernelUnitLengthY;
+};
+
+SVGFESpecularLightingElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFETileElement : SVGElement {
+ readonly attribute SVGAnimatedString in1;
+};
+
+SVGFETileElement includes SVGFilterPrimitiveStandardAttributes;
+
+interface SVGFETurbulenceElement : SVGElement {
+
+ // Turbulence Types
+ const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0;
+ const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1;
+ const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2;
+
+ // Stitch Options
+ const unsigned short SVG_STITCHTYPE_UNKNOWN = 0;
+ const unsigned short SVG_STITCHTYPE_STITCH = 1;
+ const unsigned short SVG_STITCHTYPE_NOSTITCH = 2;
+
+ readonly attribute SVGAnimatedNumber baseFrequencyX;
+ readonly attribute SVGAnimatedNumber baseFrequencyY;
+ readonly attribute SVGAnimatedInteger numOctaves;
+ readonly attribute SVGAnimatedNumber seed;
+ readonly attribute SVGAnimatedEnumeration stitchTiles;
+ readonly attribute SVGAnimatedEnumeration type;
+};
+
+SVGFETurbulenceElement includes SVGFilterPrimitiveStandardAttributes;
diff --git a/tests/wpt/web-platform-tests/interfaces/html.idl b/tests/wpt/web-platform-tests/interfaces/html.idl
index af85b42db6c..8552ae4ed30 100644
--- a/tests/wpt/web-platform-tests/interfaces/html.idl
+++ b/tests/wpt/web-platform-tests/interfaces/html.idl
@@ -1437,6 +1437,7 @@ interface CustomElementRegistry {
[CEReactions] void define(DOMString name, Function constructor, optional ElementDefinitionOptions options);
any get(DOMString name);
Promise<void> whenDefined(DOMString name);
+ [CEReactions] void upgrade(Node root);
};
dictionary ElementDefinitionOptions {
diff --git a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
index fe46a1da91e..30f57ca6233 100644
--- a/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
+++ b/tests/wpt/web-platform-tests/interfaces/web-nfc.idl
@@ -1,60 +1,63 @@
-
- dictionary NFCMessage {
- sequence<NFCRecord> records;
- USVString url;
- };
-
- typedef (DOMString or unrestricted double or ArrayBuffer or Dictionary) NFCRecordData;
-
- dictionary NFCRecord {
- NFCRecordType recordType;
- USVString mediaType;
- NFCRecordData data;
- };
-
- enum NFCRecordType {
- "empty",
- "text",
- "url",
- "json",
- "opaque"
- };
-
- partial interface Navigator {
- readonly attribute NFC nfc;
- };
-
- typedef (DOMString or ArrayBuffer or NFCMessage) NFCPushMessage;
-
- interface NFC {
- Promise<void> push(NFCPushMessage message, optional NFCPushOptions options);
- Promise<void> cancelPush(optional NFCPushTarget target="any");
- Promise<long> watch(MessageCallback callback, optional NFCWatchOptions options);
- Promise<void> cancelWatch(optional long id);
- };
-
- callback MessageCallback = void (NFCMessage message);
-
- dictionary NFCPushOptions {
- NFCPushTarget target = "any";
- unrestricted double timeout = Infinity;
- boolean ignoreRead = true;
- };
-
- enum NFCPushTarget {
- "tag",
- "peer",
- "any"
- };
-
- dictionary NFCWatchOptions {
- USVString url = "";
- NFCRecordType? recordType;
- USVString mediaType = "";
- NFCWatchMode mode = "web-nfc-only";
- };
-
- enum NFCWatchMode {
- "web-nfc-only",
- "any"
- };
+dictionary NFCMessage {
+ sequence<NFCRecord> records;
+ USVString url;
+};
+
+typedef (DOMString or unrestricted double or ArrayBuffer or Dictionary) NFCRecordData;
+
+dictionary NFCRecord {
+ NFCRecordType recordType;
+ USVString mediaType;
+ NFCRecordData data;
+};
+
+enum NFCRecordType {
+ "empty",
+ "text",
+ "url",
+ "json",
+ "opaque"
+};
+
+partial interface Navigator {
+ [SecureContext,
+ SameObject]
+ readonly attribute NFC nfc;
+};
+
+typedef (DOMString or ArrayBuffer or NFCMessage) NFCPushMessage;
+
+[SecureContext]
+interface NFC {
+ Promise<void> push(NFCPushMessage message, optional NFCPushOptions options);
+ Promise<void> cancelPush(optional NFCPushTarget target = "any");
+ Promise<long> watch(MessageCallback callback,
+ optional NFCWatchOptions options);
+ Promise<void> cancelWatch(optional long id);
+};
+
+callback MessageCallback = void (NFCMessage message);
+
+dictionary NFCPushOptions {
+ NFCPushTarget target = "any";
+ unrestricted double timeout = Infinity;
+ boolean ignoreRead = true;
+};
+
+enum NFCPushTarget {
+ "tag",
+ "peer",
+ "any"
+};
+
+dictionary NFCWatchOptions {
+ USVString url = "";
+ NFCRecordType? recordType;
+ USVString mediaType = "";
+ NFCWatchMode mode = "web-nfc-only";
+};
+
+enum NFCWatchMode {
+ "web-nfc-only",
+ "any"
+};
diff --git a/tests/wpt/web-platform-tests/intersection-observer/OWNERS b/tests/wpt/web-platform-tests/intersection-observer/OWNERS
new file mode 100644
index 00000000000..50699c8ce3f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/intersection-observer/OWNERS
@@ -0,0 +1,2 @@
+@scottlow
+@szager-chromium
diff --git a/tests/wpt/web-platform-tests/intersection-observer/shadow-content.html b/tests/wpt/web-platform-tests/intersection-observer/shadow-content.html
index a0a6242050e..d049c70919e 100644
--- a/tests/wpt/web-platform-tests/intersection-observer/shadow-content.html
+++ b/tests/wpt/web-platform-tests/intersection-observer/shadow-content.html
@@ -23,7 +23,7 @@ var target;
runTestCycle(function() {
var shadowHost = document.getElementById("host");
assert_true(!!shadowHost, "Host exists");
- var shadowRoot = shadowHost.createShadowRoot();
+ var shadowRoot = shadowHost.attachShadow({ mode: "open" });
assert_true(!!shadowRoot, "Shadow root exists");
shadowRoot.innerHTML = "<div id='target' style='width: 100px; height: 100px; background-color: green;'></div>";
target = shadowRoot.getElementById("target");
diff --git a/tests/wpt/web-platform-tests/js/OWNERS b/tests/wpt/web-platform-tests/js/OWNERS
new file mode 100644
index 00000000000..fd31fb27543
--- /dev/null
+++ b/tests/wpt/web-platform-tests/js/OWNERS
@@ -0,0 +1 @@
+@Ms2ger
diff --git a/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-parallel-requests.https.html b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-parallel-requests.https.html
index 501f36fb358..5f493e96759 100644
--- a/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-parallel-requests.https.html
+++ b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-parallel-requests.https.html
@@ -5,11 +5,9 @@
'use strict';
promise_test((t) => {
- const p1 = navigator.keyboard.lock(['a', 'b']);
- const p2 = navigator.keyboard.lock(['c', 'd']);
- return promise_rejects(t, null, p2,
- 'keyboard.lock() should only be ' +
- 'executed if another request has finished.');
+ const p1 = navigator.keyboard.lock(["KeyA", "KeyB"]);
+ const p2 = navigator.keyboard.lock(["KeyC", "KeyD"]);
+ return Promise.all([promise_rejects(t, "AbortError", p1), p2]);
}, '[Keyboard Lock] keyboard.lock twice in parallel');
</script>
diff --git a/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-sequential-requests.https.html b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-sequential-requests.https.html
index 4403930bf62..520da36dfb4 100644
--- a/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-sequential-requests.https.html
+++ b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock-two-sequential-requests.https.html
@@ -5,9 +5,9 @@
'use strict';
promise_test(() => {
- return navigator.keyboard.lock(['a', 'b'])
+ return navigator.keyboard.lock(["KeyA", "KeyB"])
.then(() => {
- return navigator.keyboard.lock(['c', 'd']);
+ return navigator.keyboard.lock(["KeyC", "KeyD"]);
});
}, '[Keyboard Lock] keyboard.lock called twice sequentially');
diff --git a/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock.https.html b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock.https.html
index d39e8907647..7f8724c14a1 100644
--- a/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock.https.html
+++ b/tests/wpt/web-platform-tests/keyboard-lock/navigator-keyboard-lock.https.html
@@ -5,7 +5,7 @@
'use strict';
promise_test(() => {
- const p = navigator.keyboard.lock(['a', 'b']);
+ const p = navigator.keyboard.lock(["KeyA", "KeyB"]);
assert_true(p instanceof Promise);
return p;
}, '[Keyboard Lock] keyboard.lock');
diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist
index 958adb25ace..bc385953ae2 100644
--- a/tests/wpt/web-platform-tests/lint.whitelist
+++ b/tests/wpt/web-platform-tests/lint.whitelist
@@ -7,8 +7,6 @@
## Whitespace rules that we can't enforce yet ##
-CR AT EOL: svg/import/*
-
INDENT TABS: .gitmodules
INDENT TABS: conformance-checkers/*
INDENT TABS: content-security-policy/*
@@ -16,7 +14,6 @@ INDENT TABS: custom-elements/*
INDENT TABS: old-tests/*
INDENT TABS: pointerlock/*
INDENT TABS: shadow-dom/*
-INDENT TABS: svg/import/*
INDENT TABS: tools/*
INDENT TABS: web-animations/*
INDENT TABS: webaudio/*
@@ -32,7 +29,6 @@ TRAILING WHITESPACE: html-longdesc/*
TRAILING WHITESPACE: old-tests/*
TRAILING WHITESPACE: pointerevents/*
TRAILING WHITESPACE: shadow-dom/*
-TRAILING WHITESPACE: svg/import/*
TRAILING WHITESPACE: tools/*
TRAILING WHITESPACE: webaudio/*
TRAILING WHITESPACE: WebIDL/*
@@ -58,6 +54,7 @@ TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.m4v
TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.otf
TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.ttf
TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.TTF
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.ttc
TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.woff
TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.woff2
TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.eot
@@ -277,14 +274,12 @@ GENERATE_TESTS: css/css-tables/width-distribution/distribution-algo-min-content-
GENERATE_TESTS: css/css-tables/width-distribution/distribution-algo-min-content-percent-guess.html
GENERATE_TESTS: css/css-tables/width-distribution/distribution-algo-min-content-specified-guess.1.html
GENERATE_TESTS: css/css-tables/width-distribution/distribution-algo-min-content-specified-guess.html
-GENERATE_TESTS: css/cssom/index-002.html
GENERATE_TESTS: dom/nodes/case.js
GENERATE_TESTS: dom/ranges/Range-cloneRange.html
GENERATE_TESTS: dom/ranges/Range-collapse.html
GENERATE_TESTS: dom/ranges/Range-mutations.js
GENERATE_TESTS: dom/ranges/Range-selectNode.html
GENERATE_TESTS: dom/ranges/Range-set.html
-GENERATE_TESTS: dom/traversal/NodeIterator.html
GENERATE_TESTS: dom/traversal/TreeWalker.html
GENERATE_TESTS: domparsing/createContextualFragment.html
GENERATE_TESTS: domxpath/001.html
@@ -459,7 +454,6 @@ CONSOLE: css/css-values/viewport-units-css2-001.html
CONSOLE: css/css-writing-modes/orthogonal-parent-shrink-to-fit-001*.html
CONSOLE: css/css-writing-modes/tools/generators/gulpfile.js
CONSOLE: css/css-writing-modes/tools/generators/text-orientation-generator.js
-CONSOLE: css/cssom/index-002.html
TRAILING WHITESPACE: css/CSS2/generated-content/before-after-positioned-002.html
TRAILING WHITESPACE: css/CSS2/generated-content/before-after-positioned-003.html
@@ -922,6 +916,7 @@ CSS-COLLIDING-TEST-NAME: css/cssom/interfaces.html
# TODO https://github.com/w3c/web-platform-tests/issues/5770
MISSING-LINK: css/geometry/*.worker.js
+MISSING-LINK: css/filter-effects/*.any.js
WEBIDL2.JS: .gitmodules
diff --git a/tests/wpt/web-platform-tests/magnetometer/idlharness.https.html b/tests/wpt/web-platform-tests/magnetometer/idlharness.https.html
index 3ab2bc279ba..904869ebd6d 100644
--- a/tests/wpt/web-platform-tests/magnetometer/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/magnetometer/idlharness.https.html
@@ -15,7 +15,7 @@ function doTest([dom, generic_sensor, magnetometer]) {
const idl_array = new IdlArray();
idl_array.add_untested_idls(dom);
idl_array.add_untested_idls('interface EventHandler {};');
- idl_array.add_idls(generic_sensor, { only: ['Sensor'] });
+ idl_array.add_idls(generic_sensor, { only: ['Sensor', 'SensorOptions'] });
idl_array.add_idls(magnetometer);
idl_array.add_objects({
Magnetometer: ['new Magnetometer();'],
diff --git a/tests/wpt/web-platform-tests/mediacapture-record/idlharness.html b/tests/wpt/web-platform-tests/mediacapture-record/idlharness.html
index 95f60d73760..2da20a13171 100644
--- a/tests/wpt/web-platform-tests/mediacapture-record/idlharness.html
+++ b/tests/wpt/web-platform-tests/mediacapture-record/idlharness.html
@@ -80,19 +80,24 @@
</pre>
<script>
- var canvas = document.getElementById('canvas');
- var context = canvas.getContext("2d");
- context.fillStyle = "red";
- context.fillRect(0, 0, 10, 10);
- var stream = canvas.captureStream();
+ promise_test(async function() {
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
- idl_array.add_idls(document.getElementById("idl").textContent);
- idl_array.add_objects({
- MediaRecorder: [new MediaRecorder(stream)],
- });
- idl_array.test();
+ var canvas = document.getElementById('canvas');
+ var context = canvas.getContext("2d");
+ context.fillStyle = "red";
+ context.fillRect(0, 0, 10, 10);
+ var stream = canvas.captureStream();
+
+ var idl_array = new IdlArray();
+ idl_array.add_untested_idls(dom, { only: ['EventInit'] });
+ idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
+ idl_array.add_idls(document.getElementById("idl").textContent);
+ idl_array.add_objects({
+ MediaRecorder: [new MediaRecorder(stream)],
+ });
+ idl_array.test();
+ }, 'mediacapture-record interfaces');
</script>
<div id="log"></div>
</body>
diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html
index f6dfb361bb4..a793bedc78d 100644
--- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html
+++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-all.html
@@ -19,10 +19,11 @@
<script>
'use strict';
- function doIdlTest(idlText) {
+ function doIdlTest([dom, idlText]) {
var idl_array = new IdlArray();
// dummies
+ idl_array.add_untested_idls(dom, { only: ['Event', 'EventInit']});
idl_array.add_untested_idls("interface Navigator {};");
idl_array.add_untested_idls("interface EventTarget {};");
idl_array.add_untested_idls("interface EventHandler {};");
@@ -35,10 +36,12 @@
}
promise_test(() => {
- return fetch('/interfaces/mediacapture-main.idl')
- .then(response => response.text())
- .then(doIdlTest);
-
+ return Promise.all(
+ [
+ '/interfaces/dom.idl',
+ '/interfaces/mediacapture-main.idl',
+ ].map(url => fetch(url).then(r => r.text())))
+ .then(doIdlTest);
}, 'Test driver')
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html
index c2449ae6ce0..0d6c6c00bf5 100644
--- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html
+++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html
@@ -20,10 +20,10 @@
<script>
"use strict";
- function doIdlTest(idlText) {
+ function doIdlTest([dom, idlText]) {
const MDI_idl = new IdlArray();
- MDI_idl.add_untested_idls("interface Event {};");
+ MDI_idl.add_untested_idls(dom, { only: ['Event', 'EventInit'] });
MDI_idl.add_untested_idls("interface EventTarget {};");
MDI_idl.add_untested_idls("interface Navigator {};");
MDI_idl.add_idls(idlText);
@@ -59,8 +59,11 @@
}
promise_test(() => {
- return fetch('/interfaces/mediacapture-main.idl')
- .then(response => response.text())
+ return Promise.all(
+ [
+ '/interfaces/dom.idl',
+ '/interfaces/mediacapture-main.idl',
+ ].map(url => fetch(url).then(r => r.text())))
.then(doIdlTest);
}, "Test MediaDevices.enumerateDevices call and result. Types only.");
diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-preload-none-manual.https.html
index 6015bb7bb2d..758a273bb19 100644
--- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html
+++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStream-MediaElement-preload-none-manual.https.html
@@ -1,16 +1,15 @@
<!DOCTYPE html>
-<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). -->
<html>
<head>
- <title>Test that the HTMLMediaElement preload 'none' attribute value is ignored for MediaStream used as srcObject and MediaStream object URLs used as src.</title>>
+ <title>Test that the HTMLMediaElement preload 'none' attribute value is ignored for MediaStream used as srcObject and MediaStream object URLs used as src.</title>
<link rel="author" title="Matthew Wolenetz" href="mailto:wolenetz@chromium.org"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<p class="instructions">When prompted, accept to share your audio and video streams.</p>
- <h1 class="instructions">Description</h1>
<p class="instructions">This test checks that the HTMLMediaElement preload 'none' attribute value is ignored for MediaStream used as srcObject and MediaStream object URLs used as src.</p>
+ <div id=log></div>
<audio preload="none"></audio>
<video preload="none"></video>
@@ -40,14 +39,10 @@
navigator.mediaDevices.getUserMedia({audio:true})
.then(t.step_func(function(stream)
{
- testPreloadNone(t, aud, t.step_func(function()
- {
- aud.src = URL.createObjectURL(stream);
- t.add_cleanup(function() { URL.revokeObjectURL(aud.src); });
- }));
+ testPreloadNone(t, aud, t.step_func(function() { aud.srcObject = stream; }));
}),
t.unreached_func("getUserMedia error callback was invoked."));
- }, "Test that preload 'none' is ignored for MediaStream object URL used as src");
+ }, "Test that preload 'none' is ignored for MediaStream object URL used as srcObject for audio");
async_test(function(t)
{
@@ -57,7 +52,7 @@
{
testPreloadNone(t, vid, t.step_func(function() { vid.srcObject = stream; }));
}), t.unreached_func("getUserMedia error callback was invoked."));
- }, "Test that preload 'none' is ignored for MediaStream used as srcObject");
+ }, "Test that preload 'none' is ignored for MediaStream used as srcObject for video");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/historical.html b/tests/wpt/web-platform-tests/mediacapture-streams/historical.html
index d9616f1282c..74efc758421 100644
--- a/tests/wpt/web-platform-tests/mediacapture-streams/historical.html
+++ b/tests/wpt/web-platform-tests/mediacapture-streams/historical.html
@@ -15,4 +15,9 @@ test(function() {
test(function() {
assert_false("mozGetUserMedia" in navigator);
}, "navigator.mozGetUserMedia should not exist");
+
+test(() => {
+ const mediaStream = new MediaStream();
+ assert_throws(new TypeError(), () => URL.createObjectURL(mediaStream));
+}, "Passing MediaStream to URL.createObjectURL() should throw");
</script>
diff --git a/tests/wpt/web-platform-tests/mediasession/setactionhandler.html b/tests/wpt/web-platform-tests/mediasession/setactionhandler.html
index 120686ae127..dc7c3359e12 100644
--- a/tests/wpt/web-platform-tests/mediasession/setactionhandler.html
+++ b/tests/wpt/web-platform-tests/mediasession/setactionhandler.html
@@ -15,9 +15,7 @@ test(function(t) {
test(function(t) {
assert_throws(
- new TypeError("Failed to execute 'setActionHandler' on 'MediaSession':" +
- "The provided value 'invalid' is not a valid enum value" +
- "of type MediaSessionAction."),
+ new TypeError,
_ => { window.navigator.mediaSession.setActionHandler("invalid", null); });
}, "Test that setActionHandler() throws exception for unsupported actions");
diff --git a/tests/wpt/web-platform-tests/mimesniff/mime-types/resources/mime-types.json b/tests/wpt/web-platform-tests/mimesniff/mime-types/resources/mime-types.json
index 6bee02daee9..1d0b1528892 100644
--- a/tests/wpt/web-platform-tests/mimesniff/mime-types/resources/mime-types.json
+++ b/tests/wpt/web-platform-tests/mimesniff/mime-types/resources/mime-types.json
@@ -32,6 +32,12 @@
"navigable": true,
"encoding": "GBK"
},
+ {
+ "input": "text/html;charset=();charset=GBK",
+ "output": "text/html;charset=\"()\"",
+ "navigable": true,
+ "encoding": null
+ },
"Spaces",
{
"input": "text/html;charset =gbk",
@@ -57,6 +63,12 @@
"navigable": true,
"encoding": "GBK"
},
+ {
+ "input": "text/html;charset= \"gbk\"",
+ "output": "text/html;charset=\" \\\"gbk\\\"\"",
+ "navigable": true,
+ "encoding": null
+ },
"Single quotes are a token, not a delimiter",
{
"input": "text/html;charset='gbk'",
@@ -76,6 +88,12 @@
"navigable": true,
"encoding": null
},
+ {
+ "input": "text/html;charset=';charset=GBK",
+ "output": "text/html;charset='",
+ "navigable": true,
+ "encoding": null
+ },
"Invalid parameters",
{
"input": "text/html;test;charset=gbk",
@@ -113,6 +131,18 @@
"navigable": true,
"encoding": "GBK"
},
+ {
+ "input": "text/html;charset= \"\u007F;charset=GBK",
+ "output": "text/html;charset=GBK",
+ "navigable": true,
+ "encoding": "GBK"
+ },
+ {
+ "input": "text/html;charset=\"\u007F;charset=foo\";charset=GBK",
+ "output": "text/html;charset=GBK",
+ "navigable": true,
+ "encoding": "GBK"
+ },
"Double quotes",
{
"input": "text/html;charset=\"gbk\"",
@@ -139,6 +169,12 @@
"encoding": "GBK"
},
{
+ "input": "text/html;charset=\"gbk \"",
+ "output": "text/html;charset=\"gbk \"",
+ "navigable": true,
+ "encoding": "GBK"
+ },
+ {
"input": "text/html;charset=\"\\ gbk\"",
"output": "text/html;charset=\" gbk\"",
"navigable": true,
@@ -156,6 +192,18 @@
"navigable": true,
"encoding": "GBK"
},
+ {
+ "input": "text/html;charset=\"\";charset=GBK",
+ "output": "text/html;charset=GBK",
+ "navigable": true,
+ "encoding": "GBK"
+ },
+ {
+ "input": "text/html;charset=\";charset=GBK",
+ "output": "text/html;charset=\";charset=GBK\"",
+ "navigable": true,
+ "encoding": null
+ },
"Unexpected code points",
{
"input": "text/html;charset={gbk}",
@@ -224,6 +272,10 @@
"output": null
},
{
+ "input": "/",
+ "output": null
+ },
+ {
"input": "bogus",
"output": null
},
@@ -248,6 +300,10 @@
"output": null
},
{
+ "input": "ÿ/ÿ",
+ "output": null
+ },
+ {
"input": "text/html(;doesnot=matter",
"output": null
},
diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_idlharness.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_idlharness.html
index eb7d94b15a7..6d1a1249b91 100644
--- a/tests/wpt/web-platform-tests/navigation-timing/nav2_idlharness.html
+++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_idlharness.html
@@ -32,6 +32,7 @@ interface PerformanceResourceTiming : PerformanceEntry {
[MeasureAs=PerformanceResourceTimingSizes] readonly attribute unsigned long long encodedBodySize;
[MeasureAs=PerformanceResourceTimingSizes] readonly attribute unsigned long long decodedBodySize;
};
+interface PerformanceEntry {};
</pre>
<pre id='idl'>
diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html
index 41b24dd7dca..1d7f6c928ce 100644
--- a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html
+++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_redirect_server.html
@@ -11,7 +11,7 @@
<script>
function verifyTimingEventOrder(eventOrder, timingEntry) {
- for (var i = 0; i < eventOrder.length - 1; i++) {
+ for (let i = 0; i < eventOrder.length - 1; i++) {
assert_true(timingEntry[eventOrder[i]] < timingEntry[eventOrder[i + 1]],
"Expected " + eventOrder[i] + " to be no greater than " + eventOrder[i + 1] + ".");
}
@@ -19,11 +19,13 @@
function onload_test()
{
- var frame_performance = document.getElementById("frameContext").contentWindow.performance;
- assert_equals(frame_performance.getEntriesByType("navigation")[0].type,
+ const frame_performance = document.getElementById("frameContext").contentWindow.performance;
+ const navigation_entry = frame_performance.getEntriesByType("navigation")[0];
+ assert_equals(navigation_entry.type,
"navigate",
"Expected navigation type to be navigate.");
- assert_equals(frame_performance.getEntriesByType("navigation")[0].redirectCount, 1, "Expected redirectCount to be 1.");
+ assert_equals(navigation_entry.redirectCount, 1, "Expected redirectCount to be 1.");
+ assert_equals(navigation_entry.name, 'http://' + document.location.host + '/navigation-timing/resources/blank_page_green.html');
var timgingEvents = [
'startTime',
diff --git a/tests/wpt/web-platform-tests/orientation-sensor/idlharness.https.html b/tests/wpt/web-platform-tests/orientation-sensor/idlharness.https.html
index d1099b57864..c87d99f8085 100644
--- a/tests/wpt/web-platform-tests/orientation-sensor/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/orientation-sensor/idlharness.https.html
@@ -15,7 +15,7 @@ function doTest([dom, generic_sensor, orientation_sensor]) {
const idl_array = new IdlArray();
idl_array.add_untested_idls(dom);
idl_array.add_untested_idls('interface EventHandler {};');
- idl_array.add_idls(generic_sensor, { only: ['Sensor'] });
+ idl_array.add_idls(generic_sensor, { only: ['Sensor', 'SensorOptions'] });
idl_array.add_idls(orientation_sensor);
idl_array.add_objects({
AbsoluteOrientationSensor: ['new AbsoluteOrientationSensor();'],
diff --git a/tests/wpt/web-platform-tests/payment-handler/interfaces.https.any.js b/tests/wpt/web-platform-tests/payment-handler/interfaces.https.any.js
index ccddf464d13..73679300f07 100644
--- a/tests/wpt/web-platform-tests/payment-handler/interfaces.https.any.js
+++ b/tests/wpt/web-platform-tests/payment-handler/interfaces.https.any.js
@@ -6,11 +6,11 @@
// https://w3c.github.io/payment-handler/
promise_test(async () => {
- const text = await fetch('/interfaces/payment-handler.idl').then(response =>
- response.text(),
- );
+ const idl = await fetch('/interfaces/payment-handler.idl').then(r => r.text());
const idlArray = new IdlArray();
- idlArray.add_idls(text);
+ idlArray.add_idls(idl);
+ idlArray.add_untested_idls('interface ExtendableEvent {};');
+ idlArray.add_untested_idls('dictionary ExtendableEventInit {};');
idlArray.test();
done();
}, 'Payment handler interfaces.');
diff --git a/tests/wpt/web-platform-tests/payment-handler/same-object-attributes.https.html b/tests/wpt/web-platform-tests/payment-handler/same-object-attributes.https.html
new file mode 100644
index 00000000000..b9a9dd82d24
--- /dev/null
+++ b/tests/wpt/web-platform-tests/payment-handler/same-object-attributes.https.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<link rel="help" href="https://w3c.github.io/payment-handler/">
+<title>Test for [SameObject] attributes</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
+<script>
+
+promise_test(async t => {
+ const registration = await service_worker_unregister_and_register(
+ t, 'basic-card.js', 'payment-app/');
+ await wait_for_state(t, registration.installing, 'activated');
+
+ assert_equals(registration.paymentManager, registration.paymentManager);
+ assert_equals(registration.paymentManager.instruments, registration.paymentManager.instruments);
+});
+
+</script>
diff --git a/tests/wpt/web-platform-tests/payment-handler/untrusted-event.https.html b/tests/wpt/web-platform-tests/payment-handler/untrusted-event.https.html
new file mode 100644
index 00000000000..900ac79d0d2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/payment-handler/untrusted-event.https.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<link rel="help" href="https://w3c.github.io/payment-handler/">
+<title>Test for untrusted event</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
+<script>
+
+async function getResultFromSW(serviceWorkerContainer) {
+ return new Promise((resolve, reject) => {
+ serviceWorkerContainer.addEventListener('message', listener = e => {
+ serviceWorkerContainer.removeEventListener('message', listener);
+ if (e.data) {
+ resolve(e.data);
+ } else {
+ reject();
+ }
+ });
+ });
+}
+
+promise_test(async t => {
+ const registration = await service_worker_unregister_and_register(
+ t, 'untrusted-event.js', 'payment-app/');
+ await wait_for_state(t, registration.installing, 'activated');
+
+ const controlled_window = (await with_iframe('payment-app/payment.html')).contentWindow;
+
+ // Test for untrusted PaymentRequestEvent
+ {
+ const result = getResultFromSW(controlled_window.navigator.serviceWorker);
+ controlled_window.navigator.serviceWorker.controller.postMessage('paymentrequest');
+
+ const expected = [
+ "InvalidStateError", /* respondWith */
+ "InvalidStateError" /* openWindow */
+ ];
+
+ assert_array_equals(await result, expected);
+ }
+
+ // Test for untrusted CanMakePaymentEvent
+ {
+ const result = getResultFromSW(controlled_window.navigator.serviceWorker);
+ controlled_window.navigator.serviceWorker.controller.postMessage('canmakepayment');
+
+ const expected = [
+ "InvalidStateError", /* respondWith */
+ ];
+
+ assert_array_equals(await result, expected);
+ }
+});
+
+</script>
diff --git a/tests/wpt/web-platform-tests/payment-handler/untrusted-event.js b/tests/wpt/web-platform-tests/payment-handler/untrusted-event.js
new file mode 100644
index 00000000000..240702956e4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/payment-handler/untrusted-event.js
@@ -0,0 +1,59 @@
+let sender = null;
+
+self.addEventListener('message', e => {
+ sender = e.source;
+
+ if (e.data == 'paymentrequest') {
+ self.dispatchEvent(new PaymentRequestEvent('paymentrequest', {
+ methodData: [{
+ supportedMethods: 'basic-card'
+ }],
+ total: {
+ currency: 'USD',
+ value: '100'
+ },
+ modifiers: [{
+ supportedMethods: 'basic-card'
+ }]
+ }));
+ } else if (e.data == 'canmakepayment') {
+ self.dispatchEvent(new CanMakePaymentEvent('canmakepayment', {
+ methodData: [{
+ supportedMethods: 'basic-card'
+ }],
+ modifiers: [{
+ supportedMethods: 'basic-card'
+ }]
+ }));
+ }
+});
+
+self.addEventListener('paymentrequest', async e => {
+ const result = [];
+
+ try {
+ e.respondWith({});
+ } catch (exception) {
+ result.push(exception.name);
+ }
+
+ try {
+ await e.openWindow('payment-app/payment.html');
+ } catch (exception) {
+ result.push(exception.name);
+ }
+
+ sender.postMessage(result);
+});
+
+self.addEventListener('canmakepayment', async e => {
+ const result = [];
+
+ try {
+ e.respondWith({});
+ } catch (exception) {
+ result.push(exception.name);
+ }
+
+ sender.postMessage(result);
+});
diff --git a/tests/wpt/web-platform-tests/payment-request/change-shipping-option-select-last-manual.https.html b/tests/wpt/web-platform-tests/payment-request/change-shipping-option-select-last-manual.https.html
index c8e23aa3e6b..eb1957f5414 100644
--- a/tests/wpt/web-platform-tests/payment-request/change-shipping-option-select-last-manual.https.html
+++ b/tests/wpt/web-platform-tests/payment-request/change-shipping-option-select-last-manual.https.html
@@ -8,7 +8,7 @@
setup({ explicit_done: true, explicit_timeout: true });
const validMethods = Object.freeze([
{ supportedMethods: "basic-card" },
- { supportedMethods: "https://apple.com/pay" },
+ { supportedMethods: "https://apple.com/apple-pay" },
]);
const validAmount = Object.freeze({ currency: "USD", value: "5.00" });
const validTotal = Object.freeze({
diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html
index 32b56680e7f..147e55dfe5c 100644
--- a/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html
+++ b/tests/wpt/web-platform-tests/payment-request/payment-request-show-method.https.html
@@ -9,7 +9,7 @@
'use strict';
const defaultMethods = Object.freeze([
{ supportedMethods: "basic-card" },
- { supportedMethods: "https://apple.com/pay" }
+ { supportedMethods: "https://apple.com/apple-pay" }
]);
const defaultDetails = Object.freeze({
diff --git a/tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-rejects-manual.https.html b/tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-rejects-manual.https.html
index ab89d7ec413..1a3b5fe457f 100644
--- a/tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-rejects-manual.https.html
+++ b/tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-rejects-manual.https.html
@@ -23,7 +23,7 @@
});
const validMethodApplePay = Object.freeze({
- supportedMethods: "https://apple.com/pay",
+ supportedMethods: "https://apple.com/apple-pay",
});
// Methods
diff --git a/tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-resolves-manual.https.html b/tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-resolves-manual.https.html
index 623db1531b3..6ec74bbbca4 100644
--- a/tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-resolves-manual.https.html
+++ b/tests/wpt/web-platform-tests/payment-request/show-method-optional-promise-resolves-manual.https.html
@@ -22,7 +22,7 @@ const validMethods = Object.freeze([
supportedMethods: "basic-card",
},
{
- supportedMethods: "https://apple.com/pay",
+ supportedMethods: "https://apple.com/apple-pay",
},
]);
diff --git a/tests/wpt/web-platform-tests/payment-request/show-method-postmessage-iframe.html b/tests/wpt/web-platform-tests/payment-request/show-method-postmessage-iframe.html
index fd73d6bfa5a..12a1e0cef82 100644
--- a/tests/wpt/web-platform-tests/payment-request/show-method-postmessage-iframe.html
+++ b/tests/wpt/web-platform-tests/payment-request/show-method-postmessage-iframe.html
@@ -3,7 +3,7 @@
"use strict";
const defaultMethods = Object.freeze([
{ supportedMethods: "basic-card" },
- { supportedMethods: "https://apple.com/pay" },
+ { supportedMethods: "https://apple.com/apple-pay" },
]);
const defaultDetails = Object.freeze({
diff --git a/tests/wpt/web-platform-tests/payment-request/show-method-postmessage-manual.https.html b/tests/wpt/web-platform-tests/payment-request/show-method-postmessage-manual.https.html
index 1067fb3cd58..0a7f37f0889 100644
--- a/tests/wpt/web-platform-tests/payment-request/show-method-postmessage-manual.https.html
+++ b/tests/wpt/web-platform-tests/payment-request/show-method-postmessage-manual.https.html
@@ -14,7 +14,7 @@ setup({
const defaultMethods = Object.freeze([
{ supportedMethods: "basic-card" },
- { supportedMethods: "https://apple.com/pay" },
+ { supportedMethods: "https://apple.com/apple-pay" },
]);
const defaultDetails = Object.freeze({
diff --git a/tests/wpt/web-platform-tests/pointerevents/extension/idlharness.html b/tests/wpt/web-platform-tests/pointerevents/extension/idlharness.html
index d1bbdebda92..e2835f8327f 100644
--- a/tests/wpt/web-platform-tests/pointerevents/extension/idlharness.html
+++ b/tests/wpt/web-platform-tests/pointerevents/extension/idlharness.html
@@ -48,8 +48,20 @@ interface PointerEvent : MouseEvent {
</pre>
<script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
+promise_test(async function () {
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+ const uievents = await fetch('/interfaces/uievents.idl').then(r => r.text());
+
+ const idl_array = new IdlArray();
+ idl_array.add_untested_idls(dom, { only: ['EventInit'] });
+ idl_array.add_untested_idls(uievents, { only: [
+ 'UIEventInit',
+ 'MouseEventInit',
+ 'EventModifierInit']
+ });
+ idl_array.add_untested_idls(
+ document.getElementById("untested_idl").textContent);
idl_array.add_idls(document.getElementById("idl").textContent);
idl_array.test();
+}, 'pointerevents extension interfaces');
</script>
diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-down-css_touch-manual.html b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-down-css_touch-manual.html
index 16e1cb2fabe..592139f9f41 100644
--- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-down-css_touch-manual.html
+++ b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-down-css_touch-manual.html
@@ -4,10 +4,10 @@
<title>touch-action: pan-down</title>
<meta name="assert" content="TA15.4 - With `touch-action: pan-down` on a swiped or click/dragged element, only panning in the y-axis down direction should be possible.">
<meta name="viewport" content="width=device-width">
- <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
+ <link rel="stylesheet" type="text/css" href="../pointerevent_styles.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <script src="pointerevent_support.js"></script>
+ <script src="../pointerevent_support.js"></script>
<style>
#target0 {
width: 700px;
diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-left-css_touch-manual.html b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-left-css_touch-manual.html
index 53fd2de1384..7030d5e487c 100644
--- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-left-css_touch-manual.html
+++ b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-left-css_touch-manual.html
@@ -4,10 +4,10 @@
<title>touch-action: pan-left</title>
<meta name="assert" content="TA15.3 - With `touch-action: pan-left` on a swiped or click/dragged element, only panning on the x-axis left direction should be possible.">
<meta name="viewport" content="width=device-width">
- <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
+ <link rel="stylesheet" type="text/css" href="../pointerevent_styles.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <script src="pointerevent_support.js"></script>
+ <script src="../pointerevent_support.js"></script>
<style>
#target0 {
width: 700px;
diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-right-css_touch-manual.html b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-right-css_touch-manual.html
index 53bbac65ec5..e711236a370 100644
--- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-right-css_touch-manual.html
+++ b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-right-css_touch-manual.html
@@ -4,10 +4,10 @@
<title>touch-action: pan-right</title>
<meta name="assert" content="TA15.3 - With `touch-action: pan-right` on a swiped or click/dragged element, only panning on the x-axis right direction should be possible.">
<meta name="viewport" content="width=device-width">
- <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
+ <link rel="stylesheet" type="text/css" href="../pointerevent_styles.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <script src="pointerevent_support.js"></script>
+ <script src="../pointerevent_support.js"></script>
<style>
#target0 {
width: 700px;
diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-up-css_touch-manual.html b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-up-css_touch-manual.html
index 0902700d2de..46ddaa26031 100644
--- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-up-css_touch-manual.html
+++ b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-pan-up-css_touch-manual.html
@@ -4,10 +4,10 @@
<title>touch-action: pan-up</title>
<meta name="assert" content="TA15.4 - With `touch-action: pan-up` on a swiped or click/dragged element, only panning in the y-axis up direction should be possible.">
<meta name="viewport" content="width=device-width">
- <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
+ <link rel="stylesheet" type="text/css" href="../pointerevent_styles.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <script src="pointerevent_support.js"></script>
+ <script src="../pointerevent_support.js"></script>
<style>
#target0 {
width: 700px;
diff --git a/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-verification.html b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-verification.html
new file mode 100644
index 00000000000..178f7a68a58
--- /dev/null
+++ b/tests/wpt/web-platform-tests/pointerevents/extension/pointerevent_touch-action-verification.html
@@ -0,0 +1,97 @@
+<!doctype html>
+<html>
+ <head>
+<!-- This is a fork of the main to support new additions to touch-action.
+ It should be integrated into web-platform-test when they are accepted into the
+ specification. -->
+ <title>touch-action: basic verification</title>
+ <meta name="assert" content="TA15.20 - The touch-action CSS property determines whether touch input MAY trigger default behavior supplied by the user agent.
+ auto: The user agent MAY determine any permitted touch behaviors, such as panning and zooming manipulations of the viewport, for touches that begin on the element.
+ none: Touches that begin on the element MUST NOT trigger default touch behaviors.
+ pan-x: The user agent MAY consider touches that begin on the element only for the purposes of horizontally scrolling the element's nearest ancestor with horizontally scrollable content.
+ pan-y: The user agent MAY consider touches that begin on the element only for the purposes of vertically scrolling the element's nearest ancestor with vertically scrollable content.
+ manipulation: The user agent MAY consider touches that begin on the element only for the purposes of scrolling and continuous zooming. Any additional behaviors supported by auto are out of scope for this specification.">
+ <meta name="viewport" content="width=device-width">
+ <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+ /*
+ Give some rules below something to override in order to test
+ that they really are being parsed
+ */
+ .defnone {
+ touch-action: none;
+ }
+ </style>
+ </head>
+ <body onload="run()">
+ <h2>Pointer Events touch-action attribute support</h2>
+ <h4 id="desc">Test Description: Test will automatically check parsing behaviour of various touch-action combinations.</h4>
+ <script type='text/javascript'>
+ var detected_pointertypes = {};
+
+ setup({ explicit_done: true });
+
+ function run() {
+ var tests = document.querySelectorAll('.test');
+ //TA 15.20
+ for (var i = 0; i < tests.length; i++) {
+ test(function() {
+ var style = window.getComputedStyle(tests[i]);
+ assert_equals(tests[i].attributes.expected.value, style.touchAction);
+ }, tests[i].id);
+ }
+ done();
+ }
+ </script>
+ <h1>touch-action: basic verification</h1>
+ <div id="complete-notice">
+ <p>The following pointer types were detected: <span id="pointertype-log"></span>.</p>
+ </div>
+ <div id="log"></div>
+ <div class="test" id="default" expected="auto"></div>
+ <div class="test defnone" id="stylesheet-none" expected="none"></div>
+ <div class="test defnone" id="explicit-auto" style="touch-action: auto;" expected="auto"></div>
+ <div class="test" id="explicit-pan-x" style="touch-action: pan-x;" expected="pan-x"></div>
+ <div class="test" id="explicit-pan-left" style="touch-action: pan-left;" expected="pan-left"></div>
+ <div class="test" id="explicit-pan-right" style="touch-action: pan-right;" expected="pan-right"></div>
+ <div class="test" id="explicit-pan-y" style="touch-action: pan-y;" expected="pan-y"></div>
+ <div class="test" id="explicit-pan-up" style="touch-action: pan-up;" expected="pan-up"></div>
+ <div class="test" id="explicit-pan-down" style="touch-action: pan-down;" expected="pan-down"></div>
+ <div class="test" id="explicit-pinch-zoom" style="touch-action: pinch-zoom;" expected="pinch-zoom"></div>
+ <div class="test" id="explicit-pan-x-pan-y" style="touch-action: pan-x pan-y;" expected="pan-x pan-y"></div>
+ <div class="test" id="explicit-pan-y-pan-x" style="touch-action: pan-y pan-x;" expected="pan-x pan-y"></div>
+ <div class="test" id="explicit-pan-left-pan-up" style="touch-action: pan-left pan-up;" expected="pan-left pan-up"></div>
+ <div class="test" id="explicit-pan-left-pan-down" style="touch-action: pan-left pan-down;" expected="pan-left pan-down"></div>
+ <div class="test" id="explicit-pan-right-pan-up" style="touch-action: pan-right pan-up;" expected="pan-right pan-up"></div>
+ <div class="test" id="explicit-pan-right-pan-down" style="touch-action: pan-right pan-down;" expected="pan-right pan-down"></div>
+ <div class="test" id="explicit-pan-up-pan-left" style="touch-action: pan-up pan-left;" expected="pan-left pan-up"></div>
+ <div class="test" id="explicit-pan-up-pan-right" style="touch-action: pan-up pan-right;" expected="pan-right pan-up"></div>
+ <div class="test" id="explicit-pan-down-pan-left" style="touch-action: pan-down pan-left;" expected="pan-left pan-down"></div>
+ <div class="test" id="explicit-pan-down-pan-right" style="touch-action: pan-down pan-right;" expected="pan-right pan-down"></div>
+ <div class="test" id="explicit-pinch-zoom-pan-x-pan-up" style="touch-action: pinch-zoom pan-x pan-up;" expected="pan-x pan-up pinch-zoom"></div>
+ <div class="test" id="explicit-pinch-zoom-pan-x-pan-y" style="touch-action: pinch-zoom pan-x pan-y;" expected="manipulation"></div>
+ <div class="test" id="explicit-manipulation" style="touch-action: manipulation;" expected="manipulation"></div>
+ <div class="test" id="explicit-none" style="touch-action: none;" expected="none"></div>
+ <div class="test" id="explicit-invalid-1" style="touch-action: bogus;" expected="auto"></div>
+ <div class="test defnone" id="explicit-invalid-2" style="touch-action: auto pan-x;" expected="none"></div>
+ <div class="test" id="explicit-invalid-3" style="touch-action: pan-y none;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-4" style="touch-action: pan-x pan-x;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-5" style="touch-action: manipulation pan-x;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-6" style="touch-action: pan-x pan-left;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-7" style="touch-action: auto pan-left;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-8" style="touch-action: none pan-left;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-9" style="touch-action: pan-x pan-right;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-10" style="touch-action: pan-y pan-up;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-11" style="touch-action: pan-y pan-down;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-12" style="touch-action: pan-left pan-right;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-13" style="touch-action: pan-up pan-down;" expected="auto"></div>
+ <div class="test" id="explicit-invalid-14" style="touch-action: pinch-zoom none;" expected="auto"></div>
+ <div style="touch-action: none;">
+ <div class="test" id="not-inherited" expected="auto"></div>
+ <div class="test" id="inherit" style="touch-action: inherit;" expected="none"></div>
+ </div>
+ <div class="test defnone" id="initial" style="touch-action: initial;" expected="auto"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/pointerevents/idlharness.html b/tests/wpt/web-platform-tests/pointerevents/idlharness.html
index 729d3573e87..6afcb21b795 100644
--- a/tests/wpt/web-platform-tests/pointerevents/idlharness.html
+++ b/tests/wpt/web-platform-tests/pointerevents/idlharness.html
@@ -91,14 +91,26 @@ partial interface Navigator {
};
</pre>
<script>
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
- idl_array.add_idls(document.getElementById("idl").textContent);
+ promise_test(async function() {
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+ const uievents = await fetch('/interfaces/uievents.idl').then(r => r.text());
- // Note that I don't bother including Document here because there are still
- // a bunch of differences between browsers around Document vs HTMLDocument.
- idl_array.add_objects({
+ const idl_array = new IdlArray();
+ idl_array.add_untested_idls(dom, { only: ['EventInit'] });
+ idl_array.add_untested_idls(uievents, { only: [
+ 'UIEventInit',
+ 'MouseEventInit',
+ 'EventModifierInit']
+ });
+ idl_array.add_untested_idls(
+ document.getElementById("untested_idl").textContent);
+ idl_array.add_idls(document.getElementById("idl").textContent);
+
+ // Note that I don't bother including Document here because there are still
+ // a bunch of differences between browsers around Document vs HTMLDocument.
+ idl_array.add_objects({
Window: ["window"],
Navigator: ["navigator"]});
- idl_array.test();
+ idl_array.test();
+ }, 'pointerevents interfaces');
</script>
diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js b/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js
index 64f13486f42..bf68f85fe08 100644
--- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js
+++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_support.js
@@ -39,7 +39,8 @@ function check_PointerEvent(event, testNamePrefix) {
"long": function (v) { return typeof v === "number" && Math.round(v) === v; },
"float": function (v) { return typeof v === "number"; },
"string": function (v) { return typeof v === "string"; },
- "boolean": function (v) { return typeof v === "boolean" }
+ "boolean": function (v) { return typeof v === "boolean" },
+ "object": function (v) { return typeof v === "object" }
};
[
["readonly", "long", "pointerId"],
@@ -50,7 +51,9 @@ function check_PointerEvent(event, testNamePrefix) {
["readonly", "long", "tiltY"],
["readonly", "string", "pointerType"],
["readonly", "boolean", "isPrimary"],
- ["readonly", "long", "detail", 0]
+ ["readonly", "long", "detail", 0],
+ ["readonly", "object", "fromElement", null],
+ ["readonly", "object", "toElement", null]
].forEach(function (attr) {
var readonly = attr[0];
var type = attr[1];
@@ -75,7 +78,7 @@ function check_PointerEvent(event, testNamePrefix) {
}, pointerTestName + "." + name + " IDL type " + type + " (JS type was " + typeof event[name] + ")");
// value check if defined
- if (value != undefined) {
+ if (value !== undefined) {
test(function () {
assert_equals(event[name], value, name + " attribute value");
}, pointerTestName + "." + name + " value is " + value + ".");
diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-verification.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-verification.html
index 7800f2c9da2..f42d9f6bd67 100644
--- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-verification.html
+++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-verification.html
@@ -12,7 +12,6 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <script src="pointerevent_support.js"></script>
<style>
/*
Give some rules below something to override in order to test
@@ -52,21 +51,9 @@
<div class="test defnone" id="stylesheet-none" expected="none"></div>
<div class="test defnone" id="explicit-auto" style="touch-action: auto;" expected="auto"></div>
<div class="test" id="explicit-pan-x" style="touch-action: pan-x;" expected="pan-x"></div>
- <div class="test" id="explicit-pan-left" style="touch-action: pan-left;" expected="pan-left"></div>
- <div class="test" id="explicit-pan-right" style="touch-action: pan-right;" expected="pan-right"></div>
<div class="test" id="explicit-pan-y" style="touch-action: pan-y;" expected="pan-y"></div>
- <div class="test" id="explicit-pan-up" style="touch-action: pan-up;" expected="pan-up"></div>
- <div class="test" id="explicit-pan-down" style="touch-action: pan-down;" expected="pan-down"></div>
<div class="test" id="explicit-pan-x-pan-y" style="touch-action: pan-x pan-y;" expected="pan-x pan-y"></div>
<div class="test" id="explicit-pan-y-pan-x" style="touch-action: pan-y pan-x;" expected="pan-x pan-y"></div>
- <div class="test" id="explicit-pan-left-pan-up" style="touch-action: pan-left pan-up;" expected="pan-left pan-up"></div>
- <div class="test" id="explicit-pan-left-pan-down" style="touch-action: pan-left pan-down;" expected="pan-left pan-down"></div>
- <div class="test" id="explicit-pan-right-pan-up" style="touch-action: pan-right pan-up;" expected="pan-right pan-up"></div>
- <div class="test" id="explicit-pan-right-pan-down" style="touch-action: pan-right pan-down;" expected="pan-right pan-down"></div>
- <div class="test" id="explicit-pan-up-pan-left" style="touch-action: pan-up pan-left;" expected="pan-left pan-up"></div>
- <div class="test" id="explicit-pan-up-pan-right" style="touch-action: pan-up pan-right;" expected="pan-right pan-up"></div>
- <div class="test" id="explicit-pan-down-pan-left" style="touch-action: pan-down pan-left;" expected="pan-left pan-down"></div>
- <div class="test" id="explicit-pan-down-pan-right" style="touch-action: pan-down pan-right;" expected="pan-right pan-down"></div>
<div class="test" id="explicit-manipulation" style="touch-action: manipulation;" expected="manipulation"></div>
<div class="test" id="explicit-none" style="touch-action: none;" expected="none"></div>
<div class="test" id="explicit-invalid-1" style="touch-action: bogus;" expected="auto"></div>
diff --git a/tests/wpt/web-platform-tests/remote-playback/idlharness.html b/tests/wpt/web-platform-tests/remote-playback/idlharness.html
index bd9cbf6cc43..274771af684 100644
--- a/tests/wpt/web-platform-tests/remote-playback/idlharness.html
+++ b/tests/wpt/web-platform-tests/remote-playback/idlharness.html
@@ -19,20 +19,32 @@ interface EventTarget {};
</pre>
<script>
"use strict"
-var idl_array = new IdlArray();
-function doTest(idl) {
- idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
- idl_array.add_idls(idl);
- idl_array.add_objects({
- HTMLVideoElement: [document.getElementById("media")],
- RemotePlayback: [document.getElementById("media").remote]
- });
- idl_array.test();
-}
-promise_test(function() {
- return fetch("/interfaces/remoteplayback.idl")
- .then(response => response.text())
+promise_test(async function() {
+ var idl_array = new IdlArray();
+ function doTest([html, idl]) {
+ idl_array.add_untested_idls('interface Element {};');
+ idl_array.add_untested_idls(html, { only: [
+ 'HTMLElement',
+ 'HTMLOrSVGElement',
+ 'GlobalEventHandlers',
+ 'DocumentAndElementEventHandlers',
+ 'ElementContentEditable',
+ ] });
+ idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
+ idl_array.add_idls(idl);
+ idl_array.add_objects({
+ HTMLVideoElement: [document.getElementById("media")],
+ RemotePlayback: [document.getElementById("media").remote]
+ });
+ idl_array.test();
+ }
+
+ return Promise.all(
+ [
+ "/interfaces/html.idl",
+ "/interfaces/remoteplayback.idl",
+ ].map(url => fetch(url).then(r => r.text())))
.then(doTest);
}, "Test driver");
</script>
diff --git a/tests/wpt/web-platform-tests/resize-observer/eventloop.html b/tests/wpt/web-platform-tests/resize-observer/eventloop.html
index 4ef1d3d23c4..559f52ad2b3 100644
--- a/tests/wpt/web-platform-tests/resize-observer/eventloop.html
+++ b/tests/wpt/web-platform-tests/resize-observer/eventloop.html
@@ -129,7 +129,7 @@ function test1() {
let t3 = document.createElement('div');
resizers.push(t3);
t2.appendChild(t3);
- let shadow = t3.createShadowRoot();
+ let shadow = t3.attachShadow({ mode: "open" });
let t4 = document.createElement('div');
resizers.push(t4);
shadow.appendChild(t4);
diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/TAOResponse.py b/tests/wpt/web-platform-tests/resource-timing/resources/TAOResponse.py
index cc8fa5f0f93..dcd75a41545 100644
--- a/tests/wpt/web-platform-tests/resource-timing/resources/TAOResponse.py
+++ b/tests/wpt/web-platform-tests/resource-timing/resources/TAOResponse.py
@@ -20,19 +20,19 @@ def main(request, response):
# space seperated list of origin and wildcard, fail
response.headers.set('Timing-Allow-Origin', (origin + ' *'))
elif tao == 'multi':
- # more than one TAO values, seperated by common, pass
+ # more than one TAO values, seperated by comma, pass
response.headers.set('Timing-Allow-Origin', origin)
response.headers.append('Timing-Allow-Origin', '*')
elif tao == 'match_origin':
- # contains a match of origin, seperated by common, pass
+ # contains a match of origin, seperated by comma, pass
response.headers.set('Timing-Allow-Origin', origin)
response.headers.append('Timing-Allow-Origin', "fake")
elif tao == 'match_wildcard':
- # contains a wildcard, seperated by common, pass
+ # contains a wildcard, seperated by comma, pass
response.headers.set('Timing-Allow-Origin', "fake")
response.headers.append('Timing-Allow-Origin', '*')
elif tao == 'uppercase':
# non-case-sensitive match for origin, fail
response.headers.set('Timing-Allow-Origin', origin.upper())
else:
- pass \ No newline at end of file
+ pass
diff --git a/tests/wpt/web-platform-tests/resources/chromium/fake_bluetooth.mojom.js b/tests/wpt/web-platform-tests/resources/chromium/fake_bluetooth.mojom.js
index 08c26b68f61..a8d795567c8 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/fake_bluetooth.mojom.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/fake_bluetooth.mojom.js
@@ -2896,6 +2896,306 @@
encoder.skip(1);
encoder.skip(1);
};
+ function FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params(values) {
+ this.initDefaults_();
+ this.initFields_(values);
+ }
+
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.prototype.initDefaults_ = function() {
+ this.gattCode = 0;
+ this.characteristicId = null;
+ this.serviceId = null;
+ this.peripheralAddress = null;
+ };
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.prototype.initFields_ = function(fields) {
+ for(var field in fields) {
+ if (this.hasOwnProperty(field))
+ this[field] = fields[field];
+ }
+ };
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.validate = function(messageValidator, offset) {
+ var err;
+ err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ var kVersionSizes = [
+ {version: 0, numBytes: 40}
+ ];
+ err = messageValidator.validateStructVersion(offset, kVersionSizes);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+
+ // validate FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.characteristicId
+ err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 8, false)
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+ // validate FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.serviceId
+ err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 16, false)
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+ // validate FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.peripheralAddress
+ err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 24, false)
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ return validator.validationError.NONE;
+ };
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.encodedSize = codec.kStructHeaderSize + 32;
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.decode = function(decoder) {
+ var packed;
+ var val = new FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params();
+ var numberOfBytes = decoder.readUint32();
+ var version = decoder.readUint32();
+ val.gattCode = decoder.decodeStruct(codec.Uint16);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ val.characteristicId = decoder.decodeStruct(codec.String);
+ val.serviceId = decoder.decodeStruct(codec.String);
+ val.peripheralAddress = decoder.decodeStruct(codec.String);
+ return val;
+ };
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.encode = function(encoder, val) {
+ var packed;
+ encoder.writeUint32(FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.encodedSize);
+ encoder.writeUint32(0);
+ encoder.encodeStruct(codec.Uint16, val.gattCode);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.encodeStruct(codec.String, val.characteristicId);
+ encoder.encodeStruct(codec.String, val.serviceId);
+ encoder.encodeStruct(codec.String, val.peripheralAddress);
+ };
+ function FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams(values) {
+ this.initDefaults_();
+ this.initFields_(values);
+ }
+
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams.prototype.initDefaults_ = function() {
+ this.success = false;
+ };
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams.prototype.initFields_ = function(fields) {
+ for(var field in fields) {
+ if (this.hasOwnProperty(field))
+ this[field] = fields[field];
+ }
+ };
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams.validate = function(messageValidator, offset) {
+ var err;
+ err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ var kVersionSizes = [
+ {version: 0, numBytes: 16}
+ ];
+ err = messageValidator.validateStructVersion(offset, kVersionSizes);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+ return validator.validationError.NONE;
+ };
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams.encodedSize = codec.kStructHeaderSize + 8;
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams.decode = function(decoder) {
+ var packed;
+ var val = new FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams();
+ var numberOfBytes = decoder.readUint32();
+ var version = decoder.readUint32();
+ packed = decoder.readUint8();
+ val.success = (packed >> 0) & 1 ? true : false;
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ return val;
+ };
+
+ FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams.encode = function(encoder, val) {
+ var packed;
+ encoder.writeUint32(FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams.encodedSize);
+ encoder.writeUint32(0);
+ packed = 0;
+ packed |= (val.success & 1) << 0
+ encoder.writeUint8(packed);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ };
+ function FakeCentral_IsNotifying_Params(values) {
+ this.initDefaults_();
+ this.initFields_(values);
+ }
+
+
+ FakeCentral_IsNotifying_Params.prototype.initDefaults_ = function() {
+ this.characteristicId = null;
+ this.serviceId = null;
+ this.peripheralAddress = null;
+ };
+ FakeCentral_IsNotifying_Params.prototype.initFields_ = function(fields) {
+ for(var field in fields) {
+ if (this.hasOwnProperty(field))
+ this[field] = fields[field];
+ }
+ };
+
+ FakeCentral_IsNotifying_Params.validate = function(messageValidator, offset) {
+ var err;
+ err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ var kVersionSizes = [
+ {version: 0, numBytes: 32}
+ ];
+ err = messageValidator.validateStructVersion(offset, kVersionSizes);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+ // validate FakeCentral_IsNotifying_Params.characteristicId
+ err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 0, false)
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+ // validate FakeCentral_IsNotifying_Params.serviceId
+ err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 8, false)
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+ // validate FakeCentral_IsNotifying_Params.peripheralAddress
+ err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 16, false)
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ return validator.validationError.NONE;
+ };
+
+ FakeCentral_IsNotifying_Params.encodedSize = codec.kStructHeaderSize + 24;
+
+ FakeCentral_IsNotifying_Params.decode = function(decoder) {
+ var packed;
+ var val = new FakeCentral_IsNotifying_Params();
+ var numberOfBytes = decoder.readUint32();
+ var version = decoder.readUint32();
+ val.characteristicId = decoder.decodeStruct(codec.String);
+ val.serviceId = decoder.decodeStruct(codec.String);
+ val.peripheralAddress = decoder.decodeStruct(codec.String);
+ return val;
+ };
+
+ FakeCentral_IsNotifying_Params.encode = function(encoder, val) {
+ var packed;
+ encoder.writeUint32(FakeCentral_IsNotifying_Params.encodedSize);
+ encoder.writeUint32(0);
+ encoder.encodeStruct(codec.String, val.characteristicId);
+ encoder.encodeStruct(codec.String, val.serviceId);
+ encoder.encodeStruct(codec.String, val.peripheralAddress);
+ };
+ function FakeCentral_IsNotifying_ResponseParams(values) {
+ this.initDefaults_();
+ this.initFields_(values);
+ }
+
+
+ FakeCentral_IsNotifying_ResponseParams.prototype.initDefaults_ = function() {
+ this.success = false;
+ this.isNotifying = false;
+ };
+ FakeCentral_IsNotifying_ResponseParams.prototype.initFields_ = function(fields) {
+ for(var field in fields) {
+ if (this.hasOwnProperty(field))
+ this[field] = fields[field];
+ }
+ };
+
+ FakeCentral_IsNotifying_ResponseParams.validate = function(messageValidator, offset) {
+ var err;
+ err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ var kVersionSizes = [
+ {version: 0, numBytes: 16}
+ ];
+ err = messageValidator.validateStructVersion(offset, kVersionSizes);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+
+ return validator.validationError.NONE;
+ };
+
+ FakeCentral_IsNotifying_ResponseParams.encodedSize = codec.kStructHeaderSize + 8;
+
+ FakeCentral_IsNotifying_ResponseParams.decode = function(decoder) {
+ var packed;
+ var val = new FakeCentral_IsNotifying_ResponseParams();
+ var numberOfBytes = decoder.readUint32();
+ var version = decoder.readUint32();
+ packed = decoder.readUint8();
+ val.success = (packed >> 0) & 1 ? true : false;
+ val.isNotifying = (packed >> 1) & 1 ? true : false;
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ decoder.skip(1);
+ return val;
+ };
+
+ FakeCentral_IsNotifying_ResponseParams.encode = function(encoder, val) {
+ var packed;
+ encoder.writeUint32(FakeCentral_IsNotifying_ResponseParams.encodedSize);
+ encoder.writeUint32(0);
+ packed = 0;
+ packed |= (val.success & 1) << 0
+ packed |= (val.isNotifying & 1) << 1
+ encoder.writeUint8(packed);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ encoder.skip(1);
+ };
function FakeCentral_GetLastWrittenCharacteristicValue_Params(values) {
this.initDefaults_();
this.initFields_(values);
@@ -3786,10 +4086,12 @@
var kFakeCentral_SetNextReadCharacteristicResponse_Name = 12;
var kFakeCentral_SetNextWriteCharacteristicResponse_Name = 13;
var kFakeCentral_SetNextSubscribeToNotificationsResponse_Name = 14;
- var kFakeCentral_GetLastWrittenCharacteristicValue_Name = 15;
- var kFakeCentral_SetNextReadDescriptorResponse_Name = 16;
- var kFakeCentral_SetNextWriteDescriptorResponse_Name = 17;
- var kFakeCentral_GetLastWrittenDescriptorValue_Name = 18;
+ var kFakeCentral_SetNextUnsubscribeFromNotificationsResponse_Name = 15;
+ var kFakeCentral_IsNotifying_Name = 16;
+ var kFakeCentral_GetLastWrittenCharacteristicValue_Name = 17;
+ var kFakeCentral_SetNextReadDescriptorResponse_Name = 18;
+ var kFakeCentral_SetNextWriteDescriptorResponse_Name = 19;
+ var kFakeCentral_GetLastWrittenDescriptorValue_Name = 20;
function FakeCentralPtr(handleOrPtrInfo) {
this.ptr = new bindings.InterfacePtrController(FakeCentral,
@@ -4211,6 +4513,61 @@
});
}.bind(this));
};
+ FakeCentralPtr.prototype.setNextUnsubscribeFromNotificationsResponse = function() {
+ return FakeCentralProxy.prototype.setNextUnsubscribeFromNotificationsResponse
+ .apply(this.ptr.getProxy(), arguments);
+ };
+
+ FakeCentralProxy.prototype.setNextUnsubscribeFromNotificationsResponse = function(gattCode, characteristicId, serviceId, peripheralAddress) {
+ var params = new FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params();
+ params.gattCode = gattCode;
+ params.characteristicId = characteristicId;
+ params.serviceId = serviceId;
+ params.peripheralAddress = peripheralAddress;
+ return new Promise(function(resolve, reject) {
+ var builder = new codec.MessageV1Builder(
+ kFakeCentral_SetNextUnsubscribeFromNotificationsResponse_Name,
+ codec.align(FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params.encodedSize),
+ codec.kMessageExpectsResponse, 0);
+ builder.encodeStruct(FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params, params);
+ var message = builder.finish();
+ this.receiver_.acceptAndExpectResponse(message).then(function(message) {
+ var reader = new codec.MessageReader(message);
+ var responseParams =
+ reader.decodeStruct(FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams);
+ resolve(responseParams);
+ }).catch(function(result) {
+ reject(Error("Connection error: " + result));
+ });
+ }.bind(this));
+ };
+ FakeCentralPtr.prototype.isNotifying = function() {
+ return FakeCentralProxy.prototype.isNotifying
+ .apply(this.ptr.getProxy(), arguments);
+ };
+
+ FakeCentralProxy.prototype.isNotifying = function(characteristicId, serviceId, peripheralAddress) {
+ var params = new FakeCentral_IsNotifying_Params();
+ params.characteristicId = characteristicId;
+ params.serviceId = serviceId;
+ params.peripheralAddress = peripheralAddress;
+ return new Promise(function(resolve, reject) {
+ var builder = new codec.MessageV1Builder(
+ kFakeCentral_IsNotifying_Name,
+ codec.align(FakeCentral_IsNotifying_Params.encodedSize),
+ codec.kMessageExpectsResponse, 0);
+ builder.encodeStruct(FakeCentral_IsNotifying_Params, params);
+ var message = builder.finish();
+ this.receiver_.acceptAndExpectResponse(message).then(function(message) {
+ var reader = new codec.MessageReader(message);
+ var responseParams =
+ reader.decodeStruct(FakeCentral_IsNotifying_ResponseParams);
+ resolve(responseParams);
+ }).catch(function(result) {
+ reject(Error("Connection error: " + result));
+ });
+ }.bind(this));
+ };
FakeCentralPtr.prototype.getLastWrittenCharacteristicValue = function() {
return FakeCentralProxy.prototype.getLastWrittenCharacteristicValue
.apply(this.ptr.getProxy(), arguments);
@@ -4374,6 +4731,12 @@
FakeCentralStub.prototype.setNextSubscribeToNotificationsResponse = function(gattCode, characteristicId, serviceId, peripheralAddress) {
return this.delegate_ && this.delegate_.setNextSubscribeToNotificationsResponse && this.delegate_.setNextSubscribeToNotificationsResponse(gattCode, characteristicId, serviceId, peripheralAddress);
}
+ FakeCentralStub.prototype.setNextUnsubscribeFromNotificationsResponse = function(gattCode, characteristicId, serviceId, peripheralAddress) {
+ return this.delegate_ && this.delegate_.setNextUnsubscribeFromNotificationsResponse && this.delegate_.setNextUnsubscribeFromNotificationsResponse(gattCode, characteristicId, serviceId, peripheralAddress);
+ }
+ FakeCentralStub.prototype.isNotifying = function(characteristicId, serviceId, peripheralAddress) {
+ return this.delegate_ && this.delegate_.isNotifying && this.delegate_.isNotifying(characteristicId, serviceId, peripheralAddress);
+ }
FakeCentralStub.prototype.getLastWrittenCharacteristicValue = function(characteristicId, serviceId, peripheralAddress) {
return this.delegate_ && this.delegate_.getLastWrittenCharacteristicValue && this.delegate_.getLastWrittenCharacteristicValue(characteristicId, serviceId, peripheralAddress);
}
@@ -4637,6 +5000,39 @@
responder.accept(message);
});
return true;
+ case kFakeCentral_SetNextUnsubscribeFromNotificationsResponse_Name:
+ var params = reader.decodeStruct(FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params);
+ this.setNextUnsubscribeFromNotificationsResponse(params.gattCode, params.characteristicId, params.serviceId, params.peripheralAddress).then(function(response) {
+ var responseParams =
+ new FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams();
+ responseParams.success = response.success;
+ var builder = new codec.MessageV1Builder(
+ kFakeCentral_SetNextUnsubscribeFromNotificationsResponse_Name,
+ codec.align(FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams.encodedSize),
+ codec.kMessageIsResponse, reader.requestID);
+ builder.encodeStruct(FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams,
+ responseParams);
+ var message = builder.finish();
+ responder.accept(message);
+ });
+ return true;
+ case kFakeCentral_IsNotifying_Name:
+ var params = reader.decodeStruct(FakeCentral_IsNotifying_Params);
+ this.isNotifying(params.characteristicId, params.serviceId, params.peripheralAddress).then(function(response) {
+ var responseParams =
+ new FakeCentral_IsNotifying_ResponseParams();
+ responseParams.success = response.success;
+ responseParams.isNotifying = response.isNotifying;
+ var builder = new codec.MessageV1Builder(
+ kFakeCentral_IsNotifying_Name,
+ codec.align(FakeCentral_IsNotifying_ResponseParams.encodedSize),
+ codec.kMessageIsResponse, reader.requestID);
+ builder.encodeStruct(FakeCentral_IsNotifying_ResponseParams,
+ responseParams);
+ var message = builder.finish();
+ responder.accept(message);
+ });
+ return true;
case kFakeCentral_GetLastWrittenCharacteristicValue_Name:
var params = reader.decodeStruct(FakeCentral_GetLastWrittenCharacteristicValue_Params);
this.getLastWrittenCharacteristicValue(params.characteristicId, params.serviceId, params.peripheralAddress).then(function(response) {
@@ -4772,6 +5168,14 @@
if (message.expectsResponse())
paramsClass = FakeCentral_SetNextSubscribeToNotificationsResponse_Params;
break;
+ case kFakeCentral_SetNextUnsubscribeFromNotificationsResponse_Name:
+ if (message.expectsResponse())
+ paramsClass = FakeCentral_SetNextUnsubscribeFromNotificationsResponse_Params;
+ break;
+ case kFakeCentral_IsNotifying_Name:
+ if (message.expectsResponse())
+ paramsClass = FakeCentral_IsNotifying_Params;
+ break;
case kFakeCentral_GetLastWrittenCharacteristicValue_Name:
if (message.expectsResponse())
paramsClass = FakeCentral_GetLastWrittenCharacteristicValue_Params;
@@ -4858,6 +5262,14 @@
if (message.isResponse())
paramsClass = FakeCentral_SetNextSubscribeToNotificationsResponse_ResponseParams;
break;
+ case kFakeCentral_SetNextUnsubscribeFromNotificationsResponse_Name:
+ if (message.isResponse())
+ paramsClass = FakeCentral_SetNextUnsubscribeFromNotificationsResponse_ResponseParams;
+ break;
+ case kFakeCentral_IsNotifying_Name:
+ if (message.isResponse())
+ paramsClass = FakeCentral_IsNotifying_ResponseParams;
+ break;
case kFakeCentral_GetLastWrittenCharacteristicValue_Name:
if (message.isResponse())
paramsClass = FakeCentral_GetLastWrittenCharacteristicValue_ResponseParams;
diff --git a/tests/wpt/web-platform-tests/resources/chromium/web-bluetooth-test.js b/tests/wpt/web-platform-tests/resources/chromium/web-bluetooth-test.js
index e08c8c4afa2..1700b04df33 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/web-bluetooth-test.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/web-bluetooth-test.js
@@ -393,6 +393,30 @@ class FakeRemoteGATTCharacteristic {
if (!success) throw 'setNextSubscribeToNotificationsResponse failed';
}
+ // Sets the next unsubscribe to notifications response for characteristic with
+ // |characteristic_id| in |service_id| and in |peripheral_address| to
+ // |code|. |code| could be a GATT Error Response from BT 4.2 Vol 3 Part F
+ // 3.4.1.1 Error Response or a number outside that range returned by
+ // specific platforms e.g. Android returns 0x101 to signal a GATT failure.
+ async setNextUnsubscribeFromNotificationsResponse(gatt_code) {
+ let {success} =
+ await this.fake_central_ptr_.setNextUnsubscribeFromNotificationsResponse(
+ gatt_code, ...this.ids_);
+
+ if (!success) throw 'setNextUnsubscribeToNotificationsResponse failed';
+ }
+
+ // Returns true if notifications from the characteristic have been subscribed
+ // to.
+ async isNotifying() {
+ let {success, isNotifying} =
+ await this.fake_central_ptr_.isNotifying(...this.ids_);
+
+ if (!success) throw 'isNotifying failed';
+
+ return isNotifying;
+ }
+
// Gets the last successfully written value to the characteristic.
// Returns null if no value has yet been written to the characteristic.
async getLastWrittenValue() {
diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js
index c4caf4b7e1b..c5c0c9848d4 100644
--- a/tests/wpt/web-platform-tests/resources/idlharness.js
+++ b/tests/wpt/web-platform-tests/resources/idlharness.js
@@ -554,8 +554,9 @@ IdlArray.prototype.is_json_type = function(type)
function exposure_set(object, default_set) {
var exposed = object.extAttrs.filter(function(a) { return a.name == "Exposed" });
- if (exposed.length > 1 || exposed.length < 0) {
- throw new IdlHarnessError("Unexpected Exposed extended attributes on " + memberName + ": " + exposed);
+ if (exposed.length > 1) {
+ throw new IdlHarnessError(
+ `Multiple 'Exposed' extended attributes on ${object.name}`);
}
if (exposed.length === 0) {
@@ -603,7 +604,6 @@ IdlArray.prototype.assert_throws = function(error, idlArrayFunc)
{
try {
idlArrayFunc.call(this, this);
- throw new IdlHarnessError(`${idlArrayFunc} did not throw the expected IdlHarnessError`);
} catch (e) {
if (e instanceof AssertionError) {
throw e;
@@ -613,9 +613,11 @@ IdlArray.prototype.assert_throws = function(error, idlArrayFunc)
error = error.message;
}
if (e.message !== error) {
- throw new IdlHarnessError(`${idlArrayFunc} threw ${e}, not the expected IdlHarnessError`);
+ throw new IdlHarnessError(`${idlArrayFunc} threw "${e}", not the expected IdlHarnessError "${error}"`);
}
+ return;
}
+ throw new IdlHarnessError(`${idlArrayFunc} did not throw the expected IdlHarnessError`);
}
//@}
@@ -682,6 +684,21 @@ IdlArray.prototype.test = function()
}
this["includes"] = {};
+ // Assert B defined for A : B
+ for (var member of Object.values(this.members).filter(m => m.base)) {
+ const lhs = member.name;
+ const rhs = member.base;
+ if (!(rhs in this.members)) throw new IdlHarnessError(`${lhs} inherits ${rhs}, but ${rhs} is undefined.`);
+ const lhs_is_interface = this.members[lhs] instanceof IdlInterface;
+ const rhs_is_interface = this.members[rhs] instanceof IdlInterface;
+ if (rhs_is_interface != lhs_is_interface) {
+ if (!lhs_is_interface) throw new IdlHarnessError(`${lhs} inherits ${rhs}, but ${lhs} is not an interface.`);
+ if (!rhs_is_interface) throw new IdlHarnessError(`${lhs} inherits ${rhs}, but ${rhs} is not an interface.`);
+ }
+ // Check for circular dependencies.
+ member.get_inheritance_stack();
+ }
+
Object.getOwnPropertyNames(this.members).forEach(function(memberName) {
var member = this.members[memberName];
if (!(member instanceof IdlInterface)) {
@@ -1110,6 +1127,10 @@ IdlInterface.prototype.get_inheritance_stack = function() {
var base = this.array.members[idl_interface.base];
if (!base) {
throw new Error(idl_interface.type + " " + idl_interface.base + " not found (inherited by " + idl_interface.name + ")");
+ } else if (stack.indexOf(base) > -1) {
+ stack.push(base);
+ let dep_chain = stack.map(i => i.name).join(',');
+ throw new IdlHarnessError(`${this.name} has a circular dependency: ${dep_chain}`);
}
idl_interface = base;
stack.push(idl_interface);
@@ -1670,7 +1691,6 @@ IdlInterface.prototype.test_self = function()
this.name + '.prototype should not have @@unscopables');
}
}.bind(this), this.name + ' interface: existence and properties of interface prototype object\'s @@unscopables property');
-
};
//@}
@@ -2428,6 +2448,7 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect
}
if (!exposed_in(exposure_set(member, this.exposureSet))) {
test(function() {
+ assert_equals(exception, null, "Unexpected exception when evaluating object");
assert_false(member.name in obj);
}.bind(this), this.name + " interface: " + desc + ' must not have property "' + member.name + '"');
continue;
diff --git a/tests/wpt/web-platform-tests/resources/test/config.test.json b/tests/wpt/web-platform-tests/resources/test/config.test.json
deleted file mode 100644
index df664faf44b..00000000000
--- a/tests/wpt/web-platform-tests/resources/test/config.test.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{"host": "web-platform.test",
- "doc_root": null,
- "ws_doc_root": null,
- "external_host": null,
- "ports":{"http":[8000, "auto"],
- "https":[9003],
- "ws":["auto"],
- "wss":["auto"]},
- "check_subdomains": true,
- "log_level":"debug",
- "bind_hostname": true,
- "ssl": {"type": "openssl",
- "encrypt_after_connect": false,
- "openssl": {
- "openssl_binary": "openssl",
- "base_path": "_certs",
- "force_regenerate": false,
- "base_conf_path": null
- },
- "pregenerated": {
- "host_key_path": null,
- "host_cert_path": null
- },
- "none": {}
- },
- "aliases": []
-}
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlDictionary/get_inheritance_stack.html b/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlDictionary/get_inheritance_stack.html
index 3540afb3346..98168ee119b 100644
--- a/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlDictionary/get_inheritance_stack.html
+++ b/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlDictionary/get_inheritance_stack.html
@@ -29,6 +29,19 @@
var A = idl.members["A"];
assert_array_equals(A.get_inheritance_stack().map(d => d.name), ["A", "B", "C"]);
}, 'should return an array of inherited dictionaries in order of inheritance, starting with itself.');
+
+ test(function () {
+ let i = new IdlArray();
+ i.add_untested_idls('dictionary A : B {};');
+ i.assert_throws(new IdlHarnessError('A inherits B, but B is undefined.'), i => i.test());
+ }, 'A : B with B undeclared should throw IdlHarnessError');
+
+ test(function () {
+ let i = new IdlArray();
+ i.add_untested_idls('dictionary A : B {};');
+ i.add_untested_idls('interface B {};');
+ i.assert_throws(new IdlHarnessError('A inherits B, but A is not an interface.'), i => i.test());
+ }, 'dictionary A : B with B interface should throw IdlHarnessError');
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlInterface/get_inheritance_stack.html b/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlInterface/get_inheritance_stack.html
index 57884fba2a3..bffced513e6 100644
--- a/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlInterface/get_inheritance_stack.html
+++ b/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlInterface/get_inheritance_stack.html
@@ -29,6 +29,13 @@
var A = idl.members["A"];
assert_array_equals(A.get_inheritance_stack().map(i => i.name), ["A", "B", "C"]);
}, 'should return an array of inherited interfaces in order of inheritance, starting with itself.');
+
+ test(function () {
+ var idl = new IdlArray();
+ idl.add_untested_idls('interface A : B { };');
+ idl.add_untested_idls('interface B : A { };');
+ idl.assert_throws('A has a circular dependency: A,B,A', i => i.test());
+ }, 'should throw when inheritance is circular');
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlInterface/test_primary_interface_of_undefined.html b/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlInterface/test_primary_interface_of_undefined.html
new file mode 100644
index 00000000000..0031558ad42
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resources/test/tests/idlharness/IdlInterface/test_primary_interface_of_undefined.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+
+<head>
+ <title>idlharness test_primary_interface_of_undefined</title>
+</head>
+
+<body>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/WebIDLParser.js"></script>
+ <script src="/resources/idlharness.js"></script>
+ <script>
+ 'use strict';
+ test(function () {
+ let i = new IdlArray();
+ i.add_untested_idls('interface A : B {};');
+ i.assert_throws(new IdlHarnessError('A inherits B, but B is undefined.'), i => i.test());
+ }, 'A : B with B undeclared should throw IdlHarnessError');
+
+ test(function () {
+ let i = new IdlArray();
+ i.add_untested_idls('interface A : B {};');
+ i.add_untested_idls('dictionary B {};');
+ i.assert_throws(new IdlHarnessError('A inherits B, but B is not an interface.'), i => i.test());
+ }, 'interface A : B with B dictionary should throw IdlHarnessError');
+ </script>
+</body>
+
+</html>
diff --git a/tests/wpt/web-platform-tests/resources/test/wptserver.py b/tests/wpt/web-platform-tests/resources/test/wptserver.py
index 2fd5b9a6f3f..08bae26dedf 100644
--- a/tests/wpt/web-platform-tests/resources/test/wptserver.py
+++ b/tests/wpt/web-platform-tests/resources/test/wptserver.py
@@ -4,17 +4,15 @@ import subprocess
import time
import urllib2
-_CONFIG_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)),
- 'config.test.json')
-
class WPTServer(object):
def __init__(self, wpt_root):
self.wpt_root = wpt_root
- with open(_CONFIG_FILE, 'r') as config_handle:
+ config_file = os.path.join(wpt_root, 'config.default.json')
+ with open(config_file, 'rb') as config_handle:
config = json.load(config_handle)
- self.host = config["host"]
+ self.host = config["browser_host"]
self.http_port = config["ports"]["http"][0]
self.https_port = config["ports"]["https"][0]
self.base_url = 'http://%s:%s' % (self.host, self.http_port)
@@ -23,7 +21,7 @@ class WPTServer(object):
def start(self):
self.devnull = open(os.devnull, 'w')
self.proc = subprocess.Popen(
- [os.path.join(self.wpt_root, 'wpt'), 'serve', '--config=' + _CONFIG_FILE],
+ [os.path.join(self.wpt_root, 'wpt'), 'serve'],
stderr=self.devnull,
cwd=self.wpt_root)
diff --git a/tests/wpt/web-platform-tests/resources/testdriver.js b/tests/wpt/web-platform-tests/resources/testdriver.js
index a6aa298ccd0..a09a6e8d7af 100644
--- a/tests/wpt/web-platform-tests/resources/testdriver.js
+++ b/tests/wpt/web-platform-tests/resources/testdriver.js
@@ -83,6 +83,42 @@
return window.test_driver_internal.click(element,
{x: centerPoint[0],
y: centerPoint[1]});
+ },
+
+ /**
+ * Send keys to an element
+ *
+ * This matches the behaviour of the {@link
+ * https://w3c.github.io/webdriver/webdriver-spec.html#element-send-keys|WebDriver
+ * Send Keys command}.
+ *
+ * @param {Element} element - element to send keys to
+ * @param {String} keys - keys to send to the element
+ * @returns {Promise} fulfilled after keys are sent, or rejected in
+ * the cases the WebDriver command errors
+ */
+ send_keys: function(element, keys) {
+ if (window.top !== window) {
+ return Promise.reject(new Error("can only send keys in top-level window"));
+ }
+
+ if (!window.document.contains(element)) {
+ return Promise.reject(new Error("element in different document or shadow tree"));
+ }
+
+ if (!inView(element)) {
+ element.scrollIntoView({behavior: "instant",
+ block: "end",
+ inline: "nearest"});
+ }
+
+ var pointerInteractablePaintTree = getPointerInteractablePaintTree(element);
+ if (pointerInteractablePaintTree.length === 0 ||
+ !element.contains(pointerInteractablePaintTree[0])) {
+ return Promise.reject(new Error("element send_keys intercepted error"));
+ }
+
+ return window.test_driver_internal.send_keys(element, keys);
}
};
@@ -96,6 +132,17 @@
*/
click: function(element, coords) {
return Promise.reject(new Error("unimplemented"));
+ },
+
+ /**
+ * Triggers a user-initated click
+ *
+ * @param {Element} element - element to be clicked
+ * @param {String} keys - keys to send to the element
+ * @returns {Promise} fulfilled after keys are sent or rejected if click fails
+ */
+ send_keys: function(element, keys) {
+ return Promise.reject(new Error("unimplemented"));
}
};
})();
diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js
index 86ecc1ba252..ec0090ce936 100644
--- a/tests/wpt/web-platform-tests/resources/testharness.js
+++ b/tests/wpt/web-platform-tests/resources/testharness.js
@@ -2277,10 +2277,14 @@ policies and contribution forms [3].
if (output_document.body) {
output_document.body.appendChild(node);
} else {
+ var is_html = false;
var is_svg = false;
var output_window = output_document.defaultView;
if (output_window && "SVGSVGElement" in output_window) {
is_svg = output_document.documentElement instanceof output_window.SVGSVGElement;
+ } else if (output_window) {
+ is_html = (output_document.namespaceURI == "http://www.w3.org/1999/xhtml" &&
+ output_document.localName == "html");
}
if (is_svg) {
var foreignObject = output_document.createElementNS("http://www.w3.org/2000/svg", "foreignObject");
@@ -2288,6 +2292,10 @@ policies and contribution forms [3].
foreignObject.setAttribute("height", "100%");
output_document.documentElement.appendChild(foreignObject);
foreignObject.appendChild(node);
+ } else if (is_html) {
+ var body = output_document.createElementNS("http://www.w3.org/1999/xhtml", "body");
+ output_document.documentElement.appendChild(body);
+ body.appendChild(node);
} else {
output_document.documentElement.appendChild(node);
}
diff --git a/tests/wpt/web-platform-tests/server-timing/cross_origin.html b/tests/wpt/web-platform-tests/server-timing/cross_origin.html
index 80035888de4..f5251034c93 100644
--- a/tests/wpt/web-platform-tests/server-timing/cross_origin.html
+++ b/tests/wpt/web-platform-tests/server-timing/cross_origin.html
@@ -4,13 +4,16 @@
<script src="/resources/testharness.js"></script>
<script src='/resources/testharnessreport.js'></script>
<script src="/common/performance-timeline-utils.js"></script>
+ <script src="/common/get-host-info.sub.js"></script>
<script>
setup({explicit_done: true})
- const {location: {href}} = document
- const urls = {}
- urls['same-origin'] = `${href.substring(0, href.lastIndexOf('/'))}/resources/blue.png`
- urls['cross-origin'] = urls['same-origin'].replace('://', '://www.')
+ const hostInfo = get_host_info()
+ const resourceUrl = 'server-timing/resources/blue.png'
+ const urls = {
+ 'same-origin': `${hostInfo.HTTP_ORIGIN}/${resourceUrl}`,
+ 'cross-origin': `${hostInfo.HTTP_REMOTE_ORIGIN}/${resourceUrl}`
+ }
Object.keys(urls).forEach(function(key) {
const img = document.createElement('img')
img.src = urls[key]
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/0.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js
index 220cf1aa28d..03b778bd845 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/1.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric"}])
+testServerTiming(document.currentScript, [{"name":"metric"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js
index 220cf1aa28d..03b778bd845 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/10.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric"}])
+testServerTiming(document.currentScript, [{"name":"metric"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js
index 220cf1aa28d..03b778bd845 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/11.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric"}])
+testServerTiming(document.currentScript, [{"name":"metric"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js
index c32491d0c01..fc827f8735a 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/12.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4,"desc":"description"}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":123.4,"desc":"description"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js
index 9b767142e5b..02f8c3c84d8 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/13.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"description","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js
index 153607bfc56..966e9634e3f 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/14.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description"}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"description"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js
index 311cabe5535..afef77d1634 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/15.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric1","dur":12.3,"desc":"description1"},{"name":"metric2","dur":45.6,"desc":"description2"},{"name":"metric3","dur":78.9,"desc":"description3"}])
+testServerTiming(document.currentScript, [{"name":"metric1","dur":12.3,"desc":"description1"},{"name":"metric2","dur":45.6,"desc":"description2"},{"name":"metric3","dur":78.9,"desc":"description3"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js
index ab8597f9170..b49b1785e8c 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/16.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric1"},{"name":"metric2"},{"name":"metric3"},{"name":"metric4"},{"name":"metric5"}])
+testServerTiming(document.currentScript, [{"name":"metric1"},{"name":"metric2"},{"name":"metric3"},{"name":"metric4"},{"name":"metric5"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js
index 153607bfc56..966e9634e3f 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/17.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description"}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"description"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js
index 592475128d0..3c47d76055a 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/18.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"\t description \t"}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"\t description \t"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js
index d8cc6b72f5a..83fb4f3672f 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/19.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"descr\"iption"}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"descr\"iption"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js
index 6fd97fa66df..b763b8145e5 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/2.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/20.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/21.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/22.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/23.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/24.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/25.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/26.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/27.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/28.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/29.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js
index 6fd97fa66df..b763b8145e5 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/3.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/30.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/31.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/32.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/33.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/34.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/35.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/36.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/37.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/38.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/39.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js
index 153607bfc56..966e9634e3f 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/4.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description"}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"description"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/40.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/41.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/42.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js
index b318cb7299b..f3ac7dcc2a6 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/43.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"\\"}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"\\"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/44.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js
index 993a69024cf..82de6a40e5d 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/45.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"\""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"\""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/46.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/47.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/48.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js
index 107695e9d27..349a7e0dd93 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/49.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":""}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":""}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js
index 153607bfc56..966e9634e3f 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/5.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description"}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"description"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js
index 61ec6915722..413d9b65bc1 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/50.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":12.3,"desc":"description1"},{"name":"metric","dur":45.6,"desc":"description2"}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":12.3,"desc":"description1"},{"name":"metric","dur":45.6,"desc":"description2"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js
index c32491d0c01..fc827f8735a 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/51.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4,"desc":"description"}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":123.4,"desc":"description"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js
index 6617af51776..a97e9d0d0f8 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/52.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"MeTrIc","desc":"DeScRiPtIoN"}])
+testServerTiming(document.currentScript, [{"name":"MeTrIc","desc":"DeScRiPtIoN"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js
index 40faf4106ce..adf74faaf1b 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/53.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":0}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":0}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js
index 40faf4106ce..adf74faaf1b 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/54.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":0}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":0}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js
index 4e2b14bbddd..429b528375e 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/55.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric1","desc":"description","dur":123.4},{"name":"metric2"}])
+testServerTiming(document.currentScript, [{"name":"metric1","desc":"description","dur":123.4},{"name":"metric2"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js
index 6fd97fa66df..b763b8145e5 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/56.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js
index 40faf4106ce..adf74faaf1b 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/57.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":0}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":0}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js
index 13250bbbc53..05004e58026 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/58.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description1"}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"description1"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js
index 0282f7d51eb..c9a9a98c5eb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/59.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":0,"desc":"description"}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":0,"desc":"description"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js
index c32491d0c01..fc827f8735a 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/6.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":123.4,"desc":"description"}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":123.4,"desc":"description"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js
index 0282f7d51eb..c9a9a98c5eb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/60.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":0,"desc":"description"}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":0,"desc":"description"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js
index 62b744cc143..ce7d800979e 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/61.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js
index 62b744cc143..ce7d800979e 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/62.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js
index 839f8064e6f..d6842ba988d 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/63.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"d1","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"d1","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js
index d64ea0a9dd1..88037d15dd9 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/64.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric1","desc":"d1"},{"name":"metric2"}])
+testServerTiming(document.currentScript, [{"name":"metric1","desc":"d1"},{"name":"metric2"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js
index 839f8064e6f..d6842ba988d 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/65.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"d1","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"d1","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js
index d64ea0a9dd1..88037d15dd9 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/66.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric1","desc":"d1"},{"name":"metric2"}])
+testServerTiming(document.currentScript, [{"name":"metric1","desc":"d1"},{"name":"metric2"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js
index 220cf1aa28d..03b778bd845 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/67.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric"}])
+testServerTiming(document.currentScript, [{"name":"metric"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js
index 4077b26a610..e6946c38dbb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/68.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric1"}])
+testServerTiming(document.currentScript, [{"name":"metric1"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js
index 40faf4106ce..adf74faaf1b 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/69.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","dur":0}])
+testServerTiming(document.currentScript, [{"name":"metric","dur":0}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js
index 9b767142e5b..02f8c3c84d8 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/7.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"description","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"description","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js
index 220cf1aa28d..03b778bd845 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/70.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric"}])
+testServerTiming(document.currentScript, [{"name":"metric"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/71.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/72.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/73.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/74.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/75.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/76.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/77.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/78.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/79.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js
index 8581efd93ec..711e3818102 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/8.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"aB3!#$%&'*+-.^_`|~"}])
+testServerTiming(document.currentScript, [{"name":"aB3!#$%&'*+-.^_`|~"}])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/80.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/81.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/82.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js
index 8de2c019353..2848a1c82bb 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/83.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [])
+testServerTiming(document.currentScript, [])
diff --git a/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js b/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js
index e03b07a2af1..3048f3fa7ae 100644
--- a/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js
+++ b/tests/wpt/web-platform-tests/server-timing/resources/parsing/9.js
@@ -1 +1 @@
-testServerTiming(document.currentScript.src, [{"name":"metric","desc":"descr;,=iption","dur":123.4}])
+testServerTiming(document.currentScript, [{"name":"metric","desc":"descr;,=iption","dur":123.4}])
diff --git a/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.html b/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.html
index a598a715b82..4049c3dd265 100644
--- a/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.html
+++ b/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.html
@@ -11,28 +11,40 @@ tests generated by:
<script src="/common/performance-timeline-utils.js"></script>
<script>
setup({explicit_done: true})
- function testServerTiming(resource, expectedResults) {
- const {serverTiming} = performance.getEntriesByName(resource)[0]
- const fileName = resource.substring(resource.lastIndexOf('/') + 1)
- test_equals(serverTiming.length, expectedResults.length, `${fileName} - count (${serverTiming.length} ?== ${expectedResults.length})`)
+ const tests = []
+ const urlToIndex = {}
+ function testServerTiming(script, expectedResults) {
+ const url = script.src
+ tests[urlToIndex[url]] = {url, expectedResults}
+ }
+ function runTests() {
+ tests.forEach(function({url, expectedResults}) {
+ debugger;
+ const {serverTiming} = performance.getEntriesByName(url)[0]
+ const fileName = url.substring(url.lastIndexOf('/') + 1)
+
+ test_equals(serverTiming.length, expectedResults.length, `${fileName} - count (${serverTiming.length} ?== ${expectedResults.length})`)
- expectedResults.forEach(function(expectedResult, i) {
- const dur = expectedResult.dur || 0
- const desc = expectedResult.desc || ''
- const index = expectedResults.length === 1 ? '' : `[${i}].`
- test_equals(expectedResult.name, serverTiming[i].name,
- `${fileName} - ${index}name (${expectedResult.name} ?== ${serverTiming[i].name})`)
- test_equals(dur, serverTiming[i].duration,
- `${fileName} - ${index}duration (${dur} ?== ${serverTiming[i].duration})`)
- test_equals(desc, serverTiming[i].description,
- `${fileName} - ${index}description (${desc} ?== ${serverTiming[i].description})`)
+ expectedResults.forEach(function(expectedResult, i) {
+ const dur = expectedResult.dur || 0
+ const desc = expectedResult.desc || ''
+ const index = expectedResults.length === 1 ? '' : `[${i}].`
+ test_equals(expectedResult.name, serverTiming[i].name,
+ `${fileName} - ${index}name (${expectedResult.name} ?== ${serverTiming[i].name})`)
+ test_equals(dur, serverTiming[i].duration,
+ `${fileName} - ${index}duration (${dur} ?== ${serverTiming[i].duration})`)
+ test_equals(desc, serverTiming[i].description,
+ `${fileName} - ${index}description (${desc} ?== ${serverTiming[i].description})`)
+ })
})
+ done()
}
for (let i = 0; i <= 83; i++) {
- var script = document.createElement('script')
+ const script = document.createElement('script')
script.src = `./resources/parsing/${i}.js`
document.getElementsByTagName('head')[0].appendChild(script)
+ urlToIndex[script.src] = i
}
- window.addEventListener('load', done)
+ window.addEventListener('load', runTests)
</script>
</head>
diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/serviceworker/cache-abort.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/serviceworker/cache-abort.https.html
index b4f203b3333..5a8b539be81 100644
--- a/tests/wpt/web-platform-tests/service-workers/cache-storage/serviceworker/cache-abort.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/serviceworker/cache-abort.https.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<title>Cache Storage: Abort</title>
<link rel="help" href="https://fetch.spec.whatwg.org/#request-signal">
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../../service-worker/resources/test-helpers.sub.js"></script>
diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-abort.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-abort.https.html
index 935023dbe6e..405d34d665c 100644
--- a/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-abort.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/window/cache-abort.https.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<title>Cache Storage: Abort</title>
<link rel="help" href="https://fetch.spec.whatwg.org/#request-signal">
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../resources/test-helpers.js"></script>
diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/worker/cache-abort.https.html b/tests/wpt/web-platform-tests/service-workers/cache-storage/worker/cache-abort.https.html
index ccd71910dc5..68bbade07d3 100644
--- a/tests/wpt/web-platform-tests/service-workers/cache-storage/worker/cache-abort.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/worker/cache-abort.https.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<title>>Cache Storage: Abort</title>
<link rel="help" href="https://fetch.spec.whatwg.org/#request-signal">
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/Service-Worker-Allowed-header.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/Service-Worker-Allowed-header.https.html
new file mode 100644
index 00000000000..316067cc066
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/Service-Worker-Allowed-header.https.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<title>Service Worker: Service-Worker-Allowed header</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<script>
+
+const host_info = get_host_info();
+
+// Returns a URL for a service worker script whose Service-Worker-Allowed
+// header value is set to |allowed_path|. If |origin| is specified, that origin
+// is used.
+function build_script_url(allowed_path, origin) {
+ const script = 'resources/empty-worker.js';
+ const url = origin ? `${origin}${base_path()}${script}` : script;
+ return `${url}?pipe=header(Service-Worker-Allowed,${allowed_path})`;
+}
+
+promise_test(async t => {
+ const script = build_script_url('/allowed-path');
+ const scope = '/allowed-path';
+ const registration = await service_worker_unregister_and_register(
+ t, script, scope);
+ assert_true(registration instanceof ServiceWorkerRegistration, 'registered');
+ assert_equals(registration.scope, normalizeURL(scope));
+ return registration.unregister();
+}, 'Registering within Service-Worker-Allowed path');
+
+promise_test(async t => {
+ const script = build_script_url(new URL('/allowed-path', document.location));
+ const scope = '/allowed-path';
+ const registration = await service_worker_unregister_and_register(
+ t, script, scope);
+ assert_true(registration instanceof ServiceWorkerRegistration, 'registered');
+ assert_equals(registration.scope, normalizeURL(scope));
+ return registration.unregister();
+}, 'Registering within Service-Worker-Allowed path (absolute URL)');
+
+promise_test(async t => {
+ const script = build_script_url('../allowed-path-with-parent');
+ const scope = 'allowed-path-with-parent';
+ const registration = await service_worker_unregister_and_register(
+ t, script, scope);
+ assert_true(registration instanceof ServiceWorkerRegistration, 'registered');
+ assert_equals(registration.scope, normalizeURL(scope));
+ return registration.unregister();
+}, 'Registering within Service-Worker-Allowed path with parent reference');
+
+promise_test(async t => {
+ const script = build_script_url('../allowed-path');
+ const scope = '/disallowed-path';
+ await service_worker_unregister(t, scope);
+ return promise_rejects(t,
+ 'SecurityError',
+ navigator.serviceWorker.register(script, {scope: scope}),
+ 'register should fail');
+}, 'Registering outside Service-Worker-Allowed path');
+
+promise_test(async t => {
+ const script = build_script_url('../allowed-path-with-parent');
+ const scope = '/allowed-path-with-parent';
+ await service_worker_unregister(t, scope);
+ return promise_rejects(t,
+ 'SecurityError',
+ navigator.serviceWorker.register(script, {scope: scope}),
+ 'register should fail');
+}, 'Registering outside Service-Worker-Allowed path with parent reference');
+
+promise_test(async t => {
+ const script = build_script_url(
+ host_info.HTTPS_REMOTE_ORIGIN + '/');
+ const scope = 'resources/this-scope-is-normally-allowed'
+ const registration = await service_worker_unregister_and_register(
+ t, script, scope);
+ assert_true(registration instanceof ServiceWorkerRegistration, 'registered');
+ assert_equals(registration.scope, normalizeURL(scope));
+ return registration.unregister();
+}, 'Service-Worker-Allowed is cross-origin to script, registering on a normally allowed scope');
+
+promise_test(async t => {
+ const script = build_script_url(
+ host_info.HTTPS_REMOTE_ORIGIN + '/');
+ const scope = '/this-scope-is-normally-disallowed'
+ const registration = await service_worker_unregister_and_register(
+ t, script, scope);
+ assert_true(registration instanceof ServiceWorkerRegistration, 'registered');
+ assert_equals(registration.scope, normalizeURL(scope));
+ return registration.unregister();
+}, 'Service-Worker-Allowed is cross-origin to script, registering on a normally disallowed scope');
+
+promise_test(async t => {
+ const script = build_script_url(
+ host_info.HTTPS_REMOTE_ORIGIN + '/cross-origin/',
+ host_info.HTTPS_REMOTE_ORIGIN);
+ const scope = '/cross-origin/';
+ await service_worker_unregister(t, scope);
+ return promise_rejects(t,
+ 'SecurityError',
+ navigator.serviceWorker.register(script, {scope: scope}),
+ 'register should fail');
+}, 'Service-Worker-Allowed is cross-origin to page, same-origin to script');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-redirect.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-redirect.https.html
index c72be766646..c42d7f75be1 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-redirect.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event-redirect.https.html
@@ -229,10 +229,14 @@ promise_test(function(t) {
redirect: 'manual',
mode: 'no-cors'
},
+ // This should succeed because its redirecting from same-origin to
+ // cross-origin. Since the same-origin URL provides the location
+ // header the manual redirect mode should result in an opaqueredirect
+ // response.
should_reject: false
});
}, 'Non-navigation, manual redirect, no-cors mode Request redirected to ' +
- 'no-cors without credentials should succeed interception ' +
+ 'no-cors without credentials should succeed opaqueredirect interception ' +
'and response should not be redirected');
promise_test(function(t) {
@@ -246,10 +250,14 @@ promise_test(function(t) {
redirect: 'manual',
mode: 'no-cors'
},
+ // This should succeed because its redirecting from same-origin to
+ // cross-origin. Since the same-origin URL provides the location
+ // header the manual redirect mode should result in an opaqueredirect
+ // response.
should_reject: false
});
}, 'Non-navigation, manual redirect, no-cors mode Request redirected to ' +
- 'cors without credentials should succeed interception ' +
+ 'cors without credentials should succeed opaqueredirect interception ' +
'and response should not be redirected');
promise_test(function(t) {
@@ -382,10 +390,14 @@ promise_test(function(t) {
redirect: 'manual',
mode: 'no-cors'
},
+ // This should succeed because its redirecting from same-origin to
+ // cross-origin. Since the same-origin URL provides the location
+ // header the manual redirect mode should result in an opaqueredirect
+ // response.
should_reject: false
});
}, 'Non-navigation, manual redirect, no-cors mode Request redirected to ' +
- 'no-cors with credentials should succeed interception ' +
+ 'no-cors with credentials should succeed opaqueredirect interception ' +
'and response should not be redirected');
promise_test(function(t) {
@@ -399,10 +411,14 @@ promise_test(function(t) {
redirect: 'manual',
mode: 'no-cors'
},
+ // This should succeed because its redirecting from same-origin to
+ // cross-origin. Since the same-origin URL provides the location
+ // header the manual redirect mode should result in an opaqueredirect
+ // response.
should_reject: false
});
}, 'Non-navigation, manual redirect, no-cors mode Request redirected to ' +
- 'cors with credentials should succeed interception ' +
+ 'cors with credentials should succeed opaqueredirect interception ' +
'and response should not be redirected');
promise_test(function(t) {
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html
index 336e6ed89d7..50421b40fbb 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-request-resources.https.html
@@ -25,6 +25,7 @@ function image_test(frame, url, cross_origin, expected_mode,
credentials: expected_credentials,
redirect: 'follow',
integrity: '',
+ destination: 'image',
message: 'Image load (url:' +
actual_url + ' cross_origin:' + cross_origin + ')'
};
@@ -41,6 +42,7 @@ function script_test(frame, url, cross_origin, expected_mode,
credentials: expected_credentials,
redirect: 'follow',
integrity: '',
+ destination: 'script',
message: 'Script load (url:' +
actual_url + ' cross_origin:' + cross_origin + ')'
};
@@ -57,6 +59,7 @@ function css_test(frame, url, cross_origin, expected_mode,
credentials: expected_credentials,
redirect: 'follow',
integrity: '',
+ destination: 'style',
message: 'CSS load (url:' +
actual_url + ' cross_origin:' + cross_origin + ')'
};
@@ -72,6 +75,7 @@ function font_face_test(frame, url, expected_mode, expected_credentials) {
credentials: expected_credentials,
redirect: 'follow',
integrity: '',
+ destination: 'font',
message: 'FontFace load (url:' + actual_url + ')'
};
frame.contentWindow.load_font(actual_url);
@@ -86,6 +90,7 @@ function script_integrity_test(frame, url, integrity, expected_integrity) {
credentials: 'include',
redirect: 'follow',
integrity: expected_integrity,
+ destination: 'script',
message: 'Script load (url:' + actual_url + ')'
};
frame.contentWindow.load_script_with_integrity(actual_url, integrity);
@@ -100,6 +105,7 @@ function css_integrity_test(frame, url, integrity, expected_integrity) {
credentials: 'include',
redirect: 'follow',
integrity: expected_integrity,
+ destination: 'style',
message: 'CSS load (url:' + actual_url + ')'
};
frame.contentWindow.load_css_with_integrity(actual_url, integrity);
@@ -114,6 +120,7 @@ function fetch_test(frame, url, mode, credentials,
credentials: expected_credentials,
redirect: 'follow',
integrity: '',
+ destination: '',
message: 'fetch (url:' + actual_url + ' mode:' + mode + ' credentials:' +
credentials + ')'
};
@@ -131,6 +138,7 @@ function audio_test(frame, url, cross_origin,
credentials: expected_credentials,
redirect: 'follow',
integrity: '',
+ destination: 'audio',
message: 'Audio load (url:' + actual_url + ' cross_origin:' +
cross_origin + ')'
};
@@ -138,6 +146,23 @@ function audio_test(frame, url, cross_origin,
return add_promise_to_test(actual_url);
}
+
+function video_test(frame, url, cross_origin,
+ expected_mode, expected_credentials) {
+ var actual_url = url + (++url_count);
+ expected_results[actual_url] = {
+ mode: expected_mode,
+ credentials: expected_credentials,
+ redirect: 'follow',
+ integrity: '',
+ destination: 'video',
+ message: 'Video load (url:' + actual_url + ' cross_origin:' +
+ cross_origin + ')'
+ };
+ frame.contentWindow.load_video(actual_url, cross_origin);
+ return add_promise_to_test(actual_url);
+}
+
promise_test(function(t) {
var SCOPE = 'resources/fetch-request-resources-iframe.https.html';
var SCRIPT = 'resources/fetch-request-resources-worker.js';
@@ -183,6 +208,10 @@ promise_test(function(t) {
result.integrity, expected.integrity,
'integrity of ' + expected.message + ' must be ' +
expected.integrity + '.');
+ assert_equals(
+ result.destination, expected.destination,
+ 'destination of ' + expected.message + ' must be ' +
+ expected.destination + '.');
}, expected.message);
expected.resolve();
delete expected_results[result.url];
@@ -268,6 +297,13 @@ promise_test(function(t) {
await audio_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin');
await audio_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include');
+ await video_test(f, LOCAL_URL, '', 'no-cors', 'include');
+ await video_test(f, LOCAL_URL, 'anonymous', 'cors', 'same-origin');
+ await video_test(f, LOCAL_URL, 'use-credentials', 'cors', 'include');
+ await video_test(f, REMOTE_URL, '', 'no-cors', 'include');
+ await video_test(f, REMOTE_URL, 'anonymous', 'cors', 'same-origin');
+ await video_test(f, REMOTE_URL, 'use-credentials', 'cors', 'include');
+
frame.remove();
service_worker_unregister(t, SCOPE);
}).catch(unreached_rejection(t));
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-window.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-window.https.html
index 7097df06160..54f83f202c3 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-window.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/interfaces-window.https.html
@@ -9,29 +9,45 @@
<script>
'use strict';
-var idlArray = new IdlArray();
-idlArray.add_untested_idls(idls.untested);
-idlArray.add_idls(idls.tested);
-idlArray.add_objects({
+promise_test(async (t) => {
+ var idlArray = new IdlArray();
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+ const serviceWorkerIdl = await fetch('/interfaces/ServiceWorker.idl').then(r => r.text());
+
+ idlArray.add_untested_idls(idls.untested);
+ idlArray.add_untested_idls(dom, { only: ['EventTarget'] });
+ idlArray.add_idls(serviceWorkerIdl, { only: [
+ 'ServiceWorkerGlobalScope',
+ 'Client',
+ 'WindowClient',
+ 'Clients',
+ 'ServiceWorker',
+ 'ServiceWorkerState',
+ 'ServiceWorkerUpdateViaCache',
+ 'ServiceWorkerRegistration',
+ 'EventTarget',
+ 'NavigationPreloadManager',
+ 'Cache',
+ 'CacheStorage',
+ ]});
+ idlArray.add_objects({
ServiceWorkerContainer: ['navigator.serviceWorker']
});
+ var scope = 'resources/scope/interfaces-and-attributes';
-promise_test(function(t) {
- var scope = 'resources/scope/interfaces-and-attributes';
-
- return service_worker_unregister_and_register(
- t, 'resources/empty-worker.js', scope)
- .then(function(registration) {
- t.add_cleanup(function() {
- registration.unregister();
- });
+ return service_worker_unregister_and_register(
+ t, 'resources/empty-worker.js', scope)
+ .then(function(registration) {
+ t.add_cleanup(function() {
+ registration.unregister();
+ });
- window.registrationInstance = registration;
- idlArray.add_objects({
- ServiceWorkerRegistration: ['window.registrationInstance'],
- ServiceWorker: ['window.registrationInstance.installing']
- });
- idlArray.test();
- });
- }, 'test setup (worker registration)');
+ window.registrationInstance = registration;
+ idlArray.add_objects({
+ ServiceWorkerRegistration: ['window.registrationInstance'],
+ ServiceWorker: ['window.registrationInstance.installing']
+ });
+ idlArray.test();
+ });
+}, 'test setup (worker registration)');
</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https.html
index f8b088a70da..ec74282ac33 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https.html
@@ -18,8 +18,25 @@ promise_test(t => {
.then(frame => {
assert_equals(
frame.contentDocument.body.textContent,
- 'Done');
+ 'PASS: preloadResponse resolved');
});
- }, 'Navigation Preload with broken chunked encoding must fail.');
+ }, 'FetchEvent#preloadResponse resolves even if the body is sent with broken chunked encoding.');
+
+promise_test(t => {
+ var script = 'resources/broken-chunked-encoding-worker.js';
+ var scope = 'resources/chunked-encoding-scope.py?use_broken_body';
+ return service_worker_unregister_and_register(t, script, scope)
+ .then(registration => {
+ add_completion_callback(_ => registration.unregister());
+ var worker = registration.installing;
+ return wait_for_state(t, worker, 'activated');
+ })
+ .then(_ => with_iframe(scope))
+ .then(frame => {
+ assert_equals(
+ frame.contentDocument.body.textContent,
+ 'PASS: preloadResponse resolved');
+ });
+ }, 'FetchEvent#preloadResponse resolves even if the body is sent with broken chunked encoding with some delays');
</script>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/broken-chunked-encoding-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/broken-chunked-encoding-worker.js
index 27268e856c7..7a453e4055f 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/broken-chunked-encoding-worker.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/broken-chunked-encoding-worker.js
@@ -6,6 +6,6 @@ self.addEventListener('activate', event => {
self.addEventListener('fetch', event => {
event.respondWith(event.preloadResponse
.then(
- _ => new Response('Fail: got a response'),
- _ => new Response('Done')));
+ _ => new Response('PASS: preloadResponse resolved'),
+ _ => new Response('FAIL: preloadResponse rejected')));
});
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/chunked-encoding-scope.py b/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/chunked-encoding-scope.py
index c0a5ddce0b1..3521b64f50f 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/chunked-encoding-scope.py
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/navigation-preload/resources/chunked-encoding-scope.py
@@ -1,7 +1,7 @@
import time
def main(request, response):
- body = "hello\nworld\n\n"
+ use_broken_body = 'use_broken_body' in request.GET
response.add_required_headers = False
response.writer.write_status(200)
@@ -10,7 +10,10 @@ def main(request, response):
response.writer.end_headers()
for idx in range(10):
- response.writer.write("%s\r\n%s\r\n" % (len(str(idx)), idx))
+ if use_broken_body:
+ response.writer.write("%s\n%s\n" % (len(str(idx)), idx))
+ else:
+ response.writer.write("%s\r\n%s\r\n" % (len(str(idx)), idx))
response.writer.flush()
time.sleep(0.001)
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js
index 82b24459b4f..e996da6b2b7 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js
@@ -1,7 +1,9 @@
var worker_text = 'onconnect = function(e) { e.ports[0].postMessage("worker loading intercepted by service worker"); };';
self.onfetch = function(event) {
- if (event.request.url.indexOf('dummy-shared-worker.js') != -1)
- event.respondWith(new Response(worker_text));
+ if (event.request.url.indexOf('dummy-shared-worker.js') != -1) {
+ event.respondWith(new Response(
+ worker_text, {headers: {"Content-Type": "application/javascript"}}));
+ }
};
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js.headers b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js.headers
new file mode 100644
index 00000000000..a17a9a3a12c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/dummy-shared-worker-interceptor.js.headers
@@ -0,0 +1 @@
+Content-Type: application/javascript
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-iframe.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-iframe.https.html
index 2e5d7dfe972..fca57220235 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-iframe.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-iframe.https.html
@@ -71,5 +71,14 @@ function load_audio(url, cross_origin) {
audio.src = url;
document.body.appendChild(audio);
}
+
+function load_video(url, cross_origin) {
+ var video = document.createElement('video');
+ if (cross_origin != '') {
+ video.crossOrigin = cross_origin;
+ }
+ video.src = url;
+ document.body.appendChild(video);
+}
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-worker.js
index e732da0f1b1..d85f7143c33 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-worker.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-resources-worker.js
@@ -19,7 +19,8 @@ self.addEventListener('fetch', function(event) {
mode: event.request.mode,
redirect: event.request.redirect,
credentials: event.request.credentials,
- integrity: event.request.integrity
+ integrity: event.request.integrity,
+ destination: event.request.destination
});
event.respondWith(Promise.reject());
});
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-idls.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-idls.js
index 9f5c5ed9675..3db45c64346 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-idls.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-idls.js
@@ -12,124 +12,3 @@ interface AbstractWorker {
attribute EventHandler onerror;
};
`;
-idls.tested = `
-[Global=(Worker,ServiceWorker), Exposed=ServiceWorker]
-interface ServiceWorkerGlobalScope : WorkerGlobalScope {
- [SameObject] readonly attribute Clients clients;
- [SameObject] readonly attribute ServiceWorkerRegistration registration;
-
- [NewObject] Promise<void> skipWaiting();
-
- attribute EventHandler oninstall;
- attribute EventHandler onactivate;
- attribute EventHandler onfetch;
-
- // event
- attribute EventHandler onmessage; // event.source of the message events is Client object
- attribute EventHandler onmessageerror;
-};
-
-[Exposed=ServiceWorker]
-interface Client {
- readonly attribute USVString url;
- readonly attribute DOMString id;
- readonly attribute ClientType type;
- readonly attribute boolean reserved;
- void postMessage(any message, optional sequence<object> transfer = []);
-};
-
-[Exposed=ServiceWorker]
-interface WindowClient : Client {
- readonly attribute VisibilityState visibilityState;
- readonly attribute boolean focused;
- [SameObject] readonly attribute FrozenArray<USVString> ancestorOrigins;
- [NewObject] Promise<WindowClient> focus();
- [NewObject] Promise<WindowClient> navigate(USVString url);
-};
-
-[Exposed=ServiceWorker]
-interface Clients {
- // The objects returned will be new instances every time
- [NewObject] Promise<any> get(DOMString id);
- [NewObject] Promise<sequence<Client>> matchAll(optional ClientQueryOptions options);
- [NewObject] Promise<WindowClient?> openWindow(USVString url);
- [NewObject] Promise<void> claim();
-};
-
-[SecureContext, Exposed=(Window,Worker)]
-interface ServiceWorker : EventTarget {
- readonly attribute USVString scriptURL;
- readonly attribute ServiceWorkerState state;
- void postMessage(any message, optional sequence<object> transfer = []);
-
- // event
- attribute EventHandler onstatechange;
-};
-ServiceWorker implements AbstractWorker;
-
-enum ServiceWorkerState {
- "installing",
- "installed",
- "activating",
- "activated",
- "redundant"
-};
-
-enum ServiceWorkerUpdateViaCache {
- "imports",
- "all",
- "none"
-};
-
-[SecureContext, Exposed=(Window,Worker)]
-interface ServiceWorkerRegistration : EventTarget {
- readonly attribute ServiceWorker? installing;
- readonly attribute ServiceWorker? waiting;
- readonly attribute ServiceWorker? active;
- [SameObject] readonly attribute NavigationPreloadManager navigationPreload;
-
- readonly attribute USVString scope;
- readonly attribute ServiceWorkerUpdateViaCache updateViaCache;
-
- [NewObject] Promise<void> update();
- [NewObject] Promise<boolean> unregister();
-
- // event
- attribute EventHandler onupdatefound;
-};
-
-[Constructor(), Exposed=(Window,Worker)]
-interface EventTarget {
- void addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options);
- void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options);
- boolean dispatchEvent(Event event);
-};
-
-[SecureContext, Exposed=(Window,Worker)]
-interface NavigationPreloadManager {
- Promise<void> enable();
- Promise<void> disable();
- Promise<void> setHeaderValue(ByteString value);
- Promise<NavigationPreloadState> getState();
-};
-
-[SecureContext, Exposed=(Window,Worker)]
-interface Cache {
- [NewObject] Promise<any> match(RequestInfo request, optional CacheQueryOptions options);
- [NewObject] Promise<sequence<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
- [NewObject] Promise<void> add(RequestInfo request);
- [NewObject] Promise<void> addAll(sequence<RequestInfo> requests);
- [NewObject] Promise<void> put(RequestInfo request, Response response);
- [NewObject] Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options);
- [NewObject] Promise<sequence<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options);
-};
-
-[SecureContext, Exposed=(Window,Worker)]
-interface CacheStorage {
- [NewObject] Promise<any> match(RequestInfo request, optional CacheQueryOptions options);
- [NewObject] Promise<boolean> has(DOMString cacheName);
- [NewObject] Promise<Cache> open(DOMString cacheName);
- [NewObject] Promise<boolean> delete(DOMString cacheName);
- [NewObject] Promise<sequence<DOMString>> keys();
-};
-`;
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js
index 7bdf1016215..29c859bb914 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/interfaces-worker.sub.js
@@ -5,10 +5,28 @@ importScripts('worker-testharness.js');
importScripts('/resources/WebIDLParser.js');
importScripts('/resources/idlharness.js');
-var idlArray = new IdlArray();
-idlArray.add_untested_idls(idls.untested);
-idlArray.add_idls(idls.tested);
-idlArray.add_objects({
+promise_test(async (t) => {
+ var idlArray = new IdlArray();
+ const dom = await fetch('/interfaces/dom.idl').then(r => r.text());
+ const serviceWorkerIdl = await fetch('/interfaces/ServiceWorker.idl').then(r => r.text());
+
+ idlArray.add_untested_idls(idls.untested);
+ idlArray.add_untested_idls(dom, { only: ['EventTarget'] });
+ idlArray.add_idls(serviceWorkerIdl, { only: [
+ 'ServiceWorkerGlobalScope',
+ 'Client',
+ 'WindowClient',
+ 'Clients',
+ 'ServiceWorker',
+ 'ServiceWorkerState',
+ 'ServiceWorkerUpdateViaCache',
+ 'ServiceWorkerRegistration',
+ 'EventTarget',
+ 'NavigationPreloadManager',
+ 'Cache',
+ 'CacheStorage',
+ ]});
+ idlArray.add_objects({
ServiceWorkerGlobalScope: ['self'],
Clients: ['self.clients'],
ServiceWorkerRegistration: ['self.registration'],
@@ -17,16 +35,14 @@ idlArray.add_objects({
// Client: ['self.clientInstance'],
// WindowClient: ['self.windowClientInstance']
});
+ return create_temporary_cache(t)
+ .then(function(cache) {
+ self.cacheInstance = cache;
-promise_test(function(t) {
- return create_temporary_cache(t)
- .then(function(cache) {
- self.cacheInstance = cache;
-
- idlArray.add_objects({ Cache: ['self.cacheInstance'] });
- idlArray.test();
- });
- }, 'test setup (cache creation)');
+ idlArray.add_objects({ Cache: ['self.cacheInstance'] });
+ idlArray.test();
+ });
+}, 'test setup (cache creation)');
test(function() {
var req = new Request('http://{{host}}/',
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/redirect.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/redirect.py
new file mode 100644
index 00000000000..0663ca0ed04
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope1/redirect.py
@@ -0,0 +1,5 @@
+import os
+import sys
+# Use the file from the parent directory.
+sys.path.append(os.path.dirname(os.path.dirname(__file__)))
+from redirect import main
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope2/worker_interception_redirect_webworker.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope2/worker_interception_redirect_webworker.py
new file mode 100644
index 00000000000..99db1343bad
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/scope2/worker_interception_redirect_webworker.py
@@ -0,0 +1,5 @@
+import os
+import sys
+# Use the file from the parent directory.
+sys.path.append(os.path.dirname(os.path.dirname(__file__)))
+from worker_interception_redirect_webworker import main
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/simple-intercept-worker.js.headers b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/simple-intercept-worker.js.headers
new file mode 100644
index 00000000000..a17a9a3a12c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/simple-intercept-worker.js.headers
@@ -0,0 +1 @@
+Content-Type: application/javascript
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-client-id-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-client-id-worker.js
new file mode 100644
index 00000000000..f592629d074
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-client-id-worker.js
@@ -0,0 +1,25 @@
+addEventListener('fetch', evt => {
+ if (evt.request.url.includes('worker-echo-client-id.js')) {
+ evt.respondWith(new Response(
+ 'fetch("fetch-echo-client-id").then(r => r.text()).then(t => self.postMessage(t));',
+ { headers: { 'Content-Type': 'application/javascript' }}));
+ return;
+ }
+
+ if (evt.request.url.includes('fetch-echo-client-id')) {
+ evt.respondWith(new Response(evt.clientId));
+ return;
+ }
+
+ if (evt.request.url.includes('frame.html')) {
+ evt.respondWith(new Response(''));
+ return;
+ }
+});
+
+addEventListener('message', evt => {
+ if (evt.data === 'echo-client-id') {
+ evt.ports[0].postMessage(evt.source.id);
+ return;
+ }
+});
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-redirect-serviceworker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-redirect-serviceworker.js
new file mode 100644
index 00000000000..f5ba5a38df5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-redirect-serviceworker.js
@@ -0,0 +1,48 @@
+let name;
+if (self.registration.scope.indexOf('scope1') != -1)
+ name = 'sw1';
+if (self.registration.scope.indexOf('scope2') != -1)
+ name = 'sw2';
+
+
+self.addEventListener('fetch', evt => {
+ // There are three types of requests this service worker handles.
+
+ // (1) The first request for the worker, which will redirect elsewhere.
+ // "redirect.py" means to test network redirect, so let network handle it.
+ if (evt.request.url.indexOf('redirect.py') != -1) {
+ return;
+ }
+ // "sw-redirect" means to test service worker redirect, so respond with a
+ // redirect.
+ if (evt.request.url.indexOf('sw-redirect') != -1) {
+ const url = new URL(evt.request.url);
+ const redirect_to = url.searchParams.get('Redirect');
+ evt.respondWith(Response.redirect(redirect_to));
+ return;
+ }
+
+ // (2) After redirect, the request is for a "webworker.py" URL.
+ // Add a search parameter to indicate this service worker handled the
+ // final request for the worker.
+ if (evt.request.url.indexOf('webworker.py') != -1) {
+ const greeting = encodeURIComponent(`${name} saw the request for the worker script`);
+ evt.respondWith(fetch(`worker_interception_redirect_webworker.py?greeting=${greeting}`));
+ return;
+ }
+
+ // (3) The worker does an importScripts() to import-scripts-echo.py. Indicate
+ // that this service worker handled the request.
+ if (evt.request.url.indexOf('import-scripts-echo.py') != -1) {
+ const msg = encodeURIComponent(`${name} saw importScripts from the worker`);
+ evt.respondWith(fetch(`import-scripts-echo.py?msg=${msg}`));
+ return;
+ }
+
+ // (4) The worker does a fetch() to simple.txt. Indicate that this service
+ // worker handled the request.
+ if (evt.request.url.indexOf('simple.txt') != -1) {
+ evt.respondWith(new Response(`${name} saw the fetch from the worker`));
+ return;
+ }
+});
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-redirect-webworker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-redirect-webworker.js
new file mode 100644
index 00000000000..d602f230f08
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker-interception-redirect-webworker.js
@@ -0,0 +1,42 @@
+// This is the (shared or dedicated) worker file for the
+// worker-interception-redirect test. It should be served by the corresponding
+// .py file instead of being served directly.
+//
+// This file is served from both resources/*webworker.py and
+// resources/scope2/*webworker.py, hence some of the complexity
+// below about paths.
+const resources_url = new URL("/service-workers/service-worker/resources/",
+ self.location);
+
+// This greeting text is meant to be injected by the Python script that serves
+// this file, to indicate how the script was served (from network or from
+// service worker).
+//
+// We can't just use a sub pipe and name this file .sub.js since we want
+// to serve the file from multiple URLs (see above).
+let greeting = '%GREETING_TEXT%';
+if (!greeting)
+ greeting = 'the shared worker script was served from network';
+
+// Call importScripts() which fills |echo_output| with a string indicating
+// whether a service worker intercepted the importScripts() request.
+let echo_output;
+const import_scripts_msg = encodeURIComponent(
+ 'importScripts: served from network');
+const import_scripts_url =
+ new URL(`import-scripts-echo.py?msg=${import_scripts_msg}`, resources_url);
+importScripts(import_scripts_url);
+const import_scripts_greeting = echo_output;
+
+self.onconnect = async function(e) {
+ const port = e.ports[0];
+ port.start();
+ port.postMessage(greeting);
+
+ port.postMessage(import_scripts_greeting);
+
+ const fetch_url = new URL('simple.txt', resources_url);
+ const response = await fetch(fetch_url);
+ const text = await response.text();
+ port.postMessage('fetch(): ' + text);
+};
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker_interception_redirect_webworker.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker_interception_redirect_webworker.py
new file mode 100644
index 00000000000..e388e461448
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/worker_interception_redirect_webworker.py
@@ -0,0 +1,19 @@
+# This serves the worker JavaScript file. It takes a |greeting| request
+# parameter to inject into the JavaScript to indicate how the request
+# reached the server.
+import os
+import sys
+
+def main(request, response):
+ path = os.path.join(os.path.dirname(__file__),
+ "worker-interception-redirect-webworker.js")
+ body = open(path, "rb").read()
+ if "greeting" in request.GET:
+ body = body.replace("%GREETING_TEXT%", request.GET["greeting"])
+ else:
+ body = body.replace("%GREETING_TEXT%", "")
+
+ headers = []
+ headers.append(("Content-Type", "text/javascript"))
+
+ return headers, body
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/worker-client-id.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/worker-client-id.https.html
new file mode 100644
index 00000000000..4e4d31660bd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/worker-client-id.https.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<title>Service Worker: Workers should have their own unique client Id</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<body>
+<script>
+
+// Get the iframe client ID by calling postMessage() on its controlling
+// worker. This will cause the service worker to post back the
+// MessageEvent.source.id value.
+function getFrameClientId(frame) {
+ return new Promise(resolve => {
+ let mc = new MessageChannel();
+ frame.contentWindow.navigator.serviceWorker.controller.postMessage(
+ 'echo-client-id', [mc.port2]);
+ mc.port1.onmessage = evt => {
+ resolve(evt.data);
+ };
+ });
+}
+
+// Get the worker client ID by creating a worker that performs an intercepted
+// fetch(). The synthetic fetch() response will contain the FetchEvent.clientId
+// value. This is then posted back to here.
+function getWorkerClientId(frame) {
+ return new Promise(resolve => {
+ let w = new frame.contentWindow.Worker('worker-echo-client-id.js');
+ w.onmessage = evt => {
+ resolve(evt.data);
+ };
+ });
+}
+
+promise_test(async function(t) {
+ const script = './resources/worker-client-id-worker.js';
+ const scope = './resources/worker-client-id';
+ const frame = scope + '/frame.html';
+
+ let reg = await navigator.serviceWorker.register(script, { scope });
+ t.add_cleanup(async _ => await reg.unregister());
+ await wait_for_state(t, reg.installing, 'activated');
+
+ let f = await with_iframe(frame);
+ t.add_cleanup(_ => f.remove());
+
+ let frameClientId = await getFrameClientId(f);
+ assert_not_equals(frameClientId, null, 'frame client id should exist');
+
+ let workerClientId = await getWorkerClientId(f);
+ assert_not_equals(workerClientId, null, 'worker client id should exist');
+
+ assert_not_equals(frameClientId, workerClientId,
+ 'frame and worker client ids should be different');
+}, 'Verify workers have a unique client id separate from their owning documents window');
+
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception-redirect.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception-redirect.https.html
new file mode 100644
index 00000000000..654495fe4c3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception-redirect.https.html
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<title>Service Worker: controlling a SharedWorker</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/test-helpers.sub.js"></script>
+<body>
+<script>
+// This tests service worker interception for worker clients, when the request
+// for the worker script goes through redirects. For example, a request can go
+// through a chain of URLs like A -> B -> C -> D and each URL might fall in the
+// scope of a different service worker, if any.
+// The two key questions are:
+// 1. Upon a redirect from A -> B, should a service worker for scope B
+// intercept the request?
+// 2. After the final response, which service worker controls the resulting
+// client?
+//
+// The standard prescribes the following:
+// 1. The service worker for scope B intercepts the redirect. *However*, once a
+// request falls back to network (i.e., a service worker did not call
+// respondWith()) and a redirect is then received from network, no service
+// worker should intercept that redirect or any subsequent redirects.
+// 2. The final service worker that got a fetch event (or would have, in the
+// case of a non-fetch-event worker) becomes the controller of the client.
+//
+// The standard may change later, see:
+// https://github.com/w3c/ServiceWorker/issues/1289
+//
+// The basic test setup is:
+// 1. Page registers service workers for scope1 and scope2.
+// 2. Page requests a worker from scope1.
+// 3. The request is redirected to scope2 or out-of-scope.
+// 4. The worker posts message to the page describing where the final response
+// was served from (service worker or network).
+// 5. The worker does an importScripts() and fetch(), and posts back the
+// responses, which describe where the responses where served from.
+//
+// Currently this only tests shared worker but dedicated worker tests should be
+// added in a future patch.
+
+// Globals for easier cleanup.
+const scope1 = 'resources/scope1';
+const scope2 = 'resources/scope2';
+let frame;
+
+function get_message_from_worker(worker) {
+ return new Promise(resolve => {
+ worker.port.onmessage = evt => {
+ resolve(evt.data);
+ }
+ });
+}
+
+async function cleanup() {
+ if (frame)
+ frame.remove();
+
+ const reg1 = await navigator.serviceWorker.getRegistration(scope1);
+ if (reg1)
+ await reg1.unregister();
+ const reg2 = await navigator.serviceWorker.getRegistration(scope2);
+ if (reg2)
+ await reg2.unregister();
+}
+
+// Builds the worker script URL, which encodes information about where
+// to redirect to. The URL falls in sw1's scope.
+//
+// - |redirector| is "network" or "serviceworker". If "serviceworker", sw1 will
+// respondWith() a redirect. Otherwise, it falls back to network and the server
+// responds with a redirect.
+// - |redirect_location| is "scope2" or "out-of-scope". If "scope2", the
+// redirect ends up in sw2's scope2. Otherwise it's out of scope.
+function build_worker_url(redirector, redirect_location) {
+ let redirect_path;
+ // Set path to redirect.py, a file on the server that serves
+ // a redirect. When sw1 sees this URL, it falls back to network.
+ if (redirector == 'network')
+ redirector_path = 'redirect.py';
+ // Set path to 'sw-redirect', to tell the service worker
+ // to respond with redirect.
+ else if (redirector == 'serviceworker')
+ redirector_path = 'sw-redirect';
+
+ let redirect_to = base_path() + 'resources/';
+ // Append "scope2/" to redirect_to, so the redirect falls in scope2.
+ // Otherwise no change is needed, as the parent "resources/" directory is
+ // used, and is out-of-scope.
+ if (redirect_location == 'scope2')
+ redirect_to += 'scope2/';
+ // Append the name of the file which serves the worker script.
+ redirect_to += 'worker_interception_redirect_webworker.py';
+
+ return `scope1/${redirector_path}?Redirect=${redirect_to}`
+}
+
+promise_test(async t => {
+ await cleanup();
+ const service_worker = 'resources/worker-interception-redirect-serviceworker.js';
+ const registration1 = await navigator.serviceWorker.register(service_worker, {scope: scope1});
+ await wait_for_state(t, registration1.installing, 'activated');
+ const registration2 = await navigator.serviceWorker.register(service_worker, {scope: scope2});
+ await wait_for_state(t, registration2.installing, 'activated');
+
+ promise_test(t => {
+ return cleanup();
+ }, 'cleanup global state');
+}, 'initialize global state');
+
+function worker_redirect_test(worker_url,
+ expected_main_resource_message,
+ expected_import_scripts_message,
+ expected_fetch_message,
+ description) {
+ promise_test(async t => {
+ // Create a frame to load the worker from. This way we can remove the frame
+ // to destroy the worker client when the test is done.
+ frame = await with_iframe('resources/blank.html');
+ t.add_cleanup(() => { frame.remove(); });
+
+ // Start the worker.
+ const w = new frame.contentWindow.SharedWorker(worker_url);
+ w.port.start();
+
+ // Expect a message from the worker indicating which service worker
+ // provided the response for the worker script request, if any.
+ const data = await get_message_from_worker(w);
+ assert_equals(data, expected_main_resource_message);
+
+ // The worker does an importScripts(). Expect a message from the worker
+ // indicating which service worker provided the response for the
+ // importScripts(), if any.
+ const import_scripts_message = await get_message_from_worker(w);
+ assert_equals(import_scripts_message, expected_import_scripts_message);
+
+ // The worker does a fetch(). Expect a message from the worker indicating
+ // which service worker provided the response for the fetch(), if any.
+ const fetch_message = await get_message_from_worker(w);
+ assert_equals(fetch_message, expected_fetch_message);
+ }, description);
+}
+
+worker_redirect_test(
+ build_worker_url('network', 'scope2'),
+ 'the shared worker script was served from network',
+ 'sw1 saw importScripts from the worker',
+ 'fetch(): sw1 saw the fetch from the worker',
+ 'request to sw1 scope gets network redirect to sw2 scope');
+
+worker_redirect_test(
+ build_worker_url('network', 'out-scope'),
+ 'the shared worker script was served from network',
+ 'sw1 saw importScripts from the worker',
+ 'fetch(): sw1 saw the fetch from the worker',
+ 'request to sw1 scope gets network redirect to out-of-scope');
+
+worker_redirect_test(
+ build_worker_url('serviceworker', 'scope2'),
+ 'sw2 saw the request for the worker script',
+ 'sw2 saw importScripts from the worker',
+ 'fetch(): sw2 saw the fetch from the worker',
+ 'request to sw1 scope gets service-worker redirect to sw2 scope');
+
+worker_redirect_test(
+ build_worker_url('serviceworker', 'out-scope'),
+ 'the shared worker script was served from network',
+ 'sw1 saw importScripts from the worker',
+ 'fetch(): sw1 saw the fetch from the worker',
+ 'request to sw1 scope gets service-worker redirect to out-of-scope');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/shadow-dom/Extensions-to-Event-Interface.html b/tests/wpt/web-platform-tests/shadow-dom/Extensions-to-Event-Interface.html
index 37d07a777cd..52cda0b6bb8 100644
--- a/tests/wpt/web-platform-tests/shadow-dom/Extensions-to-Event-Interface.html
+++ b/tests/wpt/web-platform-tests/shadow-dom/Extensions-to-Event-Interface.html
@@ -14,11 +14,6 @@
<script>
test(function () {
- assert_true('composedPath' in Event.prototype);
- assert_true('composedPath' in new Event('my-event'));
-}, 'composedPath() must exist on Event');
-
-test(function () {
var event = new Event('my-event');
assert_array_equals(event.composedPath(), []);
}, 'composedPath() must return an empty array when the event has not been dispatched');
@@ -30,11 +25,6 @@ test(function () {
}, 'composedPath() must return an empty array when the event is no longer dispatched');
test(function () {
- assert_true('composed' in Event.prototype);
- assert_true('composed' in new Event('my-event'));
-}, 'composed must exist on Event');
-
-test(function () {
var event = new Event('my-event');
assert_false(event.composed);
}, 'composed on EventInit must default to false');
diff --git a/tests/wpt/web-platform-tests/shadow-dom/resources/event-path-test-helpers.js b/tests/wpt/web-platform-tests/shadow-dom/resources/event-path-test-helpers.js
index 17d6fff662b..f0e8ec33ff7 100644
--- a/tests/wpt/web-platform-tests/shadow-dom/resources/event-path-test-helpers.js
+++ b/tests/wpt/web-platform-tests/shadow-dom/resources/event-path-test-helpers.js
@@ -16,9 +16,6 @@ function dispatchEventWithEventLog(shadow, target, event) {
eventPath.push(this.label);
relatedTargets.push(event.relatedTarget ? event.relatedTarget.label : null);
- if (!event.composedPath) // Don't fail all tests just for the lack of composedPath.
- return;
-
pathAtTargets.push(event.composedPath().map(function (node) { return node.label; }));
targets.push(event.target);
}).bind(node));
diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/default-reader.js b/tests/wpt/web-platform-tests/streams/readable-streams/default-reader.js
index 7543545c4c4..9b645e24725 100644
--- a/tests/wpt/web-platform-tests/streams/readable-streams/default-reader.js
+++ b/tests/wpt/web-platform-tests/streams/readable-streams/default-reader.js
@@ -485,4 +485,17 @@ promise_test(t => {
}, 'Reading twice on a stream that gets errored');
+test(() => {
+ const rs = new ReadableStream();
+ let toStringCalled = false;
+ const mode = {
+ toString() {
+ toStringCalled = true;
+ return '';
+ }
+ };
+ assert_throws(new RangeError(), () => rs.getReader({ mode }), 'getReader() should throw');
+ assert_true(toStringCalled, 'toString() should be called');
+}, 'getReader() should call ToString() on mode');
+
done();
diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.dedicatedworker.html b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.dedicatedworker.html
new file mode 100644
index 00000000000..327bc92f75d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.dedicatedworker.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>patched-global.js dedicated worker wrapper file</title>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+'use strict';
+fetch_tests_from_worker(new Worker('patched-global.js'));
+</script>
diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.html b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.html
new file mode 100644
index 00000000000..869e9109e02
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>patched-global.js browser context wrapper file</title>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+
+
+<script src="patched-global.js"></script>
diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.js b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.js
new file mode 100644
index 00000000000..e8117c48048
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.js
@@ -0,0 +1,67 @@
+'use strict';
+
+// Tests which patch the global environment are kept separate to avoid
+// interfering with other tests.
+
+if (self.importScripts) {
+ self.importScripts('/resources/testharness.js');
+}
+
+const ReadableStream_prototype_locked_get =
+ Object.getOwnPropertyDescriptor(ReadableStream.prototype, 'locked').get;
+
+// Verify that |rs| passes the brand check as a readable stream.
+function isReadableStream(rs) {
+ try {
+ ReadableStream_prototype_locked_get.call(rs);
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
+
+test(t => {
+ const rs = new ReadableStream();
+
+ const trappedProperties = ['highWaterMark', 'size', 'start', 'type', 'mode'];
+ for (const property of trappedProperties) {
+ // eslint-disable-next-line no-extend-native, accessor-pairs
+ Object.defineProperty(Object.prototype, property, {
+ get() { throw new Error(`${property} getter called`); },
+ configurable: true
+ });
+ }
+ t.add_cleanup(() => {
+ for (const property of trappedProperties) {
+ delete Object.prototype[property];
+ }
+ });
+
+ const [branch1, branch2] = rs.tee();
+ assert_true(isReadableStream(branch1), 'branch1 should be a ReadableStream');
+ assert_true(isReadableStream(branch2), 'branch2 should be a ReadableStream');
+}, 'ReadableStream tee() should not touch Object.prototype properties');
+
+test(t => {
+ const rs = new ReadableStream();
+
+ const oldReadableStream = self.ReadableStream;
+
+ /* eslint-disable no-native-reassign */
+ self.ReadableStream = function() {
+ throw new Error('ReadableStream called on global object');
+ };
+
+ t.add_cleanup(() => {
+ self.ReadableStream = oldReadableStream;
+ });
+
+ const [branch1, branch2] = rs.tee();
+
+ assert_true(isReadableStream(branch1), 'branch1 should be a ReadableStream');
+ assert_true(isReadableStream(branch2), 'branch2 should be a ReadableStream');
+
+ /* eslint-enable no-native-reassign */
+}, 'ReadableStream tee() should not call the global ReadableStream');
+
+done();
diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.serviceworker.https.html b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.serviceworker.https.html
new file mode 100644
index 00000000000..addb438ba6f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.serviceworker.https.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>patched-global.js service worker wrapper file</title>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/service-workers/service-worker/resources/test-helpers.sub.js"></script>
+
+<script>
+'use strict';
+service_worker_test('patched-global.js', 'Service worker test setup');
+</script>
diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.sharedworker.html b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.sharedworker.html
new file mode 100644
index 00000000000..6dba52fa67f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/streams/readable-streams/patched-global.sharedworker.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>patched-global.js shared worker wrapper file</title>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script>
+'use strict';
+fetch_tests_from_worker(new SharedWorker('patched-global.js'));
+</script>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-dom-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-dom-01-f-manual.svg
index 663a07faff9..5c4d8bc8e01 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-dom-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-dom-01-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -44,7 +44,7 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<text x='30' y='30'>Testing SVGAnimationElement.getStartTime()</text>
<text x='340' y='340' display='none'>Test running...
@@ -177,14 +177,14 @@
]]></script>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.11 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved --><!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-dom-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-dom-02-f-manual.svg
index c9bf3271997..68c30f08486 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-dom-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-dom-02-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -12,22 +12,22 @@
template-version="1.3" reviewer="DAS" author="CM" status="accepted"
version="$Revision: 1.7 $" testname="$RCSfile: animate-dom-02-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/animate.html#InterfaceSVGAnimationElement">
- <p>
- This tests that the methods on the ElementTimeControl
- interface return the undefined value, since the IDL
- operations are declared to return void.
- </p>
- <p>
- After the loading the document, a rectangle is shown
- indicating whether all four methods from the ElementTimeControl
- interface returned undefined when invoked. The rectangle
- is black if the test did not run, red if the test failed
- and green if the test succeeded.
- </p>
+ <p>
+ This tests that the methods on the ElementTimeControl
+ interface return the undefined value, since the IDL
+ operations are declared to return void.
+ </p>
+ <p>
+ After the loading the document, a rectangle is shown
+ indicating whether all four methods from the ElementTimeControl
+ interface returned undefined when invoked. The rectangle
+ is black if the test did not run, red if the test failed
+ and green if the test succeeded.
+ </p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -47,7 +47,7 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<text x='10' y='30'>Testing ElementTimeControl method return values</text>
<rect id='r' x='10' y='50' width='50' height='50'/>
@@ -70,14 +70,14 @@
]]></script>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.7 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved --><!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-02-t-manual.svg
index 0dc00457011..976edbf5c54 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-02-t-manual.svg
@@ -31,7 +31,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>The test has passed if the four green rectangles each animate their height according to the following:</p>
- <p>The leftmost rect:</p>
+ <p>The leftmost rect:</p>
<ul>
<li>when the animation starts the height of the green rect should make it align with the bottommost red indicator line</li>
<li>after two seconds the height should jump to be 10% of the height of the gray rect it overlaps</li>
@@ -39,21 +39,21 @@
<li>after six seconds the height should jump to its final position, 10% of the height of the gray rect</li>
</ul>
<p>The next to leftmost rect:</p>
- <ul>
+ <ul>
<li>when the animation starts the height of the green rect should be 110% of the height of the gray rect</li>
<li>after two seconds the height should jump to be 20% of the height of the gray rect</li>
<li>after four seconds the height should jump to be 110% of the height of the gray rect</li>
<li>after six seconds the height should jump to its final position, 20% of the height of the gray rect</li>
</ul>
<p>The next to rightmost rect:</p>
- <ul>
+ <ul>
<li>when the animation starts the height of the green rect should make it align with the bottommost red indicator line</li>
<li>after two seconds the height should jump to be 10% of the height of the gray rect</li>
<li>after four seconds the height should jump to be 110% of the height of the gray rect</li>
<li>after six seconds the height should jump to its final position, 20% of the height of the gray rect</li>
</ul>
<p>The rightmost rect:</p>
- <ul>
+ <ul>
<li>when the animation starts the height of the green rect should be 110% of the height of the gray rect</li>
<li>after two seconds the height should jump to be 20% of the height of the gray rect</li>
<li>after four seconds the height should jump to be 120% of the height of the gray rect</li>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-03-t-manual.svg
index 2c28362de9b..433251ab84c 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-03-t-manual.svg
@@ -40,11 +40,11 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test has passed if:
- </p>
+ </p>
<ul>
<li>the topmost line shows the text "Sample 123" that animates its fill-color smoothly from blue to green over the course of six seconds</li>
<li>the middle line shows the text "Sample 123" in a larger font-size than the first line, in blue fill-color that doesn't animate</li>
- <li>the bottommost line shows the text "Sample 123" in the same font-size as the topmost line, then smoothly animating the font-size
+ <li>the bottommost line shows the text "Sample 123" in the same font-size as the topmost line, then smoothly animating the font-size
to be larger than the middle line over the course of six seconds. At the same time the fill-color is smoothly animated from blue to green</li>
<li>after six seconds the rendered result matches the reference image</li>
</ul>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-05-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-05-t-manual.svg
index 3e1be14f32f..1fcfc213bc6 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-05-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-05-t-manual.svg
@@ -33,7 +33,7 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test has passed if a triangle is animated smoothly along the path indicated by the black line, and
- it passes over the pink rectangles at the indicated times.
+ it passes over the pink rectangles at the indicated times.
When the animation starts the triangle should be positioned on top of the leftmost pink rectangle, after
3 seconds it should reach the middle pink rectangle, and after 6 seconds it should be positioned on top
of the rightmost pink rectangle where it should stop.
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-10-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-10-t-manual.svg
index 23b1502ea72..80e48b7b72f 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-10-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-10-t-manual.svg
@@ -35,7 +35,7 @@
<p>
The test is passed if the two orange rects are animated so that the bottom part of each rectangle is at the position
indicated by the ruler lines at the particular time noted next to each ruler line. Between two noted times the
- bottom part of each rect must be between the two corresponding ruler lines.
+ bottom part of each rect must be between the two corresponding ruler lines.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -65,7 +65,7 @@
<animate attributeName="height" values="210;177;121;10" begin="0s" dur="9s" fill="freeze"/>
</rect>
</g>
-
+
<g transform="translate(250,50)">
<text x="0" y="203">at 0 sec.</text>
<text x="0" y="170">at 3 sec. </text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-11-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-11-t-manual.svg
index 001fb7d32ac..49e3d45468a 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-11-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-11-t-manual.svg
@@ -28,12 +28,12 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if the two orange rects are animated so that the bottom part of each rectangle is at the position indicated by the ruler lines at the particular time noted next to each ruler line. Between two noted times the bottom part of each rect must be between the two corresponding ruler lines.
+ The test is passed if the two orange rects are animated so that the bottom part of each rectangle is at the position indicated by the ruler lines at the particular time noted next to each ruler line. Between two noted times the bottom part of each rect must be between the two corresponding ruler lines.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -62,7 +62,7 @@
<animate attributeName="height" calcMode="paced" values="210;177;121;10" begin="0s" dur="9s" fill="freeze"/>
</rect>
</g>
-
+
<g transform="translate(250,50)">
<text x="0" y="203">at 0 sec.</text>
<text x="0" y="136.33">at 3 sec. </text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-12-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-12-t-manual.svg
index ff0cc495a50..72dd94cf3a1 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-12-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-12-t-manual.svg
@@ -27,13 +27,13 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Run the test. No interaction required.
- </p>
+ <p>
+ Run the test. No interaction required.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if the two orange rects are animated so that the bottom part of each rectangle is at the position indicated by the ruler lines at the particular time noted next to each ruler line. Between two noted times the bottom part of each rect must be between the two corresponding ruler lines. The bottom of the left rectangles and the right rectangle must always be the same throughout the animation.
+ The test is passed if the two orange rects are animated so that the bottom part of each rectangle is at the position indicated by the ruler lines at the particular time noted next to each ruler line. Between two noted times the bottom part of each rect must be between the two corresponding ruler lines. The bottom of the left rectangles and the right rectangle must always be the same throughout the animation.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -62,7 +62,7 @@
<animate attributeName="height" calcMode="spline" keySplines="0,0,1,1;0,0,1,1;.75,0,0,.75" values="210;177;121;10" begin="0s" dur="9s" fill="freeze"/>
</rect>
</g>
-
+
<g transform="translate(250,50)">
<text x="0" y="203">at 0 sec.</text>
<text x="0" y="170">at 3 sec. </text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-13-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-13-t-manual.svg
index 52c4b6fa2ae..855c5e5b00b 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-13-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-13-t-manual.svg
@@ -28,7 +28,7 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-14-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-14-t-manual.svg
index b85b279a52a..dd35fd5420a 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-14-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-14-t-manual.svg
@@ -28,12 +28,12 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
- </p>
+ Run the test. No interaction required.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The right edge of the blue rectangle should line up with the ruler lines at the indicated times, and should jump directly to each position with no animation in between.
+ The right edge of the blue rectangle should line up with the ruler lines at the indicated times, and should jump directly to each position with no animation in between.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-15-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-15-t-manual.svg
index 4ef4a7a9625..3afab977b0f 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-15-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-15-t-manual.svg
@@ -29,12 +29,12 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The blue rectangle should animate its width at a constant speed so that the right edge of the rectangle lines up with the ruler line at the indicated times.
+ The blue rectangle should animate its width at a constant speed so that the right edge of the rectangle lines up with the ruler line at the indicated times.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-17-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-17-t-manual.svg
index c9936b08061..3b1aed64a60 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-17-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-17-t-manual.svg
@@ -28,13 +28,13 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
+ <p>
Run the test. No interaction required.
- </p>
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The blue rectangle should animate its width so that the right edge of the rectangle lines up with the ruler line at the indicated times. Between 4 and 8 seconds the animation should show an ease-in/ease-out motion (i.e. a gradual change in speed).
+ The blue rectangle should animate its width so that the right edge of the rectangle lines up with the ruler line at the indicated times. Between 4 and 8 seconds the animation should show an ease-in/ease-out motion (i.e. a gradual change in speed).
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-19-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-19-t-manual.svg
index e379e92d036..339094560c2 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-19-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-19-t-manual.svg
@@ -14,7 +14,7 @@
template-version="1.4" reviewer="SVGWG" author="Jon Ferraiolo" status="accepted"
version="$Revision: 1.6 $" testname="$RCSfile: animate-elem-19-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/animate.html#Animation">
- <p>
+ <p>
Test 'calcMode'=linear.
</p>
<p>
@@ -33,7 +33,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The blue rectangle should animate its width so that the right edge of the rectangle lines up with the ruler line at the indicated times. The rate of change will increase after each ruler line is passed.
+ The blue rectangle should animate its width so that the right edge of the rectangle lines up with the ruler line at the indicated times. The rate of change will increase after each ruler line is passed.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-20-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-20-t-manual.svg
index 0301032fbcc..6da85845cbd 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-20-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-20-t-manual.svg
@@ -20,16 +20,16 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Click "fade in", wait 3 seconds. Click "fade out", wait 3 seconds. Click "fade in" again, wait 6 seconds.
+ Click "fade in", wait 3 seconds. Click "fade out", wait 3 seconds. Click "fade in" again, wait 6 seconds.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
- <p>The test is passed if:</p>
+ <p>The test is passed if:</p>
<ul>
- <li>The first time "fade in" is clicked, a blue rectangle should smoothly fade from white to blue over the course of three seconds.</li>
- <li>When "fade out" is clicked, the blue rectangle should smoothly fade from blue to white over the course of three seconds.</li>
- <li>When "fade in" is clicked the second time, the blue rectangle should smoothly fade from white to blue over the course of three seconds, and then directly fade out from blue to white over the course of three seconds.</li>
- <li>The rendered picture matches the reference image, (except
+ <li>The first time "fade in" is clicked, a blue rectangle should smoothly fade from white to blue over the course of three seconds.</li>
+ <li>When "fade out" is clicked, the blue rectangle should smoothly fade from blue to white over the course of three seconds.</li>
+ <li>When "fade in" is clicked the second time, the blue rectangle should smoothly fade from white to blue over the course of three seconds, and then directly fade out from blue to white over the course of three seconds.</li>
+ <li>The rendered picture matches the reference image, (except
for possible variations in the labeling text (per CSS2 rules))
after activating the link on the fade-in button the first time
and waiting three seconds for the animation to complete. The picture
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-21-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-21-t-manual.svg
index f68aed08d37..04598961969 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-21-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-21-t-manual.svg
@@ -34,7 +34,7 @@
waiting three seconds, and then immediately perform a first click
on "fade out", waiting three seconds, and then immediately perform
a second click on "fade in", you should see the following. After
- the first click on "fade in", the blue square goes from white to blue.
+ the first click on "fade in", the blue square goes from white to blue.
After the first click on "fade out", the blue square goes
from blue to white. After the second click on "fade in",
however, the blue square goes from white to blue, and then
@@ -45,16 +45,16 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Click "fade in", wait 3 seconds. Click "fade out", wait 3 seconds. Click "fade in" again, wait 6 seconds.
+ Click "fade in", wait 3 seconds. Click "fade out", wait 3 seconds. Click "fade in" again, wait 6 seconds.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>The test is passed if:</p>
<ul>
- <li>The first time "fade in" is clicked, a blue rectangle should smoothly fade from white to blue, and two circles should fade from white to gray, all over the course of three seconds</li>
- <li>When "fade out" is clicked, the blue rectangle should smoothly fade from blue to white, and the two circles should fade from gray to white, all over the course of three seconds.</li>
- <li>When "fade in" is clicked the second time, it should behave as the first time "fade in" was clicked but immediately followed by the "fade out" behaviour described above, so that the shapes all fade in over the course of three seconds, and then out again over the course of three seconds.</li>
- <li>The rendered picture matches the reference image, (except
+ <li>The first time "fade in" is clicked, a blue rectangle should smoothly fade from white to blue, and two circles should fade from white to gray, all over the course of three seconds</li>
+ <li>When "fade out" is clicked, the blue rectangle should smoothly fade from blue to white, and the two circles should fade from gray to white, all over the course of three seconds.</li>
+ <li>When "fade in" is clicked the second time, it should behave as the first time "fade in" was clicked but immediately followed by the "fade out" behaviour described above, so that the shapes all fade in over the course of three seconds, and then out again over the course of three seconds.</li>
+ <li>The rendered picture matches the reference image, (except
for possible variations in the labeling text (per CSS2 rules))
after activating the link on the fade-in button the first time
and waiting three seconds for the animation to compete. The picture
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-22-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-22-b-manual.svg
index 4935e923ff3..3b5887f9718 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-22-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-22-b-manual.svg
@@ -40,9 +40,9 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>The test is passed if:</p>
<ul>
- <li>At the start of the animation the innermost rectangle is filled by a yellow semitransparent color</li>
- <li>Over the course of three seconds the yellow rect smoothly animates its width and height so that at time t=3s fully fills the middle rectangle</li>
- <li>The animation then continues in the same fashion and at time t=9s fully fills the largest rectangle with blue stroke</li>
+ <li>At the start of the animation the innermost rectangle is filled by a yellow semitransparent color</li>
+ <li>Over the course of three seconds the yellow rect smoothly animates its width and height so that at time t=3s fully fills the middle rectangle</li>
+ <li>The animation then continues in the same fashion and at time t=9s fully fills the largest rectangle with blue stroke</li>
</ul>
</d:passCriteria>
</d:SVGTestCase>
@@ -70,10 +70,10 @@
<animate attributeName="width" attributeType="XML" begin="0s" dur="9s" fill="freeze" from="50" to="400"/>
<animate attributeName="height" attributeType="XML" begin="0s" dur="9s" fill="freeze" from="50" to="240"/>
</rect>
- <!-- Set up a new user coordinate system so that the text string's
- origin is at (0,0), allowing rotation and scale relative to
- the new origin
- -->
+ <!-- Set up a new user coordinate system so that the text string's
+ origin is at (0,0), allowing rotation and scale relative to
+ the new origin
+ -->
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.6 $</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-23-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-23-t-manual.svg
index 84e8c59c730..391c234446c 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-23-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-23-t-manual.svg
@@ -34,19 +34,19 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
+ <p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if:
+ The test is passed if:
</p>
<ul>
- <li>From time t=0 seconds to t=3 seconds the large rectangle is filled with black</li>
- <li>At t=3 seconds a blue circle appears inside the black rectangle</li>
- <li>Between time t=3 seconds and t=6 seconds the fill of the circle is animated between blue and bluegreen</li>
- <li>Between time t=6 seconds and t=9 seconds the fill of the circle is animated between bluegreen and green</li>
+ <li>From time t=0 seconds to t=3 seconds the large rectangle is filled with black</li>
+ <li>At t=3 seconds a blue circle appears inside the black rectangle</li>
+ <li>Between time t=3 seconds and t=6 seconds the fill of the circle is animated between blue and bluegreen</li>
+ <li>Between time t=6 seconds and t=9 seconds the fill of the circle is animated between bluegreen and green</li>
</ul>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-24-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-24-t-manual.svg
index 2ea2a3408ff..df2293ad5a6 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-24-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-24-t-manual.svg
@@ -46,23 +46,23 @@
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: animate-elem-24-t.svg,v $</title>
- <defs>
- <font id="MyFont" horiz-adv-x="416">
- <font-face font-family="MyFont" units-per-em="1000" panose-1="2 0 0 6 3 0 0 2 0 4" ascent="700" descent="-127" alphabetic="0"/>
- <missing-glyph horiz-adv-x="233"/>
- <glyph unicode=" " glyph-name="space" horiz-adv-x="233"/>
- <glyph unicode="I" glyph-name="I" horiz-adv-x="330" d="M30 700V550H90V150H30V0H300V150H240V550H300V700H30Z"/>
- <glyph unicode="t" glyph-name="t" horiz-adv-x="417" d="M5 550V410H137V0H280V410H412V550H5Z"/>
- <glyph unicode="s" glyph-name="s" horiz-adv-x="468" d="M34 550V410V218H291V120H34V0H434V338H177V430H434V550H34Z"/>
- <glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="198" d="M35 700L73 483H125L163 700H35Z"/>
- <glyph unicode="a" glyph-name="a" horiz-adv-x="435" d="M71 550L3 0H143L154 119H282L293 0H433L365 550H71ZM168 259L182 410H254L268 259H168Z"/>
- <glyph unicode="l" glyph-name="l" horiz-adv-x="435" d="M37 0H425V130H180V550H37V410V0Z"/>
- <glyph unicode="i" glyph-name="i" horiz-adv-x="217" d="M37 550V410V0H180V550H37Z"/>
- <glyph unicode="v" glyph-name="v" horiz-adv-x="430" d="M73 0H357L430 550H282L235 140H195L148 550H0L19 410L73 0Z"/>
- <glyph unicode="e" glyph-name="e" horiz-adv-x="442" d="M37 550V410V0H419V130H180V210H299V340H180V420H419V550H37Z"/>
- <glyph unicode="!" glyph-name="exclam" horiz-adv-x="237" d="M46 145V0H191V145H46ZM58 220H179L194 700H43L58 220Z"/>
- </font>
- </defs>
+ <defs>
+ <font id="MyFont" horiz-adv-x="416">
+ <font-face font-family="MyFont" units-per-em="1000" panose-1="2 0 0 6 3 0 0 2 0 4" ascent="700" descent="-127" alphabetic="0"/>
+ <missing-glyph horiz-adv-x="233"/>
+ <glyph unicode=" " glyph-name="space" horiz-adv-x="233"/>
+ <glyph unicode="I" glyph-name="I" horiz-adv-x="330" d="M30 700V550H90V150H30V0H300V150H240V550H300V700H30Z"/>
+ <glyph unicode="t" glyph-name="t" horiz-adv-x="417" d="M5 550V410H137V0H280V410H412V550H5Z"/>
+ <glyph unicode="s" glyph-name="s" horiz-adv-x="468" d="M34 550V410V218H291V120H34V0H434V338H177V430H434V550H34Z"/>
+ <glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="198" d="M35 700L73 483H125L163 700H35Z"/>
+ <glyph unicode="a" glyph-name="a" horiz-adv-x="435" d="M71 550L3 0H143L154 119H282L293 0H433L365 550H71ZM168 259L182 410H254L268 259H168Z"/>
+ <glyph unicode="l" glyph-name="l" horiz-adv-x="435" d="M37 0H425V130H180V550H37V410V0Z"/>
+ <glyph unicode="i" glyph-name="i" horiz-adv-x="217" d="M37 550V410V0H180V550H37Z"/>
+ <glyph unicode="v" glyph-name="v" horiz-adv-x="430" d="M73 0H357L430 550H282L235 140H195L148 550H0L19 410L73 0Z"/>
+ <glyph unicode="e" glyph-name="e" horiz-adv-x="442" d="M37 550V410V0H419V130H180V210H299V340H180V420H419V550H37Z"/>
+ <glyph unicode="!" glyph-name="exclam" horiz-adv-x="237" d="M46 145V0H191V145H46ZM58 220H179L194 700H43L58 220Z"/>
+ </font>
+ </defs>
<defs>
<font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
<font-face-src>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-25-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-25-t-manual.svg
index 8d2e0b626fd..bea4d9987e1 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-25-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-25-t-manual.svg
@@ -60,21 +60,21 @@
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<text font-family="Arial" font-size="14" x="30" y="40">Test animation options for specifying the target attribute/property.</text>
<g xml:space="preserve" font-family="Arial" font-size="14" stroke-width="3" transform="translate(0,50)">
- <text x="20" y="164">0-3 sec. </text>
- <line x1="80" y1="160" x2="200" y2="160" fill="none" stroke="green"/>
- <text x="20" y="124">at 6 sec. </text>
- <line x1="80" y1="120" x2="200" y2="120" fill="none" stroke="green"/>
- <rect id="rect1" x="100" y="80" width="100" height="80" fill="#FFFF00" stroke="#FF00FF" stroke-width="4">
- <animate attributeName="height" from="80" to="40" begin="3s" dur="3s" fill="freeze"/>
- </rect>
- <text x="240" y="164">0-6 sec. </text>
- <line x1="305" y1="160" x2="425" y2="160" fill="none" stroke="green"/>
- <text x="240" y="124">at 9 sec. </text>
- <line x1="305" y1="120" x2="425" y2="120" fill="none" stroke="green"/>
- <rect id="rect2" x="325" y="80" width="100" height="80" fill="#FFFF00" stroke="#FF00FF" stroke-width="4">
- <animate attributeName="height" attributeType="XML" from="80" to="40" begin="6s" dur="3s" fill="freeze"/>
- </rect>
- </g>
+ <text x="20" y="164">0-3 sec. </text>
+ <line x1="80" y1="160" x2="200" y2="160" fill="none" stroke="green"/>
+ <text x="20" y="124">at 6 sec. </text>
+ <line x1="80" y1="120" x2="200" y2="120" fill="none" stroke="green"/>
+ <rect id="rect1" x="100" y="80" width="100" height="80" fill="#FFFF00" stroke="#FF00FF" stroke-width="4">
+ <animate attributeName="height" from="80" to="40" begin="3s" dur="3s" fill="freeze"/>
+ </rect>
+ <text x="240" y="164">0-6 sec. </text>
+ <line x1="305" y1="160" x2="425" y2="160" fill="none" stroke="green"/>
+ <text x="240" y="124">at 9 sec. </text>
+ <line x1="305" y1="120" x2="425" y2="120" fill="none" stroke="green"/>
+ <rect id="rect2" x="325" y="80" width="100" height="80" fill="#FFFF00" stroke="#FF00FF" stroke-width="4">
+ <animate attributeName="height" attributeType="XML" from="80" to="40" begin="6s" dur="3s" fill="freeze"/>
+ </rect>
+ </g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.7 $</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-27-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-27-t-manual.svg
index 939fbd7f188..088e01f0302 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-27-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-27-t-manual.svg
@@ -65,20 +65,20 @@
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<text font-family="Arial" font-size="16" text-anchor="middle" x="225" y="40">Test animation options for specifying the target element.</text>
<g xml:space="preserve" font-family="Arial" font-size="14" text-anchor="end" stroke-width="3">
- <text x="80" y="244">0 to 3 sec. </text>
- <line x1="80" y1="240" x2="200" y2="240" fill="none" stroke="green"/>
- <text x="80" y="124">at 6 sec. </text>
- <line x1="80" y1="120" x2="200" y2="120" fill="none" stroke="green"/>
- <rect id="rect1" x="100" y="80" width="100" height="160" fill="blue" stroke="#36e" stroke-width="4"/>
- <animate xlink:href="#rect1" attributeName="height" attributeType="XML" from="160" to="40" begin="3s" dur="3s" fill="freeze"/>
- <text x="305" y="244">0 to 6 sec. </text>
- <line x1="305" y1="240" x2="425" y2="240" fill="none" stroke="green"/>
- <text x="305" y="124">at 9 sec. </text>
- <line x1="305" y1="120" x2="425" y2="120" fill="none" stroke="green"/>
- <rect id="rect2" x="325" y="80" width="100" height="160" fill="blue" stroke="#36e" stroke-width="4">
- <animate attributeName="height" attributeType="XML" from="160" to="40" begin="6s" dur="3s" fill="freeze"/>
- </rect>
- </g>
+ <text x="80" y="244">0 to 3 sec. </text>
+ <line x1="80" y1="240" x2="200" y2="240" fill="none" stroke="green"/>
+ <text x="80" y="124">at 6 sec. </text>
+ <line x1="80" y1="120" x2="200" y2="120" fill="none" stroke="green"/>
+ <rect id="rect1" x="100" y="80" width="100" height="160" fill="blue" stroke="#36e" stroke-width="4"/>
+ <animate xlink:href="#rect1" attributeName="height" attributeType="XML" from="160" to="40" begin="3s" dur="3s" fill="freeze"/>
+ <text x="305" y="244">0 to 6 sec. </text>
+ <line x1="305" y1="240" x2="425" y2="240" fill="none" stroke="green"/>
+ <text x="305" y="124">at 9 sec. </text>
+ <line x1="305" y1="120" x2="425" y2="120" fill="none" stroke="green"/>
+ <rect id="rect2" x="325" y="80" width="100" height="160" fill="blue" stroke="#36e" stroke-width="4">
+ <animate attributeName="height" attributeType="XML" from="160" to="40" begin="6s" dur="3s" fill="freeze"/>
+ </rect>
+ </g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.7 $</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-29-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-29-b-manual.svg
index 265f4b6ecdd..4d2da5ad579 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-29-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-29-b-manual.svg
@@ -21,7 +21,7 @@
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
First click once on "fade in" and
- then, once the animation has completed, click once on "fade out".
+ then, once the animation has completed, click once on "fade out".
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -43,7 +43,7 @@
should remain looking the same way indefinitely, until another
link is activated.
</p>
- <!--
+ <!--
With a second click on "fade in", however, the behavior might
be different. In the case of having a first click on "fade in",
waiting three seconds, and then immediately perform a first click
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-31-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-31-t-manual.svg
index 60ff894665f..97780b74218 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-31-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-31-t-manual.svg
@@ -18,9 +18,9 @@
The purpose of this test is to test animation of the display attribute.
</p>
<p>
- The test shows two gray rectangles which are filled with colored circles during the length of the animation (8 sec).
+ The test shows two gray rectangles which are filled with colored circles during the length of the animation (8 sec).
The circles in the top rectangle are displayed/hidden by animating the display attribute.
- The circles in the bottom rectangle are serving as the reference and are displayed/hidden by animating the visibility attribute.
+ The circles in the bottom rectangle are serving as the reference and are displayed/hidden by animating the visibility attribute.
A correct implementation should display/hide circles with the same color from the top and bottom rectangle at the same time.
</p>
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-33-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-33-t-manual.svg
index 292201d5c32..88546128063 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-33-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-33-t-manual.svg
@@ -87,11 +87,11 @@
</g>
<!-- THIRD TEST-->
<!-- The length of the lines in the polyline (motionpath) are 100,50 and 100.
- The animated circle starts at the midpoint of one of the "legs" and also pass
- this point at time 1.4 since
- 1.4 = 4*(0.25) + (4*(0.75-0.25))*(1/5).
- Where 0.25 is the time at keyPoint 1 (2nd) and 1/5 since the control circle is at
- 1/5 of the distance between keyPoint 1 and 0 (2nd and 3rd).-->
+ The animated circle starts at the midpoint of one of the "legs" and also pass
+ this point at time 1.4 since
+ 1.4 = 4*(0.25) + (4*(0.75-0.25))*(1/5).
+ Where 0.25 is the time at keyPoint 1 (2nd) and 1/5 since the control circle is at
+ 1/5 of the distance between keyPoint 1 and 0 (2nd and 3rd).-->
<g transform="translate(110, 180) scale(0.6)">
<text x="-115" y="-30" font-size="30" stroke="none" fill="#ccc">3</text>
<text x="-85" y="-60" font-size="30" stroke="none" fill="#ccc">2.6</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-34-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-34-t-manual.svg
index ac7893155cf..227f4727bb0 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-34-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-34-t-manual.svg
@@ -77,7 +77,6 @@
</polygon>
-
<!-- SECOND TEST, FILL-RULE-->
<g transform="scale(0.3) translate(-450, 500)">
<path fill-rule="nonzero" fill="#ccc" stroke="none" d="M 500,100 L 500,300 700,300 700,100 550,100 550,250 650,250 650,100 500,100 z">
@@ -105,7 +104,6 @@
</g>
</g>
-
<text x="5" y="225" font-size="28">Animation on: 'points' and 'fill-rule'.</text>
<text x="5" y="255" font-size="18">Digit should match outline at indicated time.</text>
<text x="5" y="275" font-size="18">Filled square should follow morphing digit discretely.</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-36-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-36-t-manual.svg
index 460f76b82be..4719b5b3de4 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-36-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-36-t-manual.svg
@@ -100,7 +100,6 @@
<text y="60" text-anchor="middle">&lt;switch&gt;</text>
</g>
-
<g transform="translate(60,220)">
<a id="animatedAnchor" xlink:href="" fill="rgb(230,230,230)" stroke="rgb(255,180,0)">
<g>
@@ -130,7 +129,6 @@
<text id="textID" fill="rgb(230,230,230)" stroke="rgb(255,180,0)" font-family="MyDecFont" font-size="40" text-anchor="middle">123</text>
<animateTransform attributeName="transform" xlink:href="#textID" type="rotate" values="0;360;180;360" dur="3s"/>
-
<text y="60" text-anchor="middle">&lt;text&gt;</text>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-37-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-37-t-manual.svg
index c6c6ee3fc3d..cf6abec39f9 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-37-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-37-t-manual.svg
@@ -32,7 +32,7 @@
<p>The test passes if:</p>
<ul>
<li>each of the seven shapes rotates clockwise, then anti-clockwise, then clockwise again,</li>
- <li>and the circle is scaled down, then up, then down again</li>
+ <li>and the circle is scaled down, then up, then down again</li>
</ul>
<p>over the course of three seconds.</p>
<p>The static reference image shows the final state of the animation.</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-40-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-40-t-manual.svg
index c019e976657..727ce3ae4a8 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-40-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-40-t-manual.svg
@@ -122,7 +122,6 @@
<text text-anchor="middle" y="60">x/y on &lt;rect&gt;</text>
</g>
-
<g transform="translate(300,90)">
<rect x="-15" y="-15" width="50" height="20" fill="black" stroke="rgb(255,180,0)">
<animate attributeName="x" values="-15;15;15;-15;-15" begin="0s" dur="4s"/>
@@ -149,13 +148,11 @@
<animate xlink:href="#textID" attributeName="x" values="-15;15;15;-15;-15" begin="0s" dur="4s"/>
<animate xlink:href="#textID" attributeName="y" values="-15;-15;15;15;-15" begin="0s" dur="4s"/>
-
<use xlink:href="#markerGroup"/>
<text text-anchor="middle" y="60">x/y on &lt;text&gt;</text>
</g>
-
<g transform="translate(60,210)">
<defs>
<g id="markerGroup2" fill="rgb(230,230,230)" stroke="rgb(255,180,0)">
@@ -202,7 +199,6 @@
<text text-anchor="middle" y="75">on &lt;image&gt;</text>
</g>
-
<g transform="translate(300,210)">
<rect x="-40" y="-40" width="50" height="50" fill="gray">
<animate attributeName="width" values="50;80;20;50" begin="0s" dur="3s"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-46-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-46-t-manual.svg
index 7fc7397e224..8f1e3e9e313 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-46-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-46-t-manual.svg
@@ -131,7 +131,6 @@
<animate xlink:href="#textID_0" attributeName="text-anchor" values="end;middle;start" dur="3s" fill="freeze"/>
<animateTransform xlink:href="#textID_0" attributeName="transform" type="translate" values="0;30;60" dur="3s" fill="freeze" calcMode="discrete"/>
-
<g transform="translate(110, 0)" text-anchor="end" font-size="30" font-weight="bold">
<animate attributeName="text-anchor" values="end;middle;start" dur="3s" fill="freeze"/>
<animateTransform attributeName="transform" type="translate" values="0;30;60" calcMode="discrete" dur="3s" fill="freeze" additive="sum"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-62-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-62-t-manual.svg
index 43590af4db1..e7a764dd562 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-62-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-62-t-manual.svg
@@ -145,7 +145,7 @@
<text y="150">accessKey()</text>
<text y="175">wallclock()</text>
</g>
-
+
<g id="timeMarkersText" transform="translate(100, -15)" text-anchor="middle" font-size="8">
<text>0s</text>
<text x="12">1s</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-64-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-64-t-manual.svg
index f13a1e9d3bf..451e068deba 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-64-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-64-t-manual.svg
@@ -47,7 +47,7 @@
<p>The test passes if after three seconds, in each of the three rows,
the red rectangle is in the column at the times indicated.
Thus, from the document load until 2s afterwards, the red
- square in the first row must be in the right column,
+ square in the first row must be in the right column,
and after the 2s it must be in the left column. In the
other two rows, the red square must remain in the
right column.</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-66-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-66-t-manual.svg
index ed11acd506d..0f6f279d9b7 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-66-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-66-t-manual.svg
@@ -106,7 +106,7 @@
<text>&gt; 5s</text>
<text x="80">0s-5s</text>
</g>
-
+
<g transform="translate(150,40)" stroke="black">
<defs>
<rect id="shadow" x="-6" y="-6" width="12" height="12" fill="#ccc" stroke="black" stroke-width="1"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-70-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-70-t-manual.svg
index 7941ae59407..8c91faf5111 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-70-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-70-t-manual.svg
@@ -127,7 +127,6 @@
</rect>
</g>
-
<g id="setFour" transform="translate(0, 125)">
<use xlink:href="#shadow" x="0"/>
<use xlink:href="#shadow" x="80"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-77-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-77-t-manual.svg
index f71a033ca44..5d0e1464770 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-77-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-77-t-manual.svg
@@ -85,7 +85,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The document is animated such that it alternates between two states, an alternation occurring every second.
+ The document is animated such that it alternates between two states, an alternation occurring every second.
For the test to pass each row must show a colored letter A that alternates between the two exact shapes and positions shown
by the gray silhouettes.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-80-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-80-t-manual.svg
index ba831cb7268..07426e182db 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-80-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-80-t-manual.svg
@@ -190,7 +190,6 @@
<text y="75" text-anchor="middle">(sx and sy)</text>
</g>
-
<g transform="translate(20,180)">
<use xlink:href="#ref" x="40" y="40"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-81-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-81-t-manual.svg
index e6fd01c0d0e..9ec52cea265 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-81-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-81-t-manual.svg
@@ -60,19 +60,19 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
+ <p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>The test is passed if:</p>
<ul>
- <li>the scale of the upper leftmost grey rectangle is smoothly animated over the course of 5 seconds to completely fill the upper leftmost yellow rectangle</li>
- <li>the scale and rotation of the second upper grey rectangle from the left is smoothly animated over the course of 5 seconds to fill the second upper yellow rectangle from the left</li>
- <li>the scale of the upper third grey rectangle from the left is smoothly animated over the course of 2.5 seconds to completely fill the upper third yellow rectangle from the left, and then repeated once so that at time t=5 seconds it completely fills the same yellow rectangle</li>
- <li>the scale of the upper rightmost grey rectangle is smoothly animated over the course of 5 seconds to completely fill the upper rightmost yellow rectangle</li>
- <li>the scale of the lower leftmost grey rectangle is smoothly animated over the course of 2.5 seconds to completely fill the lower leftmost yellow rectangle, and then repeated once so that at time t=5 seconds it completely fills the same yellow rectangle</li>
- <li>the scale of the lower rightmost grey rectangle is smoothly animated over the course of 5 seconds to completely fill the lower rightmost yellow rectangle</li>
+ <li>the scale of the upper leftmost grey rectangle is smoothly animated over the course of 5 seconds to completely fill the upper leftmost yellow rectangle</li>
+ <li>the scale and rotation of the second upper grey rectangle from the left is smoothly animated over the course of 5 seconds to fill the second upper yellow rectangle from the left</li>
+ <li>the scale of the upper third grey rectangle from the left is smoothly animated over the course of 2.5 seconds to completely fill the upper third yellow rectangle from the left, and then repeated once so that at time t=5 seconds it completely fills the same yellow rectangle</li>
+ <li>the scale of the upper rightmost grey rectangle is smoothly animated over the course of 5 seconds to completely fill the upper rightmost yellow rectangle</li>
+ <li>the scale of the lower leftmost grey rectangle is smoothly animated over the course of 2.5 seconds to completely fill the lower leftmost yellow rectangle, and then repeated once so that at time t=5 seconds it completely fills the same yellow rectangle</li>
+ <li>the scale of the lower rightmost grey rectangle is smoothly animated over the course of 5 seconds to completely fill the lower rightmost yellow rectangle</li>
</ul>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-82-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-82-t-manual.svg
index b0c29a8797a..90a21f45e7c 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-82-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-82-t-manual.svg
@@ -206,7 +206,7 @@
<text y="75" text-anchor="middle">linear translation</text>
</g>
-
+
<g transform="translate(60,220)">
<rect x="-15" y="-15" width="30" height="30" stroke="none" fill="rgb(230,230,230)">
<animateTransform attributeName="transform" attributeType="XML" type="scale" values="1,2;3,2;1,1" dur="3s" calcMode="paced" fill="freeze"/>
@@ -285,7 +285,6 @@
<text y="75" text-anchor="middle">linear rotation</text>
</g>
-
</g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-83-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-83-t-manual.svg
index b64a7c6504d..2de478b5315 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-83-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-83-t-manual.svg
@@ -79,11 +79,11 @@
gray shapes morphs appropriately according to the following descriptions:</p>
<ol>
<li>The gray shape must morph from the diamond to the flower-like shape.</li>
- <li>The gray shape must morph just like sub-test #1, from the diamond to the flower-like shape.</li>
- <li>The gray shape must morph from the diamond, to the flower-like shape, and then to the large, rounded diamond shape.</li>
- <li>The gray shape must morph from the lower-right pointing kite shape to the upper-left pointing kite shape.</li>
- <li>The gray shape must morph from the tall shape to the wide shape.</li>
- <li>The gray shape must morph from the wide "D" shape to the narrow "D" shape.</li>
+ <li>The gray shape must morph just like sub-test #1, from the diamond to the flower-like shape.</li>
+ <li>The gray shape must morph from the diamond, to the flower-like shape, and then to the large, rounded diamond shape.</li>
+ <li>The gray shape must morph from the lower-right pointing kite shape to the upper-left pointing kite shape.</li>
+ <li>The gray shape must morph from the tall shape to the wide shape.</li>
+ <li>The gray shape must morph from the wide "D" shape to the narrow "D" shape.</li>
</ol>
<p>In addition, during the animations whenever the gray shape has the same shape as
a reference shape, the stroke of the reference shape must be shown thicker momentarily.</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-84-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-84-t-manual.svg
index cdf35fb3700..4288f7ab356 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-84-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-84-t-manual.svg
@@ -15,17 +15,17 @@
version="$Revision: 1.6 $" testname="$RCSfile: animate-elem-84-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/animate.html#Animation">
<p>
- Test animation of color keywords that resolve to animatable RGB values.
+ Test animation of color keywords that resolve to animatable RGB values.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if five
+ The test is passed if five
black squares are shown, after two seconds, all five squares turn red and
then smoothly animate the fill color to green over the next five seconds.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-85-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-85-t-manual.svg
index cecac6a8fd6..6c09ffb3b59 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-85-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-85-t-manual.svg
@@ -15,9 +15,9 @@
version="$Revision: 1.8 $" testname="$RCSfile: animate-elem-85-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/animate.html#Animation">
<p>
- The first subtest tests animateColor with 'to' and 'from' values including
+ The first subtest tests animateColor with 'to' and 'from' values including
currentColor. The second subtest checks that the value of currentColor is the
- current animated value of the color property, by animating the color property
+ current animated value of the color property, by animating the color property
at the same time as animating fill with a 'from' or 'to' value of currentColor.
</p>
<!-- moved from accepted to issue pending verification of correct behaviour for lower rect on second subtest -->
@@ -31,9 +31,9 @@
The first subtest is passed if all
four rectangles at the top smoothly animate from black to green over 5 seconds.
During this time the bottom two rectangles must be blue.</p>
- <p>The second subtest, which starts after the first one completes, is passed if
- the bottom two rectangles smoothly animate from green (at five seconds), through
- dark cyan (at 7.5 seconds), to cyan (at 10 seconds and above). Colored circles
+ <p>The second subtest, which starts after the first one completes, is passed if
+ the bottom two rectangles smoothly animate from green (at five seconds), through
+ dark cyan (at 7.5 seconds), to cyan (at 10 seconds and above). Colored circles
indicate the appropriate colors at these times.
</p>
</d:passCriteria>
@@ -75,8 +75,8 @@
<animateColor attributeName="color" to="cyan" from="blue" begin="5s" dur="5s" fill="freeze"/>
</rect>
<!--
- color fill
- 4s #000000 #0000ff
+ color fill
+ 4s #000000 #0000ff
5s #0000ff #008000
7.5s #0080ff #008080
10s #00ffff #00ffff
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-87-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-87-t-manual.svg
index 812c98e1c5e..544ff9cd667 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-87-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-87-t-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -56,7 +56,7 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<text x='10' y='40'>Test zero value of a scale transform animation</text>
<g transform='translate(150,150)'>
@@ -73,17 +73,17 @@
</circle>
<text y='100' text-anchor='middle' font-size='12'>&lt;animateTransform type='scale' by='1'/&gt;</text>
</g>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.5 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved -->
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-88-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-88-t-manual.svg
index d523f7704e1..00c7ecacf38 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-88-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-88-t-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -16,7 +16,7 @@
This tests that any which space before semicolon separators in
a <code>values=""</code> attribute on an animation element is ignored.
</p>
- <p>
+ <p>
The test consists of a single rectangle whose height is animated
with a <code>values=" 0 ; 50 "</code> attribute.
</p>
@@ -45,7 +45,7 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<text x='10' y='40'>Test values attribute list syntax</text>
<rect x='10' y='50' width='50' height='0'>
@@ -54,14 +54,14 @@
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.6 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved --><!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-89-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-89-t-manual.svg
index 07aee20f910..fa63c97b2ff 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-89-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-89-t-manual.svg
@@ -21,13 +21,13 @@
Test possible values for 'calcMode="spline"', with both commas, whitespace, and mixed separators
</p>
<p>
- Six animations (three sets of two) have been defined. The three green ones on the left show rectangles which get smaller. The three orange ones on the right show rectangles of constant size, which move.
+ Six animations (three sets of two) have been defined. The three green ones on the left show rectangles which get smaller. The three orange ones on the right show rectangles of constant size, which move.
The black text and grey ruler lines help show the sizes and movement of the rectangles over time.
<!-- derived from animate-elem-12-t.svg: by duplicating the animated rectangles, then changing the list separators -->
</p>
- </d:testDescription>
+ </d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
+ <p>
Run the test. No interaction required.
</p>
</d:operatorScript>
@@ -60,11 +60,11 @@
<line x1="70" y1="111" x2="450" y2="111"/>
<line x1="70" y1="0" x2="450" y2="0"/>
</g>
- </g>
+ </g>
<!-- first set of three subtests, keySplines on animation element -->
<g transform="translate(60,50)">
-
+
<rect x="140" y="-10" width="50" height="210" fill="rgb(34, 139, 34)" stroke="#555" stroke-width="4">
<animate attributeName="height" calcMode="spline" keySplines="0,0,1,1;0,0,1,1;.75,0,0,.75" values="210;177;121;10" begin="0s" dur="9s" fill="freeze"/>
<!-- commas -->
@@ -78,7 +78,7 @@
<!-- commas and spaces -->
</rect>
</g>
-
+
<!-- second set of three subtests, keySplines on animateMotion element -->
<g transform="translate(250,50)">
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-elem-90-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-elem-90-b-manual.svg
index 1d0d1b08e79..55d53dd0a22 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-elem-90-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-elem-90-b-manual.svg
@@ -15,8 +15,8 @@
version="$Revision: 1.3 $" testname="$RCSfile: animate-elem-90-b.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/animate.html#Animation">
<p>
- Test that the class attribute is animatable and that style
- sheets select on the animated value.
+ Test that the class attribute is animatable and that style
+ sheets select on the animated value.
<!-- not clear whether to link to dev.w3.org or to /TR
http://dev.w3.org/SVG/profiles/1.1F2/publish/styling.html#ClassAttribute
-->
@@ -29,28 +29,28 @@ http://dev.w3.org/SVG/profiles/1.1F2/publish/styling.html#ClassAttribute
and 'animate'. It requires that CSS style sheets are supported.
</p>
<p>
- The test shows a circle which is initially hidden, becomes visible and blue at
- 3s, abruptly changing to dark red at 5s. Two overlapping animations both animate the
- class attribute. The class attribute, as a string value, does not support
- linear interpolation so a discrete animation is produced, changing from the
- start to the end value midway through the animation duration.
+ The test shows a circle which is initially hidden, becomes visible and blue at
+ 3s, abruptly changing to dark red at 5s. Two overlapping animations both animate the
+ class attribute. The class attribute, as a string value, does not support
+ linear interpolation so a discrete animation is produced, changing from the
+ start to the end value midway through the animation duration.
</p>
<p>
- The first animation starts at 2s and lasts for 4s so the mid point is at 3s.
- The second animation starts at 3s and lasts for 4s so the midpoint is at 5s.
+ The first animation starts at 2s and lasts for 4s so the mid point is at 3s.
+ The second animation starts at 3s and lasts for 4s so the midpoint is at 5s.
The file includes various guides that can be used to verify the
correctness of the animation. The value of the class attribute
- at 02 is "start" so the first CSS rule matches. At 3s it becomes "midway"
- so the second rule matches. At 5s it becomes "final midway" so the second and
- third rules match; the third rule has higher specificity so determines the fill color.
-
+ at 02 is "start" so the first CSS rule matches. At 3s it becomes "midway"
+ so the second rule matches. At 5s it becomes "final midway" so the second and
+ third rules match; the third rule has higher specificity so determines the fill color.
+
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The color of the large circle must match the colour of the smaller guide
- boxes on the left at times 0s, 3s and 5s. If the text "CSS not supported"
- is visible, the test does not apply.
+ The color of the large circle must match the colour of the smaller guide
+ boxes on the left at times 0s, 3s and 5s. If the text "CSS not supported"
+ is visible, the test does not apply.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -62,10 +62,10 @@ http://dev.w3.org/SVG/profiles/1.1F2/publish/styling.html#ClassAttribute
</font-face-src>
</font-face>
<style type="text/css">
- .start {visibility: hidden }
- .midway {visibility: visible; fill: rgb(0,0,255); }
- #test-body-content .final {fill: rgb(128,0,0); }
- .hideme {display: none;}
+ .start {visibility: hidden }
+ .midway {visibility: visible; fill: rgb(0,0,255); }
+ #test-body-content .final {fill: rgb(128,0,0); }
+ .hideme {display: none;}
</style>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-interact-events-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-interact-events-01-t-manual.svg
index a0014c5de98..6f5195aa1f9 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-interact-events-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-interact-events-01-t-manual.svg
@@ -22,9 +22,9 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Mouseover each of the red rectangles, and then click on the bottommost rectangle.
- </p>
+ <p>
+ Mouseover each of the red rectangles, and then click on the bottommost rectangle.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
@@ -52,13 +52,13 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
- <defs>
- <!-- SVGElementInstance animates fill on mouseover -->
- <rect id="rect" width="50" height="50" fill="red">
- <set attributeName="fill" begin="mouseover" end="mouseout" to="blue"/>
- </rect>
- </defs>
+
+ <defs>
+ <!-- SVGElementInstance animates fill on mouseover -->
+ <rect id="rect" width="50" height="50" fill="red">
+ <set attributeName="fill" begin="mouseover" end="mouseout" to="blue"/>
+ </rect>
+ </defs>
<text x="120" y="20" font-size="15">Shadow tree event listener chain</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-02-t-manual.svg
index 9993ec6eb08..46290190442 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-02-t-manual.svg
@@ -107,7 +107,7 @@
fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-03-t-manual.svg
index 6fff4f9bf89..90cb9e13d0c 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-03-t-manual.svg
@@ -210,7 +210,7 @@
fill="black">$Revision: 1.2 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-04-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-04-t-manual.svg
index c0a45e813f9..be6ea431007 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-04-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-interact-pevents-04-t-manual.svg
@@ -199,7 +199,7 @@
fill="black">$Revision: 1.2 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-pservers-grad-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-pservers-grad-01-b-manual.svg
index 8f0fdb9a92a..98456fb0736 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-pservers-grad-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-pservers-grad-01-b-manual.svg
@@ -20,7 +20,7 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Load the svg and wait 5 seconds for the animation to run, then compare the image to the reference.
+ Load the svg and wait 5 seconds for the animation to run, then compare the image to the reference.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/animate-script-elem-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/animate-script-elem-01-b-manual.svg
index c6da8c51bfa..4148881b45a 100644
--- a/tests/wpt/web-platform-tests/svg/import/animate-script-elem-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/animate-script-elem-01-b-manual.svg
@@ -28,7 +28,7 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
+ <p>
Run the test. No interaction required.
</p>
</d:operatorScript>
diff --git a/tests/wpt/web-platform-tests/svg/import/color-prof-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/color-prof-01-f-manual.svg
index 7211dd0b233..6919c04c044 100644
--- a/tests/wpt/web-platform-tests/svg/import/color-prof-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/color-prof-01-f-manual.svg
@@ -21,13 +21,13 @@
</p>
<!-- the issue is that SVG 1.1 does not require ICC color profile support, it is optional.
So the pass criteria are incorrect. In fact, this is untestable as the feature is purely
- optional and does not correspond to a named conformance class.
+ optional and does not correspond to a named conformance class.
Fixed in the SVG Color module.
-->
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
-
+
</p>
<p>
Run the test. No interaction required.
@@ -36,8 +36,8 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
If the two images (each of 9 colored squares) look identical, the test fails.
- If the colours in the lower right image are more saturated, brighter versions of
- those in the top left image, as shown by the reference image, the test is passed.
+ If the colours in the lower right image are more saturated, brighter versions of
+ those in the top left image, as shown by the reference image, the test is passed.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/color-prop-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/color-prop-01-b-manual.svg
index 5b7366a3bc3..ba5f10853c4 100644
--- a/tests/wpt/web-platform-tests/svg/import/color-prop-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/color-prop-01-b-manual.svg
@@ -29,7 +29,7 @@
There are three subtests. The first subtest, to the top left, is passed if the circle has a green fill. The second subtest,
to the top right, is passed if the circle has a green stroke. The third subtest shows a rectangle
with a gradient fill, which has three stops. The subtest is passed if central stop is green,
- fading off to blue to the left and pale yellow to the right.
+ fading off to blue to the left and pale yellow to the right.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/color-prop-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/color-prop-02-f-manual.svg
index 3fcc04d56fe..3f1870d6163 100644
--- a/tests/wpt/web-platform-tests/svg/import/color-prop-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/color-prop-02-f-manual.svg
@@ -16,9 +16,9 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/color.html#ColorProperty">
<p>
Tests if the color datatype is supported. There are multiple syntaxes for
- specifying the same color, such as #37F and #3377FF. This test is focussed on the
- X11 color names, which are not part of the tiny profile.
- Each group of circles uses four forms - 6-digit hex, rbg() integer form, rgb() percentage form,
+ specifying the same color, such as #37F and #3377FF. This test is focussed on the
+ X11 color names, which are not part of the tiny profile.
+ Each group of circles uses four forms - 6-digit hex, rbg() integer form, rgb() percentage form,
and named ('X11') colors. It does not use 3-digit hex, because the colors used in this test
cannot be represented in three digit form.
</p>
@@ -31,7 +31,7 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
For each of the nine groups of circles shown here, all circles must
- be identical in color, and the same color as in the reference image.
+ be identical in color, and the same color as in the reference image.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/color-prop-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/color-prop-03-t-manual.svg
index 466542ef87f..c8c9508558b 100644
--- a/tests/wpt/web-platform-tests/svg/import/color-prop-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/color-prop-03-t-manual.svg
@@ -18,7 +18,7 @@
Tests if the color datatype is supported. There are multiple syntaxes for
specifying the same color, such as #37F and #3377FF.
For each of the six groups shown here,
- each of the circles in the group uses one of the syntactical forms
+ each of the circles in the group uses one of the syntactical forms
</p>
<p>
The first row uses five forms - 3-digit hex, 6-digit hex, rbg() integer form, rgb() percentage form,
@@ -33,12 +33,12 @@ For each of the six groups shown here,
<p>
Run the test. No interaction required.
</p>
-
+
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
For each of the six groups of circles shown here, all circles must
- be identical in color, and the same color as in the reference image.
+ be identical in color, and the same color as in the reference image.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -75,7 +75,7 @@ For each of the six groups shown here,
<polygon points="345,40 365,60 345,80 325,60" fill="blue"/>
</g>
<!-- no names for three digit colors except for 00 and ff -->
- <!-- 11=17 22=34 33=51 44=68 55=85 66=102 77=119
+ <!-- 11=17 22=34 33=51 44=68 55=85 66=102 77=119
88=136 99=153 aa=170 bb=187 cc=204 dd=221 ee=238 -->
<g>
<circle cx="75" cy="135" r="20" fill="#a01"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/color-prop-04-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/color-prop-04-t-manual.svg
index e481fc99269..34521761584 100644
--- a/tests/wpt/web-platform-tests/svg/import/color-prop-04-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/color-prop-04-t-manual.svg
@@ -19,7 +19,7 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.</p>
+ <p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/conform-viewers-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/conform-viewers-02-f-manual.svg
index 53e570e77fc..70ce7f6a8cf 100644
--- a/tests/wpt/web-platform-tests/svg/import/conform-viewers-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/conform-viewers-02-f-manual.svg
@@ -45,9 +45,9 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <text x="240" y="40" text-anchor="middle">Test data uri with svgz content</text>
-
- <text fill="black" x="50%" y="200" text-anchor="middle">FAILED</text>
+ <text x="240" y="40" text-anchor="middle">Test data uri with svgz content</text>
+
+ <text fill="black" x="50%" y="200" text-anchor="middle">FAILED</text>
<image xlink:href="data:image/svg+xml;base64,H4sICA/BlksCA3N0YXIuc3ZnAMVUwW7bMAw9d8D+QVAvLeDIkiha0mDn0A7oZcMO
Wz/Aa+zUgGsHttq0+/pRTtwkwLBuwIAhcPRIihT5RCofn9bsqam2V/1zwSWTTGfT
x9nzQ9uNBb8PYfMhTbfbrdiC6Id1qqWUKfnx5ft3jOWrqh4nRLhu2lANrFkV/Hv7
diff --git a/tests/wpt/web-platform-tests/svg/import/conform-viewers-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/conform-viewers-03-f-manual.svg
index 4cfb4e7ca69..61f92bf0a1b 100644
--- a/tests/wpt/web-platform-tests/svg/import/conform-viewers-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/conform-viewers-03-f-manual.svg
@@ -57,7 +57,7 @@
/**
* Generates a 20 character string consisting of characters from the inchars parameter.
* The output string will have no repetitions of a character.
- */
+ */
function generatePrefix(inchars)
{
var ncNameStart = "_abcdefghijklmnopqrstuvwxyzåäöQWERTYUIOPÅÄÖLKJHGFDSAZXCVBNM";
@@ -74,7 +74,7 @@
return prefix;
}
- /**
+ /**
* The main body of the test.
*/
function test()
@@ -114,7 +114,7 @@
fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-dom-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-dom-01-f-manual.svg
index c254ae7a2ec..e8507d91574 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-dom-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-dom-01-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -42,27 +42,26 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
-
+
<g transform="translate(240 180)">
<g id="reference">
<circle r="40" fill="red"/>
</g>
-
+
<g id="g" transform="translate(20 20)">
<circle id="c" r="41" fill="blue"/>
</g>
- </g>
-
+ </g>
+
<script type="text/ecmascript"><![CDATA[
var eps = 1 / 65535; // 16.16 fixpoint epsilon
var passed = false;
-
+
function isequal( value, expected, epsilon )
{
return(Math.abs(value - expected) < epsilon);
}
-
+
try
{
var g = document.getElementById("g");
@@ -89,7 +88,7 @@
}
}
catch(e) {}
-
+
if(passed)
{
c.setAttribute("fill", "lime");
@@ -99,17 +98,17 @@
c.setAttribute("fill", "red");
}
]]></script>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.8 $</text>
</g>
<rect xml:id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved --><!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-dom-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-dom-02-f-manual.svg
index 42cac3b3f7a..00b56f565ea 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-dom-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-dom-02-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -42,21 +42,20 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
-
+
<g transform="translate(220 160)">
<g id="reference">
<circle r="41" fill="red" transform="translate(20 20) scale(2 1)"/>
</g>
-
+
<g id="g" transform="translate(20 20)">
<circle id="c" r="41" fill="blue"/>
</g>
- </g>
-
+ </g>
+
<script type="text/ecmascript"><![CDATA[
var passed = false;
-
+
try
{
var g = document.getElementById("g");
@@ -70,7 +69,7 @@
}
}
catch(e) {}
-
+
if(passed)
{
c.setAttribute("fill", "lime");
@@ -80,17 +79,17 @@
c.setAttribute("fill", "red");
}
]]></script>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.9 $</text>
</g>
<rect xml:id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved --><!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-dom-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-dom-04-f-manual.svg
index 9e620bc689a..da360e06739 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-dom-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-dom-04-f-manual.svg
@@ -13,7 +13,7 @@
version="$Revision: 1.5 $" testname="$RCSfile: coords-dom-04-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/coords.html#InterfaceSVGTransformList">
<p>
- The test checks the SVGTransformList.consolidate method.
+ The test checks the SVGTransformList.consolidate method.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -23,10 +23,10 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- There must be 13 green rectangles visible.
- The text next to the first rectangle must say "Scripting enabled".
- The other 12 lines must each say "Passed subtest #n" where n is the subtest number 1..12.
- If anything red shows, the test has failed.
+ There must be 13 green rectangles visible.
+ The text next to the first rectangle must say "Scripting enabled".
+ The other 12 lines must each say "Passed subtest #n" where n is the subtest number 1..12.
+ If anything red shows, the test has failed.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -41,116 +41,116 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <style>
- #test-body-content rect { stroke: black; }
- </style>
- <script type="text/ecmascript"><![CDATA[
- var pos = { "x": 20, "y": 40 };
- var subtestCounter = 1;
- var passed = true;
-
- function toString(m)
- {
- var decimals = 0;
- return m.a.toFixed(decimals) + "," +
- m.b.toFixed(decimals) + "," +
- m.c.toFixed(decimals) + "," +
- m.d.toFixed(decimals) + "," +
- m.e.toFixed(decimals) + "," +
- m.f.toFixed(decimals);
- }
-
- function referenceEqual(m1,ref,eps)
- {
- return (Math.abs(m1.a-ref[0]) < eps &&
- Math.abs(m1.b-ref[1]) < eps &&
- Math.abs(m1.c-ref[2]) < eps &&
- Math.abs(m1.d-ref[3]) < eps &&
- Math.abs(m1.e-ref[4]) < eps &&
- Math.abs(m1.f-ref[5]) < eps);
- }
-
- function assertEquals(m, ref, eps)
- {
- var result = document.createElementNS("http://www.w3.org/2000/svg", "text");
- var resultrect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
- result.setAttribute("x", pos.x);
- result.setAttribute("y", pos.y);
- resultrect.setAttribute("fill", "lime");
- resultrect.setAttribute("width", 15);
- resultrect.setAttribute("height", 15);
- resultrect.setAttribute("y", pos.y-15);
-
- if(referenceEqual(m, ref, eps))
- {
- result.textContent = "Passed subtest #" + subtestCounter;
- }
- else
- {
- passed = false;
- result.textContent = "Failed subtest #" + subtestCounter + ". Expected " + ref + " but got " + toString(m);
- }
- pos.y += 20;
- subtestCounter++;
- var results = document.getElementById("subteststatus");
- results.appendChild(resultrect)
- results.appendChild(result);
- }
-
- function test()
- {
- eps = 0.005; // "close enough"
- r = document.getElementById("r");
-
- t1 = r.transform.baseVal.getItem(0);
- t2 = r.transform.baseVal.getItem(1);
-
- // check that matrices are as specified in the markup
- assertEquals(t1.matrix, [1, 0, 0, 1, 10, 10], eps);
- assertEquals(t2.matrix, [0, 1, -1, 0, 0, 0], eps);
-
- // consolidate
- tfm = r.transform.baseVal.consolidate();
-
- // check that the consolidation is ok
- assertEquals(tfm.matrix, [0, 1, -1, 0, 10, 10], eps);
-
- // check that t1 and t2 were not affected by the consolidation
- assertEquals(t1.matrix, [1, 0, 0, 1, 10, 10], eps);
- assertEquals(t2.matrix, [0, 1, -1, 0, 0, 0], eps);
-
- // check that modifying t1 has no effect on the consolidated transform
- t1.setTranslate(10,200);
- assertEquals(t1.matrix, [1, 0, 0, 1, 10, 200], eps);
- assertEquals(tfm.matrix, [0, 1, -1, 0, 10, 10], eps);
-
- // check that modifying t2 has no effect on the consolidated transform
- t2.setRotate(-90, 0, 0);
- assertEquals(t2.matrix, [0, -1, 1, 0, 0, 0], eps);
- assertEquals(tfm.matrix, [0, 1, -1, 0, 10, 10], eps);
-
- // check that modifying the consolidated transform has no effect on the t1 and t2 transforms
- tfm.matrix.f = 400;
- assertEquals(tfm.matrix, [0, 1, -1, 0, 10, 400], eps);
- assertEquals(t1.matrix, [1, 0, 0, 1, 10, 200], eps);
- assertEquals(t2.matrix, [0, -1, 1, 0, 0, 0], eps);
-
- document.getElementById("status").setAttributeNS(null, "fill", passed ? "lime" : "red");
- document.getElementById("scriptstatus").textContent = "Scripting enabled";
- }
-
- ]]></script>
- </defs>
-
- <g transform="translate(20 -10)">
- <g id="subteststatus" transform="translate(0,40)">
- <rect id="status" y="5" width="15" height="15" fill="red"/>
- <text id="scriptstatus" y="20" x="20" >Scripting disabled</text>
- </g>
-
- <polyline id="r" fill="none" stroke="green" display="none" transform="translate(10 10) rotate(90)" points="0 0 30 40 80 -20" stroke-width="10"/>
- </g>
+ <defs>
+ <style>
+ #test-body-content rect { stroke: black; }
+ </style>
+ <script type="text/ecmascript"><![CDATA[
+ var pos = { "x": 20, "y": 40 };
+ var subtestCounter = 1;
+ var passed = true;
+
+ function toString(m)
+ {
+ var decimals = 0;
+ return m.a.toFixed(decimals) + "," +
+ m.b.toFixed(decimals) + "," +
+ m.c.toFixed(decimals) + "," +
+ m.d.toFixed(decimals) + "," +
+ m.e.toFixed(decimals) + "," +
+ m.f.toFixed(decimals);
+ }
+
+ function referenceEqual(m1,ref,eps)
+ {
+ return (Math.abs(m1.a-ref[0]) < eps &&
+ Math.abs(m1.b-ref[1]) < eps &&
+ Math.abs(m1.c-ref[2]) < eps &&
+ Math.abs(m1.d-ref[3]) < eps &&
+ Math.abs(m1.e-ref[4]) < eps &&
+ Math.abs(m1.f-ref[5]) < eps);
+ }
+
+ function assertEquals(m, ref, eps)
+ {
+ var result = document.createElementNS("http://www.w3.org/2000/svg", "text");
+ var resultrect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+ result.setAttribute("x", pos.x);
+ result.setAttribute("y", pos.y);
+ resultrect.setAttribute("fill", "lime");
+ resultrect.setAttribute("width", 15);
+ resultrect.setAttribute("height", 15);
+ resultrect.setAttribute("y", pos.y-15);
+
+ if(referenceEqual(m, ref, eps))
+ {
+ result.textContent = "Passed subtest #" + subtestCounter;
+ }
+ else
+ {
+ passed = false;
+ result.textContent = "Failed subtest #" + subtestCounter + ". Expected " + ref + " but got " + toString(m);
+ }
+ pos.y += 20;
+ subtestCounter++;
+ var results = document.getElementById("subteststatus");
+ results.appendChild(resultrect)
+ results.appendChild(result);
+ }
+
+ function test()
+ {
+ eps = 0.005; // "close enough"
+ r = document.getElementById("r");
+
+ t1 = r.transform.baseVal.getItem(0);
+ t2 = r.transform.baseVal.getItem(1);
+
+ // check that matrices are as specified in the markup
+ assertEquals(t1.matrix, [1, 0, 0, 1, 10, 10], eps);
+ assertEquals(t2.matrix, [0, 1, -1, 0, 0, 0], eps);
+
+ // consolidate
+ tfm = r.transform.baseVal.consolidate();
+
+ // check that the consolidation is ok
+ assertEquals(tfm.matrix, [0, 1, -1, 0, 10, 10], eps);
+
+ // check that t1 and t2 were not affected by the consolidation
+ assertEquals(t1.matrix, [1, 0, 0, 1, 10, 10], eps);
+ assertEquals(t2.matrix, [0, 1, -1, 0, 0, 0], eps);
+
+ // check that modifying t1 has no effect on the consolidated transform
+ t1.setTranslate(10,200);
+ assertEquals(t1.matrix, [1, 0, 0, 1, 10, 200], eps);
+ assertEquals(tfm.matrix, [0, 1, -1, 0, 10, 10], eps);
+
+ // check that modifying t2 has no effect on the consolidated transform
+ t2.setRotate(-90, 0, 0);
+ assertEquals(t2.matrix, [0, -1, 1, 0, 0, 0], eps);
+ assertEquals(tfm.matrix, [0, 1, -1, 0, 10, 10], eps);
+
+ // check that modifying the consolidated transform has no effect on the t1 and t2 transforms
+ tfm.matrix.f = 400;
+ assertEquals(tfm.matrix, [0, 1, -1, 0, 10, 400], eps);
+ assertEquals(t1.matrix, [1, 0, 0, 1, 10, 200], eps);
+ assertEquals(t2.matrix, [0, -1, 1, 0, 0, 0], eps);
+
+ document.getElementById("status").setAttributeNS(null, "fill", passed ? "lime" : "red");
+ document.getElementById("scriptstatus").textContent = "Scripting enabled";
+ }
+
+ ]]></script>
+ </defs>
+
+ <g transform="translate(20 -10)">
+ <g id="subteststatus" transform="translate(0,40)">
+ <rect id="status" y="5" width="15" height="15" fill="red"/>
+ <text id="scriptstatus" y="20" x="20" >Scripting disabled</text>
+ </g>
+
+ <polyline id="r" fill="none" stroke="green" display="none" transform="translate(10 10) rotate(90)" points="0 0 30 40 80 -20" stroke-width="10"/>
+ </g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-trans-10-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-trans-10-f-manual.svg
index b50b4c3faf0..b862af0051c 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-trans-10-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-trans-10-f-manual.svg
@@ -45,14 +45,14 @@
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<g transform="translate(40 20)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="matrix(1 0 0 1 40 20)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
@@ -60,14 +60,14 @@
</g>
<g transform="translate(0 100)">
<g transform="matrix(1 0 0 1 40 20)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="translate(40 20)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-trans-11-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-trans-11-f-manual.svg
index a5ed7d51887..501ee1cd92d 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-trans-11-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-trans-11-f-manual.svg
@@ -14,7 +14,7 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/coords.html#EstablishingANewUserSpace">
<p>
Scaling is equivalent to the matrix [sx 0 0 xy 0 0], where one unit in the X and Y directions in the new coordinate system equals 'sx' and 'sy' units in the previous coordinate system respectively.The test overlays a group of black graphics elements with a 'scale' transform specified on top of an identical group of red elements
- with the equivalent 'matrix' transform and vice versa.
+ with the equivalent 'matrix' transform and vice versa.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -41,14 +41,14 @@ Run the test. No interaction required.
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<g transform="scale(1.2 2.5)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="matrix(1.2 0 0 2.5 0 0)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
@@ -56,14 +56,14 @@ Run the test. No interaction required.
</g>
<g transform="translate(0 150)">
<g transform="matrix(1.2 0 0 2.5 0 0)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="scale(1.2 2.5)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-trans-12-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-trans-12-f-manual.svg
index b2f9b903781..6984bb1118a 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-trans-12-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-trans-12-f-manual.svg
@@ -19,7 +19,7 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -42,14 +42,14 @@
<g transform="translate(200)">
<g transform="rotate(90)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="matrix(0 1 -1 0 0 0)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
@@ -58,14 +58,14 @@
</g>
<g transform="translate(310)">
<g transform="matrix(0 1 -1 0 0 0)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="rotate(90)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-trans-13-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-trans-13-f-manual.svg
index 0dba07346e5..5638c90cf22 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-trans-13-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-trans-13-f-manual.svg
@@ -15,12 +15,12 @@
<p>
A skew transformation along the x-axis is equivalent to the matrix [1 0 tan(a) 1 0 0], which has the effect of skewing X coordinates by angle 'a'.
The test overlays a group of black graphics elements with a 'skewX' transform specified on top of an identical group of red elements
- with the equivalent 'matrix' transform and vice versa.
+ with the equivalent 'matrix' transform and vice versa.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -42,14 +42,14 @@ The test overlays a group of black graphics elements with a 'skewX' transform sp
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<g transform="skewX(45)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="matrix(1 0 1 1 0 0)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
@@ -57,14 +57,14 @@ The test overlays a group of black graphics elements with a 'skewX' transform sp
</g>
<g transform="translate(0 150)">
<g transform="matrix(1 0 1 1 0 0)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="skewX(45)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-trans-14-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-trans-14-f-manual.svg
index a224a385d6c..c05e9dad37b 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-trans-14-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-trans-14-f-manual.svg
@@ -20,7 +20,7 @@ The test overlays a group of black graphics elements with a 'skewY' transform sp
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -43,14 +43,14 @@ The test overlays a group of black graphics elements with a 'skewY' transform sp
<g transform="scale(0.75) rotate(-20)">
<g transform="skewY(45)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="matrix(1 1 0 1 0 0)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
@@ -58,14 +58,14 @@ The test overlays a group of black graphics elements with a 'skewY' transform sp
</g>
<g transform="translate(0 150)">
<g transform="matrix(1 1 0 1 0 0)" fill="red">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
<line x1="310" y1="20" x2="350" y2="70" stroke-width="5" />
</g>
<g transform="skewY(45)" fill="black" stroke="black">
- <path d="M 20 20 L 70 20 L 45 60 z" />
+ <path d="M 20 20 L 70 20 L 45 60 z" />
<ellipse cx="120" cy="35" rx="30" ry="10" />
<text x="160" y="40">Filler Text</text>
<rect x="250" y="20" width="30" height="50" />
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-transformattr-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-transformattr-01-f-manual.svg
index b3914f37c28..5d8dd8a2f41 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-transformattr-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-transformattr-01-f-manual.svg
@@ -15,7 +15,7 @@
<p>
Tests that separating transform definitions by whitespace and/or a comma is supported. The test draws a red 'rect' element with a valid, non-delimited transform list. It overlays it with an identical black rectangle with
equivalent transform list delimted by commas and numerical Unicode references of space (U+0020), tab (U+0009), carriage
- return (U+000D), line feed (U+000A), and combination of all five,
+ return (U+000D), line feed (U+000A), and combination of all five,
so that no red is visible.
</p>
</d:testDescription>
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-transformattr-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-transformattr-03-f-manual.svg
index ce5f7a7b810..08d3a6b93e9 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-transformattr-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-transformattr-03-f-manual.svg
@@ -20,7 +20,7 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.</p>
+ <p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
@@ -59,4 +59,4 @@
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-transformattr-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-transformattr-04-f-manual.svg
index 031c89e093c..8c613c756c2 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-transformattr-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-transformattr-04-f-manual.svg
@@ -14,11 +14,11 @@
<p>
Specify a series of various red graphics elements. Specify an equivalent series of black graphics elements that are defined to have dimensions
that are half the size as the red elements. Specify a 'transform' value of 'scale' with only the 'sx' value specified (i.e., 'scale(2)'). If the 'sy'
- parameter takes the same value as the 'sx', there will be no red on the page.
+ parameter takes the same value as the 'sx', there will be no red on the page.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.</p>
+ <p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
@@ -57,4 +57,4 @@
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-transformattr-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-transformattr-05-f-manual.svg
index 2f14c18ba40..4fe26e576f4 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-transformattr-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-transformattr-05-f-manual.svg
@@ -20,13 +20,13 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.</p>
+ <p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
Test passes if there is no red visible on the page.
</p>
-
+
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: coords-transformattr-05-f.svg,v $</title>
@@ -68,4 +68,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-units-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-units-02-b-manual.svg
index b83db377420..30e75209ead 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-units-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-units-02-b-manual.svg
@@ -32,7 +32,7 @@
Run the test. No interaction required.
</p>
</d:operatorScript>
- <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
+ <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
In the first two tests, that validate coordinate processing, the circles
should have the same center. In the following two tests, the rectangles should have
diff --git a/tests/wpt/web-platform-tests/svg/import/coords-viewattr-03-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/coords-viewattr-03-b-manual.svg
index 02c31605ea1..a76ba4e766e 100644
--- a/tests/wpt/web-platform-tests/svg/import/coords-viewattr-03-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/coords-viewattr-03-b-manual.svg
@@ -22,7 +22,7 @@
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
- </p>
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-background-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-background-01-f-manual.svg
index 72510dd5151..6d07c2b9607 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-background-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-background-01-f-manual.svg
@@ -16,36 +16,36 @@
Test background image processing.
</p>
<p>
- The first subtest enables background image processing and adds an empty ‘g’ element
- which invokes the ShiftBGAndBlur filter. This filter takes the current accumulated
- background image (i.e., the entire reference graphic) as input, shifts its offscreen
+ The first subtest enables background image processing and adds an empty ‘g’ element
+ which invokes the ShiftBGAndBlur filter. This filter takes the current accumulated
+ background image (i.e., the entire reference graphic) as input, shifts its offscreen
down, blurs it, and then writes the result to the canvas. Note that the offscreen for
- the filter is initialized to transparent black, which allows the already rendered
- rectangle, circle and triangle to show through after the filter renders its own
+ the filter is initialized to transparent black, which allows the already rendered
+ rectangle, circle and triangle to show through after the filter renders its own
result to the canvas.
</p>
<p>
- The second subtest enables background image processing and instead invokes the
- ShiftBGAndBlur filter on the inner ‘g’ element. The accumulated background at the
- time the filter is applied contains only the rectangle. Because the children
- of the inner ‘g’ (i.e., the circle and triangle) are not part of the inner ‘g’ element's
+ The second subtest enables background image processing and instead invokes the
+ ShiftBGAndBlur filter on the inner ‘g’ element. The accumulated background at the
+ time the filter is applied contains only the rectangle. Because the children
+ of the inner ‘g’ (i.e., the circle and triangle) are not part of the inner ‘g’ element's
background and because ShiftBGAndBlur ignores SourceGraphic, the children of the inner ‘g’
do not appear in the result.
</p>
<p>
- The third subtest enables background image processing and invokes the ShiftBGAndBlur on the
- ‘polygon’ element that draws the triangle. The accumulated background at the time the filter
- is applied contains the rectangle plus the circle ignoring the effect of the ‘opacity’
- property on the inner ‘g’ element. (Note that the blurred circle at the bottom does not
- let the rectangle show through on its left side. This is due to ignoring the effect of
- the ‘opacity’ property.) Because the triangle itself is not part of the accumulated background
+ The third subtest enables background image processing and invokes the ShiftBGAndBlur on the
+ ‘polygon’ element that draws the triangle. The accumulated background at the time the filter
+ is applied contains the rectangle plus the circle ignoring the effect of the ‘opacity’
+ property on the inner ‘g’ element. (Note that the blurred circle at the bottom does not
+ let the rectangle show through on its left side. This is due to ignoring the effect of
+ the ‘opacity’ property.) Because the triangle itself is not part of the accumulated background
and because ShiftBGAndBlur ignores SourceGraphic, the triangle does not appear in the result.
</p>
<p>
- The fourth subtest is the same as the third except that filter ShiftBGAndBlur_WithSourceGraphic is
- invoked instead of ShiftBGAndBlur. ShiftBGAndBlur_WithSourceGraphic performs the same effect as
- ShiftBGAndBlur, but then renders the SourceGraphic on top of the shifted, blurred background
- image. In this case, SourceGraphic is the blue triangle; thus, the result is the same as in
+ The fourth subtest is the same as the third except that filter ShiftBGAndBlur_WithSourceGraphic is
+ invoked instead of ShiftBGAndBlur. ShiftBGAndBlur_WithSourceGraphic performs the same effect as
+ ShiftBGAndBlur, but then renders the SourceGraphic on top of the shifted, blurred background
+ image. In this case, SourceGraphic is the blue triangle; thus, the result is the same as in
the fourth case except that the triangle now appears.
</p>
</d:testDescription>
@@ -85,7 +85,7 @@
<feOffset in="BackgroundImage" dx="0" dy="125" />
<feGaussianBlur stdDeviation="8" />
</filter>
- <filter id="ShiftBGAndBlur_WithSourceGraphic"
+ <filter id="ShiftBGAndBlur_WithSourceGraphic"
filterUnits="userSpaceOnUse" x="0" y="0" width="1200" height="400">
<desc>
This filter takes the BackgroundImage, shifts it down 125 units, blurs it,
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-blend-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-blend-01-b-manual.svg
index 685a59ee553..60f4c0ef8c4 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-blend-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-blend-01-b-manual.svg
@@ -95,14 +95,14 @@
</g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.9 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved --><!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-composite-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-composite-02-b-manual.svg
index 23e4b9adfe8..3b41144e2c8 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-composite-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-composite-02-b-manual.svg
@@ -31,7 +31,7 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
+ <p>
Run the test. No interaction required.
</p>
</d:operatorScript>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-composite-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-composite-03-f-manual.svg
index 39c9dca9e7c..d752e265a53 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-composite-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-composite-03-f-manual.svg
@@ -13,7 +13,7 @@
version="$Revision: 1.4 $" testname="$RCSfile: filters-composite-03-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/filters.html#feCompositeElement">
<p>
- Tests the arithmetic operator in feComposite.
+ Tests the arithmetic operator in feComposite.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -53,7 +53,7 @@
<feComposite operator="arithmetic" in="FillPaint" in2="StrokePaint" k1="0" k2="10" k3="20" k4="0"/>
</filter>
</defs>
-
+
<g transform="translate(100 30)">
<rect id="reference1" fill="lime" width="120" height="120"/>
<rect fill="red" stroke="red" filter="url(#composite-ident)" x="10" y="10" width="100" height="100"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-composite-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-composite-04-f-manual.svg
index 78404f10ee4..ae5b0b48607 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-composite-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-composite-04-f-manual.svg
@@ -58,7 +58,7 @@
<feComposite operator="arithmetic" in="SourceGraphic" in2="bird" k1="0" k2="0.25" k3="0.75" k4="0"/>
</filter>
</defs>
-
+
<image width="120" height="80" xlink:href="../images/tree.jpg" filter="url(#dissolve1)" transform="translate(100 80)"/>
<image width="120" height="80" xlink:href="../images/tree.jpg" filter="url(#dissolve2)" transform="translate(250 80)"/>
<image width="120" height="80" xlink:href="../images/tree.jpg" filter="url(#dissolve3)" transform="translate(100 190)"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-composite-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-composite-05-f-manual.svg
index 0d4ffe8e46a..c8384842d37 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-composite-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-composite-05-f-manual.svg
@@ -51,7 +51,7 @@
</feComposite>
</filter>
</defs>
-
+
<image id="image" width="320" height="160" xlink:href="../images/tree.jpg" filter="url(#dissolve)" transform="translate(80 80)"/>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-conv-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-conv-02-f-manual.svg
index 5912f422b73..ec5a61750f6 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-conv-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-conv-02-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -18,7 +18,7 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Run the test. No interaction required.
-
+
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -40,38 +40,38 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <filter id="convolve-without-order" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
- <feConvolveMatrix kernelMatrix="1 1 1 1 -8 1 1 1 1" preserveAlpha="true"/>
- </filter>
- <filter id="convolve-with-order1" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
- <feConvolveMatrix order="3" kernelMatrix="1 1 1 1 -8 1 1 1 1" preserveAlpha="true"/>
- </filter>
- <filter id="convolve-with-order2" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
- <feConvolveMatrix order="3 3" kernelMatrix="1 1 1 1 -8 1 1 1 1" preserveAlpha="true"/>
- </filter>
- </defs>
+ <defs>
+ <filter id="convolve-without-order" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
+ <feConvolveMatrix kernelMatrix="1 1 1 1 -8 1 1 1 1" preserveAlpha="true"/>
+ </filter>
+ <filter id="convolve-with-order1" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
+ <feConvolveMatrix order="3" kernelMatrix="1 1 1 1 -8 1 1 1 1" preserveAlpha="true"/>
+ </filter>
+ <filter id="convolve-with-order2" filterUnits="objectBoundingBox" x="0%" y="0%" width="100%" height="100%">
+ <feConvolveMatrix order="3 3" kernelMatrix="1 1 1 1 -8 1 1 1 1" preserveAlpha="true"/>
+ </filter>
+ </defs>
+
+ <text x="50%" y="3em" style="font-size:18px; text-anchor:middle">feConvolveMatrix 'order' attribute</text>
- <text x="50%" y="3em" style="font-size:18px; text-anchor:middle">feConvolveMatrix 'order' attribute</text>
+ <image x="90" y="100" width="100" height="100" xlink:href="../images/image1.jpg" filter="url(#convolve-without-order)"/>
+ <text x="135" y="220" style="font-size:9px; text-anchor:middle">without order</text>
- <image x="90" y="100" width="100" height="100" xlink:href="../images/image1.jpg" filter="url(#convolve-without-order)"/>
- <text x="135" y="220" style="font-size:9px; text-anchor:middle">without order</text>
-
- <image x="190" y="100" width="100" height="100" xlink:href="../images/image1.jpg" filter="url(#convolve-with-order1)"/>
- <text x="235" y="220" style="font-size:9px; text-anchor:middle">order="3"</text>
-
- <image x="290" y="100" width="100" height="100" xlink:href="../images/image1.jpg" filter="url(#convolve-with-order2)"/>
- <text x="335" y="220" style="font-size:9px; text-anchor:middle">order="3 3"</text>
- </g>
+ <image x="190" y="100" width="100" height="100" xlink:href="../images/image1.jpg" filter="url(#convolve-with-order1)"/>
+ <text x="235" y="220" style="font-size:9px; text-anchor:middle">order="3"</text>
+
+ <image x="290" y="100" width="100" height="100" xlink:href="../images/image1.jpg" filter="url(#convolve-with-order2)"/>
+ <text x="335" y="220" style="font-size:9px; text-anchor:middle">order="3 3"</text>
+ </g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.9 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved --><!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-conv-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-conv-03-f-manual.svg
index cb9d8448e48..99e88988d84 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-conv-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-conv-03-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -22,7 +22,7 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
+ <p>
Run the test. No interaction required.
</p>
</d:operatorScript>
@@ -48,55 +48,55 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <filter id="sharpenAnim" x="0" y="0" width="100%" height="100%">
- <feImage xlink:href="../images/stefan_252_tRNS_opti.png" result="passimg"/>
- <feConvolveMatrix in="SourceGraphic" order="3" kernelMatrix="0 -1 0
- -1 5 -1
- 0 -1 0" preserveAlpha="true">
- <set attributeName="in" to="passimg" begin="3s" fill="freeze" onbegin="runtest()"/>
- </feConvolveMatrix>
- </filter>
- <filter id="sharpenScript" x="0" y="0" width="100%" height="100%">
- <feImage xlink:href="../images/stefan_252_tRNS_opti.png" result="passimg"/>
- <feConvolveMatrix id="prim" in="SourceGraphic" order="3" kernelMatrix="0 -1 0
- -1 5 -1
- 0 -1 0" preserveAlpha="true"/>
- </filter>
+ <defs>
+ <filter id="sharpenAnim" x="0" y="0" width="100%" height="100%">
+ <feImage xlink:href="../images/stefan_252_tRNS_opti.png" result="passimg"/>
+ <feConvolveMatrix in="SourceGraphic" order="3" kernelMatrix="0 -1 0
+ -1 5 -1
+ 0 -1 0" preserveAlpha="true">
+ <set attributeName="in" to="passimg" begin="3s" fill="freeze" onbegin="runtest()"/>
+ </feConvolveMatrix>
+ </filter>
+ <filter id="sharpenScript" x="0" y="0" width="100%" height="100%">
+ <feImage xlink:href="../images/stefan_252_tRNS_opti.png" result="passimg"/>
+ <feConvolveMatrix id="prim" in="SourceGraphic" order="3" kernelMatrix="0 -1 0
+ -1 5 -1
+ 0 -1 0" preserveAlpha="true"/>
+ </filter>
+
+ <text id="pass" x="240" y="150" text-anchor="middle" font-size="30px">PASS</text>
+ </defs>
- <text id="pass" x="240" y="150" text-anchor="middle" font-size="30px">PASS</text>
- </defs>
-
- <script type="application/ecmascript">
- function runtest()
- {
- var img = document.getElementById("img");
- img.href.baseVal = "../images/stefan_252_tRNS_opti.png";
- var prim = document.getElementById("prim");
- prim.in1.baseVal = "passimg";
- }
- </script>
+ <script type="application/ecmascript">
+ function runtest()
+ {
+ var img = document.getElementById("img");
+ img.href.baseVal = "../images/stefan_252_tRNS_opti.png";
+ var prim = document.getElementById("prim");
+ prim.in1.baseVal = "passimg";
+ }
+ </script>
- <text x="50%" y="3em" style="font-size:18px; text-anchor:middle">feConvolveMatrix 'in1' DOM</text>
- <image id="img" xlink:href="../images/purplesquidj.png" x="80" y="100" width="100" height="100"/>
- <image xlink:href="../images/purplesquidj.png" x="190" y="100" width="100" height="100" filter="url(#sharpenAnim)"/>
- <image xlink:href="../images/purplesquidj.png" x="300" y="100" width="100" height="100" filter="url(#sharpenScript)"/>
- <rect x="80" y="100" width="100" height="100" stroke="black" fill="none"/>
- <rect x="190" y="100" width="100" height="100" stroke="blue" fill="none"/>
- <rect x="300" y="100" width="100" height="100" stroke="blue" fill="none"/>
- <text x="130" y="220" style="font-size:9px; text-anchor:middle">Original image</text>
- <text x="240" y="220" style="font-size:9px; text-anchor:middle">Animated filter</text>
- <text x="350" y="220" style="font-size:9px; text-anchor:middle">Scripted filter</text>
- </g>
+ <text x="50%" y="3em" style="font-size:18px; text-anchor:middle">feConvolveMatrix 'in1' DOM</text>
+ <image id="img" xlink:href="../images/purplesquidj.png" x="80" y="100" width="100" height="100"/>
+ <image xlink:href="../images/purplesquidj.png" x="190" y="100" width="100" height="100" filter="url(#sharpenAnim)"/>
+ <image xlink:href="../images/purplesquidj.png" x="300" y="100" width="100" height="100" filter="url(#sharpenScript)"/>
+ <rect x="80" y="100" width="100" height="100" stroke="black" fill="none"/>
+ <rect x="190" y="100" width="100" height="100" stroke="blue" fill="none"/>
+ <rect x="300" y="100" width="100" height="100" stroke="blue" fill="none"/>
+ <text x="130" y="220" style="font-size:9px; text-anchor:middle">Original image</text>
+ <text x="240" y="220" style="font-size:9px; text-anchor:middle">Animated filter</text>
+ <text x="350" y="220" style="font-size:9px; text-anchor:middle">Scripted filter</text>
+ </g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.8 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved --><!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-conv-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-conv-04-f-manual.svg
index e1291c03d16..90638edac34 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-conv-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-conv-04-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -76,7 +76,7 @@
more faded for each instance further to the right.
<ul>
<li>
- The first image (left most) must be a rect filled with a linear gradient that
+ The first image (left most) must be a rect filled with a linear gradient that
transitions from solid green to transparent green.
</li>
<li>The second image (second from the left) must be identical to the first image.</li>
@@ -142,7 +142,7 @@
<image x="126" y="51" width="98" height="98" xlink:href="../images/DisplaceChecker.png"/>
<image x="241" y="51" width="98" height="98" xlink:href="../images/DisplaceChecker.png"/>
<image x="356" y="51" width="98" height="98" xlink:href="../images/DisplaceChecker.png"/>
-
+
<rect fill="url(#test_linear_gradient)" stroke="black" x="10" y="50" width="100" height="100"/>
<rect fill="url(#test_linear_gradient)" stroke="black" x="125" y="50" width="100" height="100" filter="url(#convolve-without-bias)"/>
<rect fill="url(#test_linear_gradient)" stroke="black" x="240" y="50" width="100" height="100" filter="url(#convolve-with-bias05)"/>
@@ -157,7 +157,7 @@
<!-- comment out this watermark once the test is approved -->
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-conv-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-conv-05-f-manual.svg
index b60f774ee5e..78d7f300377 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-conv-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-conv-05-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -39,45 +39,45 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <filter id="emNone" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="0" y="0" width="1" height="1">
+ <defs>
+ <filter id="emNone" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="0" y="0" width="1" height="1">
<feConvolveMatrix kernelMatrix="1 1 1 1 -7 1 1 1 1" preserveAlpha="false" edgeMode="none"/>
- </filter>
- <filter id="emWrap" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="0" y="0" width="1" height="1">
- <feConvolveMatrix kernelMatrix="1 1 1 1 -7 1 1 1 1" preserveAlpha="false" edgeMode="wrap"/>
- </filter>
- <filter id="emDuplicate" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="0" y="0" width="1" height="1">
- <feConvolveMatrix kernelMatrix="1 1 1 1 -7 1 1 1 1" preserveAlpha="false" edgeMode="duplicate"/>
- </filter>
-
+ </filter>
+ <filter id="emWrap" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="0" y="0" width="1" height="1">
+ <feConvolveMatrix kernelMatrix="1 1 1 1 -7 1 1 1 1" preserveAlpha="false" edgeMode="wrap"/>
+ </filter>
+ <filter id="emDuplicate" filterUnits="objectBoundingBox" primitiveUnits="objectBoundingBox" x="0" y="0" width="1" height="1">
+ <feConvolveMatrix kernelMatrix="1 1 1 1 -7 1 1 1 1" preserveAlpha="false" edgeMode="duplicate"/>
+ </filter>
+
<g id="box">
<rect width="10" height="100" fill="blue"/>
<rect x="10" width="100" height="10" fill="yellow"/>
<rect x="110" width="10" height="100" fill="lime"/>
<rect x="10" y="90" width="100" height="10" fill="black"/>
</g>
- </defs>
+ </defs>
+
+ <text x="50%" y="3em" style="font-size:18px; text-anchor:middle">feConvolveMatrix 'edgeMode'</text>
- <text x="50%" y="3em" style="font-size:18px; text-anchor:middle">feConvolveMatrix 'edgeMode'</text>
-
<use xlink:href="#box" filter="url(#emNone)" transform="translate(40 100)"/>
<text x="100" y="220" font-size="14" text-anchor="middle">none</text>
-
+
<use xlink:href="#box" filter="url(#emWrap)" transform="translate(180 100)"/>
<text x="240" y="220" font-size="14" text-anchor="middle">wrap</text>
-
+
<use xlink:href="#box" filter="url(#emDuplicate)" transform="translate(320 100)"/>
<text x="380" y="220" font-size="14" text-anchor="middle">duplicate</text>
- </g>
+ </g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.2 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved -->
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-displace-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-displace-01-f-manual.svg
index 2ff17a780cd..b77557fcfae 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-displace-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-displace-01-f-manual.svg
@@ -52,7 +52,7 @@
<p>
The rendered image should match the reference image. The edges
of the blue rectangle must be parallel to the grid lines in the
- displaced image. The center of the bottommost right distorted image
+ displaced image. The center of the bottommost right distorted image
should be on a gridpoint.
</p>
</d:passCriteria>
@@ -100,8 +100,6 @@
<tspan x="222" y="138">(20 deg. rotation)</tspan>
</text>
-
-
<rect x="301" y="15" width="128" height="128" filter="url(#RotateMapTest)"/>
<rect x="-1" y="-1" width="2" height="2" transform="translate(365,79) rotate(20) scale(32)" fill="blue" fill-opacity="0.5"/>
<text>
@@ -110,12 +108,10 @@
<tspan x="365" y="184">rotated blue rectangle)</tspan>
</text>
-
<rect x="15" y="158" width="128" height="128" filter="url(#DispMapChecker)"/>
<rect x="20" y="258" width="118" height="20" fill="#DDD"/>
<text x="79" y="273">Checkerboard Image</text>
-
<rect x="158" y="158" width="128" height="128" filter="url(#SphereMap)"/>
<rect x="163" y="255" width="118" height="30" fill="#DDD"/>
<text>
@@ -123,7 +119,6 @@
<tspan x="222" y="283">(spherical distortion)</tspan>
</text>
-
<rect x="301" y="200" width="128" height="128" filter="url(#SphereMapTest)"/>
<text x="365" y="345">Result</text>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-displace-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-displace-02-f-manual.svg
index 1fc1d1bc519..f714b0bf628 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-displace-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-displace-02-f-manual.svg
@@ -21,7 +21,7 @@
The bottom subtest tests that not specifying the 'xChannelSelector' attribute has the same effect as if 'A' was specified.
</p>
<p>
- In both cases the filter input image consists of a gradient that is rendered using the default 'color-interpolation' which is 'sRGB'.
+ In both cases the filter input image consists of a gradient that is rendered using the default 'color-interpolation' which is 'sRGB'.
The default colorspace for filter primitives is 'linearRGB'. The filtering operation happens in 'linearRGB' space and the
result is then transformed back to 'sRGB' space for display.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-felem-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-felem-01-b-manual.svg
index 4ad95869d05..659253ec2f3 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-felem-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-felem-01-b-manual.svg
@@ -18,17 +18,17 @@
Test which verifies null filters and filter regions.
</p>
<p>
- Four subtests each consist of a small red circle overdrawn with a larger green circle.
+ Four subtests each consist of a small red circle overdrawn with a larger green circle.
Filters are applied to three of the red circles, hiding them and showing the green circle.
</p>
<p>
- The top left subtest has no filter applied to the circle, so the green circle is visible and the red one is not.
- The top right subtest applies a filter to the red circle, but there is no corresponding filter element.
+ The top left subtest has no filter applied to the circle, so the green circle is visible and the red one is not.
+ The top right subtest applies a filter to the red circle, but there is no corresponding filter element.
Thus, a null filter is applied and the red circle is not shown, allowing the green circle to be seen.
</p>
<p>
- The bottom left subtest applies an empty filter element with the default filterRegion, and the bottom right
- subtest applies an empty filter with a non-default filterRegion. In both cases where empty filters are applied,
+ The bottom left subtest applies an empty filter element with the default filterRegion, and the bottom right
+ subtest applies an empty filter with a non-default filterRegion. In both cases where empty filters are applied,
the result of the filter is a transparent black offscreen, thus showing the green circle underneath.
</p>
</d:testDescription>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-felem-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-felem-02-f-manual.svg
index ebcdac5e064..1b877867720 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-felem-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-felem-02-f-manual.svg
@@ -25,12 +25,12 @@
<p>
The test has passed if:
</p>
- <ul>
- <li>There is no red visible anywhere</li>
- <li>The first row has three green rectangles</li>
- <li>The second row has three black circles, and the middle one has more blurred edges than the other two.</li>
- <li>The third row has three green stars.</li>
- </ul>
+ <ul>
+ <li>There is no red visible anywhere</li>
+ <li>The first row has three green rectangles</li>
+ <li>The second row has three black circles, and the middle one has more blurred edges than the other two.</li>
+ <li>The third row has three green stars.</li>
+ </ul>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: filters-felem-02-f.svg,v $</title>
@@ -49,68 +49,67 @@
<filter id="usou1" primitiveUnits="userSpaceOnUse" x="0" y="0" width="100%" height="100%">
<feFlood flood-color="lime" x="25" y="25" width="50" height="50"/>
</filter>
- <filter id="obb1" primitiveUnits="objectBoundingBox" x="0" y="0" width="100%" height="100%">
+ <filter id="obb1" primitiveUnits="objectBoundingBox" x="0" y="0" width="100%" height="100%">
<feFlood flood-color="lime" x="25%" y="25%" width="50%" height="50%"/>
</filter>
- <filter id="default1" x="0" y="0" width="100%" height="100%">
+ <filter id="default1" x="0" y="0" width="100%" height="100%">
<feFlood flood-color="lime" x="25" y="25" width="50" height="50"/>
</filter>
-
- <filter id="usou2" primitiveUnits="userSpaceOnUse" x="-50%" y="-50%" width="200%" height="200%">
+
+ <filter id="usou2" primitiveUnits="userSpaceOnUse" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="0.2"/>
</filter>
- <filter id="obb2" primitiveUnits="objectBoundingBox" x="-50%" y="-50%" width="200%" height="200%">
+ <filter id="obb2" primitiveUnits="objectBoundingBox" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="0.2"/>
</filter>
- <filter id="default2" x="-50%" y="-50%" width="200%" height="200%">
+ <filter id="default2" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="0.2"/>
</filter>
-
- <filter id="usou3" primitiveUnits="userSpaceOnUse" x="-50%" y="-50%" width="200%" height="200%">
+
+ <filter id="usou3" primitiveUnits="userSpaceOnUse" x="-50%" y="-50%" width="200%" height="200%">
<feOffset dx="2" dy="2"/>
</filter>
- <filter id="obb3" filterUnits="userSpaceOnUse" primitiveUnits="objectBoundingBox" x="-50%" y="-50%" width="200%" height="200%">
+ <filter id="obb3" filterUnits="userSpaceOnUse" primitiveUnits="objectBoundingBox" x="-50%" y="-50%" width="200%" height="200%">
<feOffset dx="2" dy="2"/>
</filter>
- <filter id="default3" x="-50%" y="-50%" width="200%" height="200%">
+ <filter id="default3" x="-50%" y="-50%" width="200%" height="200%">
<feOffset dx="2" dy="2"/>
</filter>
- <polygon id="star" points="300,60 311.755,83.819 338.042,87.639 319.021,106.180 323.511,132.360 300,120 276.488,132.360 280.978,106.180 261.957,87.639 288.244,83.819 300,60 311.755,83.819"/>
-
+ <polygon id="star" points="300,60 311.755,83.819 338.042,87.639 319.021,106.180 323.511,132.360 300,120 276.488,132.360 280.978,106.180 261.957,87.639 288.244,83.819 300,60 311.755,83.819"/>
+
</defs>
-
- <g transform="translate(80 0)">
- <rect fill="red" width="50" height="50" transform="translate(25 25)"/>
- <rect fill="red" width="100" height="100" filter="url(#usou1)" transform="translate(0 0)"/>
-
- <rect fill="red" width="50" height="50" transform="translate(125 25)"/>
- <rect fill="red" width="100" height="100" filter="url(#obb1)" transform="translate(100 0)"/>
-
- <rect fill="red" width="50" height="50" transform="translate(225 25)"/>
- <rect fill="red" width="100" height="100" filter="url(#default1)" transform="translate(200 0)"/>
-
- <g transform="translate(50 40)">
- <circle r="30" filter="url(#usou2)" transform="translate(0 100)"/>
- <circle r="30" filter="url(#obb2)" transform="translate(100 100)"/>
- <circle r="30" filter="url(#default2)" transform="translate(200 100)"/>
- </g>
-
-
- <use xlink:href="#star" transform="translate(-250 150)" fill="red"/>
- <use xlink:href="#star" transform="translate(-252 148)" fill="lime" filter="url(#usou3)"/>
- <use xlink:href="#star" transform="translate(-250 150)" fill="none" stroke-width="2" stroke="lime"/>
-
- <use xlink:href="#star" transform="translate(-150 150)" fill="red"/>
- <use xlink:href="#star" transform="translate(-302 5.1)" fill="lime" filter="url(#obb3)"/>
- <use xlink:href="#star" transform="translate(-150 150)" fill="none" stroke-width="2" stroke="lime"/>
-
- <use xlink:href="#star" transform="translate(-50 150)" fill="red"/>
- <use xlink:href="#star" transform="translate(-52 148)" fill="lime" filter="url(#default3)"/>
- <use xlink:href="#star" transform="translate(-50 150)" fill="none" stroke-width="2" stroke="lime"/>
-
- </g>
+ <g transform="translate(80 0)">
+
+ <rect fill="red" width="50" height="50" transform="translate(25 25)"/>
+ <rect fill="red" width="100" height="100" filter="url(#usou1)" transform="translate(0 0)"/>
+
+ <rect fill="red" width="50" height="50" transform="translate(125 25)"/>
+ <rect fill="red" width="100" height="100" filter="url(#obb1)" transform="translate(100 0)"/>
+
+ <rect fill="red" width="50" height="50" transform="translate(225 25)"/>
+ <rect fill="red" width="100" height="100" filter="url(#default1)" transform="translate(200 0)"/>
+
+ <g transform="translate(50 40)">
+ <circle r="30" filter="url(#usou2)" transform="translate(0 100)"/>
+ <circle r="30" filter="url(#obb2)" transform="translate(100 100)"/>
+ <circle r="30" filter="url(#default2)" transform="translate(200 100)"/>
+ </g>
+
+ <use xlink:href="#star" transform="translate(-250 150)" fill="red"/>
+ <use xlink:href="#star" transform="translate(-252 148)" fill="lime" filter="url(#usou3)"/>
+ <use xlink:href="#star" transform="translate(-250 150)" fill="none" stroke-width="2" stroke="lime"/>
+
+ <use xlink:href="#star" transform="translate(-150 150)" fill="red"/>
+ <use xlink:href="#star" transform="translate(-302 5.1)" fill="lime" filter="url(#obb3)"/>
+ <use xlink:href="#star" transform="translate(-150 150)" fill="none" stroke-width="2" stroke="lime"/>
+
+ <use xlink:href="#star" transform="translate(-50 150)" fill="red"/>
+ <use xlink:href="#star" transform="translate(-52 148)" fill="lime" filter="url(#default3)"/>
+ <use xlink:href="#star" transform="translate(-50 150)" fill="none" stroke-width="2" stroke="lime"/>
+
+ </g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
@@ -124,4 +123,3 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
-
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-image-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-image-02-b-manual.svg
index ee30a730740..83adad71bad 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-image-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-image-02-b-manual.svg
@@ -13,15 +13,15 @@
version="$Revision: 1.9 $" testname="$RCSfile: filters-image-02-b.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/filters.html#feImage">
<p>
- Tests the animatability of 'xlink:href' on the 'feImage' element.
- The test will first show two blue images that should look exactly the same,
+ Tests the animatability of 'xlink:href' on the 'feImage' element.
+ The test will first show two blue images that should look exactly the same,
then after two seconds both images should simultaneously change to show two
pink images that also look exactly the same.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.
-
+ <p>Run the test. No interaction required.
+
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -58,7 +58,7 @@
<image xlink:href="../images/bluesquidj.png" x="260" y="60" width="150" height="200">
<set attributeName="xlink:href" to="../images/pinksquidj.png" begin="2s"/>
</image>
-
+
<g text-anchor="middle">
<text x="50%" y="60" font-size="30">Animation in filters</text>
<text x="145" y="220">'feImage'</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-image-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-image-03-f-manual.svg
index d8b2b92c655..149049bf3f7 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-image-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-image-03-f-manual.svg
@@ -47,7 +47,7 @@
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<defs>
<!-- A breakdown of this testcase:
-
+
All filters:
filterUnits not specified, defaults to objectBoundingBox.
x=0, y=0, width=1, height=1 -> filter region = bounding box.
@@ -65,7 +65,7 @@
2. All specified relative
x = 20.8% = 100/480 (0.2083)
- y = 0% = 0/360 (0.0)
+ y = 0% = 0/360 (0.0)
width = 10.4% = 50/480 (0.1042)
height = 13.8% = 50/360 (0.1388)
@@ -139,13 +139,13 @@
xlink:href="../images/smiley.png"/>
</filter>
</defs>
-
+
<g transform="translate(60 100)">
<rect fill="red" width="50" height="50" filter="url(#default)"/>
<rect fill="red" x="100" width="50" height="50" filter="url(#all_specified_relative)"/>
<rect fill="red" x="200" width="50" height="50" filter="url(#all_specified_absolute)"/>
<rect fill="red" x="300" width="50" height="50" filter="url(#y_specified)"/>
-
+
<rect fill="red" y="100" width="50" height="50" filter="url(#width_specified)"/>
<rect fill="red" x="100" y="100" width="50" height="50" filter="url(#height_specified)"/>
<rect fill="red" x="200" y="100" width="50" height="50" filter="url(#width_height_specified)"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-image-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-image-04-f-manual.svg
index ab2475dc400..69da73c58d3 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-image-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-image-04-f-manual.svg
@@ -80,14 +80,14 @@
xlink:href="../images/smiley.png"/>
</filter>
</defs>
-
+
<text text-anchor="middle" x="240" y="40" font-size="16">primitiveUnits = "objectBoundingBox"</text>
<g transform="translate(60 100)">
<rect fill="red" width="50" height="50" filter="url(#default)"/>
<rect fill="red" x="100" width="50" height="50" filter="url(#all_specified_relative)"/>
<rect fill="red" x="200" width="50" height="50" filter="url(#all_specified_absolute)"/>
<rect fill="red" x="300" width="50" height="50" filter="url(#y_specified)"/>
-
+
<rect fill="red" y="100" width="50" height="50" filter="url(#width_specified)"/>
<rect fill="red" x="100" y="100" width="50" height="50" filter="url(#height_specified)"/>
<rect fill="red" x="200" y="100" width="50" height="50" filter="url(#width_height_specified)"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-image-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-image-05-f-manual.svg
index eab4872dbc7..67b4a3a27de 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-image-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-image-05-f-manual.svg
@@ -23,7 +23,7 @@
<p>
This test copies coords-viewattr-02-b, substituting feImage for image.
It exercises the various preserveAspectRatio values. An external bitmap
- is referenced.
+ is referenced.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -41,73 +41,73 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <filter id="default" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png"/>
- </filter>
- <!-- Meet -->
- <filter id="xMinYMinMeet" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMin meet"/>
- </filter>
- <filter id="xMidYMinMeet" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMin meet"/>
- </filter>
- <filter id="xMaxYMinMeet" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMin meet"/>
- </filter>
- <filter id="xMinYMidMeet" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMid meet"/>
- </filter>
- <filter id="xMidYMidMeet" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMid meet"/>
- </filter>
- <filter id="xMaxYMidMeet" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMid meet"/>
- </filter>
- <filter id="xMinYMaxMeet" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMax meet"/>
- </filter>
- <filter id="xMidYMaxMeet" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMax meet"/>
- </filter>
- <filter id="xMaxYMaxMeet" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMax meet"/>
- </filter>
- <!-- Slice -->
- <filter id="xMinYMinSlice" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMin slice"/>
- </filter>
- <filter id="xMidYMinSlice" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMin slice"/>
- </filter>
- <filter id="xMaxYMinSlice" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMin slice"/>
- </filter>
- <filter id="xMinYMidSlice" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMid slice"/>
- </filter>
- <filter id="xMidYMidSlice" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMid slice"/>
- </filter>
- <filter id="xMaxYMidSlice" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMid slice"/>
- </filter>
- <filter id="xMinYMaxSlice" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMax slice"/>
- </filter>
- <filter id="xMidYMaxSlice" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMax slice"/>
- </filter>
- <filter id="xMaxYMaxSlice" x="0" y="0" width="1" height="1">
- <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMax slice"/>
- </filter>
- </defs>
+ <defs>
+ <filter id="default" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png"/>
+ </filter>
+ <!-- Meet -->
+ <filter id="xMinYMinMeet" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMin meet"/>
+ </filter>
+ <filter id="xMidYMinMeet" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMin meet"/>
+ </filter>
+ <filter id="xMaxYMinMeet" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMin meet"/>
+ </filter>
+ <filter id="xMinYMidMeet" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMid meet"/>
+ </filter>
+ <filter id="xMidYMidMeet" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMid meet"/>
+ </filter>
+ <filter id="xMaxYMidMeet" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMid meet"/>
+ </filter>
+ <filter id="xMinYMaxMeet" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMax meet"/>
+ </filter>
+ <filter id="xMidYMaxMeet" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMax meet"/>
+ </filter>
+ <filter id="xMaxYMaxMeet" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMax meet"/>
+ </filter>
+ <!-- Slice -->
+ <filter id="xMinYMinSlice" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMin slice"/>
+ </filter>
+ <filter id="xMidYMinSlice" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMin slice"/>
+ </filter>
+ <filter id="xMaxYMinSlice" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMin slice"/>
+ </filter>
+ <filter id="xMinYMidSlice" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMid slice"/>
+ </filter>
+ <filter id="xMidYMidSlice" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMid slice"/>
+ </filter>
+ <filter id="xMaxYMidSlice" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMid slice"/>
+ </filter>
+ <filter id="xMinYMaxSlice" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMinYMax slice"/>
+ </filter>
+ <filter id="xMidYMaxSlice" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMidYMax slice"/>
+ </filter>
+ <filter id="xMaxYMaxSlice" x="0" y="0" width="1" height="1">
+ <feImage xlink:href="../images/smiley.png" preserveAspectRatio="xMaxYMax slice"/>
+ </filter>
+ </defs>
<g font-size="9" transform="translate(0, 30)">
<desc>Example PreserveAspectRatio - demonstrate available options</desc>
<text text-anchor="middle" x="240" font-size="16">Test preserveAspectRatio on an feImage element.</text>
<text x="40" y="30" text-anchor="middle">Raster to fit</text>
<g transform="translate(20,40)">
- <rect fill="red" width="40" height="40" filter="url(#default)"/>
+ <rect fill="red" width="40" height="40" filter="url(#default)"/>
</g>
<text x="35.5" y="110" text-anchor="middle">Viewport 1</text>
<g transform="translate(10,120)"><rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/></g>
@@ -117,66 +117,66 @@
<text x="0" y="-20">---------- meet --------------------</text>
<g>
<text y="-5">xMin*</text>
- <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
- <rect fill="red" width="50" height="30" filter="url(#xMinYMinMeet)"/>
+ <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
+ <rect fill="red" width="50" height="30" filter="url(#xMinYMinMeet)"/>
</g>
<g transform="translate(70,0)">
<text y="-5">xMid*</text>
- <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
- <rect fill="red" width="50" height="30" filter="url(#xMidYMidMeet)"/>
+ <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
+ <rect fill="red" width="50" height="30" filter="url(#xMidYMidMeet)"/>
</g>
<g transform="translate(0,50)">
<text y="-5">xMax*</text>
- <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
- <rect fill="red" width="50" height="30" filter="url(#xMaxYMaxMeet)"/>
+ <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
+ <rect fill="red" width="50" height="30" filter="url(#xMaxYMaxMeet)"/>
</g>
</g>
<g id="meet-group-2" transform="translate(300, 50)">
<text x="0" y="-20">---------- meet ------------------------</text>
<g>
<text y="-5">*YMin</text><rect x='.5' y='.5' width='29' height='59' fill='none' stroke='blue'/>
- <rect fill="red" width="30" height="60" filter="url(#xMinYMinMeet)"/>
+ <rect fill="red" width="30" height="60" filter="url(#xMinYMinMeet)"/>
</g>
<g transform="translate(50, 0)">
<text y="-5">*YMid</text><rect x='.5' y='.5' width='29' height='59' fill='none' stroke='blue'/>
- <rect fill="red" width="30" height="60" filter="url(#xMidYMidMeet)"/>
+ <rect fill="red" width="30" height="60" filter="url(#xMidYMidMeet)"/>
</g>
<g transform="translate(100, 0)">
<text y="-5">*YMax</text><rect x='.5' y='.5' width='29' height='59' fill='none' stroke='blue'/>
- <rect fill="red" width="30" height="60" filter="url(#xMaxYMaxMeet)"/>
+ <rect fill="red" width="30" height="60" filter="url(#xMaxYMaxMeet)"/>
</g>
</g>
<g id="slice-group-1" transform="translate(120, 185)">
<text x="0" y="-20">---------- slice -------------------------</text>
<g>
<text y="-5">xMin*</text><rect x='.5' y='.5' width='29' height='59' fill='none' stroke='blue'/>
- <rect fill="red" width="30" height="60" filter="url(#xMinYMinSlice)"/>
+ <rect fill="red" width="30" height="60" filter="url(#xMinYMinSlice)"/>
</g>
<g transform="translate(50,0)">
<text y="-5">xMid*</text><rect x='.5' y='.5' width='29' height='59' fill='none' stroke='blue'/>
- <rect fill="red" width="30" height="60" filter="url(#xMidYMidSlice)"/>
+ <rect fill="red" width="30" height="60" filter="url(#xMidYMidSlice)"/>
</g>
<g transform="translate(100,0)">
<text y="-5">xMax*</text><rect x='.5' y='.5' width='29' height='59' fill='none' stroke='blue'/>
- <rect fill="red" width="30" height="60" filter="url(#xMaxYMaxSlice)"/>
+ <rect fill="red" width="30" height="60" filter="url(#xMaxYMaxSlice)"/>
</g>
</g>
<g id="slide-group-2" transform="translate(300, 155) translate(0, 30)">
<text x="0" y="-20">---------- slice ---------------------</text>
<g>
<text y="-5">*YMin</text>
- <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
- <rect fill="red" width="50" height="30" filter="url(#xMinYMinSlice)"/>
+ <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
+ <rect fill="red" width="50" height="30" filter="url(#xMinYMinSlice)"/>
</g>
<g transform="translate(70,0)">
<text y="-5">*YMid</text>
- <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
- <rect fill="red" width="50" height="30" filter="url(#xMidYMidSlice)"/>
+ <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
+ <rect fill="red" width="50" height="30" filter="url(#xMidYMidSlice)"/>
</g>
<g transform="translate(0,50)">
<text y="-5">*YMax</text>
- <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
- <rect fill="red" width="50" height="30" filter="url(#xMaxYMaxSlice)"/>
+ <rect x='.5' y='.5' width='49' height='29' fill='none' stroke='blue'/>
+ <rect fill="red" width="50" height="30" filter="url(#xMaxYMaxSlice)"/>
</g>
</g>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-light-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-light-02-f-manual.svg
index c5b61328e00..2ff25c19220 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-light-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-light-02-f-manual.svg
@@ -26,7 +26,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test has passed if the shaded arcs are displayed only on the side indicated by the arrows.
+ The test has passed if the shaded arcs are displayed only on the side indicated by the arrows.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -62,12 +62,12 @@
<feDistantLight azimuth="270" elevation="30"/>
</feSpecularLighting>
</filter>
-
+
<marker id="arrow" markerWidth="10" markerHeight="10" viewBox="0 0 10 40" overflow="visible" orient="auto">
<path d="M-1 5l10 -5l-10 -5z"/>
</marker>
</defs>
-
+
<text x="50%" y="3em" style="font-size:18px; text-anchor:middle">'feDistantLight' azimuth</text>
<g transform="scale(4) translate(0 50)">
@@ -81,7 +81,7 @@
<line marker-end="url(#arrow)" x1="0" y1="-25" x2="0" y2="25" stroke="black" stroke-width="3" transform="rotate(90) translate(200 -350)"/>
<line marker-end="url(#arrow)" x1="0" y1="-25" x2="0" y2="25" stroke="black" stroke-width="3" transform="rotate(180) translate(-440 -225)"/>
<line marker-end="url(#arrow)" x1="0" y1="-25" x2="0" y2="25" stroke="black" stroke-width="3" transform="rotate(270) translate(-200 50)"/>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-light-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-light-03-f-manual.svg
index 65238a99f8f..f12c580f66f 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-light-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-light-03-f-manual.svg
@@ -52,7 +52,7 @@ You should see some shapes that have a black border, three circles and three rec
<defs>
<filter id="light-primobjbbox" primitiveUnits="objectBoundingBox">
<feSpecularLighting lighting-color="blue" surfaceScale="5" specularConstant="10" specularExponent="6">
- <!-- Note: for z this assumes that the scalefactor is
+ <!-- Note: for z this assumes that the scalefactor is
sqrt(bbox.width*bbox.width + bbox.height*bbox.height)/sqrt(2) -->
<fePointLight x="0.875" y="0.875" z="-0.0625"/>
</feSpecularLighting>
@@ -86,7 +86,7 @@ You should see some shapes that have a black border, three circles and three rec
<rect width="40" height="20" filter="url(#light-primobjbbox-rect)" fill="black" transform="translate(-20 60)"/>
<rect width="40" height="20" fill="none" transform="translate(-20 60)"/>
<text y="100" font-size="8" stroke="none" text-anchor="middle">primitiveUnits="objectBoundingBox"</text>
- <circle cx="30" cy="30" r="5" fill="white"/>
+ <circle cx="30" cy="30" r="5" fill="white"/>
</g>
<g stroke="black" transform="translate(245 100)">
@@ -121,4 +121,3 @@ You should see some shapes that have a black border, three circles and three rec
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
-
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-light-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-light-04-f-manual.svg
index 807380cf8d1..c3ef143f7a3 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-light-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-light-04-f-manual.svg
@@ -29,8 +29,8 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The rendered image should look approximately like the reference image, and the third rectangle from the left
- in each row must be animated.
+ The rendered image should look approximately like the reference image, and the third rectangle from the left
+ in each row must be animated.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -65,7 +65,7 @@
<filter id="spotLightC" filterUnits="objectBoundingBox" x="0" y="0" width="1" height="1">
<feDiffuseLighting in="SourceGraphic" diffuseConstant="1" surfaceScale="10" lighting-color="white">
<feSpotLight x="25" y="0" z="35" pointsAtX="25" pointsAtY="30" pointsAtZ="0" specularExponent="0" limitingConeAngle="0">
- <animate attributeName="limitingConeAngle" from="0" to="50" dur="10s" fill="freeze"/>
+ <animate attributeName="limitingConeAngle" from="0" to="50" dur="10s" fill="freeze"/>
</feSpotLight>
</feDiffuseLighting>
</filter>
@@ -87,7 +87,7 @@
<filter id="spotLightG" filterUnits="objectBoundingBox" x="0" y="0" width="1" height="1">
<feDiffuseLighting in="SourceGraphic" diffuseConstant="1" surfaceScale="10" lighting-color="white">
<feSpotLight x="25" y="0" z="35" pointsAtX="25" pointsAtY="30" pointsAtZ="0" specularExponent="0" limitingConeAngle="0">
- <animate attributeName="limitingConeAngle" from="0" to="-50" dur="10s" fill="freeze"/>
+ <animate attributeName="limitingConeAngle" from="0" to="-50" dur="10s" fill="freeze"/>
</feSpotLight>
</feDiffuseLighting>
</filter>
@@ -99,29 +99,29 @@
</defs>
<!-- feSpotLight -->
<g transform="translate(0 -20)">
- <g transform="translate(0 110)" font-size="9" font-family="Arial">
- <text x="70" y="30">30</text>
- <text x="165" y="30">20</text>
- <text x="260" y="30">Animated (0..50)</text>
- <text x="355" y="30">5</text>
- <g transform="translate(0 100)">
- <text x="70" y="30">-30</text>
- <text x="165" y="30">-20</text>
- <text x="260" y="30">Animated (0..-50)</text>
- <text x="355" y="30">-5</text>
- </g>
- </g>
- <g>
- <rect transform="translate(70, 145)" width="50" height="30" filter="url(#spotLightA)"/>
- <rect transform="translate(165, 145)" width="50" height="30" filter="url(#spotLightB)"/>
- <rect transform="translate(260, 145)" width="50" height="30" filter="url(#spotLightC)"/>
- <rect transform="translate(355, 145)" width="50" height="30" filter="url(#spotLightD)"/>
- <rect transform="translate(70, 245)" width="50" height="30" filter="url(#spotLightE)"/>
- <rect transform="translate(165, 245)" width="50" height="30" filter="url(#spotLightF)"/>
- <rect transform="translate(260, 245)" width="50" height="30" filter="url(#spotLightG)"/>
- <rect transform="translate(355, 245)" width="50" height="30" filter="url(#spotLightH)"/>
- </g>
- </g>
+ <g transform="translate(0 110)" font-size="9" font-family="Arial">
+ <text x="70" y="30">30</text>
+ <text x="165" y="30">20</text>
+ <text x="260" y="30">Animated (0..50)</text>
+ <text x="355" y="30">5</text>
+ <g transform="translate(0 100)">
+ <text x="70" y="30">-30</text>
+ <text x="165" y="30">-20</text>
+ <text x="260" y="30">Animated (0..-50)</text>
+ <text x="355" y="30">-5</text>
+ </g>
+ </g>
+ <g>
+ <rect transform="translate(70, 145)" width="50" height="30" filter="url(#spotLightA)"/>
+ <rect transform="translate(165, 145)" width="50" height="30" filter="url(#spotLightB)"/>
+ <rect transform="translate(260, 145)" width="50" height="30" filter="url(#spotLightC)"/>
+ <rect transform="translate(355, 145)" width="50" height="30" filter="url(#spotLightD)"/>
+ <rect transform="translate(70, 245)" width="50" height="30" filter="url(#spotLightE)"/>
+ <rect transform="translate(165, 245)" width="50" height="30" filter="url(#spotLightF)"/>
+ <rect transform="translate(260, 245)" width="50" height="30" filter="url(#spotLightG)"/>
+ <rect transform="translate(355, 245)" width="50" height="30" filter="url(#spotLightH)"/>
+ </g>
+ </g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.4 $</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-light-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-light-05-f-manual.svg
index 339837efe44..3712ef1c99a 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-light-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-light-05-f-manual.svg
@@ -236,7 +236,7 @@
<text x="305" y="290" font-size="10" stroke="none" fill="black">270 deg</text>
<text x="365" y="290" font-size="10" stroke="none" fill="black">180 deg</text>
<text x="430" y="290" font-size="10" stroke="none" fill="black">0 deg</text>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-offset-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-offset-01-b-manual.svg
index d00ad44a687..425564b5ab1 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-offset-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-offset-01-b-manual.svg
@@ -83,7 +83,7 @@
<circle cx="160" cy="50" r="40" fill="#000" filter="url(#FOMTest)"/>
- <!-- Add some crosshairs of the same color of the
+ <!-- Add some crosshairs of the same color of the
flood at the same location as the offset -->
<!-- 20 pixel cross hair at 120,90 -->
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-offset-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-offset-02-b-manual.svg
index bb933b9e2a7..6ec08a75dbc 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-offset-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-offset-02-b-manual.svg
@@ -13,20 +13,20 @@
version="$Revision: 1.4 $" testname="$RCSfile: filters-offset-02-b.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/filters.html">
<p>
- Tests primitiveUnits="objectBoundingBox" and relative values.
+ Tests primitiveUnits="objectBoundingBox" and relative values.
There should be three green rectangles with thick black stroke.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Run the test. No interaction required.
-
+
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test has passed if there is nothing red visible and there are three
- green rectangles with black stroke. If any green is visible outside the
- black stroked rectangles the test has failed.
+ The test has passed if there is nothing red visible and there are three
+ green rectangles with black stroke. If any green is visible outside the
+ black stroked rectangles the test has failed.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -44,30 +44,30 @@ There should be three green rectangles with thick black stroke.
<defs>
<filter id="feoffset1" primitiveUnits="objectBoundingBox" x="0%" y="0%" width="200%" height="200%">
- <feFlood width="100%" height="100%" flood-color="lime"/>
+ <feFlood width="100%" height="100%" flood-color="lime"/>
<feOffset dx="0.1" dy="0.2"/>
</filter>
- <filter id="feoffset2" primitiveUnits="objectBoundingBox" x="0%" y="0%" width="200%" height="200%">
- <feOffset dx="1" dy="1"/>
+ <filter id="feoffset2" primitiveUnits="objectBoundingBox" x="0%" y="0%" width="200%" height="200%">
+ <feOffset dx="1" dy="1"/>
</filter>
- <filter id="feoffset3" primitiveUnits="objectBoundingBox" x="-100%" y="0%" width="200%" height="100%">
- <feOffset dx="-1"/>
+ <filter id="feoffset3" primitiveUnits="objectBoundingBox" x="-100%" y="0%" width="200%" height="100%">
+ <feOffset dx="-1"/>
</filter>
</defs>
-
- <g transform="translate(-10 60)">
- <rect x="60" y="70" width="100" height="100" fill="red"/>
- <rect x="50" y="50" width="100" height="100" fill="red" filter="url(#feoffset1)"/>
- <rect x="60" y="70" width="100" height="100" fill="none" stroke="black" stroke-width="2"/>
- <rect x="200" y="70" width="100" height="100" fill="red"/>
- <rect x="100" y="-30" width="100" height="100" fill="lime" filter="url(#feoffset2)"/>
- <rect x="200" y="70" width="100" height="100" fill="none" stroke="black" stroke-width="2"/>
+ <g transform="translate(-10 60)">
+ <rect x="60" y="70" width="100" height="100" fill="red"/>
+ <rect x="50" y="50" width="100" height="100" fill="red" filter="url(#feoffset1)"/>
+ <rect x="60" y="70" width="100" height="100" fill="none" stroke="black" stroke-width="2"/>
+
+ <rect x="200" y="70" width="100" height="100" fill="red"/>
+ <rect x="100" y="-30" width="100" height="100" fill="lime" filter="url(#feoffset2)"/>
+ <rect x="200" y="70" width="100" height="100" fill="none" stroke="black" stroke-width="2"/>
- <rect x="340" y="70" width="100" height="100" fill="red"/>
- <rect x="440" y="70" width="100" height="100" fill="lime" filter="url(#feoffset3)"/>
- <rect x="340" y="70" width="100" height="100" fill="none" stroke="black" stroke-width="2"/>
- </g>
+ <rect x="340" y="70" width="100" height="100" fill="red"/>
+ <rect x="440" y="70" width="100" height="100" fill="lime" filter="url(#feoffset3)"/>
+ <rect x="340" y="70" width="100" height="100" fill="none" stroke="black" stroke-width="2"/>
+ </g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
@@ -80,4 +80,4 @@ There should be three green rectangles with thick black stroke.
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-overview-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-overview-02-b-manual.svg
index 89f48d75c8e..5d67d420645 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-overview-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-overview-02-b-manual.svg
@@ -1,178 +1,178 @@
-<svg version="1.1" baseProfile="basic" id="svg-root"
- width="100%" height="100%" viewBox="0 0 480 360"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!--======================================================================-->
- <!--= SVG 1.1 2nd Edition Test Case =-->
- <!--======================================================================-->
- <!--= Copyright 2009 World Wide Web Consortium, (Massachusetts =-->
- <!--= Institute of Technology, European Research Consortium for =-->
- <!--= Informatics and Mathematics (ERCIM), Keio University). =-->
- <!--= All Rights Reserved. =-->
- <!--= See http://www.w3.org/Consortium/Legal/. =-->
- <!--======================================================================-->
- <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
- template-version="1.4" reviewer="CL" author="BB" status="created"
- version="$Revision: 1.1 $" testname="$RCSfile: filters-overview-02-b.svg,v $">
- <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/filters.html#FilterPrimitivesOverview">
- <p>
- The purpose of this file is to test the 'in' attribute on filter primitives.
- This test is the same as filters-overview-01-b.svg but uses gradients with gradientUnits="userSpaceOnUse" instead for the
- FillPaint/StrokePaint.
- </p>
- </d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Run the test. No interaction required.
- </p>
- </d:operatorScript>
- <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
- <p>
- To pass this test, the UA must render all 6 cases (SourceGraphic, SourceAlpha, BackgroundImage, BackgroundAlpha, FillPaint, StrokePaint) correctly.
- </p>
- <ol>
- <li>The result for in="SourceGraphic" is a non blurred vertical rectangle (green with dashed stroke) overlayed with three blurred circles (red/green/blue with dashed stroke).</li>
- <li>The result for in="SourceAlpha" is a non blurred vertical rectangle (green with dashed stroke) overlayed with three blurred circles (dark gray with dashed stroke).</li>
- <li>The result for in="BackgroundImage" is a blurred vertical rectangle (green with dashed stroke).</li>
- <li>The result for in="BackgroundAlpha" is blurred vertical rectangle (dark gray with dashed stroke).</li>
- <li>The results for in="FillPaint" and in="StrokePaint" are the same. They consists of a non blurred vertical rectangle (green with dashed stroke) overlayed with a blurred gradiant (blue/white/red/yellow).</li>
- <li>The size of the gradients are bigger than the blurred circles.</li>
- </ol>
- </d:passCriteria>
- </d:SVGTestCase>
- <title id="test-title">$RCSfile: filters-overview-02-b.svg,v $</title>
- <defs>
- <font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
- <font-face-src>
- <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
- </font-face-src>
- </font-face>
- </defs>
- <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <linearGradient id="grad1" gradientUnits="userSpaceOnUse" x1="140.5" y1="57.75" x2="140.5" y2="139.5">
- <stop offset="0.00" stop-color="#0000ff"/>
- <stop offset="0.33" stop-color="#ffffff"/>
- <stop offset="0.67" stop-color="#ff0000"/>
- <stop offset="1.00" stop-color="#ffff00"/>
- </linearGradient>
-
- <linearGradient id="grad2" gradientUnits="userSpaceOnUse" x1="140.5" y1="192.75" x2="140.5" y2="274.5">
- <stop offset="0.00" stop-color="#0000ff"/>
- <stop offset="0.33" stop-color="#ffffff"/>
- <stop offset="0.67" stop-color="#ff0000"/>
- <stop offset="1.00" stop-color="#ffff00"/>
- </linearGradient>
-
- <filter id="GaussianBlur1" filterUnits="objectBoundingBox" x="-20%" y="-20%" width="140%" height="140%">
- <feGaussianBlur in="SourceAlpha" stdDeviation="2"/>
- </filter>
-
- <filter id="GaussianBlur2" filterUnits="objectBoundingBox" x="-20%" y="-20%" width="140%" height="140%">
- <feGaussianBlur in="SourceGraphic" stdDeviation="2"/>
- </filter>
-
- <filter id="GaussianBlur3" filterUnits="objectBoundingBox" x="-30%" y="-30%" width="160%" height="160%">
- <feFlood flood-color="white" result="flood"/>
- <feGaussianBlur in="BackgroundAlpha" stdDeviation="2" result="blur"/>
- <feMerge>
- <feMergeNode in="flood"/>
- <feMergeNode in="blur"/>
- </feMerge>
- </filter>
-
- <filter id="GaussianBlur4" filterUnits="objectBoundingBox" x="-40%" y="-40%" width="180%" height="180%">
- <feFlood flood-color="white" result="flood"/>
- <feGaussianBlur in="BackgroundImage" stdDeviation="2" result="blur"/>
- <feMerge>
- <feMergeNode in="flood"/>
- <feMergeNode in="blur"/>
- </feMerge>
- </filter>
-
- <filter id="GaussianBlur5" filterUnits="objectBoundingBox" x="-20%" y="-20%" width="140%" height="140%">
- <feGaussianBlur in="StrokePaint" stdDeviation="5"/>
- </filter>
-
- <filter id="GaussianBlur6" filterUnits="objectBoundingBox" x="-20%" y="-20%" width="140%" height="140%">
- <feGaussianBlur in="FillPaint" stdDeviation="5"/>
- </filter>
- </defs>
-
- <g enable-background="new" stroke-dasharray="25 5" stroke="black" stroke-width="3" font-size="14" fill="black">
-
- <rect x="90" y="50" width="16" height="95" fill="green"/>
- <g fill-opacity="0.6" stroke="black" stroke-width="3" filter="url(#GaussianBlur1)">
- <circle cx="098" cy="085" r="25" fill="red"/>
- <circle cx="080" cy="110" r="25" fill="blue"/>
- <circle cx="116" cy="110" r="25" fill="green"/>
- </g>
- <text x="98" y="160" stroke="none" text-anchor="middle">SourceAlpha</text>
-
- <desc> =========================================================================================== </desc>
-
- <rect x="90" y="185" width="16" height="95" fill="green"/>
- <g fill-opacity="0.6" stroke="black" stroke-width="3" filter="url(#GaussianBlur2)">
- <circle cx="098" cy="220" r="25" fill="red"/>
- <circle cx="080" cy="245" r="25" fill="blue"/>
- <circle cx="116" cy="245" r="25" fill="green"/>
- </g>
- <text x="98" y="295" stroke="none" text-anchor="middle">SourceGraphic</text>
-
- <desc> =========================================================================================== </desc>
-
- <rect x="230" y="50" width="16" height="95" fill="green"/>
- <g fill-opacity="0.6" stroke="black" stroke-width="3" filter="url(#GaussianBlur3)">
- <circle cx="238" cy="085" r="25" fill="red"/>
- <circle cx="220" cy="110" r="25" fill="blue"/>
- <circle cx="256" cy="110" r="25" fill="green"/>
- </g>
- <text x="238" y="160" stroke="none" text-anchor="middle">BackgroundAlpha</text>
-
- <desc> =========================================================================================== </desc>
-
- <rect x="230" y="185" width="16" height="95" fill="green"/>
- <g fill-opacity="0.6" stroke="black" stroke-width="3" filter="url(#GaussianBlur4)">
- <circle cx="238" cy="220" r="25" fill="red"/>
- <circle cx="220" cy="245" r="25" fill="blue"/>
- <circle cx="256" cy="245" r="25" fill="green"/>
- </g>
- <text x="238" y="295" stroke="none" text-anchor="middle">BackgroundImage</text>
-
- <desc> =========================================================================================== </desc>
-
- <rect x="370" y="50" width="16" height="95" fill="green"/>
- <!-- bbox: 335 60 86 75 -->
- <g stroke-opacity="0.6" stroke="url(#grad1)" stroke-width="3" filter="url(#GaussianBlur5)">
- <circle cx="378" cy="085" r="25" fill="red"/>
- <circle cx="360" cy="110" r="25" fill="blue"/>
- <circle cx="396" cy="110" r="25" fill="green"/>
- </g>
- <text x="378" y="160" stroke="none" text-anchor="middle">FillPaint</text>
-
- <desc> =========================================================================================== </desc>
-
- <rect x="370" y="185" width="16" height="95" fill="green"/>
- <!-- bbox: 335 195 86 75 -->
- <g fill-opacity="0.6" fill="url(#grad2)" stroke="black" stroke-width="3" filter="url(#GaussianBlur6)">
- <circle cx="378" cy="220" r="25"/>
- <circle cx="360" cy="245" r="25"/>
- <circle cx="396" cy="245" r="25"/>
- </g>
- <text x="378" y="295" stroke="none" text-anchor="middle">StrokePaint</text>
-
- </g>
-
- <text x="240" y="30" font-size="20" text-anchor="middle">Filter input test</text>
-
- </g>
- <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.1 $</text>
- </g>
- <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
- <!-- comment out this watermark once the test is approved -->
- <g id="draft-watermark">
- <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
- text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
- </g>
-</svg>
+<svg version="1.1" baseProfile="basic" id="svg-root"
+ width="100%" height="100%" viewBox="0 0 480 360"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!--======================================================================-->
+ <!--= SVG 1.1 2nd Edition Test Case =-->
+ <!--======================================================================-->
+ <!--= Copyright 2009 World Wide Web Consortium, (Massachusetts =-->
+ <!--= Institute of Technology, European Research Consortium for =-->
+ <!--= Informatics and Mathematics (ERCIM), Keio University). =-->
+ <!--= All Rights Reserved. =-->
+ <!--= See http://www.w3.org/Consortium/Legal/. =-->
+ <!--======================================================================-->
+ <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
+ template-version="1.4" reviewer="CL" author="BB" status="created"
+ version="$Revision: 1.1 $" testname="$RCSfile: filters-overview-02-b.svg,v $">
+ <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/filters.html#FilterPrimitivesOverview">
+ <p>
+ The purpose of this file is to test the 'in' attribute on filter primitives.
+ This test is the same as filters-overview-01-b.svg but uses gradients with gradientUnits="userSpaceOnUse" instead for the
+ FillPaint/StrokePaint.
+ </p>
+ </d:testDescription>
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <p>
+ Run the test. No interaction required.
+ </p>
+ </d:operatorScript>
+ <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
+ <p>
+ To pass this test, the UA must render all 6 cases (SourceGraphic, SourceAlpha, BackgroundImage, BackgroundAlpha, FillPaint, StrokePaint) correctly.
+ </p>
+ <ol>
+ <li>The result for in="SourceGraphic" is a non blurred vertical rectangle (green with dashed stroke) overlayed with three blurred circles (red/green/blue with dashed stroke).</li>
+ <li>The result for in="SourceAlpha" is a non blurred vertical rectangle (green with dashed stroke) overlayed with three blurred circles (dark gray with dashed stroke).</li>
+ <li>The result for in="BackgroundImage" is a blurred vertical rectangle (green with dashed stroke).</li>
+ <li>The result for in="BackgroundAlpha" is blurred vertical rectangle (dark gray with dashed stroke).</li>
+ <li>The results for in="FillPaint" and in="StrokePaint" are the same. They consists of a non blurred vertical rectangle (green with dashed stroke) overlayed with a blurred gradiant (blue/white/red/yellow).</li>
+ <li>The size of the gradients are bigger than the blurred circles.</li>
+ </ol>
+ </d:passCriteria>
+ </d:SVGTestCase>
+ <title id="test-title">$RCSfile: filters-overview-02-b.svg,v $</title>
+ <defs>
+ <font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
+ </font-face-src>
+ </font-face>
+ </defs>
+ <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
+ <defs>
+ <linearGradient id="grad1" gradientUnits="userSpaceOnUse" x1="140.5" y1="57.75" x2="140.5" y2="139.5">
+ <stop offset="0.00" stop-color="#0000ff"/>
+ <stop offset="0.33" stop-color="#ffffff"/>
+ <stop offset="0.67" stop-color="#ff0000"/>
+ <stop offset="1.00" stop-color="#ffff00"/>
+ </linearGradient>
+
+ <linearGradient id="grad2" gradientUnits="userSpaceOnUse" x1="140.5" y1="192.75" x2="140.5" y2="274.5">
+ <stop offset="0.00" stop-color="#0000ff"/>
+ <stop offset="0.33" stop-color="#ffffff"/>
+ <stop offset="0.67" stop-color="#ff0000"/>
+ <stop offset="1.00" stop-color="#ffff00"/>
+ </linearGradient>
+
+ <filter id="GaussianBlur1" filterUnits="objectBoundingBox" x="-20%" y="-20%" width="140%" height="140%">
+ <feGaussianBlur in="SourceAlpha" stdDeviation="2"/>
+ </filter>
+
+ <filter id="GaussianBlur2" filterUnits="objectBoundingBox" x="-20%" y="-20%" width="140%" height="140%">
+ <feGaussianBlur in="SourceGraphic" stdDeviation="2"/>
+ </filter>
+
+ <filter id="GaussianBlur3" filterUnits="objectBoundingBox" x="-30%" y="-30%" width="160%" height="160%">
+ <feFlood flood-color="white" result="flood"/>
+ <feGaussianBlur in="BackgroundAlpha" stdDeviation="2" result="blur"/>
+ <feMerge>
+ <feMergeNode in="flood"/>
+ <feMergeNode in="blur"/>
+ </feMerge>
+ </filter>
+
+ <filter id="GaussianBlur4" filterUnits="objectBoundingBox" x="-40%" y="-40%" width="180%" height="180%">
+ <feFlood flood-color="white" result="flood"/>
+ <feGaussianBlur in="BackgroundImage" stdDeviation="2" result="blur"/>
+ <feMerge>
+ <feMergeNode in="flood"/>
+ <feMergeNode in="blur"/>
+ </feMerge>
+ </filter>
+
+ <filter id="GaussianBlur5" filterUnits="objectBoundingBox" x="-20%" y="-20%" width="140%" height="140%">
+ <feGaussianBlur in="StrokePaint" stdDeviation="5"/>
+ </filter>
+
+ <filter id="GaussianBlur6" filterUnits="objectBoundingBox" x="-20%" y="-20%" width="140%" height="140%">
+ <feGaussianBlur in="FillPaint" stdDeviation="5"/>
+ </filter>
+ </defs>
+
+ <g enable-background="new" stroke-dasharray="25 5" stroke="black" stroke-width="3" font-size="14" fill="black">
+
+ <rect x="90" y="50" width="16" height="95" fill="green"/>
+ <g fill-opacity="0.6" stroke="black" stroke-width="3" filter="url(#GaussianBlur1)">
+ <circle cx="098" cy="085" r="25" fill="red"/>
+ <circle cx="080" cy="110" r="25" fill="blue"/>
+ <circle cx="116" cy="110" r="25" fill="green"/>
+ </g>
+ <text x="98" y="160" stroke="none" text-anchor="middle">SourceAlpha</text>
+
+ <desc> =========================================================================================== </desc>
+
+ <rect x="90" y="185" width="16" height="95" fill="green"/>
+ <g fill-opacity="0.6" stroke="black" stroke-width="3" filter="url(#GaussianBlur2)">
+ <circle cx="098" cy="220" r="25" fill="red"/>
+ <circle cx="080" cy="245" r="25" fill="blue"/>
+ <circle cx="116" cy="245" r="25" fill="green"/>
+ </g>
+ <text x="98" y="295" stroke="none" text-anchor="middle">SourceGraphic</text>
+
+ <desc> =========================================================================================== </desc>
+
+ <rect x="230" y="50" width="16" height="95" fill="green"/>
+ <g fill-opacity="0.6" stroke="black" stroke-width="3" filter="url(#GaussianBlur3)">
+ <circle cx="238" cy="085" r="25" fill="red"/>
+ <circle cx="220" cy="110" r="25" fill="blue"/>
+ <circle cx="256" cy="110" r="25" fill="green"/>
+ </g>
+ <text x="238" y="160" stroke="none" text-anchor="middle">BackgroundAlpha</text>
+
+ <desc> =========================================================================================== </desc>
+
+ <rect x="230" y="185" width="16" height="95" fill="green"/>
+ <g fill-opacity="0.6" stroke="black" stroke-width="3" filter="url(#GaussianBlur4)">
+ <circle cx="238" cy="220" r="25" fill="red"/>
+ <circle cx="220" cy="245" r="25" fill="blue"/>
+ <circle cx="256" cy="245" r="25" fill="green"/>
+ </g>
+ <text x="238" y="295" stroke="none" text-anchor="middle">BackgroundImage</text>
+
+ <desc> =========================================================================================== </desc>
+
+ <rect x="370" y="50" width="16" height="95" fill="green"/>
+ <!-- bbox: 335 60 86 75 -->
+ <g stroke-opacity="0.6" stroke="url(#grad1)" stroke-width="3" filter="url(#GaussianBlur5)">
+ <circle cx="378" cy="085" r="25" fill="red"/>
+ <circle cx="360" cy="110" r="25" fill="blue"/>
+ <circle cx="396" cy="110" r="25" fill="green"/>
+ </g>
+ <text x="378" y="160" stroke="none" text-anchor="middle">FillPaint</text>
+
+ <desc> =========================================================================================== </desc>
+
+ <rect x="370" y="185" width="16" height="95" fill="green"/>
+ <!-- bbox: 335 195 86 75 -->
+ <g fill-opacity="0.6" fill="url(#grad2)" stroke="black" stroke-width="3" filter="url(#GaussianBlur6)">
+ <circle cx="378" cy="220" r="25"/>
+ <circle cx="360" cy="245" r="25"/>
+ <circle cx="396" cy="245" r="25"/>
+ </g>
+ <text x="378" y="295" stroke="none" text-anchor="middle">StrokePaint</text>
+
+ </g>
+
+ <text x="240" y="30" font-size="20" text-anchor="middle">Filter input test</text>
+
+ </g>
+ <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+ <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.1 $</text>
+ </g>
+ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
+ <!-- comment out this watermark once the test is approved -->
+ <g id="draft-watermark">
+ <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
+ </g>
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/filters-turb-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/filters-turb-02-f-manual.svg
index 779bacc7761..d219b14c11b 100644
--- a/tests/wpt/web-platform-tests/svg/import/filters-turb-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/filters-turb-02-f-manual.svg
@@ -19,7 +19,7 @@
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
-
+
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -59,17 +59,17 @@
</filter>
<filter id="turbneg2" x="0" y="0" width="100%" height="100%">
<feTurbulence seed="-0.5" baseFrequency="0.01" type="turbulence"/>
- </filter>
+ </filter>
<filter id="turbneg3" x="0" y="0" width="100%" height="100%">
<feTurbulence seed="-0.8" baseFrequency="0.01" type="turbulence"/>
</filter>
-
+
<!-- the reference for seed="0" -->
<filter id="turbzero" x="0" y="0" width="100%" height="100%">
<feTurbulence seed="0" baseFrequency="0.01" type="turbulence"/>
</filter>
-
- <!-- seed="0" is transformed by the setup_seed method to be equal to seed="1" -->
+
+ <!-- seed="0" is transformed by the setup_seed method to be equal to seed="1" -->
<filter id="turbpos1" x="0" y="0" width="100%" height="100%">
<feTurbulence seed="0.2" baseFrequency="0.01" type="turbulence"/>
</filter>
@@ -87,7 +87,7 @@
<filter id="turbneg5" x="0" y="0" width="100%" height="100%">
<feTurbulence seed="-1.5" baseFrequency="0.01" type="turbulence"/>
</filter>
-
+
<!-- These should be the same -->
<filter id="turbneg6" x="0" y="0" width="100%" height="100%">
<feTurbulence seed="-2" baseFrequency="0.01" type="turbulence"/>
@@ -95,14 +95,14 @@
<filter id="turbneg7" x="0" y="0" width="100%" height="100%">
<feTurbulence seed="-2.6" baseFrequency="0.01" type="turbulence"/>
</filter>
-
+
<style type="text/css">
#subtests text { fill: black }
</style>
</defs>
-
+
<text x="50%" y="2em" style="font-size:24px; text-anchor:middle">feTurbulence seed</text>
-
+
<g id="subtests" transform="translate(65 80)" text-anchor="middle" fill="red">
<rect width="50" height="50" filter="url(#turbneg3)"/>
<text x="25" y="80">-0.8</text>
@@ -119,13 +119,13 @@
<rect width="50" height="50" filter="url(#turbpos3)" transform="translate(300 0)"/>
<text x="325" y="80">1.5</text>
<rect x="-5" y="-5" width="360" height="100" stroke="black" fill="none"/>
-
+
<rect width="50" height="50" filter="url(#turbneg4)" transform="translate(0 120)"/>
<text x="25" y="200">-1</text>
<rect width="50" height="50" filter="url(#turbneg5)" transform="translate(50 120)"/>
<text x="75" y="200">-1.5</text>
<rect x="-5" y="115" width="110" height="100" stroke="black" fill="none"/>
-
+
<rect width="50" height="50" filter="url(#turbneg6)" transform="translate(250 120)"/>
<text x="275" y="200">-2</text>
<rect width="50" height="50" filter="url(#turbneg7)" transform="translate(300 120)"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-desc-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-desc-01-t-manual.svg
index e5e4c73ef99..80123f44466 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-desc-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-desc-01-t-manual.svg
@@ -19,7 +19,7 @@
based on the font-size attribute.
</p>
<!-- the test creator appears to have misunderstood the specification here.
- None of the supplied fonts specifies a font-size descriptor.
+ None of the supplied fonts specifies a font-size descriptor.
Its not clear what this test is trying to test.
-->
</d:testDescription>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-desc-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-desc-02-t-manual.svg
index 7bd720b5c0c..fce1a30412d 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-desc-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-desc-02-t-manual.svg
@@ -82,7 +82,6 @@
<glyph unicode="a" glyph-name="upward-triangle" d="M0 0L500 0L250 900Z"/>
</font>
-
<font horiz-adv-x="500">
<font-face font-family="SVGFont2" font-variant="small-caps" units-per-em="1000" ascent="800" descent="200" alphabetic="200"/>
<missing-glyph horiz-adv-x="500" d="M0 0L500 0L500 1000L0 1000M50 50L50 950L450 950L450 50Z"/>
@@ -97,7 +96,6 @@
<glyph unicode="a" glyph-name="square" d="M0 250L500 250L500 750L0 750Z"/>
</font>
-
<font horiz-adv-x="500">
<font-face font-family="SVGFont4" font-variant="normal" units-per-em="1000" ascent="800" descent="200" alphabetic="200"/>
<missing-glyph horiz-adv-x="500" d="M0 0L500 0L500 1000L0 1000M50 50L50 950L450 950L450 50Z"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-desc-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-desc-03-t-manual.svg
index d6de08d04a7..2382fb4b5a3 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-desc-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-desc-03-t-manual.svg
@@ -71,7 +71,6 @@
<glyph unicode="a" glyph-name="upward-triangle" d="M0 0L500 0L250 900Z"/>
</font>
-
<font horiz-adv-x="500">
<font-face font-family="SVGFont2" font-weight="bold" units-per-em="1000" ascent="800" descent="200" alphabetic="200"/>
<missing-glyph horiz-adv-x="500" d="M0 0L500 0L500 1000L0 1000M50 50L50 950L450 950L450 50Z"/>
@@ -86,7 +85,6 @@
<glyph unicode="a" glyph-name="upward-triangle" d="M0 0L500 0L250 900Z"/>
</font>
-
<font horiz-adv-x="500">
<font-face font-family="SVGFont3" font-weight="300" units-per-em="1000" ascent="800" descent="200" alphabetic="200"/>
<missing-glyph horiz-adv-x="500" d="M0 0L500 0L500 1000L0 1000M50 50L50 950L450 950L450 50Z"/>
@@ -119,7 +117,7 @@
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.6 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-desc-04-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-desc-04-t-manual.svg
index fb77128d2e2..b7c4929f49b 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-desc-04-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-desc-04-t-manual.svg
@@ -79,7 +79,6 @@
<glyph unicode="a" glyph-name="upward-triangle" d="M0 0L500 0L250 900Z"/>
</font>
-
<font horiz-adv-x="500">
<font-face font-family="SVGFont2" font-style="italic" units-per-em="1000" ascent="800" descent="200" alphabetic="200"/>
<missing-glyph horiz-adv-x="500" d="M0 0L500 0L500 1000L0 1000M50 50L50 950L450 950L450 50Z"/>
@@ -94,7 +93,6 @@
<glyph unicode="a" glyph-name="square" d="M0 250L500 250L500 750L0 750Z"/>
</font>
-
<font horiz-adv-x="500">
<font-face font-family="SVGFont3" font-style="italic" units-per-em="1000" ascent="800" descent="200" alphabetic="200"/>
<missing-glyph horiz-adv-x="500" d="M0 0L500 0L500 1000L0 1000M50 50L50 950L450 950L450 50Z"/>
@@ -109,7 +107,6 @@
<glyph unicode="a" glyph-name="upward-triangle" d="M0 0L500 0L250 900Z"/>
</font>
-
<font horiz-adv-x="500">
<font-face font-family="SVGFont4" font-style="italic" units-per-em="1000" ascent="800" descent="200" alphabetic="200"/>
<missing-glyph horiz-adv-x="500" d="M0 0L500 0L500 1000L0 1000M50 50L50 950L450 950L450 50Z"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-elem-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-elem-01-t-manual.svg
index 9ff421cf65c..6c68c24c68b 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-elem-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-elem-01-t-manual.svg
@@ -38,9 +38,9 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test passes if the string "AyÖ@ç" is visible and fontsize,
+ The test passes if the string "AyÖ@ç" is visible and fontsize,
character baseline and horizontal advances are the same on both lines,
- as shown in the reference image.
+ as shown in the reference image.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-elem-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-elem-02-t-manual.svg
index 7a8e347676c..0c55fac0474 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-elem-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-elem-02-t-manual.svg
@@ -23,7 +23,7 @@
<p>
The upper area has the placed glyphs as path elements filled with
white over a solid black background (creating a white cutout). The
- embedded SVG font text is then drawn over the cutout.
+ embedded SVG font text is then drawn over the cutout.
</p>
<p>
The lower area is the reverse of the upper area, with the placed
@@ -34,13 +34,13 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.</p>
+ <p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed iff the black text exactly overlays the white text
- on black, giving a solid black area. Some slight antialiasing effects may
- remain and do not cause the test to fail.
+ The test is passed iff the black text exactly overlays the white text
+ on black, giving a solid black area. Some slight antialiasing effects may
+ remain and do not cause the test to fail.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-elem-03-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-elem-03-b-manual.svg
index 6d73067056b..2a0e92bec7d 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-elem-03-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-elem-03-b-manual.svg
@@ -35,14 +35,14 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Run the test. No interaction required.
- </p>
+ <p>
+ Run the test. No interaction required.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test passes if the upper and lower lines show the same glyphs with
- the same glyph positioing and inter-glyph spacing.
+ The test passes if the upper and lower lines show the same glyphs with
+ the same glyph positioing and inter-glyph spacing.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -57,15 +57,15 @@
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<defs>
<!--style type="text/css">
- <![CDATA[
- @font-face {
- font-family: 'TestComic';
- font-weight: normal;
- font-style: normal;
- src: url("../images/ext-TestComic.svg#Font") format("svg")
- }
- ]]>
- </style-->
+ <![CDATA[
+ @font-face {
+ font-family: 'TestComic';
+ font-weight: normal;
+ font-style: normal;
+ src: url("../images/ext-TestComic.svg#Font") format("svg")
+ }
+ ]]>
+ </style-->
<font-face font-family="TestComic">
<font-face-src>
<font-face-uri xlink:href="../images/ext-TestComic.svg#Font"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-elem-04-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-elem-04-b-manual.svg
index 07362e5124d..b12baa60c90 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-elem-04-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-elem-04-b-manual.svg
@@ -35,14 +35,14 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Run the test. No interaction required.
- </p>
+ <p>
+ Run the test. No interaction required.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test passes if the upper and lower lines show the same glyphs with
- the same glyph positioing and inter-glyph spacing.
+ The test passes if the upper and lower lines show the same glyphs with
+ the same glyph positioing and inter-glyph spacing.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -67,10 +67,10 @@
</style>
<!--font-face font-family="TestComic">
- <font-face-src>
- <font-face-uri xlink:href="../images/ext-TestComic.svg#Font"/>
- </font-face-src>
- </font-face-->
+ <font-face-src>
+ <font-face-uri xlink:href="../images/ext-TestComic.svg#Font"/>
+ </font-face-src>
+ </font-face-->
</defs>
<text fill="black" stroke="none" font-size="30" x="26" y="35">External SVG font element (css)</text>
<!-- ====================================================================== -->
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-elem-05-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-elem-05-t-manual.svg
index 7460c158cb3..7d7c54b6bb7 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-elem-05-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-elem-05-t-manual.svg
@@ -15,7 +15,7 @@
version="$Revision: 1.7 $" testname="$RCSfile: fonts-elem-05-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/fonts.html#FontElement">
<p>
- This tests the horiz-origin-x attributes on the font and glyph elements.
+ This tests the horiz-origin-x attributes on the font and glyph elements.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -66,7 +66,6 @@
<glyph unicode="4" glyph-name="gl_4" horiz-adv-x="1500" d="M 0 0 L 1000 0 L 1000 1000 L 0 1000 Z"/>
</font>
-
<g id="marker">
<line y2="-40" stroke="blue"/>
<rect x="-4" y="-4" width="8" height="8" fill="#8888ff"/>
@@ -107,7 +106,6 @@
<text x="240" font-family="origin500" font-size="30">1234</text>
</g>
-
<g transform="translate(0, 120)">
<text>horiz-adv-x=1000 but ignored</text>
<use xlink:href="#marker1000" x="240"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-elem-06-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-elem-06-t-manual.svg
index a6116e1ee44..5a0f39d65b4 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-elem-06-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-elem-06-t-manual.svg
@@ -99,7 +99,6 @@
<text x="240" font-family="advance2000" font-size="30">12</text>
</g>
-
<g transform="translate(0, 80)">
<text>horiz-adv-x=1000 but ignored</text>
<use xlink:href="#marker" x="240"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-elem-07-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-elem-07-b-manual.svg
index f9167aeb31a..e7e0c81b896 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-elem-07-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-elem-07-b-manual.svg
@@ -39,9 +39,9 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test passes if the string "AyÖ@ç" is visible and fontsize,
+ The test passes if the string "AyÖ@ç" is visible and fontsize,
character baseline and horizontal advances are the same on both lines,
- as shown in the reference image.
+ as shown in the reference image.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-glyph-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-glyph-02-t-manual.svg
index 68ce4fa7356..5ef9f197f0e 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-glyph-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-glyph-02-t-manual.svg
@@ -15,14 +15,14 @@
version="$Revision: 1.8 $" testname="$RCSfile: fonts-glyph-02-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/fonts.html#GlyphElement">
<p>
- The first subtest tests the arabic-form attribute on the glyph element,
- the second subtest is the same, but with glyphs for the letter khah.
+ The first subtest tests the arabic-form attribute on the glyph element,
+ the second subtest is the same, but with glyphs for the letter khah.
It should match the reference image.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -32,9 +32,9 @@
and then an 'upward triangle' in this order. Remembering
that arabic text is right to left.
</p>
- <p>The second subtest must produce the isolated, initial, medial, final and
- glyphs of the letter khah. Again in the writing direction, from right to left.
- </p>
+ <p>The second subtest must produce the isolated, initial, medial, final and
+ glyphs of the letter khah. Again in the writing direction, from right to left.
+ </p>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: fonts-glyph-02-t.svg,v $</title>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-glyph-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-glyph-03-t-manual.svg
index e7bcc10b148..929a7372fca 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-glyph-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-glyph-03-t-manual.svg
@@ -14,7 +14,7 @@
template-version="1.4" reviewer="CL" author="CN" status="issue"
version="$Revision: 1.6 $" testname="$RCSfile: fonts-glyph-03-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/fonts.html#GlyphElement">
- <p>ISSUE: http://www.w3.org/2011/02/27-svg-irc#T22-20-51 - unapprove test for now</p>
+ <p>ISSUE: http://www.w3.org/2011/02/27-svg-irc#T22-20-51 - unapprove test for now</p>
<p>
This files tests the lang attribute support of the glyph
element. The test should produce an upward-triangle for
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-glyph-04-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-glyph-04-t-manual.svg
index 498244b841b..b6aed2bec08 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-glyph-04-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-glyph-04-t-manual.svg
@@ -27,8 +27,8 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if on the first line you see two upward pointed triangles
- followed by the letter "l". On the second line, a single square.
+ The test is passed if on the first line you see two upward pointed triangles
+ followed by the letter "l". On the second line, a single square.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/fonts-overview-201-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/fonts-overview-201-t-manual.svg
index 65de3f474c0..090bd25d051 100644
--- a/tests/wpt/web-platform-tests/svg/import/fonts-overview-201-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/fonts-overview-201-t-manual.svg
@@ -25,12 +25,12 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if the three letter β are all the same size.
+ The test is passed if the three letter β are all the same size.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -119,4 +119,4 @@
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/imp-path-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/imp-path-01-f-manual.svg
index 1cae4326199..f18fbb9ef4a 100644
--- a/tests/wpt/web-platform-tests/svg/import/imp-path-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/imp-path-01-f-manual.svg
@@ -8,17 +8,17 @@
<!--======================================================================-->
<d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/" template-version="1.4" reviewer="CL" author="Microsoft" status="reviewed" version="$Revision: 1.5 $" testname="$RCSfile: imp-path-01-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/implnote.html#PathElementImplementationNotes">
- <p>
+ <p>
Tests that markers are drawn on zero-length 'path' and 'line' segments.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.</p>
+ <p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
Test passes if there are two blue boxes, positioned as in the reference image.
- </p>
+ </p>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: imp-path-01-f.svg,v $</title>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-cursor-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-cursor-01-f-manual.svg
index ff7d7165044..3ae9836f7da 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-cursor-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-cursor-01-f-manual.svg
@@ -15,8 +15,8 @@
version="$Revision: 1.5 $" testname="$RCSfile: interact-cursor-01-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/interact.html#Cursors">
<p>
- Purpose of test is to determine if the cursor property and cursor element are
- supported.
+ Purpose of test is to determine if the cursor property and cursor element are
+ supported.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-dom-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-dom-01-b-manual.svg
index 907cc20bcda..32cf2f546c7 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-dom-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-dom-01-b-manual.svg
@@ -34,15 +34,15 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>This test requires user interaction. Run the test, then click on the grey rectangle.
- If it turns green, click it again.
- </p>
+ <p>This test requires user interaction. Run the test, then click on the grey rectangle.
+ If it turns green, click it again.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- After clicking once on the button, the rectangle should have a green fill
- and the text "Event listeners supported" should appear, once.
-
+ After clicking once on the button, the rectangle should have a green fill
+ and the text "Event listeners supported" should appear, once.
+
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-events-202-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-events-202-f-manual.svg
index 61ed1c017af..6fbabe22f3e 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-events-202-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-events-202-f-manual.svg
@@ -1,83 +1,83 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink">
- <!--======================================================================-->
- <!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
- <!--= Institute of Technology, European Research Consortium for =-->
- <!--= Informatics and Mathematics (ERCIM), Keio University). =-->
- <!--= All Rights Reserved. =-->
- <!--= See http://www.w3.org/Consortium/Legal/. =-->
- <!--======================================================================-->
- <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
- template-version="1.4" reviewer="AE" author="ASl" status="accepted"
- version="$Revision: 1.3 $" testname="$RCSfile: interact-events-202-f.svg,v $">
- <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/interact.html#SVGEvents">
- <p>
- Testing event bubbling through 'use' element.
- </p>
- </d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Mouseover the blue rect, then the green rect and then away from the rects.
- </p>
- </d:operatorScript>
- <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Moving the mouse over the blue rect should make a yellow rect visible underneath it.
- Moving the mouse over the green rect should make a purple rect visible underneath it.
- Moving the mouse away from the blue/green rect should hide the rect underneath it again.
- </p>
- </d:passCriteria>
- </d:SVGTestCase>
- <title id="test-title">$RCSfile: interact-events-202-f.svg,v $</title>
- <defs>
- <font-face
- font-family="SVGFreeSansASCII"
- unicode-range="U+0-7F">
- <font-face-src>
- <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
- </font-face-src>
- </font-face>
- </defs>
- <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <rect id="r1" x="10" y="20" width="90" height="65" visibility="inherit" fill="inherit"/>
- </defs>
-
- <g id="g1" transform="translate( 0, 0)" visibility="visible">
- <use xlink:href="#r1" visibility="inherit" fill="blue"
- onmouseover="g3.setAttribute('visibility', 'visible')"
- onmouseout="g3.setAttribute('visibility', 'hidden')"/>
- </g>
- <g id="g2" transform="translate(90, 0)" visibility="visible"
- onmouseover="g4.setAttribute('visibility', 'visible')"
- onmouseout="g4.setAttribute('visibility', 'hidden')">
- <use xlink:href="#r1" visibility="inherit" fill="green"/>
- </g>
- <g id="g3" transform="translate( 0, 65)" visibility="hidden">
- <use xlink:href="#r1" visibility="inherit" fill="yellow"/>
- </g>
- <g id="g4" transform="translate(90, 65)" visibility="hidden">
- <use xlink:href="#r1" visibility="inherit" fill="purple"/>
- </g>
-
- <script type="text/ecmascript">
- var g1 = document.getElementById("g1");
- var g2 = document.getElementById("g2");
- var g3 = document.getElementById("g3");
- var g4 = document.getElementById("g4");
- </script>
-
- </g>
- <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
- fill="black">$Revision: 1.3 $</text>
- </g>
- <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
- <g id="draft-watermark">
- <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
- text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
- </g>-->
-</svg> \ No newline at end of file
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!--======================================================================-->
+ <!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
+ <!--= Institute of Technology, European Research Consortium for =-->
+ <!--= Informatics and Mathematics (ERCIM), Keio University). =-->
+ <!--= All Rights Reserved. =-->
+ <!--= See http://www.w3.org/Consortium/Legal/. =-->
+ <!--======================================================================-->
+ <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
+ template-version="1.4" reviewer="AE" author="ASl" status="accepted"
+ version="$Revision: 1.3 $" testname="$RCSfile: interact-events-202-f.svg,v $">
+ <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/interact.html#SVGEvents">
+ <p>
+ Testing event bubbling through 'use' element.
+ </p>
+ </d:testDescription>
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <p>
+ Mouseover the blue rect, then the green rect and then away from the rects.
+ </p>
+ </d:operatorScript>
+ <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
+ <p>
+ Moving the mouse over the blue rect should make a yellow rect visible underneath it.
+ Moving the mouse over the green rect should make a purple rect visible underneath it.
+ Moving the mouse away from the blue/green rect should hide the rect underneath it again.
+ </p>
+ </d:passCriteria>
+ </d:SVGTestCase>
+ <title id="test-title">$RCSfile: interact-events-202-f.svg,v $</title>
+ <defs>
+ <font-face
+ font-family="SVGFreeSansASCII"
+ unicode-range="U+0-7F">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
+ </font-face-src>
+ </font-face>
+ </defs>
+ <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
+ <defs>
+ <rect id="r1" x="10" y="20" width="90" height="65" visibility="inherit" fill="inherit"/>
+ </defs>
+
+ <g id="g1" transform="translate( 0, 0)" visibility="visible">
+ <use xlink:href="#r1" visibility="inherit" fill="blue"
+ onmouseover="g3.setAttribute('visibility', 'visible')"
+ onmouseout="g3.setAttribute('visibility', 'hidden')"/>
+ </g>
+ <g id="g2" transform="translate(90, 0)" visibility="visible"
+ onmouseover="g4.setAttribute('visibility', 'visible')"
+ onmouseout="g4.setAttribute('visibility', 'hidden')">
+ <use xlink:href="#r1" visibility="inherit" fill="green"/>
+ </g>
+ <g id="g3" transform="translate( 0, 65)" visibility="hidden">
+ <use xlink:href="#r1" visibility="inherit" fill="yellow"/>
+ </g>
+ <g id="g4" transform="translate(90, 65)" visibility="hidden">
+ <use xlink:href="#r1" visibility="inherit" fill="purple"/>
+ </g>
+
+ <script type="text/ecmascript">
+ var g1 = document.getElementById("g1");
+ var g2 = document.getElementById("g2");
+ var g3 = document.getElementById("g3");
+ var g4 = document.getElementById("g4");
+ </script>
+
+ </g>
+ <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+ <text id="revision" x="10" y="340" stroke="none"
+ fill="black">$Revision: 1.3 $</text>
+ </g>
+ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
+ <!-- comment out this watermark once the test is approved
+ <g id="draft-watermark">
+ <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
+ </g>-->
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-events-203-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-events-203-t-manual.svg
index 6b3f94492e4..2e11b27c9d6 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-events-203-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-events-203-t-manual.svg
@@ -22,16 +22,16 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Mouseover each of the red rectangles, and then click on the bottommost rectangle.
- </p>
+ <p>
+ Mouseover each of the red rectangles, and then click on the bottommost rectangle.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
This test contains four cases. The cases must produce the following results for the test to pass.
</p>
<ul>
- <li>Case 1: On a mouseover event on the top square, all four squares must turn blue.</li>
+ <li>Case 1: On a mouseover event on the top square, all four squares must turn blue.</li>
<li>Case 2: On a mouseover event on the top middle square, all four squares must turn blue and a black stroke
must appear on the referencing square (element).</li>
<li>Case 3: On a mouseover event on the bottom middle square, all four squares must turn blue and a black
@@ -52,11 +52,11 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
- <defs>
- <!-- SVGElementInstance animates fill on mouseover -->
- <rect id="rect" width="50" height="50" fill="red" onmouseover="document.getElementById('rect').setAttribute('fill','blue')" onmouseout="document.getElementById('rect').setAttribute('fill','red')" />
- </defs>
+
+ <defs>
+ <!-- SVGElementInstance animates fill on mouseover -->
+ <rect id="rect" width="50" height="50" fill="red" onmouseover="document.getElementById('rect').setAttribute('fill','blue')" onmouseout="document.getElementById('rect').setAttribute('fill','red')" />
+ </defs>
<text x="120" y="20" font-size="15">Shadow tree event listener chain</text>
@@ -68,7 +68,7 @@
<!-- all rectangles turn blue and second rectangle displays black stroke -->
<use id="use2" fill="red" x="30" y="100" xlink:href="#rect" onmouseover="document.getElementById('rect1').setAttribute('stroke','black')" onmouseout="document.getElementById('rect1').setAttribute('stroke','none')"/>
<rect id="rect1" pointer-events="none" x="30" y="100" width="50" height="50" fill="none" stroke-width="5" stroke="none"/>
-
+
<g font-size="12">
<text x="95" y="115">Case 2: on mouseover all squares must turn blue</text>
<text x="95" y="130">and a black stroke must appear on reference square</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-order-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-order-01-b-manual.svg
index c552a96095c..1b54c49be61 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-order-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-order-01-b-manual.svg
@@ -26,14 +26,14 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>This test requires user interaction. Firstly, move the pointer
- over the top circle. Then, move it over the bottom circle.</p>
+ over the top circle. Then, move it over the bottom circle.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if two black circles are displayed. The top circle
-must turn pink when the pointer is over the circle, and go back to black once
-the pointer leaves. The second circle must turn blue when the pointer is over
-the circle, and go back to black once the pointer leaves.
+ The test is passed if two black circles are displayed. The top circle
+must turn pink when the pointer is over the circle, and go back to black once
+the pointer leaves. The second circle must turn blue when the pointer is over
+the circle, and go back to black once the pointer leaves.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -72,7 +72,7 @@ the circle, and go back to black once the pointer leaves.
<g fill="#000" font-family="Arial" font-size="40">
<!-- Event bubbling (i.e., propagation) is not turned off, so
event if first processed by 'circle', but then processed by 'g',
- with result that circle turns blue, but then instantaneously
+ with result that circle turns blue, but then instantaneously
turns pink. -->
<g onmouseover="bubbleYes(evt, '#F08')" onmouseout="bubbleYes(evt, 'inherit')">
<circle onmouseover="bubbleYes(evt, '#00F')" onmouseout="bubbleYes(evt, 'inherit')" cx="70" cy="120" r="50"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-order-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-order-02-b-manual.svg
index 175a739c9d3..7b439dac45f 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-order-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-order-02-b-manual.svg
@@ -21,7 +21,7 @@
The two circles test whether events are handled in the
proper order. Events listeners and event attributes are processed
before hyperlink processing, which is processed before text selection.
-
+
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -29,9 +29,9 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- Clicking on the first circle should change the circle from black to red. Clicking
- on the second circle should take you to another SVG file titled "Hyperlink target for
- interact-order-02.svg. Cliking on the circle in this SVG file should return you to the orginal
+ Clicking on the first circle should change the circle from black to red. Clicking
+ on the second circle should take you to another SVG file titled "Hyperlink target for
+ interact-order-02.svg. Cliking on the circle in this SVG file should return you to the orginal
two circles.
</p>
</d:passCriteria>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-pevents-05-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-pevents-05-b-manual.svg
index 7a6f6815a0a..3ece8a11ff0 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-pevents-05-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-pevents-05-b-manual.svg
@@ -15,7 +15,7 @@
version="$Revision: 1.7 $" testname="$RCSfile: interact-pevents-05-b.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/interact.html#PointerEventsProperty">
<p>
- Tests when text is considered hit by pointer-events.
+ Tests when text is considered hit by pointer-events.
According to SVG 1.1 pointer-events on text is not supposed to use the text boundingbox, instead it should use the 'character cells'.
</p>
</d:testDescription>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-pevents-07-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-pevents-07-t-manual.svg
index e78f68ee2ef..aff021291b5 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-pevents-07-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-pevents-07-t-manual.svg
@@ -42,7 +42,7 @@
{
document.getElementById(id).setAttribute("fill", fill);
}
-
+
function changePointerEvents(value)
{
if ('on' == value)
@@ -65,7 +65,7 @@
document.getElementById('c11').setAttribute("pointer-events", 'none');
document.getElementById('c12').setAttribute("pointer-events", 'none');
}
-
+
}
]]></script>
<rect x="15" y="15" height="280" width="450" fill="none" stroke="black" stroke-width="0.25"/>
@@ -105,7 +105,7 @@
fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-pevents-08-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-pevents-08-f-manual.svg
index f3a3d3bd0f6..e020a753183 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-pevents-08-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-pevents-08-f-manual.svg
@@ -65,7 +65,7 @@
{
document.getElementById(id).setAttribute("fill-opacity", "0.4");
}
-
+
function hide(id)
{
document.getElementById(id).setAttribute("fill-opacity", "0");
@@ -181,5 +181,5 @@
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
- </g>-->
+ </g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-pevents-09-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-pevents-09-f-manual.svg
index 44d7372ece7..0354ce34656 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-pevents-09-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-pevents-09-f-manual.svg
@@ -33,8 +33,8 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test is passed if the following conditions are met:
- </p>
- <ul>
+ </p>
+ <ul>
<li>In the first row of squares, the fill and stroke of squares 1, 3 and 4 only must trigger a pale red rectangle to appear
over the squares on mouseover.</li>
<li>In the second row of squares, the fill only of all squares must trigger a pale red rectangle to appear
@@ -63,7 +63,7 @@
{
document.getElementById(id).setAttribute("fill-opacity", "0.4");
}
-
+
function hide(id)
{
document.getElementById(id).setAttribute("fill-opacity", "0");
@@ -170,5 +170,5 @@
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
- </g>-->
+ </g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-pevents-10-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-pevents-10-f-manual.svg
index c05e2b361b4..1be6143a284 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-pevents-10-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-pevents-10-f-manual.svg
@@ -16,9 +16,9 @@
An element with 'display' set to 'none' or an element whose parent has 'display' set to 'none' is not a target of pointer events.
</p>
<p>
- Stack a 'circle' element with 'display' equal to 'none' on another 'circle' element.
- Specify an 'onclick' event handler on the 'circle' with 'display' set to 'none' that will change the 'visibility' of 'FAIL' text to 'visible'.
- Verify that the event handler does not fire which clicking on the top 'circle' element.
+ Stack a 'circle' element with 'display' equal to 'none' on another 'circle' element.
+ Specify an 'onclick' event handler on the 'circle' with 'display' set to 'none' that will change the 'visibility' of 'FAIL' text to 'visible'.
+ Verify that the event handler does not fire which clicking on the top 'circle' element.
Repeat with another set of 'circle' elements with the parent of one of the 'circle' elements having its 'display' set to 'none'.
</p>
</d:testDescription>
diff --git a/tests/wpt/web-platform-tests/svg/import/interact-zoom-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/interact-zoom-03-t-manual.svg
index 6821e1a4e07..2f1aaabff9f 100644
--- a/tests/wpt/web-platform-tests/svg/import/interact-zoom-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/interact-zoom-03-t-manual.svg
@@ -22,14 +22,13 @@
<p>
The test consists of a set of black circles with a blue stroke.
</p>
-
-
+
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
After the initial picture is displayed, the user should attempt to use
the magnify controls that are required on conforming Dynamic SVG
- viewers.
+ viewers.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/linking-a-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/linking-a-01-b-manual.svg
index cf397adace4..cf84f5fac31 100644
--- a/tests/wpt/web-platform-tests/svg/import/linking-a-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/linking-a-01-b-manual.svg
@@ -28,7 +28,7 @@
<p>
The (blue) arrow uses the "bare name" fragment identifier
form, "#circle-2", to target the circle with id "circle-2" in the external
- file.
+ file.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/linking-a-03-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/linking-a-03-b-manual.svg
index 8e5ef764bca..3cd643a8385 100644
--- a/tests/wpt/web-platform-tests/svg/import/linking-a-03-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/linking-a-03-b-manual.svg
@@ -29,7 +29,7 @@
The (green) arrow uses the SVG view specification form,
"linkingCircle-f.svg#svgView(viewBox(63,226,74,74))",
to target the circle with id "circle-2"
- in the external file.
+ in the external file.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -62,7 +62,7 @@
<a xlink:href="../images/linkingCircle-f.svg#svgView(viewBox(64,227,72,72))">
<path fill="lime" stroke="blue" d="M 185,40 h -100 v -12 l -45 36 l 45 36 v -12 h 100 z"/>
</a>
- <!-- Code from target file, linkingCircle-f.svg...
+ <!-- Code from target file, linkingCircle-f.svg...
<circle id="circle-2" cx="85" cy="153" r="20" stroke="lime" fill="yellow" stroke-width="4" />
<text font-family="Arial" font-size="12" x="65" y="189">circle-2</text>
<rect x="49" y="227" width="72" height="72" fill="none" stroke="black" />
diff --git a/tests/wpt/web-platform-tests/svg/import/linking-a-04-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/linking-a-04-t-manual.svg
index 02db16bfc96..e936e606347 100644
--- a/tests/wpt/web-platform-tests/svg/import/linking-a-04-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/linking-a-04-t-manual.svg
@@ -23,7 +23,7 @@
The initial view of this test contains the three arrows, a colored
circle, labelling text, and the usual template legend and frame.
</p>
-
+
<p>
There are several reference images associated with this test case. The first
illustrates the correct "start" or initial state of the rendered SVG file.
@@ -43,7 +43,7 @@
The user should interact with each of the arrows activating each of the links,
using the UA's back mechanism to restart each link test.
</p>
-
+
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/linking-a-07-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/linking-a-07-t-manual.svg
index 7ea4441c788..f799d733e56 100644
--- a/tests/wpt/web-platform-tests/svg/import/linking-a-07-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/linking-a-07-t-manual.svg
@@ -27,13 +27,13 @@
The top-most (yellow) arrows link to an external SVG file, which is
local (in the same directory). The target file contains SVG 'text' elements
which comprise a TOC and brief description of all of the test files
- for Linking.
+ for Linking.
</p>
<p>
- The middle (green) arrows links to the same external SVG file, but with xlink:show="new".
+ The middle (green) arrows links to the same external SVG file, but with xlink:show="new".
</p>
<p>
- The bottom-most (blue) arrows links to the same external SVG file, but with xlink:show="replace".
+ The bottom-most (blue) arrows links to the same external SVG file, but with xlink:show="replace".
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -46,13 +46,13 @@
The test has passed if:
</p>
<ul>
- <li>Upon clicking the left-most yellow arrow, the image of the linkingToc-t.svg
- file replaces the initial view of this test case in the viewer frame. On clicking the right-most yellow arrow,
- the image of the linkingToc-t.svg appears in a new frame.</li>
- <li>Upon clicking any of the green arrows the image of the linkingToc-t.svg appears in a new frame.</li>
- <li>Upon clicking the left-most blue arrow, the image of the linkingToc-t.svg file replaces the initial
- view of this test case in the viewer frame.
- On clicking the right blue arrow produces the image of the linkingToc-t.svg in a new frame.</li>
+ <li>Upon clicking the left-most yellow arrow, the image of the linkingToc-t.svg
+ file replaces the initial view of this test case in the viewer frame. On clicking the right-most yellow arrow,
+ the image of the linkingToc-t.svg appears in a new frame.</li>
+ <li>Upon clicking any of the green arrows the image of the linkingToc-t.svg appears in a new frame.</li>
+ <li>Upon clicking the left-most blue arrow, the image of the linkingToc-t.svg file replaces the initial
+ view of this test case in the viewer frame.
+ On clicking the right blue arrow produces the image of the linkingToc-t.svg in a new frame.</li>
</ul>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/linking-a-08-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/linking-a-08-t-manual.svg
index c0c2ccdf801..b94d9d0e75d 100644
--- a/tests/wpt/web-platform-tests/svg/import/linking-a-08-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/linking-a-08-t-manual.svg
@@ -21,12 +21,12 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Click each of the links once.
+ Click each of the links once.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- Both lines of text must be working links, and must take you to <a href="../../images/linkingToc-t.svg">the linking TOC svg</a> in the same frame.
+ Both lines of text must be working links, and must take you to <a href="../../images/linkingToc-t.svg">the linking TOC svg</a> in the same frame.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/linking-a-09-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/linking-a-09-b-manual.svg
index 1099cd75a90..6efc82f0369 100644
--- a/tests/wpt/web-platform-tests/svg/import/linking-a-09-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/linking-a-09-b-manual.svg
@@ -26,7 +26,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- Both lines of text must be working links, and must take you to <a href="../../images/linkingToc-t.svg">the linking TOC svg</a> in the same frame.
+ Both lines of text must be working links, and must take you to <a href="../../images/linkingToc-t.svg">the linking TOC svg</a> in the same frame.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/linking-a-10-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/linking-a-10-f-manual.svg
index 5138de88b62..458f7120849 100644
--- a/tests/wpt/web-platform-tests/svg/import/linking-a-10-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/linking-a-10-f-manual.svg
@@ -13,7 +13,7 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.</p>
+ <p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
@@ -80,4 +80,4 @@
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-mask-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-mask-02-f-manual.svg
index 38cd9420ee7..c96a4564b80 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-mask-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-mask-02-f-manual.svg
@@ -13,7 +13,7 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.</p>
+ <p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
@@ -47,4 +47,4 @@
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-opacity-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-opacity-01-b-manual.svg
index ce34caeb623..35477ef2f6d 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-opacity-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-opacity-01-b-manual.svg
@@ -28,20 +28,19 @@
</p>
<p>
In the top test, the opacities of the group and the individual rectangles are
- all set to 1.
+ all set to 1.
</p>
<p>
- In the second test, the group is given an opacity of 0.5.
+ In the second test, the group is given an opacity of 0.5.
</p>
<p>
In the third test, the group maintains a group opacity of 1 whereas each individual
- rectangle is given an opacity of 0.5 in the group.
+ rectangle is given an opacity of 0.5 in the group.
</p>
<p>
Lastly, the group and individual rectangles are all given an opacity of 0.5.
</p>
-
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-02-b-manual.svg
index d952df14229..e2b9b4ca56f 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-02-b-manual.svg
@@ -23,12 +23,12 @@
<p>
The test at the top shows a pink rectangle that has been clipped by a
rectangular clipping path. The clipping path is defined using clipPathUnits=objectBoundingBox.
-
+
</p>
<p>
The example at the bottom a rotated blue rectangle that has been clipped by a
rectangular clipping path. The clipping path is defined using clipPathUnits=userSpaceOnUse.
-
+
</p>
<p>
The rendered picture should match the reference image exactly, except for possible
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-03-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-03-b-manual.svg
index 92186a6c506..51d0da2c94e 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-03-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-03-b-manual.svg
@@ -39,7 +39,7 @@
interior, a light blue border and a black string that says "Clip to
inner 'svg'" is painted four times such that it will overflow each of
the top, left, right and bottom sides of the bounds of an inner 'svg'
- element, respectively.
+ element, respectively.
</p>
<p>
Note that minor text layout differences, as are permissible under CSS2
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-06-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-06-b-manual.svg
index 6d0425ab5dd..b3c78f07684 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-06-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-06-b-manual.svg
@@ -17,7 +17,7 @@
<p>
The intent of this file to test the 'clip' property. In this test, the clipped objects are
raster and SVG images.
-
+
<!-- ED: The bottom right subtest is the source of the issue, since CSS2.1 changed how 'clip' should be interpreted compared to CSS2.0. -->
</p>
</d:testDescription>
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-07-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-07-b-manual.svg
index 63f73d821f5..6a2a82f2d38 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-07-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-07-b-manual.svg
@@ -31,24 +31,24 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test has passed if the following conditions are met:
- </p>
- <ul>
- <li>There is no red visible.</li>
- <li>No shapes extend outside of the rects that have a thick black border.</li>
- <li>For the left subtest:
- <ul>
- <li>There must be a large blue rect with a transparent smaller rect in it, and the intersection of two circles.</li>
- <li>The borders of the clipregions are shown with black stroke.</li>
- <li>The blue shapes must be visible only inside of these stroked regions.</li>
- </ul>
- </li>
- <li>For the right subtest:
- <ul>
- <li>The test on the right must show part of the large blue rect shape with a transparent rect in it, and part of a circle.</li>
- <li>The blue shapes must only be visible inside of the circle that has black stroke.</li>
- </ul>
- </li>
- </ul>
+ </p>
+ <ul>
+ <li>There is no red visible.</li>
+ <li>No shapes extend outside of the rects that have a thick black border.</li>
+ <li>For the left subtest:
+ <ul>
+ <li>There must be a large blue rect with a transparent smaller rect in it, and the intersection of two circles.</li>
+ <li>The borders of the clipregions are shown with black stroke.</li>
+ <li>The blue shapes must be visible only inside of these stroked regions.</li>
+ </ul>
+ </li>
+ <li>For the right subtest:
+ <ul>
+ <li>The test on the right must show part of the large blue rect shape with a transparent rect in it, and part of a circle.</li>
+ <li>The blue shapes must only be visible inside of the circle that has black stroke.</li>
+ </ul>
+ </li>
+ </ul>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: masking-path-07-b.svg,v $</title>
@@ -74,9 +74,9 @@
<path id="p1" d="M10 10l100 0 0 100 -100 0ZM50 50l40 0 0 40 -40 0Z" clip-rule="evenodd"/>
</clipPath>
- <!-- "If a valid 'clip-path' reference is placed on one of the children of a 'clipPath' element,
- then the given child element is clipped by the referenced clipping path before OR'ing the
- silhouette of the child element with the silhouettes of the other child elements." -->
+ <!-- "If a valid 'clip-path' reference is placed on one of the children of a 'clipPath' element,
+ then the given child element is clipped by the referenced clipping path before OR'ing the
+ silhouette of the child element with the silhouettes of the other child elements." -->
<clipPath id="clipRects1">
<rect x="50" y="30" width="25" height="100"/>
<rect x="25" y="50" width="10" height="10" clip-path="url(#clipTwoCircles)"/>
@@ -105,7 +105,7 @@
</defs>
<rect x="20" y="70" width="210" height="210" fill="url(#pattern)" stroke="black" stroke-width="4"/>
- <rect x="250" y="70" width="210" height="210" fill="url(#pattern)" stroke="black" stroke-width="4"/>
+ <rect x="250" y="70" width="210" height="210" fill="url(#pattern)" stroke="black" stroke-width="4"/>
<text x="240" y="2em" text-anchor="middle">Test clip unions and intersections</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-08-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-08-b-manual.svg
index 17291ade903..c32b6b05c13 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-08-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-08-b-manual.svg
@@ -28,10 +28,10 @@
<p>
The test has passed if:
</p>
- <ul>
- <li>There is no red visible.</li>
- <li>Each of the nine small rectangles are green.</li>
- </ul>
+ <ul>
+ <li>There is no red visible.</li>
+ <li>Each of the nine small rectangles are green.</li>
+ </ul>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: masking-path-08-b.svg,v $</title>
@@ -45,86 +45,85 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
- <defs>
- <clipPath id="emptyclip">
- </clipPath>
- <clipPath id="hiddenclip">
- <rect width="100" height="100" visibility="hidden"/>
- </clipPath>
- <clipPath id="displayclip">
- <rect width="100" height="100" display="none"/>
- </clipPath>
- <clipPath id="opacityclip">
- <rect width="100" height="100" opacity="0"/>
- </clipPath>
- <clipPath id="strokefillclip">
- <rect width="100" height="100" stroke="none" fill="none"/>
- </clipPath>
- <clipPath id="strokewidthclip">
- <rect x="40" y="40" width="20" height="20" stroke="black" stroke-width="80"/>
- </clipPath>
- <clipPath id="strokeopacityclip">
- <rect x="40" y="40" width="20" height="20" stroke="black" stroke-opacity="0" stroke-width="80"/>
- </clipPath>
- <clipPath id="fillopacityclip">
- <rect width="100" height="100" fill-opacity="0"/>
- </clipPath>
- </defs>
-
- <text x="240" y="50" text-anchor="middle">Establishing a new clipping path</text>
-
- <g transform="scale(0.5) translate(320 200)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" clip-path="url(#emptyclip)"/>
- <g transform="translate(110 0)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" clip-path="url(#hiddenclip)"/>
- </g>
-
- <g transform="translate(220 0)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" clip-path="url(#displayclip)"/>
- </g>
+ <defs>
+ <clipPath id="emptyclip">
+ </clipPath>
+ <clipPath id="hiddenclip">
+ <rect width="100" height="100" visibility="hidden"/>
+ </clipPath>
+ <clipPath id="displayclip">
+ <rect width="100" height="100" display="none"/>
+ </clipPath>
+ <clipPath id="opacityclip">
+ <rect width="100" height="100" opacity="0"/>
+ </clipPath>
+ <clipPath id="strokefillclip">
+ <rect width="100" height="100" stroke="none" fill="none"/>
+ </clipPath>
+ <clipPath id="strokewidthclip">
+ <rect x="40" y="40" width="20" height="20" stroke="black" stroke-width="80"/>
+ </clipPath>
+ <clipPath id="strokeopacityclip">
+ <rect x="40" y="40" width="20" height="20" stroke="black" stroke-opacity="0" stroke-width="80"/>
+ </clipPath>
+ <clipPath id="fillopacityclip">
+ <rect width="100" height="100" fill-opacity="0"/>
+ </clipPath>
+ </defs>
+
+ <text x="240" y="50" text-anchor="middle">Establishing a new clipping path</text>
+
+ <g transform="scale(0.5) translate(320 200)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" clip-path="url(#emptyclip)"/>
+
+ <g transform="translate(110 0)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" clip-path="url(#hiddenclip)"/>
+ </g>
+
+ <g transform="translate(220 0)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" clip-path="url(#displayclip)"/>
+ </g>
+
+ <!-- This has an intentionally broken clip-path url -->
+ <g transform="translate(0 110)">
+ <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
+ <rect width="100" height="100" fill="lime" clip-path="url(#unknown)"/>
+ </g>
+
+ <g transform="translate(110 110)">
+ <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
+ <rect width="100" height="100" fill="lime" clip-path="url(#opacityclip)"/>
+ </g>
+
+ <g transform="translate(220 110)">
+ <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
+ <rect width="100" height="100" fill="lime" clip-path="url(#strokefillclip)"/>
+ </g>
+
+ <g transform="translate(0 220)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" clip-path="url(#strokewidthclip)"/>
+ <rect x="39" y="39" width="22" height="22" fill="lime"/>
+ </g>
+
+ <g transform="translate(110 220)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" clip-path="url(#strokeopacityclip)"/>
+ <rect x="39" y="39" width="22" height="22" fill="lime"/>
+ </g>
+
+ <g transform="translate(220 220)">
+ <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
+ <rect width="100" height="100" fill="lime" clip-path="url(#fillopacityclip)"/>
+ </g>
+
+ <rect width="320" height="320" fill="none" stroke="black"/>
+ </g>
- <!-- This has an intentionally broken clip-path url -->
- <g transform="translate(0 110)">
- <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
- <rect width="100" height="100" fill="lime" clip-path="url(#unknown)"/>
- </g>
-
- <g transform="translate(110 110)">
- <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
- <rect width="100" height="100" fill="lime" clip-path="url(#opacityclip)"/>
- </g>
-
- <g transform="translate(220 110)">
- <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
- <rect width="100" height="100" fill="lime" clip-path="url(#strokefillclip)"/>
- </g>
-
- <g transform="translate(0 220)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" clip-path="url(#strokewidthclip)"/>
- <rect x="39" y="39" width="22" height="22" fill="lime"/>
- </g>
-
- <g transform="translate(110 220)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" clip-path="url(#strokeopacityclip)"/>
- <rect x="39" y="39" width="22" height="22" fill="lime"/>
- </g>
-
- <g transform="translate(220 220)">
- <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
- <rect width="100" height="100" fill="lime" clip-path="url(#fillopacityclip)"/>
- </g>
-
- <rect width="320" height="320" fill="none" stroke="black"/>
- </g>
-
-
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-10-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-10-b-manual.svg
index 251d34bdf01..f359bf28ca7 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-10-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-10-b-manual.svg
@@ -28,10 +28,10 @@
<p>
The test has passed if:
</p>
- <ul>
- <li>There is no red visible.</li>
- <li>Each of the nine small rectangles are green.</li>
- </ul>
+ <ul>
+ <li>There is no red visible.</li>
+ <li>Each of the nine small rectangles are green.</li>
+ </ul>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: masking-path-10-b.svg,v $</title>
@@ -45,84 +45,83 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
- <defs>
- <mask id="emptymask"/>
- <mask id="hiddenmask">
- <rect width="100" height="100" visibility="hidden"/>
- </mask>
- <mask id="displaymask">
- <rect width="100" height="100" display="none"/>
- </mask>
- <mask id="opacitymask">
- <rect width="100" height="100" opacity="0"/>
- </mask>
- <mask id="strokefillmask">
- <rect width="100" height="100" stroke="none" fill="none"/>
- </mask>
- <mask id="strokewidthmask">
- <rect x="40" y="40" width="20" height="20" stroke="white" stroke-width="20"/>
- </mask>
- <mask id="strokeopacitymask">
- <rect x="40" y="40" width="20" height="20" stroke="white" stroke-opacity="0" stroke-width="20"/>
- </mask>
- <mask id="fillopacitymask">
- <rect width="100" height="100" fill-opacity="0"/>
- </mask>
- </defs>
-
- <text x="240" y="50" text-anchor="middle">Establishing a new masking path</text>
-
- <g transform="scale(0.5) translate(320 200)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" mask="url(#emptymask)"/>
- <g transform="translate(110 0)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" mask="url(#hiddenmask)"/>
- </g>
-
- <g transform="translate(220 0)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" mask="url(#displaymask)"/>
- </g>
+ <defs>
+ <mask id="emptymask"/>
+ <mask id="hiddenmask">
+ <rect width="100" height="100" visibility="hidden"/>
+ </mask>
+ <mask id="displaymask">
+ <rect width="100" height="100" display="none"/>
+ </mask>
+ <mask id="opacitymask">
+ <rect width="100" height="100" opacity="0"/>
+ </mask>
+ <mask id="strokefillmask">
+ <rect width="100" height="100" stroke="none" fill="none"/>
+ </mask>
+ <mask id="strokewidthmask">
+ <rect x="40" y="40" width="20" height="20" stroke="white" stroke-width="20"/>
+ </mask>
+ <mask id="strokeopacitymask">
+ <rect x="40" y="40" width="20" height="20" stroke="white" stroke-opacity="0" stroke-width="20"/>
+ </mask>
+ <mask id="fillopacitymask">
+ <rect width="100" height="100" fill-opacity="0"/>
+ </mask>
+ </defs>
+
+ <text x="240" y="50" text-anchor="middle">Establishing a new masking path</text>
+
+ <g transform="scale(0.5) translate(320 200)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" mask="url(#emptymask)"/>
+
+ <g transform="translate(110 0)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" mask="url(#hiddenmask)"/>
+ </g>
+
+ <g transform="translate(220 0)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" mask="url(#displaymask)"/>
+ </g>
+
+ <!-- This has an intentionally broken mask url -->
+ <g transform="translate(0 110)">
+ <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
+ <rect width="100" height="100" fill="lime" mask="url(#unknown)"/>
+ </g>
+
+ <g transform="translate(110 110)">
+ <rect x="0.5" y="0.5" width="99" height="99" fill="lime"/>
+ <rect width="100" height="100" fill="red" mask="url(#opacitymask)"/>
+ </g>
+
+ <g transform="translate(220 110)">
+ <rect x="0.5" y="0.5" width="99" height="99" fill="lime"/>
+ <rect width="100" height="100" fill="red" mask="url(#strokefillmask)"/>
+ </g>
+
+ <g transform="translate(0 220)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" mask="url(#strokewidthmask)"/>
+ <rect x="29" y="29" width="42" height="42" fill="lime"/>
+ </g>
+
+ <g transform="translate(110 220)">
+ <rect width="100" height="100" fill="lime"/>
+ <rect width="100" height="100" fill="red" mask="url(#strokeopacitymask)"/>
+ </g>
+
+ <g transform="translate(220 220)">
+ <rect x="0.5" y="0.5" width="99" height="99" fill="lime"/>
+ <rect width="100" height="100" fill="red" mask="url(#fillopacitymask)"/>
+ </g>
+
+ <rect width="320" height="320" fill="none" stroke="black"/>
+ </g>
- <!-- This has an intentionally broken mask url -->
- <g transform="translate(0 110)">
- <rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
- <rect width="100" height="100" fill="lime" mask="url(#unknown)"/>
- </g>
-
- <g transform="translate(110 110)">
- <rect x="0.5" y="0.5" width="99" height="99" fill="lime"/>
- <rect width="100" height="100" fill="red" mask="url(#opacitymask)"/>
- </g>
-
- <g transform="translate(220 110)">
- <rect x="0.5" y="0.5" width="99" height="99" fill="lime"/>
- <rect width="100" height="100" fill="red" mask="url(#strokefillmask)"/>
- </g>
-
- <g transform="translate(0 220)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" mask="url(#strokewidthmask)"/>
- <rect x="29" y="29" width="42" height="42" fill="lime"/>
- </g>
-
- <g transform="translate(110 220)">
- <rect width="100" height="100" fill="lime"/>
- <rect width="100" height="100" fill="red" mask="url(#strokeopacitymask)"/>
- </g>
-
- <g transform="translate(220 220)">
- <rect x="0.5" y="0.5" width="99" height="99" fill="lime"/>
- <rect width="100" height="100" fill="red" mask="url(#fillopacitymask)"/>
- </g>
-
- <rect width="320" height="320" fill="none" stroke="black"/>
- </g>
-
-
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-11-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-11-b-manual.svg
index 957f85319ab..6a43712619a 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-11-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-11-b-manual.svg
@@ -48,7 +48,7 @@
<text x="50%" y="55%" text-anchor="middle" font-size="48">ABC</text>
</mask>
</defs>
-
+
<image xlink:href="../images/DisplaceChecker.png" x="140" y="80" width="200" height="200"/>
<rect width="100" height="100" x="190" y="130" fill="blue" mask="url(#maskedtext)"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-12-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-12-f-manual.svg
index 60c6894931b..90005b99970 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-12-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-12-f-manual.svg
@@ -15,7 +15,7 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>Run the test. No interaction required.</p>
+ <p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
@@ -39,10 +39,10 @@
<rect x="100" y="100" width="50" height="50" display="inherit" />
</clipPath>
</g>
-
+
<rect id="pass" x="200" y="100" width="50" height="50" fill="green"/>
<rect id="fail" x="200" y="100" width="50" height="50" fill="red"/>
-
+
<script type="text/javascript"><![CDATA[
try
{
@@ -75,4 +75,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-13-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-13-f-manual.svg
index 89b85421bae..82132e75685 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-13-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-13-f-manual.svg
@@ -49,4 +49,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/masking-path-14-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/masking-path-14-f-manual.svg
index b0c39c0f43a..bc7e1da576c 100644
--- a/tests/wpt/web-platform-tests/svg/import/masking-path-14-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/masking-path-14-f-manual.svg
@@ -69,4 +69,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/metadata-example-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/metadata-example-01-t-manual.svg
index 69eda51c95d..199fd980ee0 100644
--- a/tests/wpt/web-platform-tests/svg/import/metadata-example-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/metadata-example-01-t-manual.svg
@@ -16,10 +16,10 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/metadata.html#Example">
<p>
Check that metadata in a variety of namespaces, inside a metadata
- element, does not affect rendering in any way. The file is not valid to
+ element, does not affect rendering in any way. The file is not valid to
the SVG 1.1 DTD, but is well formed.
</p>
- <p>The diagram on the table is, by the way, a visualization of the
+ <p>The diagram on the table is, by the way, a visualization of the
RDF metadata in the graphic.</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -44,15 +44,15 @@
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<metadata>
- <rdf:RDF
+ <rdf:RDF
xmlns:prism="http://prismstandard.org/namespaces/1.0/basic/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
- <!-- The empty value for the rdf:about attribute means it is describing
+ <!-- The empty value for the rdf:about attribute means it is describing
the file this is contained in. -->
<rdf:Description rdf:about="">
- <dc:description>Line drawing of woman in antique attire,
+ <dc:description>Line drawing of woman in antique attire,
which looks legal or perhaps mystical.</dc:description>
<dc:format>image/svg+xml</dc:format>
<dc:subject>Sibyll Trelawney</dc:subject>
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-control-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-control-01-f-manual.svg
index 07c1261d58f..332f7053fab 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-control-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-control-01-f-manual.svg
@@ -16,15 +16,15 @@
Elements are rendered when the 'display' attribute is set to any valid value other than 'none'.
</p>
<p>
- For each valid 'display' value (except none), the test creates a 'rect' element with that 'display' value assigned. Under that
- element, a red 'rect' is placed at the exact same 'x', 'y' position with the same height and width. Test passes if the 'rect'
+ For each valid 'display' value (except none), the test creates a 'rect' element with that 'display' value assigned. Under that
+ element, a red 'rect' is placed at the exact same 'x', 'y' position with the same height and width. Test passes if the 'rect'
with 'display' covers the red 'rect'.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Run the test. No interaction required.
- </p>
+ <p>
+ Run the test. No interaction required.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-control-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-control-02-f-manual.svg
index 8177e60bfcc..439131979d2 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-control-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-control-02-f-manual.svg
@@ -22,9 +22,9 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Run the test. No interaction required.
- </p>
+ <p>
+ Run the test. No interaction required.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-control-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-control-04-f-manual.svg
index 95b5262811e..595241427a1 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-control-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-control-04-f-manual.svg
@@ -20,7 +20,7 @@
<p>
Run the test. No interaction required.
</p>
- </d:operatorScript>
+ </d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
Test passes if there is a blue circle, a blue square, and no red on the page.
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-control-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-control-05-f-manual.svg
index 48a984d212d..d9c40b93a12 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-control-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-control-05-f-manual.svg
@@ -39,7 +39,7 @@
<rect id="displaynone_rect" width="100%" height="100%" display="none" />
<rect id="rect" width="100%" height="100%" />
<use id="displaynone_use_rect" xlink:href="#displaynone_rect"/>
-
+
<!-- an empty mask where the basic shape element has display=none -->
<mask id="testMask1">
<rect width="100%" height="100%" display="none" fill="white" />
@@ -77,7 +77,7 @@
<rect width="0" height="0"/>
</clipPath>
</defs>
-
+
<g id="reference" fill="lime" stroke="black">
<rect x="50" y="50" width="100" height="100"/>
<rect x="150" y="50" width="100" height="100"/>
@@ -88,12 +88,12 @@
<rect x="250" y="200" width="100" height="100"/>
<rect x="350" y="200" width="100" height="100"/>
</g>
-
+
<rect x="50" y="50" width="100" height="100" fill="red" mask="url(#testMask1)"/>
<rect x="150" y="50" width="100" height="100" fill="red" mask="url(#testMask2)"/>
<rect x="250" y="50" width="100" height="100" fill="red" mask="url(#testMask3)"/>
<rect x="350" y="50" width="100" height="100" fill="red" mask="url(#testMask4)"/>
-
+
<rect x="50" y="200" width="100" height="100" fill="red" clip-path="url(#testClip1)"/>
<rect x="150" y="200" width="100" height="100" fill="red" clip-path="url(#testClip2)"/>
<rect x="250" y="200" width="100" height="100" fill="red" clip-path="url(#testClip3)"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-control-06-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-control-06-f-manual.svg
index 58e4efd3204..66b20af64af 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-control-06-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-control-06-f-manual.svg
@@ -6,7 +6,7 @@
<!--= All Rights Reserved. =-->
<!--= See http://www.w3.org/Consortium/Legal/. =-->
<!--======================================================================-->
- <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/" template-version="1.4"
+ <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/" template-version="1.4"
reviewer="ED" author="Microsoft" status="accepted" version="$Revision: 1.4 $" testname="$RCSfile: painting-control-06-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/painting.html#VisibilityControl">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-fill-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-fill-01-t-manual.svg
index bb66cb0d919..edf6d2e3c56 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-fill-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-fill-01-t-manual.svg
@@ -16,7 +16,7 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/painting.html#FillProperties">
<p>
Verify the basic capability to handle the fill properties fill:none,
- and fill with a color (fill:green)
+ and fill with a color (fill:green)
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-marker-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-marker-01-f-manual.svg
index b48c390fcaa..bedf37f7812 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-marker-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-marker-01-f-manual.svg
@@ -15,7 +15,7 @@
version="$Revision: 1.7 $" testname="$RCSfile: painting-marker-01-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/painting.html#Markers">
<p>
- Tests the basic support for markers.
+ Tests the basic support for markers.
</p>
<p>
The top test examines the basic support for the marker element and style. The markers are purple rectangles.
@@ -43,9 +43,9 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- For the three tests, there should be two identical paths with markers drawn.
- The path on the left is rendered using the marker elements. The path on the
- right is rendered using the equivalent SVG, showing what the marked path should
+ For the three tests, there should be two identical paths with markers drawn.
+ The path on the left is rendered using the marker elements. The path on the
+ right is rendered using the equivalent SVG, showing what the marked path should
look like.
</p>
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-marker-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-marker-02-f-manual.svg
index bab08fc2791..ee37ddc0a8e 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-marker-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-marker-02-f-manual.svg
@@ -16,7 +16,7 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/painting.html#Markers">
<p>
Tests the rendering of markers, specifically property inheritance. For the four tests, there should
- be two identical paths with markers drawn.
+ be two identical paths with markers drawn.
</p>
<p>
The top two tests examine the rendering of markers when the marker and the path
@@ -47,9 +47,9 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The path on the left is rendered using the marker elements.
- The path on the right is rendered using the equivalent SVG,
- showing what the marked path should look like. These should be
+ The path on the left is rendered using the marker elements.
+ The path on the right is rendered using the equivalent SVG,
+ showing what the marked path should look like. These should be
identical and match the image to the right.
</p>
</d:passCriteria>
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-marker-06-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-marker-06-f-manual.svg
index c1929f81e3d..3a4ebc63c02 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-marker-06-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-marker-06-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -65,95 +65,95 @@
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<defs>
- <!-- ===================================================================== -->
- <!-- Define a few simple marker elements -->
- <!-- ===================================================================== -->
+ <!-- ===================================================================== -->
+ <!-- Define a few simple marker elements -->
+ <!-- ===================================================================== -->
<marker id="marker1" viewBox="20 20 10 10" markerWidth="2" markerHeight="2" refX="25" refY="25" markerUnits="strokeWidth">
<rect x="20" y="20" width="10" height="10" fill="purple" stroke="none"/>
</marker>
<marker id="marker2" viewBox="-5 -5 10 10" markerWidth="2" markerHeight="2" markerUnits="strokeWidth" orient="auto">
<path d="M 0 -5 L 5 5 L -5 5 Z" fill="blue" stroke="none"/>
</marker>
- <marker id="markerStart" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
- <rect width="10" height="10" fill="purple" stroke="none"/>
- </marker>
- <marker id="markerMiddle" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
- <circle cx="5" cy="5" r="5" fill="green" stroke="none"/>
- </marker>
- <marker id="markerEnd" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
- <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
- </marker>
- </defs>
- <!-- ===================================================================== -->
- <!-- Basic Marker Test -->
- <!-- ===================================================================== -->
- <text x="170" y="30" font-size="14">Basic Markers</text>
- <path fill="none" stroke="black" stroke-width="8" marker-start="url(#marker1)" marker-mid="url(#marker1)" marker-end="url(#marker1)" d="M 130 40 L 180 40 L 180 90"/>
- <!-- ===================================================================== -->
- <!-- Generate the equivalent SVG -->
- <!-- ===================================================================== -->
- <g transform="translate(120,0)">
- <path fill="none" stroke="black" stroke-width="8" d="M 130 40 L 180 40 L 180 90"/>
- <g transform="translate(130,40) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
- <rect width="10" height="10" fill="purple" stroke="none"/>
- </g>
- <g transform="translate(180,40) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
- <rect width="10" height="10" fill="purple" stroke="none"/>
- </g>
- <g transform="translate(180,90) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
- <rect width="10" height="10" fill="purple" stroke="none"/>
- </g>
- </g>
- <!-- ===================================================================== -->
- <!-- Start, Middle and End Marker Test -->
- <!-- ===================================================================== -->
- <text x="145" y="125" font-size="14">Start, Middle and End</text>
- <path fill="none" stroke="black" stroke-width="8" marker-start="url(#markerStart)" marker-mid="url(#markerMiddle)" marker-end="url(#markerEnd)" d="M 130 135 L 180 135 L 180 185"/>
- <!-- ===================================================================== -->
- <!-- Generate the equivalent SVG -->
- <!-- ===================================================================== -->
- <g transform="translate(120,0)">
- <path fill="none" stroke="black" stroke-width="8" d="M 130 135 L 180 135 L 180 185"/>
- <g transform="translate(130,135) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
- <rect width="10" height="10" fill="purple" stroke="none"/>
- </g>
- <g transform="translate(180,135) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
- <circle cx="5" cy="5" r="5" fill="green" stroke="none"/>
- </g>
- <g transform="translate(180,185) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
- <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
- </g>
- </g>
- <!-- ===================================================================== -->
- <!-- Auto Orientation Marker Test -->
- <!-- ===================================================================== -->
- <text x="145" y="220" font-size="14">Automatic Orientation</text>
- <path fill="none" stroke="black" stroke-width="8" marker-start="url(#marker2)" marker-mid="url(#marker2)" marker-end="url(#marker2)" d="M 130 230 L 180 230 L 180 280"/>
- <!-- ===================================================================== -->
- <!-- Generate the equivalent SVG -->
- <!-- ===================================================================== -->
- <g transform="translate(120,0)">
- <path fill="none" stroke="black" stroke-width="8" d="M 130 230 L 180 230 L 180 280"/>
- <g transform="translate(130,230) rotate(0) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
- <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
- </g>
- <g transform="translate(180,230) rotate(45) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
- <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
- </g>
- <g transform="translate(180,280) rotate(90) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
- <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
- </g>
- </g>
+ <marker id="markerStart" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
+ <rect width="10" height="10" fill="purple" stroke="none"/>
+ </marker>
+ <marker id="markerMiddle" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
+ <circle cx="5" cy="5" r="5" fill="green" stroke="none"/>
+ </marker>
+ <marker id="markerEnd" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
+ <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
+ </marker>
+ </defs>
+ <!-- ===================================================================== -->
+ <!-- Basic Marker Test -->
+ <!-- ===================================================================== -->
+ <text x="170" y="30" font-size="14">Basic Markers</text>
+ <path fill="none" stroke="black" stroke-width="8" marker-start="url(#marker1)" marker-mid="url(#marker1)" marker-end="url(#marker1)" d="M 130 40 L 180 40 L 180 90"/>
+ <!-- ===================================================================== -->
+ <!-- Generate the equivalent SVG -->
+ <!-- ===================================================================== -->
+ <g transform="translate(120,0)">
+ <path fill="none" stroke="black" stroke-width="8" d="M 130 40 L 180 40 L 180 90"/>
+ <g transform="translate(130,40) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
+ <rect width="10" height="10" fill="purple" stroke="none"/>
+ </g>
+ <g transform="translate(180,40) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
+ <rect width="10" height="10" fill="purple" stroke="none"/>
+ </g>
+ <g transform="translate(180,90) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
+ <rect width="10" height="10" fill="purple" stroke="none"/>
+ </g>
+ </g>
+ <!-- ===================================================================== -->
+ <!-- Start, Middle and End Marker Test -->
+ <!-- ===================================================================== -->
+ <text x="145" y="125" font-size="14">Start, Middle and End</text>
+ <path fill="none" stroke="black" stroke-width="8" marker-start="url(#markerStart)" marker-mid="url(#markerMiddle)" marker-end="url(#markerEnd)" d="M 130 135 L 180 135 L 180 185"/>
+ <!-- ===================================================================== -->
+ <!-- Generate the equivalent SVG -->
+ <!-- ===================================================================== -->
+ <g transform="translate(120,0)">
+ <path fill="none" stroke="black" stroke-width="8" d="M 130 135 L 180 135 L 180 185"/>
+ <g transform="translate(130,135) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
+ <rect width="10" height="10" fill="purple" stroke="none"/>
+ </g>
+ <g transform="translate(180,135) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
+ <circle cx="5" cy="5" r="5" fill="green" stroke="none"/>
+ </g>
+ <g transform="translate(180,185) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
+ <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
+ </g>
+ </g>
+ <!-- ===================================================================== -->
+ <!-- Auto Orientation Marker Test -->
+ <!-- ===================================================================== -->
+ <text x="145" y="220" font-size="14">Automatic Orientation</text>
+ <path fill="none" stroke="black" stroke-width="8" marker-start="url(#marker2)" marker-mid="url(#marker2)" marker-end="url(#marker2)" d="M 130 230 L 180 230 L 180 280"/>
+ <!-- ===================================================================== -->
+ <!-- Generate the equivalent SVG -->
+ <!-- ===================================================================== -->
+ <g transform="translate(120,0)">
+ <path fill="none" stroke="black" stroke-width="8" d="M 130 230 L 180 230 L 180 280"/>
+ <g transform="translate(130,230) rotate(0) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
+ <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
+ </g>
+ <g transform="translate(180,230) rotate(45) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
+ <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
+ </g>
+ <g transform="translate(180,280) rotate(90) scale(8) scale(0.2, 0.2) translate(-5, -5)" fill="none" stroke="black" stroke-width="8">
+ <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
+ </g>
+ </g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.9 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved -->
<!--<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-marker-07-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-marker-07-f-manual.svg
index fc086730ed9..19aaa47fb2b 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-marker-07-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-marker-07-f-manual.svg
@@ -63,4 +63,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/painting-stroke-08-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/painting-stroke-08-t-manual.svg
index a16b2965afe..28d9f282541 100644
--- a/tests/wpt/web-platform-tests/svg/import/painting-stroke-08-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/painting-stroke-08-t-manual.svg
@@ -69,7 +69,7 @@
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.6 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-02-t-manual.svg
index cad5865d6f7..a7d1f94c989 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-02-t-manual.svg
@@ -26,7 +26,7 @@
both, using simple style properties and colors.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-03-f-manual.svg
index 3f087fdce3a..7a37389587c 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-03-f-manual.svg
@@ -26,7 +26,7 @@
both, using simple style properties and colors.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-04-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-04-t-manual.svg
index 63fef435838..e0f395fbe6e 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-04-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-04-t-manual.svg
@@ -23,7 +23,7 @@
the inner triangle is hollow.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
@@ -47,7 +47,7 @@
<!-- First Group of Triangles using M, L & Z commands ===================== -->
<!-- ====================================================================== -->
<g transform="scale(1.8)">
- <!-- <text font-size="12" x="160" y="14">Lines drawn with commands:</text> -->
+ <!-- <text font-size="12" x="160" y="14">Lines drawn with commands:</text> -->
<text font-size="12" x="88" y="30">M, L, L, L, Z,</text>
<text font-size="12" x="98" y="46">subpath</text>
<text font-size="12" x="88" y="61">M, L, L, L, Z</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-05-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-05-t-manual.svg
index cea68ca97f7..135117984ec 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-05-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-05-t-manual.svg
@@ -23,7 +23,7 @@
the inner triangle is hollow.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-06-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-06-t-manual.svg
index 5e0fa31c16b..07a8f4494c9 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-06-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-06-t-manual.svg
@@ -22,7 +22,7 @@
one filled.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-08-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-08-t-manual.svg
index 5b2af84fdc7..632a183efc1 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-08-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-08-t-manual.svg
@@ -24,7 +24,7 @@
the inner triangle is hollow.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-09-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-09-t-manual.svg
index d2908c20710..c65d584b74d 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-09-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-09-t-manual.svg
@@ -24,7 +24,7 @@
the inner triangle is hollow.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-10-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-10-t-manual.svg
index ebfcda85119..2f3a7f30937 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-10-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-10-t-manual.svg
@@ -23,7 +23,7 @@
same.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-13-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-13-t-manual.svg
index 8525043b260..487dae78ced 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-13-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-13-t-manual.svg
@@ -15,10 +15,10 @@
version="$Revision: 1.5 $" testname="$RCSfile: paths-data-13-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/paths.html#PathData">
<p>
- Test multiple coordinates for V and H.
+ Test multiple coordinates for V and H.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-17-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-17-f-manual.svg
index d6801a8640d..2d18e56cc6c 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-17-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-17-f-manual.svg
@@ -29,7 +29,7 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test is passed if two black-stroked, unfilled squares are visible and
- there is no red visible on the page.
+ there is no red visible on the page.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -56,7 +56,7 @@
fill="black">$Revision: 1.4 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-18-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-18-f-manual.svg
index e50a85079d3..097473debf0 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-18-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-18-f-manual.svg
@@ -59,7 +59,7 @@
<path d="M 20 40 H 40" stroke-width="2" stroke="red" />
<path d="M 20 40
H 40" stroke-width="4" stroke="black" />
-
+
<path d="M 20 60 H 40" stroke-width="2" stroke="red" />
<path d="
M
@@ -68,19 +68,19 @@
H
40
" stroke-width="4" stroke="black" />
-
+
<path d="M 20 80 H40" stroke-width="2" stroke="red" />
<path d="M 20,80 H 40" stroke-width="4" stroke="black" />
-
+
<path d="M 20 100 H 40#90" stroke-width="2" stroke="red" />
<path d="M 20 100 H 40" stroke-width="4" stroke="black" />
-
+
<path d="M 20 120 H 40.5 0.6" stroke-width="2" stroke="red" />
<path d="M 20 120 H 40.5.6" stroke-width="4" stroke="black" />
-
+
<path d="M 20 140 h 10 -20" stroke-width="2" stroke="red" />
<path d="M 20 140 h 10-20" stroke-width="4" stroke="black" />
-
+
<path d="M 20 160 H 40" stroke-width="2" stroke="red" />
<path d="M 20 160 H 40#90" stroke-width="4" stroke="black" />
</g>
@@ -91,7 +91,7 @@
fill="black">$Revision: 1.6 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-19-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-19-f-manual.svg
index 5d6d49a9ed9..ef0c116ce0a 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-19-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-19-f-manual.svg
@@ -98,7 +98,7 @@
fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/paths-data-20-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/paths-data-20-f-manual.svg
index b0827e5ca9d..ed643bce406 100644
--- a/tests/wpt/web-platform-tests/svg/import/paths-data-20-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/paths-data-20-f-manual.svg
@@ -41,26 +41,26 @@
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <!-- no commawsp between arc flags -->
+ <!-- no commawsp between arc flags -->
<path d="M120,120 h25 a25,25 0 1,0 -25,25 z" fill="red" stroke="lime"/>
<path d="M120,120 h25 a25,25 0 10 -25,25z" fill="lime"/>
<!-- no commawsp between arc flags and no commawsp after arc flags -->
<path d="M200,120 h-25 a25,25 0 1,1 25,25 z" fill="red" stroke="lime"/>
<path d="M200,120 h-25 a25,25 0 1125,25 z" fill="lime"/>
-
+
<!-- out of range large-arc-flag value -->
<path d="M280,120 h25 a25,25 0 1,0 -25,25 z" fill="lime" stroke="lime"/>
<path d="M280,120 h25 a25,25 0 6 0 -25,25 z" fill="red"/>
-
+
<!-- negative sweep-flag value -->
<path d="M360,120 h-25 a25,25 0 1,1 25,25 z" fill="lime" stroke="lime"/>
<path d="M360,120 h-25 a25,25 0 1 -1 25,25 z" fill="red"/>
-
+
<!-- no commawsp between sweep-flag and following coordinate-pair -->
<path d="M120,200 h25 a25,25 0 1,1 -25,-25 z" fill="red" stroke="lime"/>
<path d="M120,200 h25 a25,25 0 1 1-25,-25 z" fill="lime"/>
-
+
<!-- no commawsp before arc flags -->
<path d="M200,200 h-25 a25,25 0 1,0 25,-25 z" fill="lime" stroke="lime"/>
<path d="M200,200 h-25 a25,2501 025,-25 z" fill="red"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-01-b-manual.svg
index 77b7565378c..6b3903c0c5b 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-01-b-manual.svg
@@ -23,14 +23,14 @@
reference to the first gradient, without modifying any attribute.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if there are two rectangles, both with a blue to lime gradient.
+ The test is passed if there are two rectangles, both with a blue to lime gradient.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-02-b-manual.svg
index bbdfb9b0358..7268f2ecbd5 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-02-b-manual.svg
@@ -29,7 +29,7 @@
stops from the gradient to the left, with a different geometry. The radial gradient appears circular.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-03-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-03-b-manual.svg
index f3dfc259ce3..aa33de24920 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-03-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-03-b-manual.svg
@@ -29,7 +29,7 @@
edges of the respective rectangles is identical.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-04-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-04-b-manual.svg
index 876a07a646e..02ebbf61020 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-04-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-04-b-manual.svg
@@ -32,9 +32,9 @@
to outermost in the following order: black, yellow, orange, blue, white, green.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-05-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-05-b-manual.svg
index d08e1f7e5ee..c6073223e5b 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-05-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-05-b-manual.svg
@@ -42,7 +42,7 @@
Also a stop opacity is given to the colors in the following order: 1, 0.2, 0.5, 0, 0.8, 1
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-06-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-06-b-manual.svg
index 374b1e3e2ec..49b3287f971 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-06-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-06-b-manual.svg
@@ -38,7 +38,7 @@
consists of a 2 by 2 array of colored rectangles.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-07-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-07-b-manual.svg
index 9e9b32dc026..87bae00f71f 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-07-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-07-b-manual.svg
@@ -34,7 +34,7 @@
applied.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-10-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-10-b-manual.svg
index 52d893e3e8b..6970ab1e0b7 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-10-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-10-b-manual.svg
@@ -18,9 +18,9 @@
Test that the viewer can handle the spreadMethod attribute on linear gradients.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-11-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-11-b-manual.svg
index dc5e21209b8..79c73a5bd0b 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-11-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-11-b-manual.svg
@@ -42,7 +42,7 @@
(out) linear gradient is applied.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-12-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-12-b-manual.svg
index d00f73af8c8..6572b66501f 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-12-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-12-b-manual.svg
@@ -38,7 +38,7 @@
The gradient should appear in the center of the rectangle as a radial gradient from yellow (center) to blue (edge).
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Run the test. No interaction required.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-14-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-14-b-manual.svg
index 63045cfa6d2..e3eda15c986 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-14-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-14-b-manual.svg
@@ -94,7 +94,6 @@
<rect x="10" y="270" width="225" height="40" fill="url(#lgSpreadDefault)" stroke="none"/>
<text font-size="16" x="10" y="265">spreadMethod="default"</text>
-
<rect x="245" y="060" width="225" height="40" fill="url(#rgSpreadPad)" stroke="none"/>
<text font-size="16" x="245" y="55">spreadMethod="pad"</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-15-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-15-b-manual.svg
index 84ecd8f256b..d83cac3ad05 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-15-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-15-b-manual.svg
@@ -20,7 +20,7 @@
and testing defaults for radial grad cx,cy,r = 50%, fx,fy = cx,cy.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-18-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-18-b-manual.svg
index 3bb4411c022..6c042ac20f5 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-18-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-18-b-manual.svg
@@ -19,27 +19,27 @@
Several gradients are defined, with two stops:
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
For the top-left rectangle's gradient:
The first stop defines a fully-opaque green color.
- The second stop explicitly inherits (i.e. using the 'inherit' keyword) its stop-color.
+ The second stop explicitly inherits (i.e. using the 'inherit' keyword) its stop-color.
</p>
<p>
For the top-right rectangle's gradient:
The first stop defines a fully-opaque green color.
- The second stop defines a green stop-color but explicitly inherits (i.e. using the 'inherit' keyword) the stop-opacity.
+ The second stop defines a green stop-color but explicitly inherits (i.e. using the 'inherit' keyword) the stop-opacity.
</p>
<p>
For the bottom-left rectangle's gradient:
The first stop defines a fully-opaque green color.
The second stop does not specify the stop-color and the stop-opacity.
- Since both properties are not inherited, the initial value should be used.
+ Since both properties are not inherited, the initial value should be used.
</p>
<p>
For the bottom-right rectangle's gradient:
The first stop defines a fully-opaque green color.
- The second stop specifies the stop-color using the 'currentColor' keyword.
+ The second stop specifies the stop-color using the 'currentColor' keyword.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-20-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-20-b-manual.svg
index e1812a12c8d..53e690b8630 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-20-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-20-b-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -57,7 +57,7 @@
<stop offset="1" stop-color="white" />
</linearGradient>
</defs>
-
+
<!-- sub-test 1: stroke with solid color fallback -->
<g transform="translate(50, 100) scale(0.3)">
<path d="M0 180L480 180" stroke="url(#grad) #0f0" stroke-width="20"/>
@@ -67,10 +67,10 @@
<rect x="0" y="-60" width="480" height="480" fill="none" stroke="black"/>
</g>
<text x="120" y="250" text-anchor="middle">With fallback</text>
-
+
<!-- sub-test 2: stroke without a fallback -->
<g transform="translate(280,100) scale(0.3)">
- <path d="M0 180L480 180" stroke="url(#grad)" stroke-width="20"/>
+ <path d="M0 180L480 180" stroke="url(#grad)" stroke-width="20"/>
<path d="M0 180L480 180" stroke="url(#grad)" stroke-width="20" transform="rotate(45 240 180)"/>
<path d="M0 180L480 180" stroke="url(#grad)" stroke-width="20" transform="rotate(90 240 180)"/>
<path d="M410 10L70 350" stroke="url(#grad)" stroke-width="20"/>
@@ -79,14 +79,14 @@
<text x="350" y="250" text-anchor="middle">Without fallback</text>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.7 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved -->
<!--<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-21-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-21-b-manual.svg
index 8024d520b27..df4bbd64cf5 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-21-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-21-b-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -14,7 +14,7 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/pservers.html#Gradients">
<p>
Test the inheritance of radial gradient attributes. The test has six ellipses with blue stroke, each filled
- with two gradients.
+ with two gradients.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -59,7 +59,7 @@
<stop offset="1" stop-opacity="0"/>
</radialGradient>
<radialGradient id="grad6" xlink:href="#grad5" cx="0%"/>
-
+
<radialGradient id="grad1-ref" cx="100%" r="20%">
<stop offset="0" stop-color="black" />
<stop offset="1" stop-opacity="0"/>
@@ -85,7 +85,7 @@
<stop offset="1" stop-opacity="0"/>
</radialGradient>
</defs>
-
+
<g transform="translate(100 60)">
<!-- first line of tests -->
<rect fill="url(#grad1)" x="-60" width="120" height="90"/>
@@ -105,7 +105,7 @@
<rect fill="url(#grad4)" x="60" width="120" height="90"/>
<ellipse cx="60" cy="45" rx="24" ry="18" fill="none" stroke="blue"/>
</g>
-
+
<!-- reference for second line -->
<g transform="translate(100 50)">
<rect fill="url(#grad3-ref)" x="-60" width="120" height="90"/>
@@ -119,28 +119,28 @@
<rect fill="url(#grad6)" x="60" width="120" height="90"/>
<ellipse cx="60" cy="45" rx="24" ry="18" fill="none" stroke="blue"/>
</g>
-
+
<!-- reference for third line -->
<g transform="translate(100 100)">
<rect fill="url(#grad5-ref)" x="-60" width="120" height="90"/>
<rect fill="url(#grad6-ref)" x="60" width="120" height="90"/>
<ellipse cx="60" cy="45" rx="24" ry="18" fill="none" stroke="blue"/>
</g>
-
+
<rect x="120" y="20" width="80" height="200" fill="none" stroke="green"/>
- <text y="200" x="160" text-anchor="middle" font-size="12">Reference</text>
+ <text y="200" x="160" text-anchor="middle" font-size="12">Reference</text>
</g>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.4 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-grad-23-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-grad-23-f-manual.svg
index 3029214d7bc..ee336e4cbeb 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-grad-23-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-grad-23-f-manual.svg
@@ -17,8 +17,8 @@
</p>
<p>
<!--[[
- Specify a 'stop-color' attribute equal to 'red' on a 'g' element ancestor of a 'rect' element. Specify a 'linearGradient' with a single
- 'stop' that has a 'stop-color' of 'inherit'. Reference the 'linearGradient' from the 'rect' element and verify that the 'rect' is not red.
+ Specify a 'stop-color' attribute equal to 'red' on a 'g' element ancestor of a 'rect' element. Specify a 'linearGradient' with a single
+ 'stop' that has a 'stop-color' of 'inherit'. Reference the 'linearGradient' from the 'rect' element and verify that the 'rect' is not red.
Repeat the same process with a sibling 'rect' element referencing a 'radialGradient' element.
]]-->
</p>
@@ -29,7 +29,7 @@
</p>
<p>
<!--[[
-
+
]]-->
</p>
</d:operatorScript>
@@ -64,7 +64,7 @@
<rect x="30" y="30" width="100" height="100" fill="url(#testLinear)" stop-color="inherit" />
<rect x="150" y="30" width="100" height="100" fill="url(#testRadial)" stop-color="inherit" />
</g>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
@@ -77,4 +77,4 @@
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-pattern-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-pattern-03-f-manual.svg
index dbf9f4796c3..a363e5e0372 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-pattern-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-pattern-03-f-manual.svg
@@ -72,7 +72,7 @@
<rect y="100" width="100" height="100" fill="url(#invisible5) lime"/>
<rect x="100" y="100" width="100" height="100" fill="url(#invisible6) lime"/>
<rect x="200" y="100" width="100" height="100" fill="url(#invisible7) lime"/>
-
+
<!-- note that this is on purpose testing a broken uri -->
<rect x="300" y="100" width="100" height="100" fill="url(#invisible8) lime"/>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-pattern-08-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-pattern-08-f-manual.svg
index e15cb8458f9..74702cdf165 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-pattern-08-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-pattern-08-f-manual.svg
@@ -14,7 +14,7 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/pservers.html#Patterns">
<p>
Test that an invalid xlink:href on a 'pattern' element has no effect on the pattern.
- This test specifies only 'width' and 'height' on the pattern that is tested in order to catch
+ This test specifies only 'width' and 'height' on the pattern that is tested in order to catch
incorrectly overridden values from a non-existant pattern. The result is tested
with a reference pattern using slightly different syntax.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/pservers-pattern-09-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/pservers-pattern-09-f-manual.svg
index 4d0ec1ae10e..f98cdc29eed 100644
--- a/tests/wpt/web-platform-tests/svg/import/pservers-pattern-09-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/pservers-pattern-09-f-manual.svg
@@ -15,7 +15,7 @@
<p>
Test that an invalid xlink:href on a 'pattern' element has no effect on the pattern, and that the
pattern isn't rendered since the default 'width' and 'height' is 0.
- A subtest that explicitly specifies 'width' and 'height' as 0 is added as a reference.
+ A subtest that explicitly specifies 'width' and 'height' as 0 is added as a reference.
Both of these cases should result in the fallback color being used.
</p>
</d:testDescription>
diff --git a/tests/wpt/web-platform-tests/svg/import/render-elems-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/render-elems-01-t-manual.svg
index ec391f88e31..230a8621e0f 100644
--- a/tests/wpt/web-platform-tests/svg/import/render-elems-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/render-elems-01-t-manual.svg
@@ -18,7 +18,7 @@
Verifies that shapes can be filled.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/render-elems-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/render-elems-02-t-manual.svg
index 30646c64b22..6e92825b359 100644
--- a/tests/wpt/web-platform-tests/svg/import/render-elems-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/render-elems-02-t-manual.svg
@@ -18,7 +18,7 @@
Verifies that shapes can be stroked.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/render-elems-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/render-elems-03-t-manual.svg
index b5a6b1a9ffb..5f3cabde53d 100644
--- a/tests/wpt/web-platform-tests/svg/import/render-elems-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/render-elems-03-t-manual.svg
@@ -21,7 +21,7 @@
Verifies that shapes can be filled, stroked and the order of filling and stroking.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/render-elems-06-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/render-elems-06-t-manual.svg
index ef2002b05ee..e7d109a9578 100644
--- a/tests/wpt/web-platform-tests/svg/import/render-elems-06-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/render-elems-06-t-manual.svg
@@ -15,10 +15,10 @@
version="$Revision: 1.9 $" testname="$RCSfile: render-elems-06-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/render.html#Elements">
<p>
- Verifies that text can be filled.
+ Verifies that text can be filled.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
@@ -26,7 +26,7 @@ Run the test. No interaction required.
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The
- test shows two 'G' characters that are filled
+ test shows two 'G' characters that are filled
(green to the left, and with navy to the right) and not stroked.
</p>
</d:passCriteria>
diff --git a/tests/wpt/web-platform-tests/svg/import/render-elems-07-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/render-elems-07-t-manual.svg
index 427e626ea1e..a5ae1d56d8c 100644
--- a/tests/wpt/web-platform-tests/svg/import/render-elems-07-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/render-elems-07-t-manual.svg
@@ -16,10 +16,10 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/render.html#Elements">
<p>
Verifies that text can be stroked. The
-
+
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/render-elems-08-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/render-elems-08-t-manual.svg
index fb946e7f9b1..758bca71456 100644
--- a/tests/wpt/web-platform-tests/svg/import/render-elems-08-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/render-elems-08-t-manual.svg
@@ -16,10 +16,10 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/render.html#Elements">
<p>
Verifies that text can be stroked.
-
+
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/render-groups-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/render-groups-01-b-manual.svg
index 035f30c2219..3eaa8dc1aa9 100644
--- a/tests/wpt/web-platform-tests/svg/import/render-groups-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/render-groups-01-b-manual.svg
@@ -19,7 +19,7 @@
It also validates basic Shape, Image and text rendering.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/render-groups-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/render-groups-03-t-manual.svg
index 92f5da0ca6b..5cfc890e71f 100644
--- a/tests/wpt/web-platform-tests/svg/import/render-groups-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/render-groups-03-t-manual.svg
@@ -19,7 +19,7 @@
It also validates basic Shape, Image and text rendering.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/script-handle-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/script-handle-01-b-manual.svg
index b99bb864f21..6f9d3bb5965 100644
--- a/tests/wpt/web-platform-tests/svg/import/script-handle-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/script-handle-01-b-manual.svg
@@ -26,7 +26,7 @@
message indicating that the test was successful is displayed.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Load the test. Click on the blue square.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/script-handle-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/script-handle-02-b-manual.svg
index b26e98ad041..783cc6ce576 100644
--- a/tests/wpt/web-platform-tests/svg/import/script-handle-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/script-handle-02-b-manual.svg
@@ -25,14 +25,14 @@
The test shows a target that can be used to generate the various
kinds of events supported in SVG. Below the
target, the list of events is shown with red markers next to each.
- </p>
+ </p>
<p>
If the test passes, all the markers should have turned to green
after the events have been triggered on the target. If any event
has not triggered, its marker will remain red.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Load the test. Focus the gray circle, activate it, then move the focus away from the circle.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/script-handle-03-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/script-handle-03-b-manual.svg
index f2280fc0c9c..2ffa33e9444 100644
--- a/tests/wpt/web-platform-tests/svg/import/script-handle-03-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/script-handle-03-b-manual.svg
@@ -21,14 +21,14 @@
The test shows a target that can be used to generate the various
kinds of mouse events supported in SVG. Below the
target, the list of events is shown with red markers next to each.
- </p>
+ </p>
<p>
If the test passes, all the markers should have turned to green
after the events have been triggered on the target. If any event
has not triggered, its marker will remain red.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Load the test. Click on the gray circle.</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/script-handle-04-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/script-handle-04-b-manual.svg
index 2859a4dc6e1..3cd97bfea49 100644
--- a/tests/wpt/web-platform-tests/svg/import/script-handle-04-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/script-handle-04-b-manual.svg
@@ -21,7 +21,7 @@
The test shows a target that can be used to generate the various
kinds of mouse events supported in SVG. Below the
target, the list of events is shown with red markers next to each.
- </p>
+ </p>
<p>
If the test passes, all the markers should have turned to green
after the events have been triggered on the target. If any event
diff --git a/tests/wpt/web-platform-tests/svg/import/script-specify-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/script-specify-01-f-manual.svg
index a4ea296718a..a50d75b3f2d 100644
--- a/tests/wpt/web-platform-tests/svg/import/script-specify-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/script-specify-01-f-manual.svg
@@ -1,8 +1,8 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/noSuchLanguage"
- onload="document.getElementById('testPassed').setAttribute('visibility', 'hidden');
- document.getElementById('testFailed').setAttribute('visibility', 'visible');">
+ onload="document.getElementById('testPassed').setAttribute('visibility', 'hidden');
+ document.getElementById('testFailed').setAttribute('visibility', 'visible');">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
<!--= Institute of Technology, European Research Consortium for =-->
@@ -25,7 +25,7 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test is passed if string "Good, script didn't run" is displayed.
- It fails if the string "No! This is not ECMAScript!" is displayed.
+ It fails if the string "No! This is not ECMAScript!" is displayed.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -40,28 +40,27 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <!-- Displayed Title -->
- <text x="140" y="20" fill="black">
- contentScriptType Test
- </text>
+ <!-- Displayed Title -->
+ <text x="140" y="20" fill="black">
+ contentScriptType Test
+ </text>
- <!-- The onload handler would only be run if the user agent implemented the
- bogus scripting language MIME type specified in contentScriptType="". -->
- <g font-size="24" font-weight="bold" transform="translate(240,170)" text-anchor="middle">
- <text id="testPassed" fill="green">Good, script didn't run.</text>
- <text id="testFailed" fill="red" visibility="hidden">No! This is not ECMAScript!</text>
- </g>
- </g>
- <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <!-- The onload handler would only be run if the user agent implemented the
+ bogus scripting language MIME type specified in contentScriptType="". -->
+ <g font-size="24" font-weight="bold" transform="translate(240,170)" text-anchor="middle">
+ <text id="testPassed" fill="green">Good, script didn't run.</text>
+ <text id="testFailed" fill="red" visibility="hidden">No! This is not ECMAScript!</text>
+ </g>
+ </g>
+ <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.6 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved -->
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
</svg>
-
diff --git a/tests/wpt/web-platform-tests/svg/import/script-specify-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/script-specify-02-f-manual.svg
index f575b734506..bfd5f893dbf 100644
--- a/tests/wpt/web-platform-tests/svg/import/script-specify-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/script-specify-02-f-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -23,7 +23,7 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test is passed if string "Good, script didn't run" is displayed.
- It fails if the string "No! This is not ECMAScript!" is displayed.
+ It fails if the string "No! This is not ECMAScript!" is displayed.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -38,32 +38,31 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <!-- Displayed Title -->
- <text x="240" y="20" fill="black" text-anchor="middle">
- Test unknown type attribute value on script element
- </text>
+ <!-- Displayed Title -->
+ <text x="240" y="20" fill="black" text-anchor="middle">
+ Test unknown type attribute value on script element
+ </text>
- <g font-size="24" font-weight="bold" transform="translate(240,170)" text-anchor="middle">
- <text id="testPassed" fill="green">Good, script didn't run.</text>
- <text id="testFailed" fill="red" visibility="hidden">No! This is not ECMAScript!</text>
- </g>
+ <g font-size="24" font-weight="bold" transform="translate(240,170)" text-anchor="middle">
+ <text id="testPassed" fill="green">Good, script didn't run.</text>
+ <text id="testFailed" fill="red" visibility="hidden">No! This is not ECMAScript!</text>
+ </g>
- <!-- The script should be run only if the user agent implemented the bogus language. -->
- <script type="application/noSuchLanguage"><![CDATA[
- document.getElementById('testPassed').setAttribute('visibility', 'hidden');
- document.getElementById('testFailed').setAttribute('visibility', 'visible');
- ]]></script>
- </g>
- <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <!-- The script should be run only if the user agent implemented the bogus language. -->
+ <script type="application/noSuchLanguage"><![CDATA[
+ document.getElementById('testPassed').setAttribute('visibility', 'hidden');
+ document.getElementById('testFailed').setAttribute('visibility', 'visible');
+ ]]></script>
+ </g>
+ <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.7 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
-
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-ellipse-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-ellipse-03-f-manual.svg
index 21e7aec34e8..c5beafe5f09 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-ellipse-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-ellipse-03-f-manual.svg
@@ -17,8 +17,8 @@
</p>
<p>
The test shows an 'ellipse' element originating at (0,0) of the current user coordinate system, which has been altered via 'transform' from
- the initial user coordinate system. Two perpendicular lines which also originate at (0,0) and advance along the x and y axes of
- the current user coordinate system are shown. These lines overlap the top and left edges of the ellipse and verifies that the ellipse is
+ the initial user coordinate system. Two perpendicular lines which also originate at (0,0) and advance along the x and y axes of
+ the current user coordinate system are shown. These lines overlap the top and left edges of the ellipse and verifies that the ellipse is
thus axis-aligned with its current user coordinate system.
</p>
</d:testDescription>
@@ -29,7 +29,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if both ellipses are divided into four equal parts by two sets of crossing lines, and the rightmost ellipse and crossing lines are rotated together.
+ The test is passed if both ellipses are divided into four equal parts by two sets of crossing lines, and the rightmost ellipse and crossing lines are rotated together.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -63,7 +63,7 @@
fill="black">$Revision: 1.5 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-grammar-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-grammar-01-f-manual.svg
index 50183a9e77b..205137091d8 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-grammar-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-grammar-01-f-manual.svg
@@ -40,18 +40,18 @@ The test is passed if each shape seems to have a double stroke, dark green and l
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<g transform="translate(0,400)">
- <g stroke="#070" stroke-width="8">
- <polyline fill="#396"
- points="270,-225 300,-245 320,-225 340,-245 280,-280
+ <g stroke="#070" stroke-width="8">
+ <polyline fill="#396"
+ points="270,-225 300,-245 320,-225 340,-245 280,-280
390,-280 420,-240 280,-185"/>
- <polygon fill="#5F9"
+ <polygon fill="#5F9"
points="179,-185,218,-203,228,-245,202,-279,159,-280,131,-247,139,-205"/>
</g>
<g stroke="#3C6" stroke-width="3" fill="none">
- <polyline
- points="270-225 300-245 320-225 340-245 280-280
+ <polyline
+ points="270-225 300-245 320-225 340-245 280-280
390-280 420-240 280-185"/>
- <polygon
+ <polygon
points="179-185,218-203,228-245,202-279,159-280,131-247,139-205"/>
</g>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-intro-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-intro-02-f-manual.svg
index 668ced41318..af947c2dd5a 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-intro-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-intro-02-f-manual.svg
@@ -17,7 +17,7 @@
</p>
<p>
For each basic shape, a 'path' reference element that is red is created.
- A basic shape is then placed on top of the 'path' element.
+ A basic shape is then placed on top of the 'path' element.
For each basic shape there's also a reverse test that uses the shape as a reference for the 'path' element.
</p>
</d:testDescription>
@@ -80,7 +80,7 @@
fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-line-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-line-02-f-manual.svg
index f6f2bbec5a1..137f81650ea 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-line-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-line-02-f-manual.svg
@@ -15,7 +15,7 @@
<p>
The 'fill' attribute has no effect on the 'line' element.
</p>
- </d:testDescription>
+ </d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
@@ -54,4 +54,4 @@
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-polygon-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-polygon-02-t-manual.svg
index d0e4e7ad895..1ab6c726f88 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-polygon-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-polygon-02-t-manual.svg
@@ -38,20 +38,20 @@ The test is passed if each shape seems to have a double stroke, dark green and l
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
- <g stroke="#070" stroke-width="8">
+
+ <g stroke="#070" stroke-width="8">
<polygon id="polygon-01" fill="none"
points="59,45,95,63,108,105,82,139,39,140,11,107,19,65"/>
- <polygon id="polygon-02" fill="#592"
+ <polygon id="polygon-02" fill="#592"
points="179,45,218,63,228,105,202,139,159,140,131,107,139,65,179,45"/>
- <polygon id="polygon-03" fill="#3D8"
+ <polygon id="polygon-03" fill="#3D8"
points="350,45 375,80 410,95 375,110 350,145 325,120 290,95 325,70,350,45"/>
- <polygon id="polygon-05" fill="none"
+ <polygon id="polygon-05" fill="none"
points="59,185,98,203,108,245,82,279,39,280,11,247,19,205,59,185"/>
- <polygon id="polygon-06" fill="#5F9"
+ <polygon id="polygon-06" fill="#5F9"
points="179,185,218,203,228,245,202,279,159,280,131,247,139,205"/>
- <polygon id="polygon-07" fill="none"
- points="270,225 300,245 320,225 340,245 280,280
+ <polygon id="polygon-07" fill="none"
+ points="270,225 300,245 320,225 340,245 280,280
390,280 420,240 280,185"/>
</g>
<!-- now the equivalent paths-->
@@ -61,7 +61,7 @@ The test is passed if each shape seems to have a double stroke, dark green and l
<path d="M350,45 L375,80 410,95 375,110 350,145 325,120 290,95 325,70,350,45z"/>
<path d="M59,185 L98,203,108,245,82,279,39,280,11,247,19,205,59,185z"/>
<path d="M179,185 L218,203,228,245,202,279,159,280,131,247,139,205z"/>
- <path d="M270,225 L300,245 320,225 340,245 280,280
+ <path d="M270,225 L300,245 320,225 340,245 280,280
390,280 420,240 280,185z"/>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-polyline-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-polyline-02-t-manual.svg
index 7cc146ee7f3..a3f09687dec 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-polyline-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-polyline-02-t-manual.svg
@@ -39,7 +39,7 @@ The test is passed if each shape seems to have a double stroke, dark green and l
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <g stroke="#070" stroke-width="8">
+ <g stroke="#070" stroke-width="8">
<!-- Open sawtooth line. -->
<polyline id="polyline-01" fill="none" points="10,50,35,150,60,50,85,150,110,50,135,150"/>
<!-- Closed pentagon shaped polyline (5 segments). -->
@@ -50,11 +50,11 @@ The test is passed if each shape seems to have a double stroke, dark green and l
<polyline id="polyline-04" fill="none" points="59,185,98,203,108,245,82,279,39,280,11,247,19,205"/>
<!-- Same shape, filled, shows difference with 'polygon'. -->
<polyline id="polyline-05" fill="#396" points="189,185,228,203,238,245,212,279,169,280,141,247,149,205"/>
- <polyline id="polyline-06" fill="#396"
- points="270,225 300,245 320,225 340,245 280,280
+ <polyline id="polyline-06" fill="#396"
+ points="270,225 300,245 320,225 340,245 280,280
390,280 420,240 280,185"/>
</g>
-
+
<!-- now the equivalent paths-->
<g stroke="#3C6" stroke-width="3" fill="none">
<path d="M10,50 L35,150,60,50,85,150,110,50,135,150"/>
@@ -62,7 +62,7 @@ The test is passed if each shape seems to have a double stroke, dark green and l
<path d="M310,50 L335,150,360,50,385,150,410,50,435,150"/>
<path d="M59,185 L98,203,108,245,82,279,39,280,11,247,19,205"/>
<path d="M189,185 L228,203,238,245,212,279,169,280,141,247,149,205"/>
- <path d="M270,225 L300,245 320,225 340,245 280,280
+ <path d="M270,225 L300,245 320,225 340,245 280,280
390,280 420,240 280,185"/>
</g>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-rect-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-rect-03-t-manual.svg
index 4e51412ccb7..8e7fbec6fe1 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-rect-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-rect-03-t-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -42,98 +42,98 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<g transform="translate(0, 30)">
<g fill="red">
<g id="references">
<rect x="100" width="20" height="100" rx="50" ry="20"/>
<rect x="130" width="20" height="100" rx="10" ry="20"/>
<rect x="160" width="20" height="100" rx="10" ry="20"/>
-
+
<rect x="190" width="20" height="100" rx="10" ry="50"/>
<rect x="220" width="20" height="100" rx="10" ry="20"/>
<rect x="250" width="20" height="100" rx="10" ry="10"/>
-
+
<rect x="280" width="20" height="100" rx="5" ry="5"/>
<rect x="310" width="20" height="100" rx="0" ry="0"/>
- <rect x="340" width="20" height="100" rx="0" ry="0"/>
-
+ <rect x="340" width="20" height="100" rx="0" ry="0"/>
+
<g transform="translate(45,0)">
<rect x="10" y="120" width="100" height="20" rx="50" ry="10"/>
<rect x="10" y="150" width="100" height="20" rx="15" ry="10"/>
<rect x="10" y="180" width="100" height="20" rx="10" ry="10"/>
-
+
<rect x="130" y="120" width="100" height="20" rx="50" ry="10"/>
<rect x="130" y="150" width="100" height="20" rx="20" ry="10"/>
<rect x="130" y="180" width="100" height="20" rx="10" ry="10"/>
-
+
<rect x="250" y="120" width="100" height="20" rx="5" ry="5"/>
<rect x="250" y="150" width="100" height="20" rx="0" ry="0"/>
<rect x="250" y="180" width="100" height="20" rx="0" ry="0"/>
</g>
-
+
<g transform="translate(100,100)">
<rect x="10" y="120" width="50" height="20" rx="25" ry="10"/>
<rect x="80" y="120" width="20" height="50" rx="10" ry="25"/>
-
+
<rect x="120" y="120" width="50" height="20" rx="25" ry="10"/>
-
+
<rect stroke-width="0.5" width="20" height="30" rx="10" ry="15" transform="translate(-10 -15) scale(2) translate(10 15) translate(85 52.5)"/>
<rect x="230" y="120" width="20" height="30" rx="10" ry="25"/>
</g>
</g>
- </g>
+ </g>
<g id="tests" fill="lime">
<rect x="100" width="20" height="100" rx="50" ry="20"/>
<rect x="130" width="20" height="100" rx="15" ry="20"/>
<rect x="160" width="20" height="100" rx="10" ry="20"/>
-
+
<rect x="190" width="20" height="100" rx="80"/>
<rect x="220" width="20" height="100" rx="20"/>
<rect x="250" width="20" height="100" rx="10"/>
-
+
<rect x="280" width="20" height="100" rx="5"/>
<rect x="310" width="20" height="100" rx="0"/>
<rect x="340" width="20" height="100" rx="0" ry="0"/>
-
+
<g transform="translate(45,0)">
<rect x="10" y="120" width="100" height="20" rx="50" ry="20"/>
<rect x="10" y="150" width="100" height="20" rx="15" ry="20"/>
<rect x="10" y="180" width="100" height="20" rx="10" ry="20"/>
-
+
<rect x="130" y="120" width="100" height="20" ry="50"/>
<rect x="130" y="150" width="100" height="20" ry="20"/>
<rect x="130" y="180" width="100" height="20" ry="10"/>
-
+
<rect x="250" y="120" width="100" height="20" ry="5"/>
<rect x="250" y="150" width="100" height="20" ry="0"/>
<rect x="250" y="180" width="100" height="20" rx="0" ry="0"/>
</g>
-
+
<g transform="translate(100,100)">
<rect x="10" y="120" width="50" height="20" rx="50"/>
<rect x="80" y="120" width="20" height="50" ry="50"/>
-
+
<rect x="120" y="120" width="50" height="20" rx="200" ry="200"/>
-
+
<rect width="20" height="30" rx="50" transform="translate(-10 -15) scale(2) translate(10 15) translate(85 52.5)"/>
<rect x="230" y="120" width="20" height="30" ry="50"/>
</g>
</g>
-
+
<use xlink:href="#references" fill="none" stroke="black"/>
-
- </g>
+
+ </g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.9 $</text>
</g>
<rect xml:id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-rect-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-rect-04-f-manual.svg
index fdd83059501..eadbe7f0ff2 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-rect-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-rect-04-f-manual.svg
@@ -13,7 +13,7 @@
version="$Revision: 1.3 $" testname="$RCSfile: shapes-rect-04-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/shapes.html#RectElement">
<p>
- 'Rect' elements with unspecified 'rx' and 'ry' attributes will use the specified 'rx' and 'ry' value if the other one is specified; if neither is specified, the 'rect' has square edges.
+ 'Rect' elements with unspecified 'rx' and 'ry' attributes will use the specified 'rx' and 'ry' value if the other one is specified; if neither is specified, the 'rect' has square edges.
</p>
<p>
Creates one 'rect' element with an unspecified 'ry'. Places it over a red 'rect' element with both 'rx' and 'ry' specified. Repeat with unspecified 'rx'. Finally creates a 'rect' element that has neither 'rx' or
@@ -63,4 +63,4 @@
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-rect-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-rect-05-f-manual.svg
index 85e82a22809..acea039b3b0 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-rect-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-rect-05-f-manual.svg
@@ -71,4 +71,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-rect-06-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-rect-06-f-manual.svg
index 0f9d4ea53b9..7b4d209eb62 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-rect-06-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-rect-06-f-manual.svg
@@ -67,4 +67,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/shapes-rect-07-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/shapes-rect-07-f-manual.svg
index 7dbe04644c1..ac9e9fbd7f0 100644
--- a/tests/wpt/web-platform-tests/svg/import/shapes-rect-07-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/shapes-rect-07-f-manual.svg
@@ -58,4 +58,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-cond-02-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-cond-02-t-manual.svg
index 6883e0a85ee..c43e63fdee0 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-cond-02-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-cond-02-t-manual.svg
@@ -21,7 +21,7 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
@@ -84,14 +84,14 @@
<text x="20" y="220" xml:lang="bn" font-family="'Arial Unicode MS','UT Bengali Khulna'" font-size="28">ওরা েকন বাংলা বলেত পাের না ?</text>
<text x="230" y="150" xml:lang="en">Bengali</text>
</g>
- <!--
-Tibetan needs complex layout: this will not work correctly though the font has the right glyphs:
+ <!--
+Tibetan needs complex layout: this will not work correctly though the font has the right glyphs:
<g systemLanguage="bo">
- <text x="20" y="220" xml:lang="bo" font-family="'Arial Unicode MS'" font-size="18">
-
+ <text x="20" y="220" xml:lang="bo" font-family="'Arial Unicode MS'" font-size="18">
+
ག་རེ་བྱས་ཁོ་རང་ཚོས་ བོད་ སྐད་ཆ་དེ་ག་རང་བཤད་ཀྱི་མ་རེད།</text>
- <text x="230" y="150" xml:lang="en">Tibetan</text>
- </g>-->
+ <text x="230" y="150" xml:lang="en">Tibetan</text>
+ </g>-->
<g systemLanguage="ca">
<text x="20" y="220" xml:lang="bg" font-size="20">Per què no poden simplement parlar en català ?</text>
<text x="230" y="150" xml:lang="en">Catalan</text>
@@ -186,10 +186,10 @@ Tibetan needs complex layout: this will not work correctly though the font has t
<text x="230" y="150" xml:lang="en">Italian</text>
</g>
<g systemLanguage="iu">
- <!-- unable to distinguish North Baffin Island Inuktitut from
- South/Central Baffin Island Inuktitut
- because ISO 3166 codes do not offer any finer
- resolution than 'Canadian' -->
+ <!-- unable to distinguish North Baffin Island Inuktitut from
+ South/Central Baffin Island Inuktitut
+ because ISO 3166 codes do not offer any finer
+ resolution than 'Canadian' -->
<text x="20" y="220" xml:lang="iu" font-family="NunacomU,'Ballymun RO','Arial Unicode MS'" font-size="28">ᓱᒻᒪᓂᒃᑯᐊ ᐃᓄᒃᑎᑐ ᑐᐃᓐᓇᔭᙱᓚᑦ</text>
<text x="230" y="150" xml:lang="en">Inuktitut</text>
</g>
@@ -281,8 +281,8 @@ Tibetan needs complex layout: this will not work correctly though the font has t
<g systemLanguage="si">
<text x="20" y="220" xml:lang="si" font-family="'Andale Mono WT J'" font-size="26">අැයි ඔවුන්ට ඉංගරිස කතා ෛනබ ?</text>
<text x="230" y="150" xml:lang="en">Sinhalese</text>
- <!-- Sinhalese needs somewhat complex layout (many paired special cases, see
-http://www-texdev.mpce.mq.edu.au/l2h/indic/Sinhala/lreport/node1.html
+ <!-- Sinhalese needs somewhat complex layout (many paired special cases, see
+http://www-texdev.mpce.mq.edu.au/l2h/indic/Sinhala/lreport/node1.html
so this 'chart' font is not entirely suitable-->
</g>
<g systemLanguage="sl">
@@ -369,10 +369,10 @@ so this 'chart' font is not entirely suitable-->
</g>
</switch>
<!-- action item was to make a switch "for all ISO 639-1 language codes",
- a large task not completed. But there is enough here to make a good test case,
+ a large task not completed. But there is enough here to make a good test case,
including 19 of the top 20 langiuages by number of speakers (except Punjabi).
-
- Here is the full list (trailing * indicates language included in this test),
+
+ Here is the full list (trailing * indicates language included in this test),
accurate as of October 22, 2002 from the registration authority:
http://lcweb.loc.gov/standards/iso639-2/langcodes.html
@@ -397,7 +397,7 @@ so this 'chart' font is not entirely suitable-->
bs Bosnian
ca Catalan *
- ce Chechen
+ ce Chechen
ch Chamorro
co Corsican
cs Czech *
@@ -493,7 +493,7 @@ so this 'chart' font is not entirely suitable-->
no Norwegian *
nr Ndebele, South
nv Navajo
- ny Chichewa~@Nyanja
+ ny Chichewa~@Nyanja
oc Occitan (post 1500); Provencal
om Oromo [Afan]
@@ -541,7 +541,7 @@ so this 'chart' font is not entirely suitable-->
ti Tigrinya
tk Turkmen
tl Tagalog *
- tn Tswana [Setswana]
+ tn Tswana [Setswana]
to Tonga
tr Turkish *
ts Tsonga
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-cond-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-cond-03-t-manual.svg
index 93d54901dec..60e232e4055 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-cond-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-cond-03-t-manual.svg
@@ -25,7 +25,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- On the bottom half of the test, there is a first switch.
+ On the bottom half of the test, there is a first switch.
Because SVG Tiny does not support DOM, an SVG Tiny implementation
which does not support other SVG Profiles should show a green
rectangle. If the application supports the DOM, meaning that
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-cond-overview-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-cond-overview-05-f-manual.svg
index 68f026cf6f6..3f78ff2b26e 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-cond-overview-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-cond-overview-05-f-manual.svg
@@ -14,8 +14,8 @@
Elements whose parent elements have failing conditional processing attributes are able to be referenced and rendered by 'use' elements.
</p>
<p>
- Define three 'rect' elements that have a 'g' parent with either an invalid 'requiredFeature', 'requiredExtension', or 'systemLanguage'.
- Then define three 'use' elements that reference the 'rect' elements. Verify that the 'use' elements render.
+ Define three 'rect' elements that have a 'g' parent with either an invalid 'requiredFeature', 'requiredExtension', or 'systemLanguage'.
+ Then define three 'use' elements that reference the 'rect' elements. Verify that the 'use' elements render.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-defs-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-defs-01-t-manual.svg
index d8088801929..9dd905fd630 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-defs-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-defs-01-t-manual.svg
@@ -24,7 +24,7 @@
a red fill and the other to obscure most of the green rectangle.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
The rendered picture should match the reference image, except for possible
variations in the labelling text (per CSS2 rules).
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-01-b-manual.svg
index a7c379e764d..d484f5f7eb6 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-01-b-manual.svg
@@ -1,188 +1,188 @@
-<svg version="1.1" baseProfile="basic" onload="domTest(evt)" id="svg-root"
- width="100%" height="100%" viewBox="0 0 480 360"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <!--======================================================================-->
- <!--= SVG 1.1 2nd Edition Test Case =-->
- <!--======================================================================-->
- <!--= Copyright 2009 World Wide Web Consortium, (Massachusetts =-->
- <!--= Institute of Technology, European Research Consortium for =-->
- <!--= Informatics and Mathematics (ERCIM), Keio University). =-->
- <!--= All Rights Reserved. =-->
- <!--= See http://www.w3.org/Consortium/Legal/. =-->
- <!--======================================================================-->
- <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
- template-version="1.4" reviewer="SVGWG" author="VH" status="accepted"
- version="$Revision: 1.8 $" testname="$RCSfile: struct-dom-01-b.svg,v $">
- <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#DOMInterfaces">
- <p>
- Verify the basic capability to handle the SVG DOM API.
- </p>
- <p>
- The test is composed of a top
- level svg element with an 'onload' event handler and a rect element. Both
- the svg and the rect elements have an identifier. The 'onload' handler
- invokes SVG-specific DOM API methods which use these identifiers.
- </p>
- <p>
- First, the handler gets the SVG element owner of the rect element and checks it has
- the expected identifier. Then, the handler accesses the coordinates of the rect element
- and uses them to build a 'shadow' rectangle under the existing one. Finally, the 'shadow'
- rectangle is created using the SVGSVGElement's createSVGRect method.
- </p>
- </d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Run the test. No interaction required.
- </p>
- </d:operatorScript>
- <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
- <p>The test passes if:</p>
- <ul>
- <li>The text "This document's root identifier is: svg-root" is shown.</li>
- <li>A green rectangle with a black shadow is shown.</li>
- </ul>
- </d:passCriteria>
- </d:SVGTestCase>
- <title id="test-title">$RCSfile: struct-dom-01-b.svg,v $</title>
- <defs>
- <font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
- <font-face-src>
- <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
- </font-face-src>
- </font-face>
- </defs>
- <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <script type="text/ecmascript" xlink:href="../resources/testharness.js"></script>
- <script type="text/ecmascript"><![CDATA[
- function domTest(evt) {
-
- var svg_ns = "http://www.w3.org/2000/svg";
-
- // Get Document
- var target = evt.target;
- var doc = target.ownerDocument;
-
- //
- // Test that our rectangle is an SVGElement instance
- //
- var rect = doc.getElementById("rectId");
- var rootSVG = rect.ownerSVGElement;
- var rootId = rootSVG.getAttribute( "id" );
-
- // Insert a new text element to the DOM tree using the id
- var newText = doc.createElementNS(svg_ns, 'text');
- newText.setAttribute('x', '50');
- newText.setAttribute('y', '100');
- var message = "This document's root identifier is: " + rootId;
- var textContent = doc.createTextNode(message);
- newText.appendChild(textContent);
- rect.parentNode.appendChild(newText);
-
- //
- // Now, check that our rectangle is an instance of SVGRect by accessing
- // specific methods in order to get its x, y, width and height attributes.
- //
- var x = rect.x.baseVal.value; // SVGRect -&gt; SVGAnimatedLenght -&gt; SVGLength -&gt; long
- var y = rect.y.baseVal.value;
- var width = rect.width.baseVal.value;
- var height = rect.height.baseVal.value;
-
- //
- // Now, build a new SVGRect through the SVGSVGElement interface.
- //
- var newRect = doc.createElementNS(svg_ns, 'rect');
-
- //
- // Set the x, y, width and height of this element
- //
- newRect.x.baseVal.value = x + 10;
- newRect.y.baseVal.value = y + 10;
- newRect.setAttribute("width", width);
- newRect.setAttribute("height", height);
-
- //
- // Insert new element in DOM tree
- //
- rect.parentNode.insertBefore(newRect, rect);
-
- //
- // Check the pass criteria using the JS framework
- //
- test(function() {assert_equals(rootId, "svg-root")}, "Assert that the document's root identifier is 'svg-root'.");
- test(function() {
- assert_true(newRect instanceof SVGRectElement);
- assert_equals(newRect.getAttribute('x'), String(x+10));
- assert_equals(newRect.getAttribute('y'), String(y+10));
- assert_equals(newRect.getAttribute('width'), String(width));
- assert_equals(newRect.getAttribute('height'), String(height));
- }, "Assert that 'newRect' is replica (ignoring fill) of 'rect' with different x and y.");
- }
-
- ]]></script>
- <!--======================================================================-->
- <!-- Since this test is examining the SVG DOM, it could use any language -->
- <!-- binding. Here is the equivalent code for the Java binding -->
- <!--
-
- //
- // Test that our rectangle is an SVGElement instance
- //
- SVGRectElement rect = (SVGRectElement) doc.getElementById("rectId");
- SVGElement rootSVG = rect.getOwnerSVGElement();
- String rootId = rootSVG.getId();
-
- // Insert a new text element to the DOM tree using the id
- Element newText = doc.createElement("text");
- newText.setAttribute("x", "50");
- newText.setAttribute("y", "100");
- String message = "This document's root identifier is=" " + rootId"
- Text textContent = doc.createTextNode(message);
- newText.appendChild(textContent);
- rect.getParentNode().appendChild(newText);
-
- //
- // Now, check that our rectangle is an instance of SVGRect by accessing
- // specific methods in order to get its x, y, width and height attributes.
- //
- float x = rect.getX().getBaseVal().getValue();
- float y = rect.getY().getBaseVal().getValue();
- float width = rect.getWidth().getBaseVal().getValue();
- float height = rect.getHeight().getBaseVal().getValue();
-
- //
- // Now, build a new SVGRect through the SVGSVGElement interface.
- //
- SVGRectElement newRect = (SVGRectElement) doc.createElement("rect");
-
- //
- // Set the x, y, width and height of this element
- //
- newRect.getX().getBaseVal().setValue(x + 10);
- newRect.getY().getBaseVal().setValue(y + 10);
- newRect.getWidth().getBaseVal().setValue(width);
- newRect.getHeight().getBaseVal().setValue(height);
-
- //
- // Insert new element in DOM tree
- //
- alert(newRect)
- rect.getParentNode().insertBefore(newRect, rect);
-
--->
- <!-- ===================================================================== -->
- <!-- The following rectangle's is accessed in the 'domTest' ECMA Script -->
- <!-- handler. -->
- <!-- ===================================================================== -->
- <rect id="rectId" x="40" y="150" width="50" height="50" fill="green"/>
- </g>
- <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.8 $</text>
- </g>
- <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
- <!-- comment out this watermark once the test is approved -->
- <!--<g id="draft-watermark">
- <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
- text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
- </g>-->
-</svg>
+<svg version="1.1" baseProfile="basic" onload="domTest(evt)" id="svg-root"
+ width="100%" height="100%" viewBox="0 0 480 360"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!--======================================================================-->
+ <!--= SVG 1.1 2nd Edition Test Case =-->
+ <!--======================================================================-->
+ <!--= Copyright 2009 World Wide Web Consortium, (Massachusetts =-->
+ <!--= Institute of Technology, European Research Consortium for =-->
+ <!--= Informatics and Mathematics (ERCIM), Keio University). =-->
+ <!--= All Rights Reserved. =-->
+ <!--= See http://www.w3.org/Consortium/Legal/. =-->
+ <!--======================================================================-->
+ <d:SVGTestCase xmlns:d="http://www.w3.org/2000/02/svg/testsuite/description/"
+ template-version="1.4" reviewer="SVGWG" author="VH" status="accepted"
+ version="$Revision: 1.8 $" testname="$RCSfile: struct-dom-01-b.svg,v $">
+ <d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#DOMInterfaces">
+ <p>
+ Verify the basic capability to handle the SVG DOM API.
+ </p>
+ <p>
+ The test is composed of a top
+ level svg element with an 'onload' event handler and a rect element. Both
+ the svg and the rect elements have an identifier. The 'onload' handler
+ invokes SVG-specific DOM API methods which use these identifiers.
+ </p>
+ <p>
+ First, the handler gets the SVG element owner of the rect element and checks it has
+ the expected identifier. Then, the handler accesses the coordinates of the rect element
+ and uses them to build a 'shadow' rectangle under the existing one. Finally, the 'shadow'
+ rectangle is created using the SVGSVGElement's createSVGRect method.
+ </p>
+ </d:testDescription>
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <p>
+ Run the test. No interaction required.
+ </p>
+ </d:operatorScript>
+ <d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
+ <p>The test passes if:</p>
+ <ul>
+ <li>The text "This document's root identifier is: svg-root" is shown.</li>
+ <li>A green rectangle with a black shadow is shown.</li>
+ </ul>
+ </d:passCriteria>
+ </d:SVGTestCase>
+ <title id="test-title">$RCSfile: struct-dom-01-b.svg,v $</title>
+ <defs>
+ <font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/SVGFreeSans.svg#ascii"/>
+ </font-face-src>
+ </font-face>
+ </defs>
+ <g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
+ <script type="text/ecmascript" xlink:href="../resources/testharness.js"></script>
+ <script type="text/ecmascript"><![CDATA[
+ function domTest(evt) {
+
+ var svg_ns = "http://www.w3.org/2000/svg";
+
+ // Get Document
+ var target = evt.target;
+ var doc = target.ownerDocument;
+
+ //
+ // Test that our rectangle is an SVGElement instance
+ //
+ var rect = doc.getElementById("rectId");
+ var rootSVG = rect.ownerSVGElement;
+ var rootId = rootSVG.getAttribute( "id" );
+
+ // Insert a new text element to the DOM tree using the id
+ var newText = doc.createElementNS(svg_ns, 'text');
+ newText.setAttribute('x', '50');
+ newText.setAttribute('y', '100');
+ var message = "This document's root identifier is: " + rootId;
+ var textContent = doc.createTextNode(message);
+ newText.appendChild(textContent);
+ rect.parentNode.appendChild(newText);
+
+ //
+ // Now, check that our rectangle is an instance of SVGRect by accessing
+ // specific methods in order to get its x, y, width and height attributes.
+ //
+ var x = rect.x.baseVal.value; // SVGRect -&gt; SVGAnimatedLenght -&gt; SVGLength -&gt; long
+ var y = rect.y.baseVal.value;
+ var width = rect.width.baseVal.value;
+ var height = rect.height.baseVal.value;
+
+ //
+ // Now, build a new SVGRect through the SVGSVGElement interface.
+ //
+ var newRect = doc.createElementNS(svg_ns, 'rect');
+
+ //
+ // Set the x, y, width and height of this element
+ //
+ newRect.x.baseVal.value = x + 10;
+ newRect.y.baseVal.value = y + 10;
+ newRect.setAttribute("width", width);
+ newRect.setAttribute("height", height);
+
+ //
+ // Insert new element in DOM tree
+ //
+ rect.parentNode.insertBefore(newRect, rect);
+
+ //
+ // Check the pass criteria using the JS framework
+ //
+ test(function() {assert_equals(rootId, "svg-root")}, "Assert that the document's root identifier is 'svg-root'.");
+ test(function() {
+ assert_true(newRect instanceof SVGRectElement);
+ assert_equals(newRect.getAttribute('x'), String(x+10));
+ assert_equals(newRect.getAttribute('y'), String(y+10));
+ assert_equals(newRect.getAttribute('width'), String(width));
+ assert_equals(newRect.getAttribute('height'), String(height));
+ }, "Assert that 'newRect' is replica (ignoring fill) of 'rect' with different x and y.");
+ }
+
+ ]]></script>
+ <!--======================================================================-->
+ <!-- Since this test is examining the SVG DOM, it could use any language -->
+ <!-- binding. Here is the equivalent code for the Java binding -->
+ <!--
+
+ //
+ // Test that our rectangle is an SVGElement instance
+ //
+ SVGRectElement rect = (SVGRectElement) doc.getElementById("rectId");
+ SVGElement rootSVG = rect.getOwnerSVGElement();
+ String rootId = rootSVG.getId();
+
+ // Insert a new text element to the DOM tree using the id
+ Element newText = doc.createElement("text");
+ newText.setAttribute("x", "50");
+ newText.setAttribute("y", "100");
+ String message = "This document's root identifier is=" " + rootId"
+ Text textContent = doc.createTextNode(message);
+ newText.appendChild(textContent);
+ rect.getParentNode().appendChild(newText);
+
+ //
+ // Now, check that our rectangle is an instance of SVGRect by accessing
+ // specific methods in order to get its x, y, width and height attributes.
+ //
+ float x = rect.getX().getBaseVal().getValue();
+ float y = rect.getY().getBaseVal().getValue();
+ float width = rect.getWidth().getBaseVal().getValue();
+ float height = rect.getHeight().getBaseVal().getValue();
+
+ //
+ // Now, build a new SVGRect through the SVGSVGElement interface.
+ //
+ SVGRectElement newRect = (SVGRectElement) doc.createElement("rect");
+
+ //
+ // Set the x, y, width and height of this element
+ //
+ newRect.getX().getBaseVal().setValue(x + 10);
+ newRect.getY().getBaseVal().setValue(y + 10);
+ newRect.getWidth().getBaseVal().setValue(width);
+ newRect.getHeight().getBaseVal().setValue(height);
+
+ //
+ // Insert new element in DOM tree
+ //
+ alert(newRect)
+ rect.getParentNode().insertBefore(newRect, rect);
+
+-->
+ <!-- ===================================================================== -->
+ <!-- The following rectangle's is accessed in the 'domTest' ECMA Script -->
+ <!-- handler. -->
+ <!-- ===================================================================== -->
+ <rect id="rectId" x="40" y="150" width="50" height="50" fill="green"/>
+ </g>
+ <g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
+ <text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.8 $</text>
+ </g>
+ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
+ <!-- comment out this watermark once the test is approved -->
+ <!--<g id="draft-watermark">
+ <rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
+ </g>-->
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-02-b-manual.svg
index 6ac422b4360..76ad07f4ee2 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-02-b-manual.svg
@@ -27,7 +27,7 @@
Note that this test uses the 'onload' event on the root svg element.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-04-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-04-b-manual.svg
index afc0efedafe..a20504e8ee9 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-04-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-04-b-manual.svg
@@ -63,7 +63,7 @@
featureStrings[length++] = "views";
featureStrings[length++] = "css2";
featureStrings[length++] = "events";
- featureStrings[length++] = "uievents ";
+ featureStrings[length++] = "uievents ";
featureStrings[length++] = "mouseevents";
featureStrings[length++] = "mutationevents";
featureStrings[length++] = "traversal";
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-05-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-05-b-manual.svg
index 4667a14ef34..9d101a650e8 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-05-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-05-b-manual.svg
@@ -63,7 +63,7 @@
featureStrings[length++] = "views";
featureStrings[length++] = "css2";
featureStrings[length++] = "events";
- featureStrings[length++] = "uievents ";
+ featureStrings[length++] = "uievents ";
featureStrings[length++] = "mouseevents";
featureStrings[length++] = "mutationevents";
featureStrings[length++] = "traversal";
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-08-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-08-f-manual.svg
index fd248ce7af6..5cf818618d3 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-08-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-08-f-manual.svg
@@ -66,7 +66,7 @@
}
document.getElementById('r').setAttribute('fill', 'red');
}
-
+
begin();
</script>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-11-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-11-f-manual.svg
index 869f8c54eff..fe88225d299 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-11-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-11-f-manual.svg
@@ -24,7 +24,7 @@
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
+ <p>
Run the test. No interaction required.
</p>
</d:operatorScript>
@@ -60,64 +60,64 @@
</g>
<script><![CDATA[
- function userspace2viewport(elm, r)
- {
- var ctm = elm.getCTM();
-
- var corners = [];
- for(var i = 0; i < 4; i++)
- corners.push(svg.createSVGPoint());
-
- corners[0].x = r.x;
- corners[0].y = r.y;
- corners[1].x = r.x + r.width;
- corners[1].y = r.y;
- corners[2].x = r.x + r.width;
- corners[2].y = r.y + r.height;
- corners[3].x = r.x;
- corners[3].y = r.y + r.height;
-
- for(var i = 0; i < 4; i++)
- corners[i] = corners[i].matrixTransform(ctm);
-
- var min = svg.createSVGPoint();
- var max = svg.createSVGPoint();
- min.x = corners[0].x;
- min.y = corners[0].y;
- max.x = corners[0].x;
- max.y = corners[0].y;
-
- for(var i = 1; i < 4; i++)
- {
- var x = corners[i].x;
- var y = corners[i].y;
-
- if(x < min.x)
- min.x = x;
- else if(x > max.x)
- max.x = x;
-
- if(y < min.y)
- min.y = y;
- else if(y > max.y)
- max.y = y;
- }
-
- var res = svg.createSVGRect();
- res.x = min.x;
- res.y = min.y;
- res.width = max.x - min.x;
- res.height = max.y - min.y;
- return res;
- }
-
+ function userspace2viewport(elm, r)
+ {
+ var ctm = elm.getCTM();
+
+ var corners = [];
+ for(var i = 0; i < 4; i++)
+ corners.push(svg.createSVGPoint());
+
+ corners[0].x = r.x;
+ corners[0].y = r.y;
+ corners[1].x = r.x + r.width;
+ corners[1].y = r.y;
+ corners[2].x = r.x + r.width;
+ corners[2].y = r.y + r.height;
+ corners[3].x = r.x;
+ corners[3].y = r.y + r.height;
+
+ for(var i = 0; i < 4; i++)
+ corners[i] = corners[i].matrixTransform(ctm);
+
+ var min = svg.createSVGPoint();
+ var max = svg.createSVGPoint();
+ min.x = corners[0].x;
+ min.y = corners[0].y;
+ max.x = corners[0].x;
+ max.y = corners[0].y;
+
+ for(var i = 1; i < 4; i++)
+ {
+ var x = corners[i].x;
+ var y = corners[i].y;
+
+ if(x < min.x)
+ min.x = x;
+ else if(x > max.x)
+ max.x = x;
+
+ if(y < min.y)
+ min.y = y;
+ else if(y > max.y)
+ max.y = y;
+ }
+
+ var res = svg.createSVGRect();
+ res.x = min.x;
+ res.y = min.y;
+ res.width = max.x - min.x;
+ res.height = max.y - min.y;
+ return res;
+ }
+
var svg = document.documentElement,
c = document.getElementById('c'),
r1 = document.getElementById('r1'),
r2 = document.getElementById('r2'),
c1 = document.getElementById('c1'),
c2 = document.getElementById('c2'),
- g1 = document.getElementById('g1'),
+ g1 = document.getElementById('g1'),
r = svg.createSVGRect(),
nl;
@@ -126,9 +126,9 @@
r.y = 95;
r.width = 5;
r.height = 5;
-
- r = userspace2viewport(g1, r);
-
+
+ r = userspace2viewport(g1, r);
+
nl = svg.getIntersectionList(r, null);
if (nl && nl.length == 1) {
c1.parentNode.removeChild(c1);
@@ -143,8 +143,8 @@
r.width = 20;
r.height = 20;
- r = userspace2viewport(g1, r);
-
+ r = userspace2viewport(g1, r);
+
nl = svg.getEnclosureList(r, null);
if (nl && nl.length == 1) {
c2.parentNode.removeChild(c2);
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-12-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-12-b-manual.svg
index c5746ff3e75..831a1320c59 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-12-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-12-b-manual.svg
@@ -70,7 +70,6 @@
use.setAttributeNS(null, 'fill', colors[pass]);
}
-
]]></script>
</defs>
@@ -85,7 +84,7 @@
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-13-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-13-f-manual.svg
index 028288e6ac3..654c3cd5386 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-13-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-13-f-manual.svg
@@ -38,120 +38,120 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <style type="text/css">
- .passed { fill: lime }
- .failed { fill: red }
- .result { font: 9px monospace; fill: black }
- </style>
- </defs>
+ <defs>
+ <style type="text/css">
+ .passed { fill: lime }
+ .failed { fill: red }
+ .result { font: 9px monospace; fill: black }
+ </style>
+ </defs>
+
+ <g visibility="hidden">
+ <circle id="c1" cx="40" cy="40" r="10" fill="blue" stroke="lime"/>
+ <circle id="c2" cx="10" cy="50" r="10" fill="red" stroke="lime"/>
+ <circle id="c3" cx="20" cy="20" r="20" fill="green" stroke="lime"/>
+ <line id="l1" x1="5" y1="5" x2="40" y2="20" stroke="black"/>
+ <line id="l2" x1="20" y1="20" x2="40" y2="30" stroke="red"/>
+
+ <rect id="r1" x="10" y="10" width="50" height="50" fill="none" stroke="red"/>
+
+ <circle id="c4" cx="80" cy="50" r="10" fill="yellow"/>
+ </g>
+
+ <script><![CDATA[
+ var ypos = 100;
+
+ function verify(str, result)
+ {
+ var g = document.createElementNS("http://www.w3.org/2000/svg", "g");
+ var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
+ var t = document.createElementNS("http://www.w3.org/2000/svg", "text");
+ t.textContent = str + ": " + (result ? "PASSED" : "FAILED");
+ t.setAttribute("class", "result");
+ t.setAttribute("x", "10");
+ t.setAttribute("y", "7");
+ r.setAttribute("y", "1");
+ r.setAttribute("width", "5");
+ r.setAttribute("height", "5");
+ g.setAttribute("class", result ? "passed" : "failed");
+ g.appendChild(r);
+ g.appendChild(t);
+ g.setAttribute("transform", "translate(280 " + ypos + ")");
+ ypos += 10;
+ document.getElementById("test-body-content").appendChild(g);
+ }
+
+ function test()
+ {
+ var root = document.documentElement; //document.getElementById("test-root");
+ var rect = root.createSVGRect();
+ rect.x = 10;
+ rect.y = 10;
+ rect.width = 50;
+ rect.height = 50;
+
+ var tests = { "c1" : true, "c2" : true, "c3" : true, "l1" : true, "l2" : true, "r1" : true, "c4" : false };
+
+ verify("checkIntersection", root.checkIntersection);
+
+ if(root.checkIntersection)
+ {
+ for(var test in tests)
+ {
+ try
+ {
+ var elm = document.getElementById(test);
+ var result = root.checkIntersection(elm, rect);
+
+ verify(test, result == tests[test]);
+ }
+ catch(e)
+ {
+ verify(test, false);
+ }
+ }
+ }
+
+ verify("getIntersectionList", root.getIntersectionList);
- <g visibility="hidden">
- <circle id="c1" cx="40" cy="40" r="10" fill="blue" stroke="lime"/>
- <circle id="c2" cx="10" cy="50" r="10" fill="red" stroke="lime"/>
- <circle id="c3" cx="20" cy="20" r="20" fill="green" stroke="lime"/>
- <line id="l1" x1="5" y1="5" x2="40" y2="20" stroke="black"/>
- <line id="l2" x1="20" y1="20" x2="40" y2="30" stroke="red"/>
+ if(root.getIntersectionList)
+ {
+ var expected = [ "c1", "c2", "c3", "l1", "l2", "r1" ];
+ try
+ {
+ var list = root.getIntersectionList(rect, null);
+ verify("call", true);
+ }
+ catch(e)
+ {
+ verify("call", false);
+ }
- <rect id="r1" x="10" y="10" width="50" height="50" fill="none" stroke="red"/>
+ try
+ {
+ verify("length", expected.length == list.length);
+ }
+ catch(e)
+ {
+ verify("length", false);
+ }
- <circle id="c4" cx="80" cy="50" r="10" fill="yellow"/>
- </g>
-
- <script><![CDATA[
- var ypos = 100;
-
- function verify(str, result)
- {
- var g = document.createElementNS("http://www.w3.org/2000/svg", "g");
- var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
- var t = document.createElementNS("http://www.w3.org/2000/svg", "text");
- t.textContent = str + ": " + (result ? "PASSED" : "FAILED");
- t.setAttribute("class", "result");
- t.setAttribute("x", "10");
- t.setAttribute("y", "7");
- r.setAttribute("y", "1");
- r.setAttribute("width", "5");
- r.setAttribute("height", "5");
- g.setAttribute("class", result ? "passed" : "failed");
- g.appendChild(r);
- g.appendChild(t);
- g.setAttribute("transform", "translate(280 " + ypos + ")");
- ypos += 10;
- document.getElementById("test-body-content").appendChild(g);
- }
-
- function test()
- {
- var root = document.documentElement; //document.getElementById("test-root");
- var rect = root.createSVGRect();
- rect.x = 10;
- rect.y = 10;
- rect.width = 50;
- rect.height = 50;
-
- var tests = { "c1" : true, "c2" : true, "c3" : true, "l1" : true, "l2" : true, "r1" : true, "c4" : false };
-
- verify("checkIntersection", root.checkIntersection);
-
- if(root.checkIntersection)
- {
- for(var test in tests)
- {
- try
- {
- var elm = document.getElementById(test);
- var result = root.checkIntersection(elm, rect);
-
- verify(test, result == tests[test]);
- }
- catch(e)
- {
- verify(test, false);
- }
- }
- }
-
- verify("getIntersectionList", root.getIntersectionList);
-
- if(root.getIntersectionList)
- {
- var expected = [ "c1", "c2", "c3", "l1", "l2", "r1" ];
- try
- {
- var list = root.getIntersectionList(rect, null);
- verify("call", true);
- }
- catch(e)
- {
- verify("call", false);
- }
-
- try
- {
- verify("length", expected.length == list.length);
- }
- catch(e)
- {
- verify("length", false);
- }
-
- for(var i = 0; i < expected.length; i++)
- {
- var elm = document.getElementById(expected[i]);
- try
- {
- verify("has " + expected[i], elm === list.item(i))
- }
- catch(e)
- {
- verify("has " + expected[i], false);
- }
- }
- }
- }
+ for(var i = 0; i < expected.length; i++)
+ {
+ var elm = document.getElementById(expected[i]);
+ try
+ {
+ verify("has " + expected[i], elm === list.item(i))
+ }
+ catch(e)
+ {
+ verify("has " + expected[i], false);
+ }
+ }
+ }
+ }
- ]]></script>
+ ]]></script>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-14-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-14-f-manual.svg
index 1f0bb86253b..6ecf6dcd326 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-14-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-14-f-manual.svg
@@ -30,8 +30,8 @@
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
The test is passed if there is a green rect visible,
- and there is a yellow or dark green circle in the middle.
- If there's any red visible the test has failed.
+ and there is a yellow or dark green circle in the middle.
+ If there's any red visible the test has failed.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -57,11 +57,11 @@
<![CDATA[
function runTest()
{
- try
+ try
{
var use = document.getElementById("use1");
var instanceroot = use.instanceRoot;
-
+
if (instanceroot.firstChild.correspondingElement !== instanceroot.childNodes.item(0).correspondingElement)
throw("failed");
if (instanceroot.firstChild.nextSibling.correspondingElement !== instanceroot.childNodes.item(1).correspondingElement)
@@ -71,8 +71,8 @@
// indicate test passed
document.getElementById("status").setAttribute("fill", "lime");
-
- // This is an optional part of the test, which indicates whether SVGElementInstance(List) follows the normal DOM NodeList conventions and
+
+ // This is an optional part of the test, which indicates whether SVGElementInstance(List) follows the normal DOM NodeList conventions and
// whether the returned objects are actually the same objects as those that the SVGElementInstance traversal attributes return.
if (instanceroot.firstChild !== instanceroot.childNodes.item(0))
throw("failed");
@@ -80,8 +80,8 @@
throw("failed");
if (instanceroot.lastChild !== instanceroot.childNodes.item(instanceroot.childNodes.length-1))
throw("failed");
-
- // indicate status of the optional part of the test
+
+ // indicate status of the optional part of the test
document.getElementById("optional").setAttribute("fill", "green");
}
catch(e)
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-15-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-15-f-manual.svg
index b5329b690ea..76fe3b07f81 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-15-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-15-f-manual.svg
@@ -13,7 +13,7 @@
version="$Revision: 1.3 $" testname="$RCSfile: struct-dom-15-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGElementInstance">
<p>
- Test SVGElementInstance and EventTarget.dispatchEvent.
+ Test SVGElementInstance and EventTarget.dispatchEvent.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -53,7 +53,7 @@
dc.setAttribute("fill", "lime");
}
}
-
+
// checks that event.target and event.currentTarget point to an SVGElementInstance (the instanceRoot)
function verifyDefs2(e)
{
@@ -64,7 +64,7 @@
instance.correspondingElement.setAttribute("fill", "lime");
}
}
-
+
function verify(e)
{
var c = document.getElementById("circle");
@@ -74,17 +74,17 @@
c.setAttribute("fill", "lime");
}
}
-
+
function dispatchMouseClick(target)
{
var mouseevent = document.createEvent("MouseEvents");
- mouseevent.initMouseEvent("click",
+ mouseevent.initMouseEvent("click",
true, // canbubble
true, // cancellable
document.defaultView, // the AbstractView
1, // mouseclick count
0, // screen x coordinate
- 0, // screen y coordinate
+ 0, // screen y coordinate
0, // client x coordinate
0, // client y coordinate
false, // ctrlKey
@@ -95,21 +95,21 @@
null); // related target
target.dispatchEvent(mouseevent);
}
-
+
function runTest()
{
// test simple circle inside <defs>
- try {
+ try {
var defsCircle = document.getElementById("defscircle1");
dispatchMouseClick(defsCircle);
} catch(e) {}
-
+
// test SVGElementInstance
try {
var elementInstance2 = document.getElementById("use2").instanceRoot;
dispatchMouseClick(elementInstance2);
} catch(e) {}
-
+
// test simple circle outside of <defs>
try {
var circle = document.getElementById("circle");
@@ -120,7 +120,7 @@
</defs>
<circle id="circle" cx="240" cy="180" r="25" onclick="verify(evt)" fill="red"/>
-
+
<use id="use1" xlink:href="#defscircle1" transform="translate(80,0)"/>
<use id="use2" xlink:href="#defscircle2" transform="translate(-80,0)"/>
<use id="use3" xlink:href="#defsg1"/>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-16-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-16-f-manual.svg
index 7747c72f0ea..daf2ed70103 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-16-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-16-f-manual.svg
@@ -14,8 +14,8 @@
The 'SVGSVGElement' interface allows for creation of references to various primitive SVG interface types with explicitly defined default values.
</p>
<p>
- A reference to an 'SVGSVGElement' is obtained through an 'svg' element in the page's markup. Each of the 'CreateSVG*' methods is called from this
- reference and initial values are verified. A counter is used to determine whether all conditions are satisfied. The word 'fail' in red via an SVG
+ A reference to an 'SVGSVGElement' is obtained through an 'svg' element in the page's markup. Each of the 'CreateSVG*' methods is called from this
+ reference and initial values are verified. A counter is used to determine whether all conditions are satisfied. The word 'fail' in red via an SVG
'text' element is used to indicate failure and the word 'pass' in black is used to indicate passing.
</p>
</d:testDescription>
@@ -44,7 +44,7 @@
<svg id="testSVG" />
<text id="failText" x="350" y="350" font-size="50" fill="red">FAIL</text>
<text id="passText" x="350" y="300" font-size="50" display="none">PASS</text>
- <script type="text/javascript">
+ <script type="text/javascript">
<![CDATA[
try
{
@@ -76,7 +76,7 @@
}
var testSVGMatrix = testSVG.createSVGMatrix();
- if (1 == testSVGMatrix.a && 0 == testSVGMatrix.b && 0 == testSVGMatrix.c && 1 == testSVGMatrix.d && 0 == testSVGMatrix.e && 0 == testSVGMatrix.f)
+ if (1 == testSVGMatrix.a && 0 == testSVGMatrix.b && 0 == testSVGMatrix.c && 1 == testSVGMatrix.d && 0 == testSVGMatrix.e && 0 == testSVGMatrix.f)
{
passCount++;
}
@@ -108,7 +108,7 @@
catch(ex)
{
alert("ERROR: " + ex.message);
-
+
}
]]>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-17-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-17-f-manual.svg
index 26121e79416..3b8250574cb 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-17-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-17-f-manual.svg
@@ -69,13 +69,13 @@
// Test that "getElementById" on svgTree1 can't access children in other subtrees
if (null == svgTree1.getElementById("subElem2"))
{
- passedCount++;
+ passedCount++;
}
// Test that "getElementById" on svgTree1 can't access elements that are not its children
if (null == svgTree1.getElementById("siblingElem1"))
{
- passedCount++;
+ passedCount++;
}
if (4 == passedCount)
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-18-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-18-f-manual.svg
index 27977a22195..94e0ae346d3 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-18-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-18-f-manual.svg
@@ -22,7 +22,7 @@
and 'height' attributes set to intersect each of the renderable elements. For 'getEnclosureList', the same 'SVGRect' is modified to
completely enclose all of the renderable elements. For both 'getIntersectionList' and 'getEnclosureList', the returned 'NodeList' element
is iterated through and each element is verified through their respective 'id' attributes. For the 'use' element, the 'correspondingUseElement'
- attribute must be used because an 'SVGElementInstance' reference is obtained via 'getEnclosureList' and 'getIntersectionList'.
+ attribute must be used because an 'SVGElementInstance' reference is obtained via 'getEnclosureList' and 'getIntersectionList'.
]]-->
</p>
</d:operatorScript>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-dom-20-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-dom-20-f-manual.svg
index 09018aea56f..a006c3b122b 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-dom-20-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-dom-20-f-manual.svg
@@ -13,7 +13,7 @@
version="$Revision: 1.2 $" testname="$RCSfile: struct-dom-20-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGElementInstance">
<p>
- Test SVGElementInstance and EventTarget.dispatchEvent.
+ Test SVGElementInstance and EventTarget.dispatchEvent.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -45,8 +45,8 @@
<use id="defsuse1" xlink:href="#defscircle4" transform="translate(-600, 0)" onclick="verifyDefs4(evt)"/>
</g>
<circle id="defscircle4" cx="1000" cy="180" r="25" fill="red"/>
-
- <script><![CDATA[
+
+ <script><![CDATA[
function verifyDefs3(e)
{
var instance = document.getElementById("use3").instanceRoot;
@@ -58,7 +58,7 @@
dc3instance.correspondingElement.setAttribute("fill", "lime");
}
}
-
+
function verifyDefs4(e)
{
var useElement = document.getElementById("use3");
@@ -73,7 +73,7 @@
document.getElementById("defscircle4").setAttribute("fill", "lime");
}
}
-
+
function verify(e)
{
var c = document.getElementById("circle");
@@ -83,17 +83,17 @@
c.setAttribute("fill", "lime");
}
}
-
+
function dispatchMouseClick(target)
{
var mouseevent = document.createEvent("MouseEvents");
- mouseevent.initMouseEvent("click",
+ mouseevent.initMouseEvent("click",
true, // canbubble
true, // cancellable
document.defaultView, // the AbstractView
1, // mouseclick count
0, // screen x coordinate
- 0, // screen y coordinate
+ 0, // screen y coordinate
0, // client x coordinate
0, // client y coordinate
false, // ctrlKey
@@ -104,7 +104,7 @@
null); // related target
target.dispatchEvent(mouseevent);
}
-
+
function runTest()
{
// test bubbling click
@@ -112,7 +112,7 @@
var instanceCircle = document.getElementById("use3").instanceRoot.firstChild.nextSibling;
dispatchMouseClick(instanceCircle);
} catch(e) {}
-
+
// test nested use with bubbling click
try {
var nestedUseInstance = document.getElementById("use3").instanceRoot.childNodes.item(3);
@@ -122,7 +122,7 @@
}
]]></script>
</defs>
-
+
<use id="use3" xlink:href="#defsg1"/>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-frag-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-frag-01-t-manual.svg
index 6fe9bcc3367..d1defe40997 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-frag-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-frag-01-t-manual.svg
@@ -15,7 +15,7 @@
version="$Revision: 1.5 $" testname="$RCSfile: struct-frag-01-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#NewDocument">
<p>
- This is an empty SVG document.
+ This is an empty SVG document.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-frag-03-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-frag-03-t-manual.svg
index 9d73f8b1ed7..160265d1396 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-frag-03-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-frag-03-t-manual.svg
@@ -28,7 +28,7 @@
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
- </p>
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-frag-04-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-frag-04-t-manual.svg
index bd2fdc7e9f5..d85ee48f3f2 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-frag-04-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-frag-04-t-manual.svg
@@ -1,5 +1,5 @@
<svg version="1.1" baseProfile="tiny" preserveAspectRatio="xMidYMid meet" id="svg-root"
- width="100%" height="100%" x="1000" y="1000"
+ width="100%" height="100%" x="1000" y="1000"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= SVG 1.1 2nd Edition Test Case =-->
@@ -16,16 +16,16 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#NewDocument">
<p>
This test validates the operation of the svg element when there is no
- viewbox.
+ viewbox.
</p>
<p>
- The document has x/y attributes set to (1000, 1000). Because
- x/y are ignored on the root svg element, the x/y origin should have no
+ The document has x/y attributes set to (1000, 1000). Because
+ x/y are ignored on the root svg element, the x/y origin should have no
effect on the drawing.
</p>
<p>
The document contains squares and circles between the
- (100,100) and (200, 200) coordinates.
+ (100,100) and (200, 200) coordinates.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-group-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-group-01-t-manual.svg
index 3326f1d8c42..42f05645f89 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-group-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-group-01-t-manual.svg
@@ -19,7 +19,7 @@
All the g elements for this test are in the g element whose id=allGs.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
The test uses the 'rect' element, as well as basic fill (solid primary colors),
stroke (black 1-pixel lines), font-family and font-size properties.
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-image-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-image-02-b-manual.svg
index 403fdefbd63..2e4e2beb5dd 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-image-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-image-02-b-manual.svg
@@ -25,7 +25,7 @@
S4 tests a switch statement, if there is not a green rectangle showing in
S4 there is probably a problem processing a switch.
</p>
- <p>
+ <p>
The test uses the 'rect' element, as well as basic fill (solid primary colors),
stroke (black 1-pixel lines), font-family and font-size properties.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-image-13-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-image-13-f-manual.svg
index 880907a05a4..bb7c306a592 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-image-13-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-image-13-f-manual.svg
@@ -16,9 +16,9 @@
Tests that different PNG image types are correctly handled. These images are non-interlaced.
</p>
<p>
- This test uses the
+ This test uses the
<a href="http://www.schaik.com/pngsuite/">PNG Group test suite</a>
- created by Willem van Schaik.
+ created by Willem van Schaik.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -43,68 +43,68 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<!-- something to show transparency -->
<rect x="16" y="32" width="320" height="8" fill="#3C3"/>
<rect x="16" y="48" width="320" height="8" fill="#9F9"/>
<!-- 1 bit black and white -->
<image xlink:href="../images/PngSuite/basn0g01.png" x="16" y="32" width="32" height="32"/>
-
+
<!-- 2 bit greyscale -->
<image xlink:href="../images/PngSuite/basn0g02.png" x="64" y="32" width="32" height="32"/>
-
+
<!-- 4 bit greyscale -->
<image xlink:href="../images/PngSuite/basn0g04.png" x="112" y="32" width="32" height="32"/>
-
+
<!-- 8 bit greyscale -->
<image xlink:href="../images/PngSuite/basn0g08.png" x="160" y="32" width="32" height="32"/>
-
+
<!-- 16 bit greyscale -->
<image xlink:href="../images/PngSuite/basn0g16.png" x="208" y="32" width="32" height="32"/>
-
+
<!-- 8 bit greyscale plus alpha -->
<image xlink:href="../images/PngSuite/basn4a08.png" x="256" y="32" width="32" height="32"/>
-
+
<!-- 16 bit greyscale plus alpha -->
<image xlink:href="../images/PngSuite/basn4a16.png" x="304" y="32" width="32" height="32"/>
-
+
<text x="16" y="100" font-size="16" fill="#3C3">Greyscale, various bit depths, two with alpha</text>
-
+
<!-- something to show transparency -->
<rect x="16" y="132" width="368" height="8" fill="#9F9"/>
<rect x="16" y="148" width="368" height="8" fill="#3C3"/>
<!-- 8 bits RGB -->
<image xlink:href="../images/PngSuite/basn2c08.png" x="16" y="132" width="32" height="32"/>
-
+
<!-- 16 bits RGB -->
<image xlink:href="../images/PngSuite/basn2c16.png" x="64" y="132" width="32" height="32"/>
-
+
<!-- 1 bit indexed -->
<image xlink:href="../images/PngSuite/basn3p01.png" x="112" y="132" width="32" height="32"/>
-
+
<!-- 2 bit indexed -->
<image xlink:href="../images/PngSuite/basn3p02.png" x="160" y="132" width="32" height="32"/>
-
+
<!-- 4 bit indexed -->
<image xlink:href="../images/PngSuite/basn3p04.png" x="208" y="132" width="32" height="32"/>
-
+
<!-- 8 bit indexed -->
<image xlink:href="../images/PngSuite/basn3p08.png" x="256" y="132" width="32" height="32"/>
-
+
<!-- 8 bits RGB plus alpha -->
<image xlink:href="../images/PngSuite/basn6a08.png" x="304" y="132" width="32" height="32"/>
-
+
<!-- 16 bits RGB plus alpha -->
<image xlink:href="../images/PngSuite/basn6a16.png" x="352" y="132" width="32" height="32"/>
-
+
<text x="16" y="200" font-size="16" fill="#3C3">Truecolor and indexed, various bit depths, two with alpha</text>
-
+
<text x="16" y="260" font-size="24" fill="#3C3">Non-interlaced images</text>
-
+
<!--
- <image xlink:href="../images/PngSuite/" x="" y="" width="32" height="32"/>
+ <image xlink:href="../images/PngSuite/" x="" y="" width="32" height="32"/>
-->
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-image-14-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-image-14-f-manual.svg
index f6531648d01..4af742f4969 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-image-14-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-image-14-f-manual.svg
@@ -16,9 +16,9 @@
Tests that different PNG image types are correctly handled. These images are interlaced.
</p>
<p>
- This test uses the
+ This test uses the
<a href="http://www.schaik.com/pngsuite/">PNG Group test suite</a>
- created by Willem van Schaik.
+ created by Willem van Schaik.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -43,68 +43,68 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<!-- something to show transparency -->
<rect x="16" y="32" width="320" height="8" fill="#3C3"/>
<rect x="16" y="48" width="320" height="8" fill="#9F9"/>
<!-- 1 bit black and white -->
<image xlink:href="../images/PngSuite/basi0g01.png" x="16" y="32" width="32" height="32"/>
-
+
<!-- 2 bit greyscale -->
<image xlink:href="../images/PngSuite/basi0g02.png" x="64" y="32" width="32" height="32"/>
-
+
<!-- 4 bit greyscale -->
<image xlink:href="../images/PngSuite/basi0g04.png" x="112" y="32" width="32" height="32"/>
-
+
<!-- 8 bit greyscale -->
<image xlink:href="../images/PngSuite/basi0g08.png" x="160" y="32" width="32" height="32"/>
-
+
<!-- 16 bit greyscale -->
<image xlink:href="../images/PngSuite/basi0g16.png" x="208" y="32" width="32" height="32"/>
-
+
<!-- 8 bit greyscale plus alpha -->
<image xlink:href="../images/PngSuite/basi4a08.png" x="256" y="32" width="32" height="32"/>
-
+
<!-- 16 bit greyscale plus alpha -->
<image xlink:href="../images/PngSuite/basi4a16.png" x="304" y="32" width="32" height="32"/>
-
+
<text x="16" y="100" font-size="16" fill="#3C3">Greyscale, various bit depths, two with alpha</text>
-
+
<!-- something to show transparency -->
<rect x="16" y="132" width="368" height="8" fill="#9F9"/>
<rect x="16" y="148" width="368" height="8" fill="#3C3"/>
<!-- 8 bits RGB -->
<image xlink:href="../images/PngSuite/basi2c08.png" x="16" y="132" width="32" height="32"/>
-
+
<!-- 16 bits RGB -->
<image xlink:href="../images/PngSuite/basi2c16.png" x="64" y="132" width="32" height="32"/>
-
+
<!-- 1 bit indexed -->
<image xlink:href="../images/PngSuite/basi3p01.png" x="112" y="132" width="32" height="32"/>
-
+
<!-- 2 bit indexed -->
<image xlink:href="../images/PngSuite/basi3p02.png" x="160" y="132" width="32" height="32"/>
-
+
<!-- 4 bit indexed -->
<image xlink:href="../images/PngSuite/basi3p04.png" x="208" y="132" width="32" height="32"/>
-
+
<!-- 8 bit indexed -->
<image xlink:href="../images/PngSuite/basi3p08.png" x="256" y="132" width="32" height="32"/>
-
+
<!-- 8 bits RGB plus alpha -->
<image xlink:href="../images/PngSuite/basi6a08.png" x="304" y="132" width="32" height="32"/>
-
+
<!-- 16 bits RGB plus alpha -->
<image xlink:href="../images/PngSuite/basi6a16.png" x="352" y="132" width="32" height="32"/>
-
+
<text x="16" y="200" font-size="16" fill="#3C3">Truecolor and indexed, various bit depths, two with alpha</text>
-
+
<text x="16" y="260" font-size="24" fill="#3C3">Interlaced images</text>
-
+
<!--
- <image xlink:href="../images/PngSuite/" x="" y="" width="32" height="32"/>
+ <image xlink:href="../images/PngSuite/" x="" y="" width="32" height="32"/>
-->
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-image-15-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-image-15-f-manual.svg
index 6b406cf736d..6bbbd411c6e 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-image-15-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-image-15-f-manual.svg
@@ -14,16 +14,16 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/[chapter]#[section]">
<p>
The first row tests that alpha PNG images are correctly displayed as part of an SVG image,
- ignoring the background colour in the image which is only used to display the
+ ignoring the background colour in the image which is only used to display the
PNG image stand-alone.
</p>
- <p>The second row tests indexed PNG transparency (tRNs), again checking that
+ <p>The second row tests indexed PNG transparency (tRNs), again checking that
the background color is ignored when displayed as part of an SVG image.
</p>
<p>
- This test uses the
+ This test uses the
<a href="http://www.schaik.com/pngsuite/">PNG Group test suite</a>
- created by Willem van Schaik.
+ created by Willem van Schaik.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
@@ -48,77 +48,77 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<!-- something to show transparency -->
<rect x="16" y="32" width="368" height="8" fill="#3C3"/>
<rect x="16" y="48" width="368" height="8" fill="#9F9"/>
<!-- 8 bit grayscale, alpha, no background chunk, interlaced -->
<image xlink:href="../images/PngSuite/bgai4a08.png" x="16" y="32" width="32" height="32"/>
-
+
<!-- 16 bit grayscale, alpha, no background chunk, interlaced -->
<image xlink:href="../images/PngSuite/bgai4a16.png" x="64" y="32" width="32" height="32"/>
-
+
<!-- 8 bits rgb color, alpha, no background chunk -->
<image xlink:href="../images/PngSuite/bgan6a08.png" x="112" y="32" width="32" height="32"/>
-
+
<!-- 16 bits rgb color, alpha, no background chunk -->
<image xlink:href="../images/PngSuite/bgan6a16.png" x="160" y="32" width="32" height="32"/>
-
+
<!-- 8 bit grayscale, alpha, black background chunk -->
<image xlink:href="../images/PngSuite/bgbn4a08.png" x="208" y="32" width="32" height="32"/>
-
+
<!-- 16 bit grayscale, alpha, gray background chunk -->
<image xlink:href="../images/PngSuite/bggn4a16.png" x="256" y="32" width="32" height="32"/>
-
+
<!-- 8 bits rgb color, alpha, white background chunk -->
<image xlink:href="../images/PngSuite/bgwn6a08.png" x="304" y="32" width="32" height="32"/>
-
+
<!-- 16 bits rgb color, alpha, yellow background chunk -->
<image xlink:href="../images/PngSuite/bgyn6a16.png" x="352" y="32" width="32" height="32"/>
-
+
<text x="16" y="100" font-size="16" fill="#3C3">Background color, with alpha</text>
-
+
<!-- something to show transparency -->
<rect x="16" y="132" width="464" height="8" fill="#9F9"/>
<rect x="16" y="148" width="464" height="8" fill="#3C3"/>
<!-- transparent, black background chunk -->
<image xlink:href="../images/PngSuite/tbbn1g04.png" x="16" y="132" width="32" height="32"/>
-
+
<!-- transparent, blue background chunk -->
<image xlink:href="../images/PngSuite/tbbn2c16.png" x="64" y="132" width="32" height="32"/>
-
+
<!-- transparent, black background chunk -->
<image xlink:href="../images/PngSuite/tbbn3p08.png" x="112" y="132" width="32" height="32"/>
-
+
<!-- transparent, green background chunk -->
<image xlink:href="../images/PngSuite/tbgn2c16.png" x="160" y="132" width="32" height="32"/>
-
+
<!-- transparent, light-gray background chunk -->
<image xlink:href="../images/PngSuite/tbgn3p08.png" x="208" y="132" width="32" height="32"/>
-
+
<!-- transparent, red background chunk -->
<image xlink:href="../images/PngSuite/tbrn2c08.png" x="256" y="132" width="32" height="32"/>
-
+
<!-- transparent, white background chunk -->
<image xlink:href="../images/PngSuite/tbwn1g16.png" x="304" y="132" width="32" height="32"/>
-
+
<!-- transparent, white background chunk -->
<image xlink:href="../images/PngSuite/tbwn3p08.png" x="352" y="132" width="32" height="32"/>
-
+
<!-- transparent, yellow background chunk -->
<image xlink:href="../images/PngSuite/tbyn3p08.png" x="400" y="132" width="32" height="32"/>
-
+
<!-- transparent, but no background chunk -->
<image xlink:href="../images/PngSuite/tp1n3p08.png" x="448" y="132" width="32" height="32"/>
-
+
<text x="16" y="200" font-size="16" fill="#3C3">Background color, with transparency</text>
-
+
<text x="16" y="260" font-size="24" fill="#3C3">Handling bKGd and tRNs</text>
-
+
<!--
- <image xlink:href="../images/PngSuite/" x="" y="" width="32" height="32"/>
+ <image xlink:href="../images/PngSuite/" x="" y="" width="32" height="32"/>
-->
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-image-18-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-image-18-f-manual.svg
index 2e5f99c859f..5ed8c4cc2f6 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-image-18-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-image-18-f-manual.svg
@@ -16,7 +16,7 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#ImageElement">
<p>
Test referencing an svg from an 'image' element, where the referenced
- svg has no viewBox and a larger width and height than the 'image'
+ svg has no viewBox and a larger width and height than the 'image'
element viewport.
</p>
</d:testDescription>
@@ -27,7 +27,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if a green quarter circle with black stroke is displayed, and no red.
+ The test is passed if a green quarter circle with black stroke is displayed, and no red.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-image-19-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-image-19-f-manual.svg
index 9a52ccd2498..186efb80240 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-image-19-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-image-19-f-manual.svg
@@ -16,7 +16,7 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#ImageElement">
<p>
Test referencing an svg from an 'image' element, where the referenced
- svg has a viewBox and a larger width and height than the 'image'
+ svg has a viewBox and a larger width and height than the 'image'
element viewport.
</p>
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-svg-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-svg-01-f-manual.svg
index efa06ed2dc2..eebe868b04f 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-svg-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-svg-01-f-manual.svg
@@ -96,7 +96,7 @@
if(pass)
{
- document.getElementById("failText").setAttribute("display", "none");
+ document.getElementById("failText").setAttribute("display", "none");
}
}
catch(ex)
@@ -120,4 +120,3 @@
</g>
-->
</svg>
-
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-svg-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-svg-02-f-manual.svg
index 5fff676a318..f3969974f73 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-svg-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-svg-02-f-manual.svg
@@ -40,19 +40,19 @@
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<script type="text/ecmascript" xlink:href="../resources/testharness.js"/>
-
+
<!-- The testroot is here only to get a predictable 480x360 viewport -->
<svg id="testroot" width="480" height="360">
- <svg id="testSVG1" />
- <svg id="testSVG2" />
- <svg id="subSVG" width="300" height="175"/>
- </svg>
+ <svg id="testSVG1" />
+ <svg id="testSVG2" />
+ <svg id="subSVG" width="300" height="175"/>
+ </svg>
<g id="testoutput"/>
-
+
<!-- Cover the whole testframe with a simple visual result -->
<rect id="status" width="100%" height="100%" fill="none"/>
-
+
<script type="text/javascript"><![CDATA[
var passes = 0;
var ypos = 50;
@@ -62,7 +62,7 @@
var g = document.createElementNS("http://www.w3.org/2000/svg", "g");
var r = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var t = document.createElementNS("http://www.w3.org/2000/svg", "text");
- var tc = document.createTextNode(str);
+ var tc = document.createTextNode(str);
t.appendChild(tc);
t.setAttribute("class", "result");
t.setAttribute("font-family", "monospace");
@@ -80,7 +80,7 @@
g.setAttribute("transform", "translate(10 " + ypos + ")");
ypos += 10;
document.getElementById("testoutput").appendChild(g);
-
+
if (result)
passes++;
}
@@ -90,29 +90,29 @@
var testSVG = document.getElementById("testSVG1");
var subSVG = document.getElementById("subSVG");
var status = document.getElementById("status");
-
+
var base = testSVG.width.baseVal;
-
+
verify("value: " + base.value, base.value == 480);
test(function() {assert_equals(base.value, 480)}, "Assert that the width baseVal is 100% computed to user units.");
verify("valueInSpecifiedUnits: " + base.valueInSpecifiedUnits, base.valueInSpecifiedUnits == 100);
test(function() {assert_equals(base.value, 100)}, "Assert that the default width baseVal is 100.");
-
+
// set the value in user units and then read it back
base.value = 240;
verify("value: " + base.value, base.value == 240);
test(function() {assert_equals(base.value, 240)}, "Assert that the width baseVal is 240 after setting it.");
verify("valueInSpecifiedUnits: " + base.valueInSpecifiedUnits, base.valueInSpecifiedUnits == 50);
test(function() {assert_equals(base.valueInSpecifiedUnits, 50)}, "Assert that the value in specified units is now 50.");
-
+
// move the svg to be child of another viewport and read values again
subSVG.appendChild(testSVG);
verify("value: " + base.value, base.value == 150);
test(function() {assert_equals(base.value, 150)}, "Assert that the value changes to 150 after being moved to a new viewport.");
verify("valueInSpecifiedUnits: " + base.valueInSpecifiedUnits, base.valueInSpecifiedUnits == 50);
test(function() {assert_equals(base.valueInSpecifiedUnits, 50)}, "Assert that the value in specified units is still 50 after being moved to a new viewport.");
-
+
// move an svg that hasn't been modified to another viewport and read values
testSVG = document.getElementById("testSVG2");
subSVG.appendChild(testSVG);
@@ -123,7 +123,7 @@
catch(ex)
{
}
-
+
status.setAttribute("fill", passes == 7 ? "lime" : "red");
test(function() {assert_equals(passes,7)}, "Assert that all subtests passed.");
]]></script>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-svg-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-svg-03-f-manual.svg
index 0b03bb42668..aa1705c4cba 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-svg-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-svg-03-f-manual.svg
@@ -45,7 +45,7 @@
<svg width="100" height="100" viewBox="0 0 50 50">
<rect width="50" height="50" fill="lime"/>
</svg>
-
+
<g transform="translate(120 0)">
<rect x="0.5" y="0.5" width="99" height="99" fill="red"/>
<svg width="100" height="100" viewBox="0 0 50 50">
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-use-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-use-01-t-manual.svg
index 031723038d9..92e5175f88a 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-use-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-use-01-t-manual.svg
@@ -43,12 +43,12 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <font-face font-family="FreeSerif" unicode-range="U+0020-U+00FF">
- <font-face-src>
- <font-face-uri xlink:href="../resources/FreeSerifBoldItalic.svg#FreeSerifBoldItalic"/>
- </font-face-src>
- </font-face>
+ <defs>
+ <font-face font-family="FreeSerif" unicode-range="U+0020-U+00FF">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/FreeSerifBoldItalic.svg#FreeSerifBoldItalic"/>
+ </font-face-src>
+ </font-face>
<g fill="red" stroke="yellow" stroke-width="3">
<rect id="usedRect" width="20" height="20"/>
<circle id="usedCircle" cx="10" cy="10" r="10"/>
@@ -67,7 +67,6 @@
</g>
</defs>
-
<g>
<g id="labels" transform="translate(130, 40)" font-size="20" text-anchor="end">
<text>&lt;rect&gt;</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-use-05-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-use-05-b-manual.svg
index 804a0613b7d..c58bf61b79f 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-use-05-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-use-05-b-manual.svg
@@ -28,7 +28,7 @@
steps requied to run the test or any manual operation that need
to be performed to run the test.
]]
- </p>
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-use-06-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-use-06-b-manual.svg
index 958eabc6e26..57c80a84afa 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-use-06-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-use-06-b-manual.svg
@@ -16,9 +16,9 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#UseElement">
<p>
Test onlick handlers in externally referenced content.
-
+
There are two 'use' elements, each of them is referencing an external file showing a rectangle.
-
+
The rect elements in the external file have onclick attributes, and the handler will attempt to change the fill of the
referenced rect element to red.
</p>
@@ -43,11 +43,11 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<!-- if external use isn't implemented, show red rects -->
<rect x="40.5" y="120" width="119" height="119" fill="red"/>
<rect x="180.5" y="120" width="119" height="119" fill="red"/>
-
+
<use id="use-elm1" x="40" y="120" width="122" height="122" xlink:href="../images/struct-use-06-b-1.svg#rect1"/>
<use id="use-elm2" x="180" y="120" width="122" height="122" xlink:href="../images/struct-use-06-b-1.svg#svg-root"/>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-use-07-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-use-07-b-manual.svg
index eb1018a2222..bfa3f1b7fe0 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-use-07-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-use-07-b-manual.svg
@@ -16,8 +16,8 @@
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/struct.html#UseElement">
<p>
This tests interactivity and event handlers on use elements. It also tests
- that the <code>SVGElementInstance.correspondingElement</code> property and the
- <code>CSSStyleDeclaration.setProperty()</code> method defined in
+ that the <code>SVGElementInstance.correspondingElement</code> property and the
+ <code>CSSStyleDeclaration.setProperty()</code> method defined in
DOM Level 2 Style. By testing different ways of setting the fill on a rectangle
it verifies that the result is consistent, and that CSS properly overrides
the specified values.
@@ -34,7 +34,7 @@
If the useragent doesn't support CSS, this test does not apply.
</p>
<p>
- The test has passed if when clicking each of the rects the clicked rect turns blue -
+ The test has passed if when clicking each of the rects the clicked rect turns blue -
note that only the clicked rect must turn blue, if any other rect turns blue too then the test has failed.
</p>
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-use-10-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-use-10-f-manual.svg
index ebadc034b44..b956cbdc620 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-use-10-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-use-10-f-manual.svg
@@ -17,12 +17,12 @@
<p>
Properties are inherited according to the 'use' element rules, CSS selectors only apply to the original elements
and not the (conceptually) cloned DOM tree.
- </p>
+ </p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
- Run the test. No interaction required.
- </p>
+ <p>
+ Run the test. No interaction required.
+ </p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-use-11-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-use-11-f-manual.svg
index 56afadd45ff..236494a2c0d 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-use-11-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-use-11-f-manual.svg
@@ -89,7 +89,7 @@
{
fill: blue;
}
- .test12 {
+ .test12 {
fill: blue
}
.twochildren:first-child
@@ -105,10 +105,10 @@
<circle cx="50" cy="50" r="48" id="testDescendant" class="test4" />
</g>
<g class="child">
- <circle cx="50" cy="50" r="48" id="testChild" class="test5" />
+ <circle cx="50" cy="50" r="48" id="testChild" class="test5" />
</g>
<g>
- <circle cx="50" cy="50" r="48" id="testFirstChild" class="test6" />
+ <circle cx="50" cy="50" r="48" id="testFirstChild" class="test6" />
</g>
<g class="sibling"></g>
<circle cx="50" cy="50" r="48" id="testSibling" class="test7" />
@@ -117,8 +117,8 @@
<circle cx="50" cy="50" r="48" id="testAttributeWithSpaceSeparatedValueList" class="test10" foo="warning1 warning2" />
<circle cx="50" cy="50" r="48" id="testAttributeWithHyphenSeparatedValueList" class="test11" lang="en-us" />
<g class="twochildren">
- <circle cx="50" cy="50" r="48" id="notFirstChild" display="none" />
- <circle cx="50" cy="50" r="48" id="testFirstChild2" class="test12" />
+ <circle cx="50" cy="50" r="48" id="notFirstChild" display="none" />
+ <circle cx="50" cy="50" r="48" id="testFirstChild2" class="test12" />
</g>
</defs>
<use xlink:href="#testId" x="0" y="0" />
@@ -148,4 +148,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-use-12-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-use-12-f-manual.svg
index 01660ccdea8..8c8d8e0af13 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-use-12-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-use-12-f-manual.svg
@@ -16,12 +16,12 @@
Tests that recursive 'use' instances do not block rendering.
</p>
<p>
- Various scenarios that directly and indirectly create circular references via the 'use' tag. A 'g' element is used when
- structural elements are necessary. None of the 'use' scenarios render anything. 'useLongCycle' tests a chain of recursive
- 'use' instances that eventually cycles back to the first element. In 'useNested' 'use' elements are nested, with the child
- referring to the parent. In 'useNestedGroup' a 'use' instance references a parent 'g' element. In 'useIndirectNestedGroup'
- a 'use' instance indirectly references its own parent 'g'. In 'useMultipleIndirectNestedGroup', two 'use' instances
- reference their parent 'g' elements, and additional 'use' instances refer to these self-referencing 'use' elements. A green
+ Various scenarios that directly and indirectly create circular references via the 'use' tag. A 'g' element is used when
+ structural elements are necessary. None of the 'use' scenarios render anything. 'useLongCycle' tests a chain of recursive
+ 'use' instances that eventually cycles back to the first element. In 'useNested' 'use' elements are nested, with the child
+ referring to the parent. In 'useNestedGroup' a 'use' instance references a parent 'g' element. In 'useIndirectNestedGroup'
+ a 'use' instance indirectly references its own parent 'g'. In 'useMultipleIndirectNestedGroup', two 'use' instances
+ reference their parent 'g' elements, and additional 'use' instances refer to these self-referencing 'use' elements. A green
'rect' is used to verify that rendering was processed up to that point.
</p>
</d:testDescription>
@@ -101,4 +101,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-use-14-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-use-14-f-manual.svg
index 597de799f11..950e35dd82b 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-use-14-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-use-14-f-manual.svg
@@ -19,7 +19,7 @@
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
- Run the test. No interaction required.
+ Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/struct-use-15-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/struct-use-15-f-manual.svg
index 90a79d7dfb4..5cab3b8292f 100644
--- a/tests/wpt/web-platform-tests/svg/import/struct-use-15-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/struct-use-15-f-manual.svg
@@ -60,7 +60,7 @@
}
catch(ex)
{
- alert("ERROR: " + ex.message);
+ alert("ERROR: " + ex.message);
}]]>
</script>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-class-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-class-01-f-manual.svg
index 0eed402f76c..a4d202339d5 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-class-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-class-01-f-manual.svg
@@ -72,4 +72,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-css-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-css-01-b-manual.svg
index c1e629e2041..43af6eb1a87 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-css-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-css-01-b-manual.svg
@@ -18,7 +18,7 @@
Test element and class selectors.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-css-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-css-02-b-manual.svg
index 87b5fbaa981..bae161d0195 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-css-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-css-02-b-manual.svg
@@ -18,7 +18,7 @@
Test ID and attribute selectors
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>Run the test. No interaction required.
</p>
</d:operatorScript>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-css-03-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-css-03-b-manual.svg
index 7a830bd9b5a..e14ddbb68a8 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-css-03-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-css-03-b-manual.svg
@@ -18,7 +18,7 @@
Test ancestor, child and sibling selectors.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
@@ -40,7 +40,7 @@
this makes the rectangle in the second test green. The first-child pseudoclass matches
circles which are the first child of elements of class 'mummy' and if correctly
selected this circle will be filled green. (The circle in the upper test is not
- the first child).
+ the first child).
-->
</d:SVGTestCase>
<title id="test-title">$RCSfile: styling-css-03-b.svg,v $</title>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-css-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-css-04-f-manual.svg
index 90025a2ba0f..a04ee73962d 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-css-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-css-04-f-manual.svg
@@ -26,7 +26,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if a grid of 6x3 squares is shown, the colors in each column
+ The test is passed if a grid of 6x3 squares is shown, the colors in each column
are the same and are those of the reference image (blue, green, orange, gold, purple and silver)
</p>
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-css-06-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-css-06-b-manual.svg
index a3151451ea6..c7e44cae4e1 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-css-06-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-css-06-b-manual.svg
@@ -72,7 +72,7 @@
:hover {fill: rgb(255, 140, 0) }
rect:hover {fill: none }
text#revision:hover {fill: black}
- :focus { fill: rgb( 0, 255, 127); stroke: rgb( 0, 255, 127); stroke-width:1.5px }
+ :focus { fill: rgb( 0, 255, 127); stroke: rgb( 0, 255, 127); stroke-width:1.5px }
</style>
<defs>
<font horiz-adv-x="481">
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-css-07-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-css-07-f-manual.svg
index f036f6dab19..551cec3365e 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-css-07-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-css-07-f-manual.svg
@@ -59,4 +59,4 @@
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>
-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-css-08-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-css-08-f-manual.svg
index 8f18acdab89..56493f157d0 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-css-08-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-css-08-f-manual.svg
@@ -92,7 +92,7 @@
</g>
<circle class="reference" cx="300" cy="80" r="35" fill="lime" visibility="hidden"/>
<circle id="testAttributeSelector" cx="300" cy="80" r="35" fill="red" />
-
+
<circle class="reference" cx="400" cy="140" r="50" fill="lime" visibility="hidden"/>
<circle id="testIdSelector" cx="400" cy="140" r="50" fill="red" />
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-css-09-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-css-09-f-manual.svg
index f4be4a17510..f4b229ce51e 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-css-09-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-css-09-f-manual.svg
@@ -17,7 +17,7 @@
</p>
<p>
For each of a representative sampling of selectors, a 'visibility: hidden' style rule is specified
- to match a corresponding element in the markup. Identically shaped and sized elements (but which are not
+ to match a corresponding element in the markup. Identically shaped and sized elements (but which are not
applicable to any of the style selectors) are placed beneath them and should be visible
if the style sheet was applied correctly.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-css-10-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-css-10-f-manual.svg
index 66884a228db..7018ab1dca4 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-css-10-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-css-10-f-manual.svg
@@ -13,12 +13,12 @@
version="$Revision: 1.3 $" testname="$RCSfile: styling-css-10-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG/styling.html#CaseSensitivity">
<p>
- Checks that stylesheets (style attributes, style elements,
+ Checks that stylesheets (style attributes, style elements,
external style sheets) are case-insensitive, unlike presentational attributes. </p>
<p>Subtest a checks that the invalid attribute
-FiLl is ignored. Subtest b checks that the style attribute is
-applied, the values being case-insensitive. Subtests c and d check
+FiLl is ignored. Subtest b checks that the style attribute is
+applied, the values being case-insensitive. Subtests c and d check
the same for style elements and imported external style sheets.
</p>
</d:testDescription>
@@ -30,7 +30,7 @@ the same for style elements and imported external style sheets.
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
If any red shows, the test fails. If four orange circles are shown,
- the test passes and the user agent supports CSS style sheets. If
+ the test passes and the user agent supports CSS style sheets. If
the top two circles are orange while the bottom two are blue, and the user agent does
not claim to support CSS style sheets, the test also passes.
</p>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-elem-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-elem-01-b-manual.svg
index 718b231cbc6..b6ece4e6f8b 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-elem-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-elem-01-b-manual.svg
@@ -17,15 +17,15 @@
honored.
</p>
<p>
- Once the test is loaded, two rectangles are presented,
- the upper indicating the result of a sub-test that checks
- whether the 'type' attribute on a 'style' element correctly
- defaults to "text/css", and the lower indicating the result
- of a sub-test that checks whether a bogus value for 'type'
- does not cause the 'style' element contents to be interpreted
- as CSS. Each rectangle is green if the sub-test is passed
- or red if it failed.
- </p>
+ Once the test is loaded, two rectangles are presented,
+ the upper indicating the result of a sub-test that checks
+ whether the 'type' attribute on a 'style' element correctly
+ defaults to "text/css", and the lower indicating the result
+ of a sub-test that checks whether a bogus value for 'type'
+ does not cause the 'style' element contents to be interpreted
+ as CSS. Each rectangle is green if the sub-test is passed
+ or red if it failed.
+ </p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-pres-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-pres-01-t-manual.svg
index 72ee060e072..2fac3abaf4a 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-pres-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-pres-01-t-manual.svg
@@ -15,7 +15,7 @@
version="$Revision: 1.7 $" testname="$RCSfile: styling-pres-01-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/styling.html#UsingPresentationAttributes">
<p>
- Tests that !important in a presentation attribute is an unsupported value
+ Tests that !important in a presentation attribute is an unsupported value
</p>
<p>
A fill attribute is set to red with !important. This is an unsupported attribute value,
@@ -30,7 +30,7 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The rectangle should be filled with black, with a lime green border.
+ The rectangle should be filled with black, with a lime green border.
</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-pres-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-pres-02-f-manual.svg
index 3e116fd10da..40d81b8f7f9 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-pres-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-pres-02-f-manual.svg
@@ -64,7 +64,7 @@
<text x='10' y='20'>Testing inapplicable presentation attributes</text>
<g visibility='hidden'>
- <path id="path" d="M0,0"/>
+ <path id="path" d="M0,0"/>
<image id='image' xlink:href='../images/20x20.png' width='10' height='10' fill='rgb(0, 0, 255)'/>
<rect id='rect' width='10' height='10' font-size='123px'/>
<circle id='circle' r='10' font-style='italic'/>
@@ -129,7 +129,7 @@
}
return hex;
}
-
+
function checkSVGColor(e, p, r, g, b) {
var v;
try {
@@ -190,7 +190,7 @@
report(5, checkSVGColor($('text'), 'stop-color', 0, 255, 0));
report(6, checkIdent($('ellipse'), 'font-variant', 'small-caps'));
report(7, checkPx($('polyline'), 'letter-spacing', '20px'));
-
+
report(11, checkSVGColor($('tref'), 'flood-color', 255, 0, 0));
report(12, checkFloat($('textPath'), 'flood-opacity', 0.25));
report(13, checkIdent($('altGlyph'), 'color-interpolation-filters', 'auto'));
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-pres-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-pres-04-f-manual.svg
index 8ef604d0b73..6e441afe658 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-pres-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-pres-04-f-manual.svg
@@ -82,7 +82,7 @@
<circle id="testAdjacentSiblingSelector" cx="100" cy="300" r="40" fill="red" />
</g>
<circle id="testAttributeSelector" cx="300" cy="80" r="35" fill="red" />
- <circle id="testIdSelector" cx="400" cy="140" r="50" fill="red" />
+ <circle id="testIdSelector" cx="400" cy="140" r="50" fill="red" />
<g>
<rect id="testPseudoClassSelector" x="270" y="240" width="150" height="80" fill="red" />
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/styling-pres-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/styling-pres-05-f-manual.svg
index 38e1c42cb3f..78af2d4a2c3 100644
--- a/tests/wpt/web-platform-tests/svg/import/styling-pres-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/styling-pres-05-f-manual.svg
@@ -55,7 +55,7 @@
<circle id="testAdjacentSiblingSelector" cx="100" cy="300" r="40" fill="red" />
</g>
<circle id="testAttributeSelector" cx="300" cy="80" r="35" fill="red" />
- <circle id="testIdSelector" cx="400" cy="140" r="50" fill="red" />
+ <circle id="testIdSelector" cx="400" cy="140" r="50" fill="red" />
<g>
<rect id="testPseudoClassSelector" x="270" y="240" width="150" height="80" fill="red" />
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/svgdom-over-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/svgdom-over-01-f-manual.svg
index bf03243ed55..681a13a446b 100644
--- a/tests/wpt/web-platform-tests/svg/import/svgdom-over-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/svgdom-over-01-f-manual.svg
@@ -13,21 +13,21 @@
version="$Revision: 1.9 $" testname="$RCSfile: svgdom-over-01-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/svgdom.html#SVGDOMOverview">
<p>
- This tests how unspecified attributes affect the return values from the
- SVG DOM methods related to attributes.
+ This tests how unspecified attributes affect the return values from the
+ SVG DOM methods related to attributes.
</p>
<p>
- After loading the test, you should see a list of red or green rectangles followed by some text describing each subtest.
+ After loading the test, you should see a list of red or green rectangles followed by some text describing each subtest.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
- <p>
+ <p>
Run the test. No interaction required.
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test has passed if there is a line of text saying "Test status: PASSED", and there is a green rectangle to the left of that text.
+ The test has passed if there is a line of text saying "Test status: PASSED", and there is a green rectangle to the left of that text.
</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -55,7 +55,7 @@
<filter id="f"/>
<polygon id="p"/>
</defs>
-
+
<script><![CDATA[
var ypos = 50;
var r = document.getElementById("r");
@@ -77,7 +77,7 @@
this.str = str;
this.code = code ? code : str;
}
-
+
Subtest.prototype.getStr = function()
{
return this.str;
@@ -87,7 +87,7 @@
{
return this.code;
}
-
+
function verify(str, result)
{
var g = document.createElementNS("http://www.w3.org/2000/svg", "g");
@@ -109,82 +109,82 @@
ypos += 10;
document.getElementById("test-body-content").appendChild(g);
if(result)
- passes++;
+ passes++;
}
-
+
var passes = 0;
- var tests = [
+ var tests = [
// test SVGLength
new Subtest("r.x.baseVal.value == 0"),
new Subtest("r.x.baseVal.unitType == 1 (SVG_LENGTHTYPE_NUMBER)", "r.x.baseVal.unitType == 1"),
new Subtest("v.width.baseVal.valueInSpecifiedUnits == 100"),
new Subtest("v.width.baseVal.unitType == 2 (SVG_LENGTHTYPE_PERCENTAGE)", "v.width.baseVal.unitType == 2"),
new Subtest("tt.textLength.baseVal.value == tt.getComputedTextLength()"),
-
+
// test SVGAnimatedNumber
new Subtest("s.offset.baseVal == 0"),
-
+
// test SVGAnimatedBoolean
new Subtest("c.preserveAlpha.baseVal == false"),
-
+
// test SVGAnimatedString / DOMString
new Subtest("c.className.baseVal == \"\""),
new Subtest("i.href.baseVal == \"\""),
-
+
// test SVGStringList
new Subtest("i.requiredFeatures.numberOfItems == 0"),
-
+
// SVGAnimatedNumberList
new Subtest("c.kernelMatrix.baseVal.numberOfItems == 0"),
// SVGAnimatedLengthList
new Subtest("t.x.baseVal.numberOfItems == 0"),
-
+
// SVGAnimatedPointsList / SVGPointList
new Subtest("p.points.numberOfItems == 0"),
-
+
// SVGAnimatedEnumeration
new Subtest("g.gradientUnits.baseVal == 2 (SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)", "g.gradientUnits.baseVal == 2"),
// SVGAnimatedInteger
new Subtest("f.filterResX.baseVal == 0"),
-
+
// SVGAnimatedAngle
new Subtest("m.orientAngle.baseVal.value == 0"),
new Subtest("m.orientAngle.baseVal.unitType == 1 (SVG_ANGLETYPE_UNSPECIFIED)", "m.orientAngle.baseVal.unitType == 1"),
-
+
// SVGAnimatedRect / SVGRect
- new Subtest("v.viewBox.baseVal.[x,y,width,height] == 0",
+ new Subtest("v.viewBox.baseVal.[x,y,width,height] == 0",
"v.viewBox.baseVal.x == 0 && v.viewBox.baseVal.y == 0 && v.viewBox.baseVal.width == 0 && v.viewBox.baseVal.height == 0"),
-
+
// SVGAnimatedTransformList
new Subtest("t.transform.baseVal.numberOfItems == 0"),
// SVGAnimatedPreserveAspectRatio / SVGPreserveAspectRatio
new Subtest("v.preserveAspectRatio.baseVal.align == 6 (SVG_PRESERVEASPECTRATIO_XMIDYMID)", "v.preserveAspectRatio.baseVal.align == 6"),
new Subtest("v.preserveAspectRatio.baseVal.meetOrSlice == 1 (SVG_MEETORSLICE_MEET)", "v.preserveAspectRatio.baseVal.meetOrSlice == 1"),
-
+
// SVGZoomAndPan
new Subtest("v.zoomAndPan == 2 (SVG_ZOOMANDPAN_MAGNIFY)", "v.zoomAndPan == 2")
];
-
+
try {
- for (var k = 0; k < tests.length; k++)
- {
- try
- {
- verify(tests[k].getStr(), eval(tests[k].getCode()));
- }
- catch(e)
- {
- verify(tests[k].getStr(), false);
- }
- }
+ for (var k = 0; k < tests.length; k++)
+ {
+ try
+ {
+ verify(tests[k].getStr(), eval(tests[k].getCode()));
+ }
+ catch(e)
+ {
+ verify(tests[k].getStr(), false);
+ }
+ }
}
finally
{
- verify("Test status", tests.length == passes);
- }
+ verify("Test status", tests.length == passes);
+ }
]]></script>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-align-07-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-align-07-t-manual.svg
index 34121ebcaf1..ea99452fec2 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-align-07-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-align-07-t-manual.svg
@@ -14,13 +14,13 @@
template-version="1.4" reviewer="AG" author="CN" status="issue"
version="$Revision: 1.9 $" testname="$RCSfile: text-align-07-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/text.html#AlignmentProperties">
- <p>ISSUE - http://www.w3.org/2011/02/27-svg-irc#T22-20-51</p>
+ <p>ISSUE - http://www.w3.org/2011/02/27-svg-irc#T22-20-51</p>
<p>
Test horizontal baselines across script and font size changes.
</p>
<p>
Original test authored by Rodney Hardy at CISRA and modified by
- Anthony Grasso.
+ Anthony Grasso.
</p>
</d:testDescription>
<d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
diff --git a/tests/wpt/web-platform-tests/svg/import/text-align-08-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-align-08-b-manual.svg
index 9541f574dd2..d0ad30c4774 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-align-08-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-align-08-b-manual.svg
@@ -14,7 +14,7 @@
template-version="1.4" reviewer="CL" author="CN" status="issue"
version="$Revision: 1.10 $" testname="$RCSfile: text-align-08-b.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/text.html#AlignmentProperties">
- <p>ISSUE - http://www.w3.org/2011/02/27-svg-irc#T22-20-51</p>
+ <p>ISSUE - http://www.w3.org/2011/02/27-svg-irc#T22-20-51</p>
<p>
Test horizontal baselines across script and font size changes. It uses an SVG Font, where
the Latin letter "a" is a rectangle, the Japanese letter "犜" is an upward-pointing triangle,
diff --git a/tests/wpt/web-platform-tests/svg/import/text-altglyph-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-altglyph-02-b-manual.svg
index d12e917e41f..e53ea7441ca 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-altglyph-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-altglyph-02-b-manual.svg
@@ -38,7 +38,7 @@
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
- <p>The test passes if each pair of (actual,expected) text strings
+ <p>The test passes if each pair of (actual,expected) text strings
render identically.</p>
</d:passCriteria>
</d:SVGTestCase>
@@ -335,7 +335,7 @@
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.10 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/text-altglyph-03-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-altglyph-03-b-manual.svg
index 4327c9f80e4..854e9bc88c0 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-altglyph-03-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-altglyph-03-b-manual.svg
@@ -42,7 +42,7 @@
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
- <p>The test passes if each pair of (actual,expected) text strings
+ <p>The test passes if each pair of (actual,expected) text strings
render identically.</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-bidi-01-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-bidi-01-t-manual.svg
index aff70f3c6aa..162591f4cab 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-bidi-01-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-bidi-01-t-manual.svg
@@ -43,7 +43,7 @@
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<text x="240" y="120" text-anchor="middle">مفتاح معايير الويب</text>
- <image id="reference" xlink:href="../images/inline2.png" width="200" height="30" transform="translate(120 180)"/>
+ <image id="reference" xlink:href="../images/inline2.png" width="200" height="30" transform="translate(120 180)"/>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/text-deco-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-deco-01-b-manual.svg
index 609162a9720..feef7e21145 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-deco-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-deco-01-b-manual.svg
@@ -24,23 +24,23 @@
</p>
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
- <p>The test has passed if:</p>
+ <p>The test has passed if:</p>
<ul>
- <li>
- The first line of text has no decoration.
- </li>
- <li>
- The second line of text has a line through it.
- </li>
- <li>
- The third line of text is underlined.
- </li>
- <li>
- The fourth line of text has a blue underline with a green stroke under
- all characters, except the word "different" which has a yellow underline
- with a green stroke.
- </li>
- </ul>
+ <li>
+ The first line of text has no decoration.
+ </li>
+ <li>
+ The second line of text has a line through it.
+ </li>
+ <li>
+ The third line of text is underlined.
+ </li>
+ <li>
+ The fourth line of text has a blue underline with a green stroke under
+ all characters, except the word "different" which has a yellow underline
+ with a green stroke.
+ </li>
+ </ul>
</d:passCriteria>
</d:SVGTestCase>
<title id="test-title">$RCSfile: text-deco-01-b.svg,v $</title>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-dom-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-dom-02-f-manual.svg
index bcbbe106360..235254b00e7 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-dom-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-dom-02-f-manual.svg
@@ -18,8 +18,8 @@
This tests that methods on the SVGTextContentElement interface
that take an index to a character or a number of characters
actually interpret these as indexes to or numbers of UTF-16 code
- units. To test this, a character from outside the Basic Multilingual Plane
- (U+10000; LINEAR B SYLLABLE B008) is used in a text string.
+ units. To test this, a character from outside the Basic Multilingual Plane
+ (U+10000; LINEAR B SYLLABLE B008) is used in a text string.
This character is stored in UTF-16 as a surrogate pair.
</p>
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-dom-04-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-dom-04-f-manual.svg
index 67d39509397..a4e7e56a343 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-dom-04-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-dom-04-f-manual.svg
@@ -37,111 +37,111 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <font horiz-adv-x="4000" id="mini">
- <font-face font-family="simplesvgfont" units-per-em="4000" ascent="800" descent="-200" alphabetic="0"/>
- <missing-glyph horiz-adv-x="10000" d="M0 0 4000 0"/>
- <glyph unicode="a" glyph-name="a" horiz-adv-x="4100" d="M0 4000l2000 -4000l2000 4000Z"/>
- <glyph unicode="b" glyph-name="b" horiz-adv-x="2000" d="M0 0l2000 0000l0 2000l-2000 0Z"/>
- <glyph unicode="cb" d="M0 0l2000 2000l-2000 2000Z" horiz-adv-x="800"/>
- <glyph unicode="c" glyph-name="c" horiz-adv-x="1900" d="M0 0L2000 2000l-2000 0L2000 0Z"/>
- <glyph unicode="&#x1D352;" glyph-name="compliance" d="M1000,0 h1000 v-1000 h-1000 z" horiz-adv-x="2100"/>
- <hkern u1="c" u2="a" k="500"/>
- </font>
- </defs>
+ <defs>
+ <font horiz-adv-x="4000" id="mini">
+ <font-face font-family="simplesvgfont" units-per-em="4000" ascent="800" descent="-200" alphabetic="0"/>
+ <missing-glyph horiz-adv-x="10000" d="M0 0 4000 0"/>
+ <glyph unicode="a" glyph-name="a" horiz-adv-x="4100" d="M0 4000l2000 -4000l2000 4000Z"/>
+ <glyph unicode="b" glyph-name="b" horiz-adv-x="2000" d="M0 0l2000 0000l0 2000l-2000 0Z"/>
+ <glyph unicode="cb" d="M0 0l2000 2000l-2000 2000Z" horiz-adv-x="800"/>
+ <glyph unicode="c" glyph-name="c" horiz-adv-x="1900" d="M0 0L2000 2000l-2000 0L2000 0Z"/>
+ <glyph unicode="&#x1D352;" glyph-name="compliance" d="M1000,0 h1000 v-1000 h-1000 z" horiz-adv-x="2100"/>
+ <hkern u1="c" u2="a" k="500"/>
+ </font>
+ </defs>
+
+ <script type="text/ecmascript"><![CDATA[
+ function test()
+ {
+ var t = document.getElementById("t");
+ var r = document.getElementById("r");
+ var res = document.getElementById("res");
+ var isPassed = true;
+
+ // string: abca&#x1D352;cb
+ // indices: 0123 4 5 67
+
+ var tests = new Array("getSubStringLength(0,1)", "4100", // 'a'
+ "getSubStringLength(0,2)", "6100", // 'ab'
+ "getSubStringLength(0,3)", "7500", // 'abc'
+ "getSubStringLength(0,4)", "11600", // 'abca'
+ "getSubStringLength(0,5)", "13700", // 'abca' and high surrogate of 1D352
+ "getSubStringLength(0,6)", "13700", // 'abca&#x1D352'
+ "getSubStringLength(0,7)", "14500", // 'abca&#x1D352' and half of ligature 'cb'
+ "getSubStringLength(0,8)", "14500", // 'abca&#x1D352cb'
+ "getSubStringLength(0,9)", "14500", // 'abca&#x1D352cb'
+ "getSubStringLength(3,1)", "4100", // 'a'
+ "getSubStringLength(1,1)", "2000", // 'b'
+ "getSubStringLength(4,1)", "2100", // high surrogate of 1D352
+ "getSubStringLength(4,2)", "2100", // '&#x1D352'
+ "getSubStringLength(5,1)", "2100", // low surrogate of 1D352
+ "getSubStringLength(6,1)", "800", // first half of ligature 'cb'
+ "getSubStringLength(6,2)", "800", // ligature 'cb'
+ "getSubStringLength(7,1)", "800", // second half of ligature 'cb'
+ "getSubStringLength(8,1)", "INDEX_SIZE_ERR",
+ "getSubStringLength(9,0)", "INDEX_SIZE_ERR",
+ "getSubStringLength(-1,1)", "INDEX_SIZE_ERR",
+ "getSubStringLength(-57,0)", "INDEX_SIZE_ERR",
+ "getSubStringLength(0,-52)", "INDEX_SIZE_ERR",
+ "getSubStringLength(-1,-5)", "INDEX_SIZE_ERR",
+ "getSubStringLength(7,0)", "0", // second half of ligature 'cb'
+ "getSubStringLength(5,0)", "0", // high surrogate of 1D352
+ "getSubStringLength(4,0)", "0" // low surrogate of 1D352
+ );
- <script type="text/ecmascript"><![CDATA[
- function test()
- {
- var t = document.getElementById("t");
- var r = document.getElementById("r");
- var res = document.getElementById("res");
- var isPassed = true;
-
- // string: abca&#x1D352;cb
- // indices: 0123 4 5 67
-
- var tests = new Array("getSubStringLength(0,1)", "4100", // 'a'
- "getSubStringLength(0,2)", "6100", // 'ab'
- "getSubStringLength(0,3)", "7500", // 'abc'
- "getSubStringLength(0,4)", "11600", // 'abca'
- "getSubStringLength(0,5)", "13700", // 'abca' and high surrogate of 1D352
- "getSubStringLength(0,6)", "13700", // 'abca&#x1D352'
- "getSubStringLength(0,7)", "14500", // 'abca&#x1D352' and half of ligature 'cb'
- "getSubStringLength(0,8)", "14500", // 'abca&#x1D352cb'
- "getSubStringLength(0,9)", "14500", // 'abca&#x1D352cb'
- "getSubStringLength(3,1)", "4100", // 'a'
- "getSubStringLength(1,1)", "2000", // 'b'
- "getSubStringLength(4,1)", "2100", // high surrogate of 1D352
- "getSubStringLength(4,2)", "2100", // '&#x1D352'
- "getSubStringLength(5,1)", "2100", // low surrogate of 1D352
- "getSubStringLength(6,1)", "800", // first half of ligature 'cb'
- "getSubStringLength(6,2)", "800", // ligature 'cb'
- "getSubStringLength(7,1)", "800", // second half of ligature 'cb'
- "getSubStringLength(8,1)", "INDEX_SIZE_ERR",
- "getSubStringLength(9,0)", "INDEX_SIZE_ERR",
- "getSubStringLength(-1,1)", "INDEX_SIZE_ERR",
- "getSubStringLength(-57,0)", "INDEX_SIZE_ERR",
- "getSubStringLength(0,-52)", "INDEX_SIZE_ERR",
- "getSubStringLength(-1,-5)", "INDEX_SIZE_ERR",
- "getSubStringLength(7,0)", "0", // second half of ligature 'cb'
- "getSubStringLength(5,0)", "0", // high surrogate of 1D352
- "getSubStringLength(4,0)", "0" // low surrogate of 1D352
- );
-
- try
- {
- for(var i = 0; i < tests.length; i=i+2)
- {
- try
- {
- val = eval("t."+tests[i]);
- }
- catch(e)
- {
- if(e.code == DOMException.INDEX_SIZE_ERR)
- {
- val = "INDEX_SIZE_ERR"
- }
- else
- {
- val = e;
- }
- }
-
- if(val != tests[i+1])
- {
- throw "Failed " + tests[i] + " got " + val + " but expected " + tests[i+1];
- }
- }
- }
- catch(f)
- {
- isPassed = false;
- res.textContent = f;
- }
-
- if(isPassed)
- {
- r.setAttribute("fill", "none");
- }
- }
- ]]></script>
-
- <g transform="scale(0.02 0.02) translate(4000 2000)">
- <g id="reference" fill="red">
- <path d="M0 4000l2000 -4000l2000 4000Z" transform="scale(1 -1) translate(0 -8000)"/>
- <path d="M0 0l2000 0000l0 2000l-2000 0Z" transform="translate(4100 6000)"/>
- <path d="M0 0L2000 2000l-2000 0L2000 0Z" transform="translate(6100 6000)"/>
- <path d="M0 4000l2000 -4000l2000 4000Z" transform="scale(1 -1) translate(7500 -8000)"/>
- <path d="M1000,0 h1000 v-1000 h-1000 z" transform="scale(1 -1) translate(11600 -8000)"/>
- <path d="M0 0l2000 2000l-2000 2000Z" transform="scale(1 -1) translate(13700 -8000)"/>
- </g>
-
- <text id="t" font-family="simplesvgfont" font-size="4000" y="2em" fill="lime">abca&#x1D352;cb</text>
- <rect id="r" x="5000" y="10%" width="2000" height="2000" fill="red"/>
- <text id="res" x="50%" text-anchor="middle" font-family="sans-serif" font-size="200" y="80%"></text>
- </g>
+ try
+ {
+ for(var i = 0; i < tests.length; i=i+2)
+ {
+ try
+ {
+ val = eval("t."+tests[i]);
+ }
+ catch(e)
+ {
+ if(e.code == DOMException.INDEX_SIZE_ERR)
+ {
+ val = "INDEX_SIZE_ERR"
+ }
+ else
+ {
+ val = e;
+ }
+ }
+
+ if(val != tests[i+1])
+ {
+ throw "Failed " + tests[i] + " got " + val + " but expected " + tests[i+1];
+ }
+ }
+ }
+ catch(f)
+ {
+ isPassed = false;
+ res.textContent = f;
+ }
+
+ if(isPassed)
+ {
+ r.setAttribute("fill", "none");
+ }
+ }
+ ]]></script>
+
+ <g transform="scale(0.02 0.02) translate(4000 2000)">
+ <g id="reference" fill="red">
+ <path d="M0 4000l2000 -4000l2000 4000Z" transform="scale(1 -1) translate(0 -8000)"/>
+ <path d="M0 0l2000 0000l0 2000l-2000 0Z" transform="translate(4100 6000)"/>
+ <path d="M0 0L2000 2000l-2000 0L2000 0Z" transform="translate(6100 6000)"/>
+ <path d="M0 4000l2000 -4000l2000 4000Z" transform="scale(1 -1) translate(7500 -8000)"/>
+ <path d="M1000,0 h1000 v-1000 h-1000 z" transform="scale(1 -1) translate(11600 -8000)"/>
+ <path d="M0 0l2000 2000l-2000 2000Z" transform="scale(1 -1) translate(13700 -8000)"/>
+ </g>
+
+ <text id="t" font-family="simplesvgfont" font-size="4000" y="2em" fill="lime">abca&#x1D352;cb</text>
+ <rect id="r" x="5000" y="10%" width="2000" height="2000" fill="red"/>
+ <text id="res" x="50%" text-anchor="middle" font-family="sans-serif" font-size="200" y="80%"></text>
+ </g>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/text-dom-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-dom-05-f-manual.svg
index 017d9ffe9c3..1dfcb67b07c 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-dom-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-dom-05-f-manual.svg
@@ -18,8 +18,8 @@
This tests that methods on the SVGTextContentElement interface
that take an index to a character or a number of characters
actually interpret these as indexes to or numbers of UTF-16 code
- units. To test this, a character from outside the Basic Multilingual Plane
- (U+10000; LINEAR B SYLLABLE B008) is used in a text string.
+ units. To test this, a character from outside the Basic Multilingual Plane
+ (U+10000; LINEAR B SYLLABLE B008) is used in a text string.
This character is stored in UTF-16 as a surrogate pair.
</p>
<p>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-fonts-05-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-fonts-05-f-manual.svg
index b615e80362c..36017c37b99 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-fonts-05-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-fonts-05-f-manual.svg
@@ -41,7 +41,7 @@
<tspan x="160" line-height="100">FillerText</tspan>
<tspan x="270" line-height="200">FillerText</tspan>
</text>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/text-fonts-202-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-fonts-202-t-manual.svg
index a26092a971c..b38d36de637 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-fonts-202-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-fonts-202-t-manual.svg
@@ -1,4 +1,4 @@
-<svg version="1.1" baseProfile="tiny" id="svg-root"
+<svg version="1.1" baseProfile="tiny" id="svg-root"
width="100%" height="100%" viewBox="0 0 480 360"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
diff --git a/tests/wpt/web-platform-tests/svg/import/text-fonts-203-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-fonts-203-t-manual.svg
index 0f8d37624be..011ad8a0ae3 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-fonts-203-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-fonts-203-t-manual.svg
@@ -19,8 +19,8 @@
font family with five weights is specified, with a fallback to 'serif'.
</p>
<p>
- The specified font family has five weights - 300, 400, 600, 700 and 800.
- See the CSS3 Font specification
+ The specified font family has five weights - 300, 400, 600, 700 and 800.
+ See the CSS3 Font specification
for how these are allocated to the nine weight numbers.
</p>
<p>
@@ -28,11 +28,11 @@
right hand side of the test, the third line of text tests the to 'bolder' relative
keyword and the fourth tests the 'lighter' relative keyword.
</p>
- <p>The fonts are SVG fonts convertted, with the author's explicit permission,
+ <p>The fonts are SVG fonts convertted, with the author's explicit permission,
from <a href="http://justanotherfoundry.com/Zalamander/index.htm">Zalamander Caps</a>
by Tim Ahrens of <a href="http://justanotherfoundry.com/">Just Another Foundry</a>.
- An ASCII subset has been generated for this test. The font names have been
- obfuscated, to deter
+ An ASCII subset has been generated for this test. The font names have been
+ obfuscated, to deter
user agent sniffing for keywords like "Ultrabold". All weights in this generated
family are multiples of 100 and greater or equal to 300.</p>
</d:testDescription>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-fonts-204-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-fonts-204-t-manual.svg
index 31f464a117c..4a5859c1d42 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-fonts-204-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-fonts-204-t-manual.svg
@@ -19,8 +19,8 @@
font family with five weights is specified, with a fallback to 'serif'.
</p>
<p>
- The specified font family has five weights - 300, 400, 600, 700 and 800.
- See the CSS3 Font specification
+ The specified font family has five weights - 300, 400, 600, 700 and 800.
+ See the CSS3 Font specification
for how these are allocated to the nine weight numbers.
</p>
<p>
@@ -28,10 +28,10 @@
right hand side of the test, the third line of text tests the to 'bolder' relative
keyword and the fourth tests the 'lighter' relative keyword.
</p>
- <p>The fonts are WOFF fonts convertted, with the author's explicit permission,
+ <p>The fonts are WOFF fonts convertted, with the author's explicit permission,
from <a href="http://justanotherfoundry.com/zalamander">Zalamander Caps</a>
by Tim Ahrens of <a href="http://justanotherfoundry.com/">Just Another Foundry</a>.
- The font names have been obfuscated, to deter
+ The font names have been obfuscated, to deter
user agent sniffing for keywords like "Ultrabold". All weights in this generated
family are multiples of 100 and greater or equal to 300.</p>
</d:testDescription>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-intro-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-intro-02-b-manual.svg
index 1b36814beae..76497c687d6 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-intro-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-intro-02-b-manual.svg
@@ -31,7 +31,7 @@
the various international characters used in this test case. A
suitable font should be used by the SVG renderer if none of the
specified font families are available (or if they are available but do
- not have the required glyphs).
+ not have the required glyphs).
</p>
<p>
Run the test. No interaction required.
diff --git a/tests/wpt/web-platform-tests/svg/import/text-intro-05-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-intro-05-t-manual.svg
index 9f23827cf63..560599684e5 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-intro-05-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-intro-05-t-manual.svg
@@ -49,9 +49,9 @@
<!-- Diwani fonts come with Microsoft Arabic fonts extension for Office XP
http://www.microsoft.com/downloads/details.aspx?FamilyID=A83C0E03-8913-47A3-ACB7-8AC357627620&displaylang=AR -->
<text x="460" y="240" text-anchor="start" xml:lang="ar" font-size="30" font-family="'Nafees Naskh'">لماذا لا يتكلمون اللّغة العربية فحسب؟</text>
- <!-- Nafees Nastaleeq and Nafees Naskh are freely available from
- the Center for Research in Urdu Language Processing (CRULP http://www.crulp.org )
- at the National University of Computer and Emerging Sciences, Pakistan
+ <!-- Nafees Nastaleeq and Nafees Naskh are freely available from
+ the Center for Research in Urdu Language Processing (CRULP http://www.crulp.org )
+ at the National University of Computer and Emerging Sciences, Pakistan
( http://www.nu.edu.pk ) -->
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
diff --git a/tests/wpt/web-platform-tests/svg/import/text-intro-06-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-intro-06-t-manual.svg
index 0e5ac1f9273..f14bbb96873 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-intro-06-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-intro-06-t-manual.svg
@@ -52,12 +52,12 @@
<li>The first subtest has the word for 'tools', آلات</li>
<li>The second subtest has the word for 'three', ثلاثة</li>
</ul>
- <p>In the first subtest, there must be an isolate lam-alef ligature
- and in the second subtest there must be a right-joining lam-alef
+ <p>In the first subtest, there must be an isolate lam-alef ligature
+ and in the second subtest there must be a right-joining lam-alef
ligature, (so that them, lam and alef are all connected), as in the reference image.
</p>
<p>The precise glyph shapes will depend on which font was used for rendering,
- and do not affect the pass criteria. Only the presence of the
+ and do not affect the pass criteria. Only the presence of the
mandatory ligatures is tested here.</p>
</d:passCriteria>
</d:SVGTestCase>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-intro-07-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-intro-07-t-manual.svg
index f474aa99f41..ca045a5c8fa 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-intro-07-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-intro-07-t-manual.svg
@@ -62,4 +62,4 @@
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
-</svg> \ No newline at end of file
+</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-intro-10-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-intro-10-f-manual.svg
index db0b0fb46ee..1ac3dd84101 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-intro-10-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-intro-10-f-manual.svg
@@ -51,9 +51,9 @@
<!-- Diwani fonts come with Microsoft Arabic fonts extension for Office XP
http://www.microsoft.com/downloads/details.aspx?FamilyID=A83C0E03-8913-47A3-ACB7-8AC357627620&displaylang=AR -->
<text x="460" y="240" text-anchor="start" xml:lang="ar" font-size="30" font-family="'Nafees Naskh'">لماذا لا يتكلمون اللّغة العربية فحسب؟</text>
- <!-- Nafees Nastaleeq and Nafees Naskh are freely available from
- the Center for Research in Urdu Language Processing (CRULP http://www.crulp.org )
- at the National University of Computer and Emerging Sciences, Pakistan
+ <!-- Nafees Nastaleeq and Nafees Naskh are freely available from
+ the Center for Research in Urdu Language Processing (CRULP http://www.crulp.org )
+ at the National University of Computer and Emerging Sciences, Pakistan
( http://www.nu.edu.pk ) -->
</g>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-intro-12-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-intro-12-t-manual.svg
index 0d0902f8279..a2d2809bfb6 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-intro-12-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-intro-12-t-manual.svg
@@ -52,8 +52,8 @@
<li>The first subtest has the word for 'tools', آلات</li>
<li>The second subtest has the word for 'three', ثلاثة</li>
</ul>
- <p>In the first subtest, there must be an isolate lam-alef ligature
- and in the second subtest there must be a right-joining lam-alef
+ <p>In the first subtest, there must be an isolate lam-alef ligature
+ and in the second subtest there must be a right-joining lam-alef
ligature, as in the reference image.
</p>
</d:passCriteria>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-text-10-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-text-10-t-manual.svg
index 57b0e1b9bcd..e77b0e1ca57 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-text-10-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-text-10-t-manual.svg
@@ -67,7 +67,7 @@
fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/text-text-11-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-text-11-t-manual.svg
index 0316cbd7507..b0ed1dd2d89 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-text-11-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-text-11-t-manual.svg
@@ -39,7 +39,7 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<!-- Note that picking a platform font (sans-serif) is one of the main purposes of this test -->
<g font-family="sans-serif">
<text transform="rotate(90) translate(120 -100)" text-anchor="middle">Rotated 90 degrees</text>
@@ -65,14 +65,14 @@
<text transform="translate(250 180) rotate(-75 0 0)">Rotated by 10 degrees</text>
<text transform="translate(250 180) rotate(-85 0 0)">Rotated by 10 degrees</text>
</g>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.3 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
- <!-- comment out this watermark once the test is approved
+ <!-- comment out this watermark once the test is approved
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
<text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
diff --git a/tests/wpt/web-platform-tests/svg/import/text-text-12-t-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-text-12-t-manual.svg
index 0fb521c4b54..3fdedb0449e 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-text-12-t-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-text-12-t-manual.svg
@@ -14,7 +14,7 @@
template-version="1.4" reviewer="SVGWG" author="VH" status="issue"
version="$Revision: 1.1 $" testname="$RCSfile: text-text-12-t.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/text.html#TextElement">
- <p>ISSUE: the glyphs don't cover the entire em-cell, and the spec doesn't require visual alignment - text adjustments are based on advances</p>
+ <p>ISSUE: the glyphs don't cover the entire em-cell, and the spec doesn't require visual alignment - text adjustments are based on advances</p>
<p>
The purpose of this test is to validate the interaction of text-anchor
and x/y glyph positioning.
@@ -86,77 +86,77 @@
<text y="240">4.x 2.y</text>
<text y="270">2.x 2.y</text>
</g>
-
- <defs>
- <g id="textContent">
- <!-- 1.x 1.y -->
- <use y="30" xlink:href="#marker" fill="#8888ff"/>
- <text x="0" y="30" font-family="embeded" font-size="10">1234</text>
-
- <!-- 4.x 1.y : four text chunks -->
- <use x="10" y="60" xlink:href="#marker" fill="#8888ff"/>
- <use x="20" y="60" xlink:href="#marker" fill="#8888ff"/>
- <use x="30" y="60" xlink:href="#marker" fill="#8888ff"/>
- <use x="40" y="60" xlink:href="#marker" fill="#8888ff"/>
- <text x="10 20 30 40" y="60" font-family="embeded" font-size="10">1234</text>
-
- <!-- 2.x 1.y : two text chunks -->
- <use x="10" y="90" xlink:href="#marker" fill="#8888ff"/>
- <use x="60" y="90" xlink:href="#marker" fill="#8888ff"/>
- <text x="10 60" y="90" font-family="embeded" font-size="10">1234</text>
-
- <!-- 1.x 4.y : four text chunks -->
- <g transform="translate(0, 120)">
- <use x="0" y="-10" xlink:href="#marker" fill="#8888ff"/>
- <use x="15" y="-5" xlink:href="#marker" fill="#8888ff"/>
- <use x="30" y="5" xlink:href="#marker" fill="#8888ff"/>
- <use x="45" y="10" xlink:href="#marker" fill="#8888ff"/>
- <text x="0" y="-10 -5 5 10" font-family="embeded" font-size="10">1234</text>
- </g>
-
- <!-- 4.x 4.y : four text chunks -->
- <g transform="translate(0, 150)">
- <use x="10" y="-10" xlink:href="#marker" fill="#8888ff"/>
- <use x="20" y="-5" xlink:href="#marker" fill="#8888ff"/>
- <use x="30" y="5" xlink:href="#marker" fill="#8888ff"/>
- <use x="40" y="10" xlink:href="#marker" fill="#8888ff"/>
- <text x="10 20 30 40" y="-10 -5 5 10" font-family="embeded" font-size="10">1234</text>
- </g>
-
- <!-- 2.x 4.y : four text chunks -->
- <g transform="translate(0, 180)">
- <use x="10" y="-10" xlink:href="#marker" fill="#8888ff"/>
- <use x="20" y="-5" xlink:href="#marker" fill="#8888ff"/>
- <use x="35" y="5" xlink:href="#marker" fill="#8888ff"/>
- <use x="50" y="10" xlink:href="#marker" fill="#8888ff"/>
- <text x="10 20" y="-10 -5 5 10" font-family="embeded" font-size="10">1234</text>
- </g>
-
- <!-- 1.x 2.y : two text chunks -->
- <g transform="translate(0, 210)">
- <use x="0" y="-10" xlink:href="#marker" fill="#8888ff"/>
- <use x="15" y="5" xlink:href="#marker" fill="#8888ff"/>
- <text x="0" y="-10 5" font-family="embeded" font-size="10">1234</text>
- </g>
-
- <!-- 4.x 2.y : four text chunks -->
- <g transform="translate(0, 240)">
- <use x="10" y="-10" xlink:href="#marker" fill="#8888ff"/>
- <use x="20" y="-5" xlink:href="#marker" fill="#8888ff"/>
- <use x="30" y="-5" xlink:href="#marker" fill="#8888ff"/>
- <use x="40" y="-5" xlink:href="#marker" fill="#8888ff"/>
- <text x="10 20 30 40" y="-10 -5" font-family="embeded" font-size="10">1234</text>
- </g>
-
- <!-- 2.x 2.y : two text chunks -->
- <g transform="translate(0, 270)">
- <use x="10" y="-10" xlink:href="#marker" fill="#8888ff"/>
- <use x="60" y="-5" xlink:href="#marker" fill="#8888ff"/>
- <text x="10 60" y="-10 -5" font-family="embeded" font-size="10">1234</text>
- </g>
- </g>
- </defs>
-
+
+ <defs>
+ <g id="textContent">
+ <!-- 1.x 1.y -->
+ <use y="30" xlink:href="#marker" fill="#8888ff"/>
+ <text x="0" y="30" font-family="embeded" font-size="10">1234</text>
+
+ <!-- 4.x 1.y : four text chunks -->
+ <use x="10" y="60" xlink:href="#marker" fill="#8888ff"/>
+ <use x="20" y="60" xlink:href="#marker" fill="#8888ff"/>
+ <use x="30" y="60" xlink:href="#marker" fill="#8888ff"/>
+ <use x="40" y="60" xlink:href="#marker" fill="#8888ff"/>
+ <text x="10 20 30 40" y="60" font-family="embeded" font-size="10">1234</text>
+
+ <!-- 2.x 1.y : two text chunks -->
+ <use x="10" y="90" xlink:href="#marker" fill="#8888ff"/>
+ <use x="60" y="90" xlink:href="#marker" fill="#8888ff"/>
+ <text x="10 60" y="90" font-family="embeded" font-size="10">1234</text>
+
+ <!-- 1.x 4.y : four text chunks -->
+ <g transform="translate(0, 120)">
+ <use x="0" y="-10" xlink:href="#marker" fill="#8888ff"/>
+ <use x="15" y="-5" xlink:href="#marker" fill="#8888ff"/>
+ <use x="30" y="5" xlink:href="#marker" fill="#8888ff"/>
+ <use x="45" y="10" xlink:href="#marker" fill="#8888ff"/>
+ <text x="0" y="-10 -5 5 10" font-family="embeded" font-size="10">1234</text>
+ </g>
+
+ <!-- 4.x 4.y : four text chunks -->
+ <g transform="translate(0, 150)">
+ <use x="10" y="-10" xlink:href="#marker" fill="#8888ff"/>
+ <use x="20" y="-5" xlink:href="#marker" fill="#8888ff"/>
+ <use x="30" y="5" xlink:href="#marker" fill="#8888ff"/>
+ <use x="40" y="10" xlink:href="#marker" fill="#8888ff"/>
+ <text x="10 20 30 40" y="-10 -5 5 10" font-family="embeded" font-size="10">1234</text>
+ </g>
+
+ <!-- 2.x 4.y : four text chunks -->
+ <g transform="translate(0, 180)">
+ <use x="10" y="-10" xlink:href="#marker" fill="#8888ff"/>
+ <use x="20" y="-5" xlink:href="#marker" fill="#8888ff"/>
+ <use x="35" y="5" xlink:href="#marker" fill="#8888ff"/>
+ <use x="50" y="10" xlink:href="#marker" fill="#8888ff"/>
+ <text x="10 20" y="-10 -5 5 10" font-family="embeded" font-size="10">1234</text>
+ </g>
+
+ <!-- 1.x 2.y : two text chunks -->
+ <g transform="translate(0, 210)">
+ <use x="0" y="-10" xlink:href="#marker" fill="#8888ff"/>
+ <use x="15" y="5" xlink:href="#marker" fill="#8888ff"/>
+ <text x="0" y="-10 5" font-family="embeded" font-size="10">1234</text>
+ </g>
+
+ <!-- 4.x 2.y : four text chunks -->
+ <g transform="translate(0, 240)">
+ <use x="10" y="-10" xlink:href="#marker" fill="#8888ff"/>
+ <use x="20" y="-5" xlink:href="#marker" fill="#8888ff"/>
+ <use x="30" y="-5" xlink:href="#marker" fill="#8888ff"/>
+ <use x="40" y="-5" xlink:href="#marker" fill="#8888ff"/>
+ <text x="10 20 30 40" y="-10 -5" font-family="embeded" font-size="10">1234</text>
+ </g>
+
+ <!-- 2.x 2.y : two text chunks -->
+ <g transform="translate(0, 270)">
+ <use x="10" y="-10" xlink:href="#marker" fill="#8888ff"/>
+ <use x="60" y="-5" xlink:href="#marker" fill="#8888ff"/>
+ <text x="10 60" y="-10 -5" font-family="embeded" font-size="10">1234</text>
+ </g>
+ </g>
+ </defs>
+
<g id="anchorMiddle" text-anchor="middle" transform="translate(250, 40)">
<text y="-17" text-anchor="middle">text-anchor</text>
<text y="-3" text-anchor="middle">middle</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-tref-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-tref-01-b-manual.svg
index 10a53a0fd8d..d8690ee936b 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-tref-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-tref-01-b-manual.svg
@@ -55,9 +55,9 @@
<text x="73" y="217" font-size="12" fill="black">'tref' to a string in another file</text>
<!-- Patch code -->
<!--
- <text x="75" y="200" font-size="18" fill="green" >
- Simple external referenced text.
- </text>
+ <text x="75" y="200" font-size="18" fill="green" >
+ Simple external referenced text.
+ </text>
-->
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
diff --git a/tests/wpt/web-platform-tests/svg/import/text-tref-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-tref-02-b-manual.svg
index 7773c95e15c..073834f42c1 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-tref-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-tref-02-b-manual.svg
@@ -56,7 +56,7 @@
<defs>
<foreignObject>
<svg>
- <text id="hello">Hello</text>
+ <text id="hello">Hello</text>
</svg>
</foreignObject>
</defs>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-tref-03-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-tref-03-b-manual.svg
index ba05e5d5324..848cef52570 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-tref-03-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-tref-03-b-manual.svg
@@ -25,7 +25,7 @@
The test case consists of one sub-test; it results in the word "Flattened" being displayed.
</p>
</d:testDescription>
- <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
+ <d:operatorScript xmlns="http://www.w3.org/1999/xhtml">
<p>
Run the test. No interaction required.
</p>
@@ -53,10 +53,9 @@
</text>
<!-- now make a new SVG document fragment, and hide it from being rendered -->
<defs>
- <text id="hello">F<tspan fill="blue">l</tspan><tspan fill="red" font-size="100">a</tspan><tspan fill="yellow">t<tspan fill="lime">t</tspan></tspan><tspan fill="orange" dx="50">e</tspan><tspan fill="purple">n</tspan><tspan fill="red">e</tspan><tspan fill="black">d</tspan></text>
+ <text id="hello">F<tspan fill="blue">l</tspan><tspan fill="red" font-size="100">a</tspan><tspan fill="yellow">t<tspan fill="lime">t</tspan></tspan><tspan fill="orange" dx="50">e</tspan><tspan fill="purple">n</tspan><tspan fill="red">e</tspan><tspan fill="black">d</tspan></text>
</defs>
-
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none" fill="black">$Revision: 1.4 $</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-tselect-03-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-tselect-03-f-manual.svg
index 9d051088a92..c107e4847c7 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-tselect-03-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-tselect-03-f-manual.svg
@@ -76,10 +76,10 @@
<title id="test-title">$RCSfile: text-tselect-03-f.svg,v $</title>
<defs>
<style type="text/css">
- @font-face {
- font-family: Ezra SIL SR;
- src: url(woffs/EzraSILSR.woff) format("woff");
- }
+ @font-face {
+ font-family: Ezra SIL SR;
+ src: url(woffs/EzraSILSR.woff) format("woff");
+ }
</style>
<font-face font-family="SVGFreeSansASCII" unicode-range="U+0-7F">
<font-face-src>
diff --git a/tests/wpt/web-platform-tests/svg/import/text-tspan-01-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-tspan-01-b-manual.svg
index 5d10f95d641..40eb471c1fe 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-tspan-01-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-tspan-01-b-manual.svg
@@ -43,28 +43,28 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <font-face font-family="FreeSerif" unicode-range="U+0-7F" font-weight="400">
- <font-face-src>
- <font-face-uri xlink:href="../resources/FreeSerif.svg#FreeSerif"/>
- </font-face-src>
- </font-face>
- <font-face font-family="FreeSerif" unicode-range="U+0-7F" font-weight="700">
- <font-face-src>
- <font-face-uri xlink:href="../resources/FreeSerifBold.svg#FreeSerifBold"/>
- </font-face-src>
- </font-face>
- <font-face font-family="FreeSerif" unicode-range="U+0-7F" font-weight="400" font-style="italic">
- <font-face-src>
- <font-face-uri xlink:href="../resources/FreeSerifItalic.svg#FreeSerifItalic"/>
- </font-face-src>
- </font-face>
- <font-face font-family="FreeSerif" unicode-range="U+0-7F" font-weight="700" font-style="italic">
- <font-face-src>
- <font-face-uri xlink:href="../resources/FreeSerifBoldItalic.svg#FreeSerifBoldItalic"/>
- </font-face-src>
- </font-face>
- </defs>
+ <defs>
+ <font-face font-family="FreeSerif" unicode-range="U+0-7F" font-weight="400">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/FreeSerif.svg#FreeSerif"/>
+ </font-face-src>
+ </font-face>
+ <font-face font-family="FreeSerif" unicode-range="U+0-7F" font-weight="700">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/FreeSerifBold.svg#FreeSerifBold"/>
+ </font-face-src>
+ </font-face>
+ <font-face font-family="FreeSerif" unicode-range="U+0-7F" font-weight="400" font-style="italic">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/FreeSerifItalic.svg#FreeSerifItalic"/>
+ </font-face-src>
+ </font-face>
+ <font-face font-family="FreeSerif" unicode-range="U+0-7F" font-weight="700" font-style="italic">
+ <font-face-src>
+ <font-face-uri xlink:href="../resources/FreeSerifBoldItalic.svg#FreeSerifBoldItalic"/>
+ </font-face-src>
+ </font-face>
+ </defs>
<text x="25" y="20" font-size="16">Basics of tspan: changing visual properties and positioning.</text>
<!-- From example tspan01 - using tspan to change visual attributes -->
<g id="tspan01" font-size="16" font-family="FreeSerif, serif">
@@ -76,7 +76,7 @@
<text x="65.25" y="108" font-size="16">'tspan' changes visual attributes of "not",</text>
<text x="65.25" y="125.25" font-size="16">to green, bold.</text>
</g>
- <!-- From example tspan02 - using tspan's dx and dy attributes
+ <!-- From example tspan02 - using tspan's dx and dy attributes
for incremental positioning adjustments -->
<g id="tspan02" font-size="16" font-family="FreeSerif, serif">
<text x="257.5" y="153.75" fill="blue">
@@ -87,7 +87,7 @@
<text x="238" y="212.25" font-size="16">Using dx,dy, 'tspan' raises "are",</text>
<text x="238" y="229.5" font-size="16">'tspan' lowers "a peach!"</text>
</g>
- <!-- Example tspan03 - using tspan's x and y attributes
+ <!-- Example tspan03 - using tspan's x and y attributes
for multiline text and precise glyph positioning -->
<g id="tspan03" fill="#000000" font-size="16" font-family="FreeSerif, serif">
<text fill="rgb(255,164,0)">
diff --git a/tests/wpt/web-platform-tests/svg/import/text-tspan-02-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/text-tspan-02-b-manual.svg
index 735b41e9c8b..71436a35884 100644
--- a/tests/wpt/web-platform-tests/svg/import/text-tspan-02-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/text-tspan-02-b-manual.svg
@@ -1,5 +1,5 @@
-<svg id="svg-root" width="100%" height="100%"
- viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
+<svg id="svg-root" width="100%" height="100%"
+ viewBox="0 0 480 360" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<!--======================================================================-->
<!--= Copyright 2008 World Wide Web Consortium, (Massachusetts =-->
@@ -103,7 +103,6 @@
<tspan x="20" y="180">text have a specified rotation</tspan>
</text>
-
<text font-size="35" fill="green" x="20" y="120" rotate="5,15,25,35,45,55" stroke="green" stroke-width="0.5">
Not
@@ -161,17 +160,17 @@
55 55 55 55 55 55 55 55
</tspan>
</text>
-
+
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
- <text id="revision" x="10" y="340" stroke="none"
+ <text id="revision" x="10" y="340" stroke="none"
fill="black">$Revision: 1.11 $</text>
</g>
<rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/>
<!-- comment out this watermark once the test is approved --><!--
<g id="draft-watermark">
<rect x="1" y="1" width="478" height="20" fill="red" stroke="black" stroke-width="1"/>
- <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
+ <text font-family="SVGFreeSansASCII,sans-serif" font-weight="bold" font-size="20" x="240"
text-anchor="middle" y="18" stroke-width="0.5" stroke="black" fill="white">DRAFT</text>
</g>-->
</svg>
diff --git a/tests/wpt/web-platform-tests/svg/import/types-basic-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/types-basic-01-f-manual.svg
index 2be4195b805..842996db429 100644
--- a/tests/wpt/web-platform-tests/svg/import/types-basic-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/types-basic-01-f-manual.svg
@@ -13,7 +13,7 @@
version="$Revision: 1.5 $" testname="$RCSfile: types-basic-01-f.svg,v $">
<d:testDescription xmlns="http://www.w3.org/1999/xhtml" href="http://www.w3.org/TR/SVG11/types.html#BasicDataTypes">
<p>
- Tests scientific notation in attribute values; in particular, that numbers
+ Tests scientific notation in attribute values; in particular, that numbers
of the form .n with a leading decimal point, are supported
</p>
</d:testDescription>
@@ -24,8 +24,8 @@
</d:operatorScript>
<d:passCriteria xmlns="http://www.w3.org/1999/xhtml">
<p>
- The test is passed if all the coloured rectangles are of the same height
- and line up with each other and
+ The test is passed if all the coloured rectangles are of the same height
+ and line up with each other and
with the grey marker lines. If any red is visible, the test fails.
</p>
</d:passCriteria>
@@ -41,19 +41,18 @@
</font-face>
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
-
+
<polyline points="20,75 380,75" stroke="#999" stroke-width="1"/>
<polyline points="20,125 380,125" stroke="#999" stroke-width="1"/>
-
+
<rect width="300" height="50" x="50" y="75" fill="red"/>
<polyline points="50,100 150,100" stroke-width="50" stroke="#6F3"/>
<polyline points="150,100 250,100" stroke-width="5e1" stroke="#6C6"/>
<polyline points="250,100 350,100" stroke-width=".5e2" stroke="#39F"/>
-
-
+
<text x="50" y="200" font-size="20">Different forms of the &lt;number&gt; type</text>
-
+
<g text-anchor="middle" fill="#555">
<text x="100" y="110" font-size="20">50</text>
<text x="200" y="110" font-size="20" >5e1</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/types-basic-02-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/types-basic-02-f-manual.svg
index 53fb1636779..314dda5132c 100644
--- a/tests/wpt/web-platform-tests/svg/import/types-basic-02-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/types-basic-02-f-manual.svg
@@ -45,22 +45,22 @@
#swUnit { stroke-width: 20px }
#swUpperCaseUnit { stroke-width: 20PX }
</style>
-
+
<g id="references" fill="none" stroke="red" stroke-width="19">
<circle r="40" transform="translate(100 100)"/>
<circle r="40" transform="translate(240 100)"/>
<circle r="40" transform="translate(380 100)"/>
-
+
<circle r="40" transform="translate(100 240)"/>
<circle r="40" transform="translate(240 240)"/>
<circle r="40" transform="translate(380 240)"/>
</g>
-
+
<!-- "For length values in SVG-specific properties and their corresponding presentation attributes, the length unit identifier is optional." -->
<circle r="40" id="swNoUnit" fill="none" stroke="lime" transform="translate(100 100)"/>
<circle r="40" id="swUnit" fill="none" stroke="lime" transform="translate(240 100)"/>
<circle r="40" id="swPresAttr" fill="none" stroke="lime" stroke-width="20" transform="translate(380 100)"/>
-
+
<!-- "In presentation attributes for all properties, whether defined in this specification or in CSS2, the length identifier, if specified, must be in lower case." -->
<g stroke-width="20">
<circle r="40" id="swUpperCaseUnitPresAttr" stroke-width="10PX" fill="none" stroke="lime" transform="translate(100 240)"/>
@@ -68,7 +68,7 @@
<!-- Test that units are case-insensitive when specified in CSS -->
<circle r="40" id="swUpperCaseUnit" fill="none" stroke="lime" transform="translate(240 240)"/>
- <circle r="40" id="swUpperCaseUnitInline" style="stroke-width:20PX" fill="none" stroke="lime" transform="translate(380 240)"/>
+ <circle r="40" id="swUpperCaseUnitInline" style="stroke-width:20PX" fill="none" stroke="lime" transform="translate(380 240)"/>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/types-dom-05-b-manual.svg b/tests/wpt/web-platform-tests/svg/import/types-dom-05-b-manual.svg
index 52ca38323a6..72754cc6bbf 100644
--- a/tests/wpt/web-platform-tests/svg/import/types-dom-05-b-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/types-dom-05-b-manual.svg
@@ -68,7 +68,7 @@
var b,
c = document.getElementById('c');
m = document.getElementById('m');
-
+
b = false;
try {
if (c.r.baseVal.unitType != 3) { /* SVGLength.SVG_LENGTHTYPE_EMS */
diff --git a/tests/wpt/web-platform-tests/svg/import/types-dom-06-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/types-dom-06-f-manual.svg
index 09ed98f785d..c012c7d4ebf 100644
--- a/tests/wpt/web-platform-tests/svg/import/types-dom-06-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/types-dom-06-f-manual.svg
@@ -42,79 +42,79 @@
</defs>
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
- <defs>
- <script type="application/ecmascript">
- function runtest()
- {
- try {
- var r1 = document.getElementById("r1");
- var r2 = document.getElementById("r2");
- var r3 = document.getElementById("r3");
- var i0 = r1.requiredFeatures.getItem(0);
- var i1 = r1.requiredFeatures.getItem(1);
-
- if(i0 != "http://www.w3.org/TR/SVG11/feature#Shape")
- {
- r1.removeAttribute("requiredFeatures");
- return;
- }
- if(i1 != "this.is.a.bogus.feature.string")
- {
- r1.removeAttribute("requiredFeatures");
- return;
- }
- if(r1.requiredFeatures.numberOfItems != 2)
- {
- r1.removeAttribute("requiredFeatures");
- return;
- }
- r2.requiredFeatures.appendItem(i1);
- if(r1.requiredFeatures.numberOfItems != 2)
- {
- r1.removeAttribute("requiredFeatures");
- return;
- }
- if(r2.requiredFeatures.numberOfItems != 1)
- {
- r1.removeAttribute("requiredFeatures");
- return;
- }
- r3.requiredFeatures.insertItemBefore(i0,0);
- if(r3.requiredFeatures.numberOfItems != 2)
- {
- r3.setAttribute("fill", "red");
- return;
- }
- if(r1.requiredFeatures.numberOfItems != 2)
- {
- r1.removeAttribute("requiredFeatures");
- return;
- }
- }
- catch(e)
- {
- var f = document.getElementById("fail");
- f.setAttribute("fill", "red");
- }
- }
- </script>
- </defs>
-
- <text x="50%" y="70" text-anchor="middle">SVGStringList DOM</text>
-
- <!-- background images -->
- <g>
- <rect width="100" height="100" fill="lime" transform="translate(80 100)"/>
- <rect width="100" height="100" fill="lime" transform="translate(190 100)"/>
- <rect width="100" height="100" fill="red" transform="translate(300 100)"/>
- </g>
-
- <!-- tests -->
- <rect id="r1" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Shape this.is.a.bogus.feature.string" width="100" height="100" fill="red" transform="translate(100 100)"/>
- <rect id="r2" width="100" height="100" fill="red" transform="translate(190 100)"/>
- <rect id="r3" width="100" height="100" fill="lime" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Shape" transform="translate(300 100)"/>
-
- <rect id="fail" width="100%" height="100%" fill="none"/>
+ <defs>
+ <script type="application/ecmascript">
+ function runtest()
+ {
+ try {
+ var r1 = document.getElementById("r1");
+ var r2 = document.getElementById("r2");
+ var r3 = document.getElementById("r3");
+ var i0 = r1.requiredFeatures.getItem(0);
+ var i1 = r1.requiredFeatures.getItem(1);
+
+ if(i0 != "http://www.w3.org/TR/SVG11/feature#Shape")
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ if(i1 != "this.is.a.bogus.feature.string")
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ if(r1.requiredFeatures.numberOfItems != 2)
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ r2.requiredFeatures.appendItem(i1);
+ if(r1.requiredFeatures.numberOfItems != 2)
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ if(r2.requiredFeatures.numberOfItems != 1)
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ r3.requiredFeatures.insertItemBefore(i0,0);
+ if(r3.requiredFeatures.numberOfItems != 2)
+ {
+ r3.setAttribute("fill", "red");
+ return;
+ }
+ if(r1.requiredFeatures.numberOfItems != 2)
+ {
+ r1.removeAttribute("requiredFeatures");
+ return;
+ }
+ }
+ catch(e)
+ {
+ var f = document.getElementById("fail");
+ f.setAttribute("fill", "red");
+ }
+ }
+ </script>
+ </defs>
+
+ <text x="50%" y="70" text-anchor="middle">SVGStringList DOM</text>
+
+ <!-- background images -->
+ <g>
+ <rect width="100" height="100" fill="lime" transform="translate(80 100)"/>
+ <rect width="100" height="100" fill="lime" transform="translate(190 100)"/>
+ <rect width="100" height="100" fill="red" transform="translate(300 100)"/>
+ </g>
+
+ <!-- tests -->
+ <rect id="r1" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Shape this.is.a.bogus.feature.string" width="100" height="100" fill="red" transform="translate(100 100)"/>
+ <rect id="r2" width="100" height="100" fill="red" transform="translate(190 100)"/>
+ <rect id="r3" width="100" height="100" fill="lime" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Shape" transform="translate(300 100)"/>
+
+ <rect id="fail" width="100%" height="100%" fill="none"/>
</g>
<g font-family="SVGFreeSansASCII,sans-serif" font-size="32">
<text id="revision" x="10" y="340" stroke="none"
diff --git a/tests/wpt/web-platform-tests/svg/import/types-dom-07-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/types-dom-07-f-manual.svg
index 6abf6cabbab..4313039ee73 100644
--- a/tests/wpt/web-platform-tests/svg/import/types-dom-07-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/types-dom-07-f-manual.svg
@@ -53,7 +53,7 @@
<g id="test-body-content" font-family="SVGFreeSansASCII,sans-serif" font-size="18">
<text x='210' y='55' text-anchor='end'>animVal is read only:</text>
-
+
<g font-size='14' transform='translate(500)rotate(90)'>
<rect id='r1a' x='40' y='60' width='20' height='20'/>
<text x='70' y='75'>SVGAnimatedNumberList</text>
diff --git a/tests/wpt/web-platform-tests/svg/import/types-dom-08-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/types-dom-08-f-manual.svg
index b2d1eaf62ec..cd6bbcca500 100644
--- a/tests/wpt/web-platform-tests/svg/import/types-dom-08-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/types-dom-08-f-manual.svg
@@ -67,18 +67,18 @@
<text id="TestStatus" x="333" y="350" font-size="40">failed</text>
</g>
</g>
-
+
<script><![CDATA[
var svg_ns = "http://www.w3.org/2000/svg";
var xlink_ns = "http://www.w3.org/1999/xlink";
-
+
var count=0;
var topsvg = document.documentElement;
var startY = 80;
var rowHeight = 12;
var fontSize = "10";
var isPassed = true;
-
+
function drawString( text, color )
{
node_to_insert=document.createElementNS(svg_ns,"text");
@@ -89,10 +89,10 @@
node_to_insert.setAttributeNS(null, "y", yVal.toString());
node_to_insert.setAttributeNS(null, "fill", color );
node_to_insert.appendChild(document.createTextNode(text));
- document.getElementById( "test-body-content" ).appendChild(node_to_insert);
-
+ document.getElementById( "test-body-content" ).appendChild(node_to_insert);
+
}
-
+
function verifyBBox( bbox, x, y, width, height, epsilon )
{
if
@@ -100,7 +100,7 @@
( Math.abs(bbox.x - x ) < epsilon ) &&
( Math.abs(bbox.y - y ) < epsilon ) &&
( Math.abs(bbox.width - width ) < epsilon ) &&
- ( Math.abs(bbox.height - height ) < epsilon )
+ ( Math.abs(bbox.height - height ) < epsilon )
)
{
return "green";
@@ -112,28 +112,28 @@
return "red";
}
}
-
+
function displayGetBBox( )
{
- drawString( "getBBox()", "black" );
+ drawString( "getBBox()", "black" );
var bbox = document.getElementById( "group1" ).getBBox( );
- drawString( "[group1] " + bbox.x + " " + bbox.y + " " + bbox.width + " " + bbox.height, verifyBBox( bbox, -70, -60, 230, 200, 1 / 65535 ) );
-
+ drawString( "[group1] " + bbox.x + " " + bbox.y + " " + bbox.width + " " + bbox.height, verifyBBox( bbox, -70, -60, 230, 200, 1 / 65535 ) );
+
bbox = document.getElementById( "rect1" ).getBBox( );
drawString( "[rect1] " + bbox.x + " " + bbox.y + " " + bbox.width + " " + bbox.height, verifyBBox( bbox, 10, 10, 50, 50, 1 / 65535 ));
-
+
bbox = document.getElementById( "rect2" ).getBBox( );
drawString( "[rect2] " + bbox.x + " " + bbox.y + " " + bbox.width + " " + bbox.height , verifyBBox( bbox, 10, 10, 100, 100, 1 / 65535 ));
-
+
bbox = document.getElementById( "group2" ).getBBox( );
drawString( "[group2] " + bbox.x + " " + bbox.y + " " + bbox.width + " " + bbox.height, verifyBBox( bbox, -80, -80, 230, 200, 1 / 65535 ));
-
+
bbox = document.getElementById( "rect3" ).getBBox( );
drawString( "[rect3] " + bbox.x + " " + bbox.y + " " + bbox.width + " " + bbox.height , verifyBBox( bbox, 0, 10, 150, 50, 1 / 65535 ));
-
+
bbox = document.getElementById( "circle1" ).getBBox( );
drawString( "[circle1] " + bbox.x + " " + bbox.y + " " + bbox.width + " " + bbox.height , verifyBBox( bbox, -80, -80, 200, 200, 1 / 65535 ));
-
+
bbox = document.getElementById( "rect4" ).getBBox( );
drawString( "[rect4] " + bbox.x + " " + bbox.y + " " + bbox.width + " " + bbox.height, verifyBBox( bbox, 10, 10, 400, 0, 1 / 65535 ));
@@ -144,9 +144,9 @@
drawString( "[thickLine] " + bbox.x + " " + bbox.y + " " + bbox.width + " " + bbox.height , verifyBBox( bbox, 0, 0, 100, 0, 1 / 65535 ));
}
-
+
displayGetBBox();
-
+
// remove from tree, get bbox
drawString( "node removed from tree, should still have bounding box", "black" );
circle = document.getElementById( "circle2" );
@@ -166,7 +166,6 @@
drawString( "Results do not match expected values (null)" , "red");
}
-
if( isPassed )
{
var status = document.getElementById("TestStatus");
diff --git a/tests/wpt/web-platform-tests/svg/import/types-dom-svgfittoviewbox-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/types-dom-svgfittoviewbox-01-f-manual.svg
index e787925025a..1071399a41a 100644
--- a/tests/wpt/web-platform-tests/svg/import/types-dom-svgfittoviewbox-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/types-dom-svgfittoviewbox-01-f-manual.svg
@@ -39,9 +39,9 @@
<svg id="testSvg" viewBox="0 0 300 200" preserveAspectRatio="xMinYMin slice" />
<text id="failText" x="100" y="100" font-size="80" fill="red">FAIL</text>
<text id="passText" x="350" y="300" font-size="50" display="none">PASS</text>
- <script type="text/javascript">
+ <script type="text/javascript">
<![CDATA[
-
+
try
{
var testElement = document.getElementById("testSvg");
@@ -68,7 +68,7 @@
catch(ex)
{
alert("ERROR: " + ex.message);
-
+
}
]]>
diff --git a/tests/wpt/web-platform-tests/svg/import/types-dom-svgnumberlist-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/types-dom-svgnumberlist-01-f-manual.svg
index 96e230cfeef..7f6705aadc2 100644
--- a/tests/wpt/web-platform-tests/svg/import/types-dom-svgnumberlist-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/types-dom-svgnumberlist-01-f-manual.svg
@@ -48,7 +48,7 @@
var testElement = document.getElementById("test");
var svgList = testElement.rotate.baseVal;
var passingTests = 0;
-
+
try
{
svgList.getItem(5);
diff --git a/tests/wpt/web-platform-tests/svg/import/types-dom-svgstringlist-01-f-manual.svg b/tests/wpt/web-platform-tests/svg/import/types-dom-svgstringlist-01-f-manual.svg
index 17a457c2cac..89ccb1d2ab5 100644
--- a/tests/wpt/web-platform-tests/svg/import/types-dom-svgstringlist-01-f-manual.svg
+++ b/tests/wpt/web-platform-tests/svg/import/types-dom-svgstringlist-01-f-manual.svg
@@ -47,7 +47,7 @@
var testElement = document.getElementById("test");
var svgList = testElement.requiredExtensions;
var passingTests = 0;
-
+
try
{
svgList.getItem(5);
@@ -94,7 +94,7 @@
{
alert("ERROR: " + ex.message);
-
+
}]]>
</script>
</g>
diff --git a/tests/wpt/web-platform-tests/svg/linking/reftests/href-a-element-attr-change.html b/tests/wpt/web-platform-tests/svg/linking/reftests/href-a-element-attr-change.html
index ceb0f18801f..c74b2e01561 100644
--- a/tests/wpt/web-platform-tests/svg/linking/reftests/href-a-element-attr-change.html
+++ b/tests/wpt/web-platform-tests/svg/linking/reftests/href-a-element-attr-change.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<html class="retest-wait">
+<html class="reftest-wait">
<meta charset="utf-8">
<title>href - a element</title>
<meta name="assert"
diff --git a/tests/wpt/web-platform-tests/tools/certs/README.md b/tests/wpt/web-platform-tests/tools/certs/README.md
new file mode 100644
index 00000000000..f5ae7413afe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/certs/README.md
@@ -0,0 +1,7 @@
+To enable https://web-platform.test:8443/, add cacert.pem to your browser as Certificate Authority.
+
+For Firefox, go to about:preferences and search for "certificates".
+
+For browsers that use the Certificate Authorities of the underlying OS, such as Chrome and Safari,
+you need to adjust the OS. For macOS, go to Keychain Access and add the certificate under
+**login**.
diff --git a/tests/wpt/web-platform-tests/tools/certs/cakey.pem b/tests/wpt/web-platform-tests/tools/certs/cacert.key
index 58b5ff75684..58b5ff75684 100644
--- a/tests/wpt/web-platform-tests/tools/certs/cakey.pem
+++ b/tests/wpt/web-platform-tests/tools/certs/cacert.key
diff --git a/tests/wpt/web-platform-tests/tools/ci/make_hosts_file.py b/tests/wpt/web-platform-tests/tools/ci/make_hosts_file.py
index b3c7758b2ac..6bf2249ad1f 100644
--- a/tests/wpt/web-platform-tests/tools/ci/make_hosts_file.py
+++ b/tests/wpt/web-platform-tests/tools/ci/make_hosts_file.py
@@ -3,7 +3,7 @@ import os
from ..localpaths import repo_root
-from ..serve.serve import load_config, normalise_config, make_hosts_file
+from ..serve.serve import load_config, make_hosts_file
def create_parser():
parser = argparse.ArgumentParser()
@@ -14,6 +14,4 @@ def run(**kwargs):
config = load_config(os.path.join(repo_root, "config.default.json"),
os.path.join(repo_root, "config.json"))
- config = normalise_config(config, {})
-
print(make_hosts_file(config, kwargs["address"]))
diff --git a/tests/wpt/web-platform-tests/tools/conftest.py b/tests/wpt/web-platform-tests/tools/conftest.py
index 4ce5e74b06e..27a259c54ce 100644
--- a/tests/wpt/web-platform-tests/tools/conftest.py
+++ b/tests/wpt/web-platform-tests/tools/conftest.py
@@ -13,10 +13,13 @@ settings.register_profile("pypy", settings(suppress_health_check=[HealthCheck.to
settings.load_profile(os.getenv("HYPOTHESIS_PROFILE",
"default" if impl != "PyPy" else "pypy"))
-# serve can't even be imported on Py3, so totally ignore it even from collection
+# these can't even be imported on Py3, so totally ignore it even from collection
+ignore_dirs = ["serve", "wptserve"]
+
collect_ignore = []
if sys.version_info[0] >= 3:
- serve = os.path.join(os.path.dirname(__file__), "serve")
- collect_ignore.extend([os.path.join(root, f)
- for root, _, files in os.walk(serve)
- for f in files])
+ for d in ignore_dirs:
+ path = os.path.join(os.path.dirname(__file__), d)
+ collect_ignore.extend([os.path.join(root, f)
+ for root, _, files in os.walk(path)
+ for f in files])
diff --git a/tests/wpt/web-platform-tests/tools/lint/lint.py b/tests/wpt/web-platform-tests/tools/lint/lint.py
index 8c53d2132f5..e02a2dd3485 100644
--- a/tests/wpt/web-platform-tests/tools/lint/lint.py
+++ b/tests/wpt/web-platform-tests/tools/lint/lint.py
@@ -32,7 +32,10 @@ def setup_logging(prefix=False):
if logger is None:
logger = logging.getLogger(os.path.basename(os.path.splitext(__file__)[0]))
handler = logging.StreamHandler(sys.stdout)
- logger.addHandler(handler)
+ # Only add a handler if the parent logger is missing a handler
+ if logger.parent and len(logger.parent.handlers) == 0:
+ handler = logging.StreamHandler(sys.stdout)
+ logger.addHandler(handler)
if prefix:
format = logging.BASIC_FORMAT
else:
diff --git a/tests/wpt/web-platform-tests/tools/manifest/manifest.py b/tests/wpt/web-platform-tests/tools/manifest/manifest.py
index 8ceeb386052..4a8deb060b4 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/manifest.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/manifest.py
@@ -225,6 +225,9 @@ def load(tests_root, manifest):
rv = Manifest.from_json(tests_root, json.load(f))
except IOError:
return None
+ except ValueError:
+ logger.warning("%r may be corrupted", manifest)
+ return None
return rv
return Manifest.from_json(tests_root, json.load(manifest))
diff --git a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py
index 093fc2bd470..bd814679568 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/sourcefile.py
@@ -225,8 +225,9 @@ class SourceFile(object):
# wdspec tests are in subdirectories of /webdriver excluding __init__.py
# files.
rel_dir_tree = self.rel_path.split(os.path.sep)
- return (rel_dir_tree[0] == "webdriver" and
- len(rel_dir_tree) > 1 and
+ return (((rel_dir_tree[0] == "webdriver" and len(rel_dir_tree) > 1) or
+ (rel_dir_tree[:2] == ["infrastructure", "webdriver"] and
+ len(rel_dir_tree) > 2)) and
self.filename not in ("__init__.py", "conftest.py") and
fnmatch(self.filename, wd_pattern))
diff --git a/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py b/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py
index 57863bf73c4..8a330a1f717 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/tests/test_sourcefile.py
@@ -395,7 +395,7 @@ def test_testharness_svg():
assert not s.name_is_worker
assert not s.name_is_reference
- assert s.root
+ assert s.root is not None
assert s.content_is_testharness
assert items(s) == [("testharness", "/" + filename)]
@@ -424,7 +424,7 @@ def test_relative_testharness_svg():
assert not s.name_is_worker
assert not s.name_is_reference
- assert s.root
+ assert s.root is not None
assert not s.content_is_testharness
assert items(s) == []
diff --git a/tests/wpt/web-platform-tests/tools/serve/serve.py b/tests/wpt/web-platform-tests/tools/serve/serve.py
index 388140b2a83..fb6675da42d 100644
--- a/tests/wpt/web-platform-tests/tools/serve/serve.py
+++ b/tests/wpt/web-platform-tests/tools/serve/serve.py
@@ -23,8 +23,10 @@ import sslutils
from manifest.sourcefile import read_script_metadata, js_meta_re
from wptserve import server as wptserve, handlers
from wptserve import stash
+from wptserve import config
from wptserve.logger import set_logger
from wptserve.handlers import filesystem_path, wrap_pipeline
+from wptserve.utils import get_port
from mod_pywebsocket import standalone as pywebsocket
def replace_end(s, old, new):
@@ -197,14 +199,6 @@ done();
rewrites = [("GET", "/resources/WebIDLParser.js", "/resources/webidl2/lib/webidl2.js")]
-subdomains = [u"www",
- u"www1",
- u"www2",
- u"天気の良い日",
- u"élève"]
-
-not_subdomains = [u"nonexistent-origin"]
-
class RoutesBuilder(object):
def __init__(self):
self.forbidden_override = [("GET", "/tools/runner/*", handlers.file_handler),
@@ -282,105 +276,6 @@ def build_routes(aliases):
return builder.get_routes()
-def setup_logger(level):
- import logging
- global logger
- logger = logging.getLogger("web-platform-tests")
- logger.setLevel(getattr(logging, level.upper()))
- set_logger(logger)
-
-
-def open_socket(port):
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- if port != 0:
- sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- sock.bind(('127.0.0.1', port))
- sock.listen(5)
- return sock
-
-def bad_port(port):
- """
- Bad port as per https://fetch.spec.whatwg.org/#port-blocking
- """
- return port in [
- 1, # tcpmux
- 7, # echo
- 9, # discard
- 11, # systat
- 13, # daytime
- 15, # netstat
- 17, # qotd
- 19, # chargen
- 20, # ftp-data
- 21, # ftp
- 22, # ssh
- 23, # telnet
- 25, # smtp
- 37, # time
- 42, # name
- 43, # nicname
- 53, # domain
- 77, # priv-rjs
- 79, # finger
- 87, # ttylink
- 95, # supdup
- 101, # hostriame
- 102, # iso-tsap
- 103, # gppitnp
- 104, # acr-nema
- 109, # pop2
- 110, # pop3
- 111, # sunrpc
- 113, # auth
- 115, # sftp
- 117, # uucp-path
- 119, # nntp
- 123, # ntp
- 135, # loc-srv / epmap
- 139, # netbios
- 143, # imap2
- 179, # bgp
- 389, # ldap
- 465, # smtp+ssl
- 512, # print / exec
- 513, # login
- 514, # shell
- 515, # printer
- 526, # tempo
- 530, # courier
- 531, # chat
- 532, # netnews
- 540, # uucp
- 556, # remotefs
- 563, # nntp+ssl
- 587, # smtp
- 601, # syslog-conn
- 636, # ldap+ssl
- 993, # imap+ssl
- 995, # pop3+ssl
- 2049, # nfs
- 3659, # apple-sasl
- 4045, # lockd
- 6000, # x11
- 6665, # irc (alternate)
- 6666, # irc (alternate)
- 6667, # irc (default)
- 6668, # irc (alternate)
- 6669, # irc (alternate)
- ]
-
-def get_port():
- port = 0
- while True:
- free_socket = open_socket(0)
- port = free_socket.getsockname()[1]
- free_socket.close()
- if not bad_port(port):
- break
- logger.debug("Going to use port %s" % port)
- return port
-
-
class ServerProc(object):
def __init__(self):
self.proc = None
@@ -432,9 +327,11 @@ class ServerProc(object):
return self.proc.is_alive()
-def check_subdomains(host, paths, bind_address, ssl_config, aliases):
- port = get_port()
- subdomains = get_subdomains(host)
+def check_subdomains(domains, paths, bind_address, ssl_config, aliases):
+ domains = domains.copy()
+ host = domains.pop("")
+ port = get_port(host)
+ logger.debug("Going to use port %d to check subdomains" % port)
wrapper = ServerProc()
wrapper.start(start_http_server, host, port, paths, build_routes(aliases), bind_address,
@@ -454,8 +351,7 @@ def check_subdomains(host, paths, bind_address, ssl_config, aliases):
"You may need to edit /etc/hosts or similar, see README.md." % (host, port))
sys.exit(1)
- for subdomain, (punycode, host) in subdomains.iteritems():
- domain = "%s.%s" % (punycode, host)
+ for domain in domains.itervalues():
try:
urllib2.urlopen("http://%s:%d/" % (domain, port))
except Exception as e:
@@ -466,18 +362,6 @@ def check_subdomains(host, paths, bind_address, ssl_config, aliases):
wrapper.wait()
-def get_subdomains(host):
- #This assumes that the tld is ascii-only or already in punycode
- return {subdomain: (subdomain.encode("idna"), host)
- for subdomain in subdomains}
-
-
-def get_not_subdomains(host):
- #This assumes that the tld is ascii-only or already in punycode
- return {subdomain: (subdomain.encode("idna"), host)
- for subdomain in not_subdomains}
-
-
def make_hosts_file(config, host):
rv = []
@@ -630,80 +514,14 @@ def start_wss_server(host, port, paths, routes, bind_address, config, ssl_config
ssl_config)
-def get_ports(config, ssl_environment):
- rv = defaultdict(list)
- for scheme, ports in config["ports"].iteritems():
- for i, port in enumerate(ports):
- if scheme in ["wss", "https"] and not ssl_environment.ssl_enabled:
- port = None
- if port == "auto":
- port = get_port()
- else:
- port = port
- rv[scheme].append(port)
- return rv
-
-
-
-def normalise_config(config, ports):
- if "host" in config:
- logger.warning("host in config is deprecated; use browser_host instead")
- host = config["host"]
- else:
- host = config["browser_host"]
-
- domains = get_subdomains(host)
- not_domains = get_not_subdomains(host)
-
- ports_ = {}
- for scheme, ports_used in ports.iteritems():
- ports_[scheme] = ports_used
-
- for key, value in domains.iteritems():
- domains[key] = ".".join(value)
-
- for key, value in not_domains.iteritems():
- not_domains[key] = ".".join(value)
-
- domains[""] = host
-
- if "bind_hostname" in config:
- logger.warning("bind_hostname in config is deprecated; use bind_address instead")
- bind_address = config["bind_hostname"]
- else:
- bind_address = config["bind_address"]
-
- # make a (shallow) copy of the config and update that, so that the
- # normalized config can be used in place of the original one.
- config_ = config.copy()
- config_["domains"] = domains
- config_["not_domains"] = not_domains
- config_["ports"] = ports_
- config_["bind_address"] = bind_address
- if config.get("server_host", None) is None:
- config_["server_host"] = host
- return config_
-
-
-def get_paths(config):
- return {"doc_root": config["doc_root"],
- "ws_doc_root": config["ws_doc_root"]}
-
-
-def get_ssl_config(config, ssl_environment):
- external_domains = config["domains"].values()
- key_path, cert_path = ssl_environment.host_cert_path(external_domains)
- return {"key_path": key_path,
- "cert_path": cert_path,
- "encrypt_after_connect": config["ssl"]["encrypt_after_connect"]}
-
-
def start(config, ssl_environment, routes, **kwargs):
host = config["server_host"]
- ports = get_ports(config, ssl_environment)
- paths = get_paths(config)
+ ports = config.ports
+ paths = config.paths
bind_address = config["bind_address"]
- ssl_config = get_ssl_config(config, ssl_environment)
+ ssl_config = config.ssl_config
+
+ logger.debug("Using ports: %r" % ports)
servers = start_servers(host, ports, paths, routes, bind_address, config,
ssl_config, **kwargs)
@@ -717,49 +535,6 @@ def iter_procs(servers):
yield server.proc
-def value_set(config, key):
- return key in config and config[key] is not None
-
-
-def get_value_or_default(config, key, default=None):
- return config[key] if value_set(config, key) else default
-
-
-def set_computed_defaults(config):
- if not value_set(config, "doc_root"):
- config["doc_root"] = repo_root
-
- if not value_set(config, "ws_doc_root"):
- root = get_value_or_default(config, "doc_root", default=repo_root)
- config["ws_doc_root"] = os.path.join(root, "websockets", "handlers")
-
- if not value_set(config, "aliases"):
- config["aliases"] = []
-
-
-def merge_json(base_obj, override_obj):
- rv = {}
- for key, value in base_obj.iteritems():
- if key not in override_obj:
- rv[key] = value
- else:
- if isinstance(value, dict):
- rv[key] = merge_json(value, override_obj[key])
- else:
- rv[key] = override_obj[key]
- return rv
-
-
-def get_ssl_environment(config):
- implementation_type = config["ssl"]["type"]
- cls = sslutils.environments[implementation_type]
- try:
- kwargs = config["ssl"][implementation_type].copy()
- except KeyError:
- raise ValueError("%s is not a vaid ssl type." % implementation_type)
- return cls(logger, **kwargs)
-
-
def load_config(default_path, override_path=None, **kwargs):
if os.path.exists(default_path):
with open(default_path) as f:
@@ -767,20 +542,19 @@ def load_config(default_path, override_path=None, **kwargs):
else:
raise ValueError("Config path %s does not exist" % default_path)
+ rv = Config(**base_obj)
+
if os.path.exists(override_path):
with open(override_path) as f:
override_obj = json.load(f)
- else:
- override_obj = {}
- rv = merge_json(base_obj, override_obj)
+ rv.update(override_obj)
if kwargs.get("config_path"):
other_path = os.path.abspath(os.path.expanduser(kwargs.get("config_path")))
if os.path.exists(other_path):
- base_obj = rv
with open(other_path) as f:
override_obj = json.load(f)
- rv = merge_json(base_obj, override_obj)
+ rv.update(override_obj)
else:
raise ValueError("Config path %s does not exist" % other_path)
@@ -793,11 +567,30 @@ def load_config(default_path, override_path=None, **kwargs):
value = os.path.abspath(os.path.expanduser(value))
if not os.path.exists(value):
raise ValueError("%s path %s does not exist" % (title, value))
- rv[key] = value
+ setattr(rv, key, value)
- set_computed_defaults(rv)
return rv
+_subdomains = {u"www",
+ u"www1",
+ u"www2",
+ u"天気の良い日",
+ u"élève"}
+
+_not_subdomains = {u"nonexistent-origin"}
+
+class Config(config.Config):
+ """serve config
+
+ this subclasses wptserve.config.Config to add serve config options"""
+ def __init__(self, *args, **kwargs):
+ super(Config, self).__init__(
+ subdomains=_subdomains,
+ not_subdomains=_not_subdomains,
+ *args,
+ **kwargs
+ )
+
def get_parser():
parser = argparse.ArgumentParser()
@@ -817,32 +610,31 @@ def run(**kwargs):
os.path.join(repo_root, "config.json"),
**kwargs)
- setup_logger(config["log_level"])
+ global logger
+ logger = config.logger
+ set_logger(logger)
- with get_ssl_environment(config) as ssl_env:
- ports = get_ports(config, ssl_env)
- config = normalise_config(config, ports)
- host = config["browser_host"]
- bind_address = config["bind_address"]
+ bind_address = config["bind_address"]
- if config["check_subdomains"]:
- paths = get_paths(config)
- ssl_config = get_ssl_config(config, ssl_env)
- check_subdomains(host, paths, bind_address, ssl_config, config["aliases"])
+ if config["check_subdomains"]:
+ paths = config.paths
+ ssl_config = config.ssl_config
+ check_subdomains(config.domains, paths, bind_address, ssl_config, config["aliases"])
- stash_address = None
- if bind_address:
- stash_address = (host, get_port())
+ stash_address = None
+ if bind_address:
+ stash_address = (config.server_host, get_port(config.server_host))
+ logger.debug("Going to use port %d for stash" % stash_address[1])
- with stash.StashServer(stash_address, authkey=str(uuid.uuid4())):
- servers = start(config, ssl_env, build_routes(config["aliases"]), **kwargs)
+ with stash.StashServer(stash_address, authkey=str(uuid.uuid4())):
+ servers = start(config, config.ssl_env, build_routes(config["aliases"]), **kwargs)
- try:
- while any(item.is_alive() for item in iter_procs(servers)):
- for item in iter_procs(servers):
- item.join(1)
- except KeyboardInterrupt:
- logger.info("Shutting down")
+ try:
+ while any(item.is_alive() for item in iter_procs(servers)):
+ for item in iter_procs(servers):
+ item.join(1)
+ except KeyboardInterrupt:
+ logger.info("Shutting down")
def main():
diff --git a/tests/wpt/web-platform-tests/tools/sslutils/openssl.py b/tests/wpt/web-platform-tests/tools/sslutils/openssl.py
index 09c2471aaee..f44d0deb987 100644
--- a/tests/wpt/web-platform-tests/tools/sslutils/openssl.py
+++ b/tests/wpt/web-platform-tests/tools/sslutils/openssl.py
@@ -136,7 +136,7 @@ certs = $dir
new_certs_dir = $certs
crl_dir = $dir%(sep)scrl
database = $dir%(sep)sindex.txt
-private_key = $dir%(sep)scakey.pem
+private_key = $dir%(sep)scacert.key
certificate = $dir%(sep)scacert.pem
serial = $dir%(sep)sserial
crldir = $dir%(sep)scrl
@@ -294,7 +294,7 @@ class OpenSSLEnvironment(object):
return self._ca_cert_path
def _load_ca_cert(self):
- key_path = self.path("cakey.pem")
+ key_path = self.path("cacert.key")
cert_path = self.path("cacert.pem")
if self.check_key_cert(key_path, cert_path, None):
@@ -327,7 +327,7 @@ class OpenSSLEnvironment(object):
path = self.path
self.logger.info("Generating new CA in %s" % self.base_path)
- key_path = path("cakey.pem")
+ key_path = path("cacert.key")
req_path = path("careq.pem")
cert_path = path("cacert.pem")
diff --git a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py
index 20d22382c89..8da14a0d138 100644
--- a/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py
+++ b/tests/wpt/web-platform-tests/tools/webdriver/webdriver/client.py
@@ -367,6 +367,9 @@ class Session(object):
self.alert = UserPrompt(self)
self.actions = Actions(self)
+ def __repr__(self):
+ return "<%s %s>" % (self.__class__.__name__, self.session_id or "(disconnected)")
+
def __eq__(self, other):
return (self.session_id is not None and isinstance(other, Session) and
self.session_id == other.session_id)
@@ -628,6 +631,9 @@ class Element(object):
assert id not in self.session._element_cache
self.session._element_cache[self.id] = self
+ def __repr__(self):
+ return "<%s %s>" % (self.__class__.__name__, self.id)
+
def __eq__(self, other):
return (isinstance(other, Element) and self.id == other.id and
self.session == other.session)
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index d52feb03576..0c37e13ab48 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -179,22 +179,70 @@ class Firefox(Browser):
def find_webdriver(self):
return find_executable("geckodriver")
- def install_prefs(self, dest=None):
+ def get_version_number(self, binary):
+ version_re = re.compile("Mozilla Firefox (\d+\.\d+(?:\.\d+)?)(a|b)?")
+ proc = subprocess.Popen([binary, "--version"], stdout=subprocess.PIPE)
+ stdout, _ = proc.communicate()
+ stdout.strip()
+ m = version_re.match(stdout)
+ if not m:
+ return None, "nightly"
+ version, status = m.groups()
+ channel = {"a": "nightly", "b": "beta"}
+ return version, channel.get(status, "stable")
+
+ def get_prefs_url(self, version, channel):
+ if channel == "stable":
+ repo = "https://hg.mozilla.org/releases/mozilla-release"
+ tag = "FIREFOX_%s_RELEASE" % version.replace(".", "_")
+ else:
+ repo = "https://hg.mozilla.org/mozilla-central"
+ if channel == "beta":
+ tag = "FIREFOX_%s_BETA" % version.split(".", 1)[0]
+ else:
+ # Always use tip as the tag for nightly; this isn't quite right
+ # but to do better we need the actual build revision, which we
+ # can get if we have an application.ini file
+ tag = "tip"
+
+ return "%s/raw-file/%s/testing/profiles/prefs_general.js" % (repo, tag)
+
+ def install_prefs(self, binary, dest=None):
+ version, channel = self.get_version_number(binary)
+
if dest is None:
dest = os.pwd
dest = os.path.join(dest, "profiles")
if not os.path.exists(dest):
os.makedirs(dest)
- prefs_path = os.path.join(dest, "prefs_general.js")
-
- now = datetime.now()
- if (not os.path.exists(prefs_path) or
- (datetime.fromtimestamp(os.stat(prefs_path).st_mtime) <
- now - timedelta(days=2))):
- with open(prefs_path, "wb") as f:
- resp = get("https://hg.mozilla.org/mozilla-central/raw-file/tip/testing/profiles/prefs_general.js")
+ prefs_file = os.path.join(dest, "prefs_general.js")
+ cache_file = os.path.join(dest,
+ "%s-%s.cache" % (version, channel)
+ if channel != "nightly"
+ else "nightly.cache")
+
+ have_cache = False
+ if os.path.exists(cache_file):
+ if channel != "nightly":
+ have_cache = True
+ else:
+ now = datetime.now()
+ have_cache = (datetime.fromtimestamp(os.stat(cache_file).st_mtime) >
+ now - timedelta(days=1))
+
+ # If we don't have a recent download, grab the url
+ if not have_cache:
+ url = self.get_prefs_url(version, channel)
+
+ with open(cache_file, "wb") as f:
+ print("Installing test prefs from %s" % url)
+ resp = get(url)
f.write(resp.content)
+ else:
+ print("Using cached test prefs from %s" % cache_file)
+
+ shutil.copyfile(cache_file, prefs_file)
return dest
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index dab11d9a5d0..5761ab89cc9 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -98,7 +98,6 @@ def check_environ(product):
if product not in ("firefox", "servo"):
config = serve.load_config(os.path.join(wpt_root, "config.default.json"),
os.path.join(wpt_root, "config.json"))
- config = serve.normalise_config(config, {})
expected_hosts = (set(config["domains"].itervalues()) ^
set(config["not_domains"].itervalues()))
missing_hosts = set(expected_hosts)
@@ -202,8 +201,7 @@ Consider installing certutil via your OS package manager or directly.""")
kwargs["test_types"].remove("wdspec")
if kwargs["prefs_root"] is None:
- print("Downloading gecko prefs")
- prefs_root = self.browser.install_prefs(self.venv.path)
+ prefs_root = self.browser.install_prefs(kwargs["binary"], self.venv.path)
kwargs["prefs_root"] = prefs_root
diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py
index 5d6280d7230..93c6938c26d 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_wpt.py
@@ -183,13 +183,14 @@ def test_files_changed_ignore_rules():
def test_tests_affected(capsys, manifest_dir):
# This doesn't really work properly for random commits because we test the files in
# the current working directory for references to the changed files, not the ones at
- # that specific commit. But we can at least test it returns something sensible
- commit = "9047ac1d9f51b1e9faa4f9fad9c47d109609ab09"
+ # that specific commit. But we can at least test it returns something sensible.
+ # The test will fail if the file we assert is renamed, so we choose a stable one.
+ commit = "3a055e818218f548db240c316654f3cc1aeeb733"
with pytest.raises(SystemExit) as excinfo:
wpt.main(argv=["tests-affected", "--metadata", manifest_dir, "%s~..%s" % (commit, commit)])
assert excinfo.value.code == 0
out, err = capsys.readouterr()
- assert "html/browsers/offline/appcache/workers/appcache-worker.html" in out
+ assert "infrastructure/reftest-wait.html" in out
@pytest.mark.slow
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt
index 782a6a09221..79fde7811c6 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt
@@ -1,8 +1,8 @@
-marionette_driver == 2.5.0
-mozprofile == 0.29
+marionette_driver==2.6.0
+mozprofile==1.0.0
mozprocess == 0.26
mozcrash == 1.0
-mozrunner == 6.14
+mozrunner==6.15
mozleak == 0.1
mozinstall == 1.15
mozdownload == 1.23
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini
index bb302585ff4..f63e2c0cea0 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini
@@ -2,7 +2,7 @@
xfail_strict=true
[tox]
-envlist = {py27,pypy}-{base,chrome,edge,firefox,ie,opera,safari,sauce,servo},py27-flake8
+envlist = {py27}-{base,chrome,edge,firefox,ie,opera,safari,sauce,servo},py27-flake8
[testenv]
deps =
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
index 7acb0f7d924..0a0ca7e9b55 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/firefox.py
@@ -102,7 +102,7 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data,
if kwargs["binary_args"]:
options["args"] = kwargs["binary_args"]
options["prefs"] = {
- "network.dns.localDomains": ",".join(server_config['domains'].values())
+ "network.dns.localDomains": ",".join(server_config.domains.itervalues())
}
capabilities["moz:firefoxOptions"] = options
if kwargs["certutil_binary"] is None:
@@ -133,8 +133,8 @@ def run_info_extras(**kwargs):
def update_properties():
- return (["debug", "stylo", "e10s", "os", "version", "processor", "bits"],
- {"debug", "e10s", "stylo"})
+ return (["debug", "webrender", "e10s", "os", "version", "processor", "bits"],
+ {"debug", "e10s", "webrender"})
class FirefoxBrowser(Browser):
@@ -198,7 +198,7 @@ class FirefoxBrowser(Browser):
self.profile = FirefoxProfile(preferences=preferences)
self.profile.set_preferences({"marionette.port": self.marionette_port,
"dom.disable_open_during_load": False,
- "network.dns.localDomains": ",".join(self.config['domains'].values()),
+ "network.dns.localDomains": ",".join(self.config.domains.itervalues()),
"network.proxy.type": 0,
"places.history.enabled": False,
"dom.send_after_paint_to_content": True,
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/edge-prerun.bat b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/edge-prerun.bat
index 4554894896b..9d0878e99ed 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/edge-prerun.bat
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/edge-prerun.bat
@@ -1,2 +1,9 @@
@echo off
reg add "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\New Windows" /v "PopupMgr" /t REG_SZ /d no
+
+
+REM Download and install the Ahem font
+REM - https://wiki.saucelabs.com/display/DOCS/Downloading+Files+to+a+Sauce+Labs+Virtual+Machine+Prior+to+Testing
+REM - https://superuser.com/questions/201896/how-do-i-install-a-font-from-the-windows-command-prompt
+bitsadmin.exe /transfer "JobName" https://github.com/w3c/web-platform-tests/raw/master/fonts/Ahem.ttf "%WINDIR%\Fonts\Ahem.ttf"
+reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "Ahem (TrueType)" /t REG_SZ /d Ahem.ttf /f
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/safari-prerun.sh b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/safari-prerun.sh
index 85c72e6be6a..06c48bd06a3 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/safari-prerun.sh
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce_setup/safari-prerun.sh
@@ -1,2 +1,3 @@
#!/bin/bash
+curl https://raw.githubusercontent.com/w3c/web-platform-tests/master/fonts/Ahem.ttf > ~/Library/Fonts/Ahem.ttf
defaults write com.apple.Safari com.apple.Safari.ContentPageGroupIdentifier.WebKit2JavaScriptCanOpenWindowsAutomatically -bool true
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
index f53919978b8..3913f825fbd 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/environment.py
@@ -94,8 +94,6 @@ class TestEnvironment(object):
self.config = self.load_config()
self.setup_server_logging()
- ports = serve.get_ports(self.config, self.ssl_env)
- self.config = serve.normalise_config(self.config, ports)
assert self.env_extras_cms is None, (
"A TestEnvironment object cannot be nested")
@@ -137,43 +135,37 @@ class TestEnvironment(object):
def load_config(self):
default_config_path = os.path.join(serve_path(self.test_paths), "config.default.json")
- local_config = {
- "ports": {
- "http": [8000, 8001],
- "https": [8443],
- "ws": [8888]
- },
- "check_subdomains": False,
- "ssl": {}
- }
-
- if "browser_host" in self.options:
- local_config["browser_host"] = self.options["browser_host"]
-
- if "bind_address" in self.options:
- local_config["bind_address"] = self.options["bind_address"]
+ override_path = os.path.join(serve_path(self.test_paths), "config.json")
with open(default_config_path) as f:
default_config = json.load(f)
- local_config["server_host"] = self.options.get("server_host", None)
- local_config["ssl"]["encrypt_after_connect"] = self.options.get("encrypt_after_connect", False)
+ config = serve.Config(override_ssl_env=self.ssl_env, **default_config)
- config = serve.merge_json(default_config, local_config)
- config["doc_root"] = serve_path(self.test_paths)
+ config.ports = {
+ "http": [8000, 8001],
+ "https": [8443],
+ "ws": [8888],
+ "wss": [8889],
+ }
+
+ if os.path.exists(override_path):
+ with open(override_path) as f:
+ override_obj = json.load(f)
+ config.update(override_obj)
- if not self.ssl_env.ssl_enabled:
- config["ports"]["https"] = [None]
+ config.check_subdomains = False
+ config.ssl = {}
- host = config["browser_host"]
- hosts = [host]
- hosts.extend("%s.%s" % (item[0], host) for item in serve.get_subdomains(host).values())
- key_file, certificate = self.ssl_env.host_cert_path(hosts)
+ if "browser_host" in self.options:
+ config.browser_host = self.options["browser_host"]
- config["key_file"] = key_file
- config["certificate"] = certificate
+ if "bind_address" in self.options:
+ config.bind_address = self.options["bind_address"]
- serve.set_computed_defaults(config)
+ config.server_host = self.options.get("server_host", None)
+ config.ssl["encrypt_after_connect"] = self.options.get("encrypt_after_connect", False)
+ config.doc_root = serve_path(self.test_paths)
return config
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
index fbb75d658ce..0942bc64d66 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/base.py
@@ -193,7 +193,7 @@ class TestExecutor(object):
if hasattr(e, "status") and e.status in test.result_cls.statuses:
status = e.status
else:
- status = "ERROR"
+ status = "INTERNAL-ERROR"
message = unicode(getattr(e, "message", ""))
if message:
message += "\n"
@@ -406,7 +406,7 @@ class WdspecRun(object):
if message:
message += "\n"
message += traceback.format_exc(e)
- self.result = False, ("ERROR", message)
+ self.result = False, ("INTERNAL-ERROR", message)
finally:
self.result_flag.set()
@@ -438,6 +438,8 @@ class ConnectionlessProtocol(Protocol):
class WebDriverProtocol(Protocol):
server_cls = None
+ implements = [ConnectionlessBaseProtocolPart]
+
def __init__(self, executor, browser):
Protocol.__init__(self, executor, browser)
self.webdriver_binary = executor.webdriver_binary
@@ -501,7 +503,8 @@ class CallbackHandler(object):
}
self.actions = {
- "click": ClickAction(self.logger, self.protocol)
+ "click": ClickAction(self.logger, self.protocol),
+ "send_keys": SendKeysAction(self.logger, self.protocol)
}
def __call__(self, result):
@@ -544,7 +547,6 @@ class CallbackHandler(object):
def _send_message(self, message_type, status, message=None):
self.protocol.testdriver.send_message(message_type, status, message=message)
-
class ClickAction(object):
def __init__(self, logger, protocol):
self.logger = logger
@@ -559,3 +561,19 @@ class ClickAction(object):
raise ValueError("Selector matches multiple elements")
self.logger.debug("Clicking element: %s" % selector)
self.protocol.click.element(elements[0])
+
+class SendKeysAction(object):
+ def __init__(self, logger, protocol):
+ self.logger = logger
+ self.protocol = protocol
+
+ def __call__(self, payload):
+ selector = payload["selector"]
+ keys = payload["keys"]
+ elements = self.protocol.select.elements_by_selector(selector)
+ if len(elements) == 0:
+ raise ValueError("Selector matches no elements")
+ elif len(elements) > 1:
+ raise ValueError("Selector matches multiple elements")
+ self.logger.debug("Sending keys to element: %s" % selector)
+ self.protocol.send_keys.send_keys(elements[0], keys)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
index 1c49ab2572c..f39d216ecec 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executormarionette.py
@@ -32,6 +32,7 @@ from .protocol import (BaseProtocolPart,
StorageProtocolPart,
SelectorProtocolPart,
ClickProtocolPart,
+ SendKeysProtocolPart,
TestDriverProtocolPart)
from ..testrunner import Stop
from ..webdriver_server import GeckoDriverServer
@@ -307,6 +308,12 @@ class MarionetteClickProtocolPart(ClickProtocolPart):
def element(self, element):
return element.click()
+class MarionetteSendKeysProtocolPart(SendKeysProtocolPart):
+ def setup(self):
+ self.marionette = self.parent.marionette
+
+ def send_keys(self, element, keys):
+ return element.send_keys(keys)
class MarionetteTestDriverProtocolPart(TestDriverProtocolPart):
def setup(self):
@@ -329,6 +336,7 @@ class MarionetteProtocol(Protocol):
MarionetteStorageProtocolPart,
MarionetteSelectorProtocolPart,
MarionetteClickProtocolPart,
+ MarionetteSendKeysProtocolPart,
MarionetteTestDriverProtocolPart]
def __init__(self, executor, browser, capabilities=None, timeout_multiplier=1):
@@ -395,7 +403,7 @@ class MarionetteProtocol(Protocol):
self.prefs.set(name, value)
for name, value in new_environment.get("prefs", {}).iteritems():
- self.executor.original_pref_values[name] = self.get_pref(name)
+ self.executor.original_pref_values[name] = self.prefs.get(name)
self.prefs.set(name, value)
@@ -446,7 +454,7 @@ class ExecuteAsyncScriptRun(object):
# We didn't get any data back from the test, so check if the
# browser is still responsive
if self.protocol.is_alive:
- self.result = False, ("ERROR", None)
+ self.result = False, ("INTERNAL-ERROR", None)
else:
self.result = False, ("CRASH", None)
return self.result
@@ -467,7 +475,7 @@ class ExecuteAsyncScriptRun(object):
if message:
message += "\n"
message += traceback.format_exc(e)
- self.result = False, ("ERROR", e)
+ self.result = False, ("INTERNAL-ERROR", e)
finally:
self.result_flag.set()
@@ -631,12 +639,12 @@ class MarionetteRefTestExecutor(RefTestExecutor):
test_url,
timeout).run()
- def _screenshot(self, marionette, url, timeout):
- marionette.navigate(url)
+ def _screenshot(self, protocol, url, timeout):
+ protocol.marionette.navigate(url)
- marionette.execute_async_script(self.wait_script)
+ protocol.base.execute_script(self.wait_script, async=True)
- screenshot = marionette.screenshot(full=False)
+ screenshot = protocol.marionette.screenshot(full=False)
# strip off the data:img/png, part of the url
if screenshot.startswith("data:image/png;base64,"):
screenshot = screenshot.split(",", 1)[1]
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py
index 0b7118993d8..98c49bd5662 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py
@@ -19,6 +19,7 @@ from .protocol import (BaseProtocolPart,
Protocol,
SelectorProtocolPart,
ClickProtocolPart,
+ SendKeysProtocolPart,
TestDriverProtocolPart)
from ..testrunner import Stop
@@ -134,6 +135,13 @@ class SeleniumClickProtocolPart(ClickProtocolPart):
def element(self, element):
return element.click()
+class SeleniumSendKeysProtocolPart(SendKeysProtocolPart):
+ def setup(self):
+ self.webdriver = self.parent.webdriver
+
+ def send_keys(self, element, keys):
+ return element.send_keys(keys)
+
class SeleniumTestDriverProtocolPart(TestDriverProtocolPart):
def setup(self):
@@ -154,6 +162,7 @@ class SeleniumProtocol(Protocol):
SeleniumTestharnessProtocolPart,
SeleniumSelectorProtocolPart,
SeleniumClickProtocolPart,
+ SeleniumSendKeysProtocolPart,
SeleniumTestDriverProtocolPart]
def __init__(self, executor, browser, capabilities, **kwargs):
@@ -236,7 +245,7 @@ class SeleniumRun(object):
if message:
message += "\n"
message += traceback.format_exc(e)
- self.result = False, ("ERROR", e)
+ self.result = False, ("INTERNAL-ERROR", e)
finally:
self.result_flag.set()
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py
index 8f2964a7d3a..626c987f26e 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py
@@ -109,7 +109,7 @@ class ServoWebDriverRun(object):
if message:
message += "\n"
message += traceback.format_exc(e)
- self.result = False, ("ERROR", e)
+ self.result = False, ("INTERNAL-ERROR", e)
finally:
self.result_flag.set()
@@ -214,7 +214,7 @@ class ServoWebDriverRefTestExecutor(RefTestExecutor):
if message:
message += "\n"
message += traceback.format_exc(e)
- return test.result_cls("ERROR", message), []
+ return test.result_cls("INTERNAL-ERROR", message), []
def screenshot(self, test, viewport_size, dpi):
# https://github.com/w3c/wptrunner/issues/166
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py
index dc69d24f523..3c938f04c7b 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/protocol.py
@@ -259,6 +259,20 @@ class ClickProtocolPart(ProtocolPart):
:param element: A protocol-specific handle to an element."""
pass
+class SendKeysProtocolPart(ProtocolPart):
+ """Protocol part for performing trusted clicks"""
+ __metaclass__ = ABCMeta
+
+ name = "send_keys"
+
+ @abstractmethod
+ def send_keys(self, element, keys):
+ """Send keys to a specific element.
+
+ :param element: A protocol-specific handle to an element.
+ :param keys: A protocol-specific handle to a string of input keys."""
+ pass
+
class TestDriverProtocolPart(ProtocolPart):
"""Protocol part that implements the basic functionality required for
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py
index 36a97cf72ed..c1936eb966f 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/pytestrunner/runner.py
@@ -44,7 +44,7 @@ def run(path, server_config, session_config, timeout=0):
os.environ["WD_HOST"] = session_config["host"]
os.environ["WD_PORT"] = str(session_config["port"])
os.environ["WD_CAPABILITIES"] = json.dumps(session_config["capabilities"])
- os.environ["WD_SERVER_CONFIG"] = json.dumps(server_config)
+ os.environ["WD_SERVER_CONFIG"] = json.dumps(server_config.as_dict())
harness = HarnessResultRecorder()
subtests = SubtestResultRecorder()
@@ -62,7 +62,7 @@ def run(path, server_config, session_config, timeout=0):
path],
plugins=[harness, subtests])
except Exception as e:
- harness.outcome = ("ERROR", str(e))
+ harness.outcome = ("INTERNAL-ERROR", str(e))
return (harness.outcome, subtests.results)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testdriver-extra.js b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testdriver-extra.js
index 856a33edbad..ef962d35f22 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testdriver-extra.js
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testdriver-extra.js
@@ -60,4 +60,14 @@
window.opener.postMessage({"type": "action", "action": "click", "selector": selector}, "*");
return pending_promise;
};
+
+ window.test_driver_internal.send_keys = function(element, keys) {
+ const selector = get_selector(element);
+ const pending_promise = new Promise(function(resolve, reject) {
+ pending_resolve = resolve;
+ pending_reject = reject;
+ });
+ window.opener.postMessage({"type": "action", "action": "send_keys", "selector": selector, "keys": keys}, "*");
+ return pending_promise;
+ };
})();
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
index 1d2d768bfa7..e83bff8b040 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testrunner.py
@@ -560,13 +560,18 @@ class TestRunnerManager(threading.Thread):
expected=expected,
stack=result.stack)
- # TODO: consider changing result if there is a crash dump file
-
- # Write the result of the test harness
+ # We have a couple of status codes that are used internally, but not exposed to the
+ # user. These are used to indicate that some possibly-broken state was reached
+ # and we should restart the runner before the next test.
+ # INTERNAL-ERROR indicates a Python exception was caught in the harness
+ # EXTERNAL-TIMEOUT indicates we had to forcibly kill the browser from the harness
+ # because the test didn't return a result after reaching the test-internal timeout
+ status_subns = {"INTERNAL-ERROR": "ERROR",
+ "EXTERNAL-TIMEOUT": "TIMEOUT"}
expected = test.expected()
- status = file_result.status if file_result.status != "EXTERNAL-TIMEOUT" else "TIMEOUT"
+ status = status_subns.get(file_result.status, file_result.status)
- if file_result.status in ("TIMEOUT", "EXTERNAL-TIMEOUT"):
+ if file_result.status in ("TIMEOUT", "EXTERNAL-TIMEOUT", "INTERNAL-ERROR"):
if self.browser.check_for_crashes():
status = "CRASH"
@@ -585,7 +590,7 @@ class TestRunnerManager(threading.Thread):
extra=file_result.extra)
restart_before_next = (test.restart_after or
- file_result.status in ("CRASH", "EXTERNAL-TIMEOUT") or
+ file_result.status in ("CRASH", "EXTERNAL-TIMEOUT", "INTERNAL-ERROR") or
((subtest_unexpected or is_unexpected) and
self.restart_on_unexpected))
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py
index 4d44e6466a1..aa1bc010d19 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py
@@ -8,6 +8,8 @@ sys.path.insert(0, join(dirname(__file__), "..", "..", ".."))
sauce = pytest.importorskip("wptrunner.browsers.sauce")
+from wptserve.config import Config
+
def test_sauceconnect_success():
with mock.patch.object(sauce.SauceConnect, "upload_prerun_exec"),\
@@ -25,9 +27,7 @@ def test_sauceconnect_success():
sauce_tunnel_id="ccc",
sauce_connect_binary="ddd")
- env_config = {
- "domains": {"": "example.net"}
- }
+ env_config = Config(browser_host="example.net")
sauce_connect(None, env_config)
with sauce_connect:
pass
@@ -56,9 +56,7 @@ def test_sauceconnect_failure_exit(readyfile, returncode):
sauce_tunnel_id="ccc",
sauce_connect_binary="ddd")
- env_config = {
- "domains": {"": "example.net"}
- }
+ env_config = Config(browser_host="example.net")
sauce_connect(None, env_config)
with pytest.raises(sauce.SauceException):
with sauce_connect:
@@ -83,9 +81,7 @@ def test_sauceconnect_failure_never_ready():
sauce_tunnel_id="ccc",
sauce_connect_binary="ddd")
- env_config = {
- "domains": {"": "example.net"}
- }
+ env_config = Config(browser_host="example.net")
sauce_connect(None, env_config)
with pytest.raises(sauce.SauceException):
with sauce_connect:
@@ -113,9 +109,9 @@ def test_sauceconnect_tunnel_domains():
sauce_tunnel_id="ccc",
sauce_connect_binary="ddd")
- env_config = {
- "domains": {"foo": "foo.bar.example.com", "": "example.net"}
- }
+ env_config = Config(browser_host="example.net",
+ subdomains={"a", "b"},
+ not_subdomains={"x", "y"})
sauce_connect(None, env_config)
with sauce_connect:
Popen.assert_called_once()
@@ -127,4 +123,6 @@ def test_sauceconnect_tunnel_domains():
assert len(rest) >= 1
if len(rest) > 1:
assert rest[1].startswith("-"), "--tunnel-domains takes a comma separated list (not a space separated list)"
- assert set(rest[0].split(",")) == {"foo.bar.example.com", "example.net"}
+ assert set(rest[0].split(",")) == {'example.net',
+ 'a.example.net',
+ 'b.example.net'}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
index 75e5d8aca43..8361ca1daa2 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
@@ -334,7 +334,7 @@ def set_from_config(kwargs):
kwargs["test_paths"]["/"] = {}
kwargs["test_paths"]["/"]["metadata_path"] = kwargs["metadata_root"]
- if kwargs["manifest_path"]:
+ if kwargs.get("manifest_path"):
if "/" not in kwargs["test_paths"]:
kwargs["test_paths"]["/"] = {}
kwargs["test_paths"]["/"]["manifest_path"] = kwargs["manifest_path"]
@@ -342,6 +342,8 @@ def set_from_config(kwargs):
kwargs["suite_name"] = kwargs["config"].get("web-platform-tests", {}).get("name", "web-platform-tests")
+ check_paths(kwargs)
+
def get_test_paths(config):
# Set up test_paths
test_paths = OrderedDict()
@@ -400,8 +402,6 @@ def check_paths(kwargs):
def check_args(kwargs):
set_from_config(kwargs)
- check_paths(kwargs)
-
if kwargs["product"] is None:
kwargs["product"] = "firefox"
@@ -493,8 +493,6 @@ def check_args(kwargs):
def check_args_update(kwargs):
set_from_config(kwargs)
- check_paths(kwargs)
-
if kwargs["product"] is None:
kwargs["product"] = "firefox"
if kwargs["patch"] is None:
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
index 9f4c1bed135..0fb1bdd3e8e 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
@@ -36,7 +36,7 @@ class SubtestResult(object):
class TestharnessResult(Result):
default_expected = "OK"
- statuses = set(["OK", "ERROR", "TIMEOUT", "EXTERNAL-TIMEOUT", "CRASH"])
+ statuses = set(["OK", "ERROR", "INTERNAL-ERROR", "TIMEOUT", "EXTERNAL-TIMEOUT", "CRASH"])
class TestharnessSubtestResult(SubtestResult):
@@ -46,12 +46,13 @@ class TestharnessSubtestResult(SubtestResult):
class ReftestResult(Result):
default_expected = "PASS"
- statuses = set(["PASS", "FAIL", "ERROR", "TIMEOUT", "EXTERNAL-TIMEOUT", "CRASH"])
+ statuses = set(["PASS", "FAIL", "ERROR", "INTERNAL-ERROR", "TIMEOUT", "EXTERNAL-TIMEOUT",
+ "CRASH"])
class WdspecResult(Result):
default_expected = "OK"
- statuses = set(["OK", "ERROR", "TIMEOUT", "EXTERNAL-TIMEOUT", "CRASH"])
+ statuses = set(["OK", "ERROR", "INTERNAL-ERROR", "TIMEOUT", "EXTERNAL-TIMEOUT", "CRASH"])
class WdspecSubtestResult(SubtestResult):
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash.sub.txt b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash.sub.txt
new file mode 100644
index 00000000000..369ac8ab31c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash.sub.txt
@@ -0,0 +1,6 @@
+md5: {{file_hash(md5, sub_file_hash_subject.txt)}}
+sha1: {{file_hash(sha1, sub_file_hash_subject.txt)}}
+sha224: {{file_hash(sha224, sub_file_hash_subject.txt)}}
+sha256: {{file_hash(sha256, sub_file_hash_subject.txt)}}
+sha384: {{file_hash(sha384, sub_file_hash_subject.txt)}}
+sha512: {{file_hash(sha512, sub_file_hash_subject.txt)}}
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash_subject.txt b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash_subject.txt
new file mode 100644
index 00000000000..d567d28e8aa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash_subject.txt
@@ -0,0 +1,2 @@
+This file is used to verify expected behavior of the `file_hash` "sub"
+function.
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash_unrecognized.sub.txt b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash_unrecognized.sub.txt
new file mode 100644
index 00000000000..5f1281df5b8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_file_hash_unrecognized.sub.txt
@@ -0,0 +1 @@
+{{file_hash(sha007, sub_file_hash_subject.txt)}}
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_location.sub.txt b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_location.sub.txt
new file mode 100644
index 00000000000..6129abd4db5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_location.sub.txt
@@ -0,0 +1,8 @@
+host: {{location[host]}}
+hostname: {{location[hostname]}}
+path: {{location[path]}}
+pathname: {{location[pathname]}}
+port: {{location[port]}}
+query: {{location[query]}}
+scheme: {{location[scheme]}}
+server: {{location[server]}}
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_url_base.sub.txt b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_url_base.sub.txt
new file mode 100644
index 00000000000..889cd07fe9b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_url_base.sub.txt
@@ -0,0 +1 @@
+Before {{url_base}} After
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_uuid.sub.txt b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_uuid.sub.txt
new file mode 100644
index 00000000000..fd968fecf0d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_uuid.sub.txt
@@ -0,0 +1 @@
+Before {{uuid()}} After
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_var.sub.txt b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_var.sub.txt
new file mode 100644
index 00000000000..9492ec15a6a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/sub_var.sub.txt
@@ -0,0 +1 @@
+{{$first:host}} {{$second:ports[http][0]}} A {{$second}} B {{$first}} C
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/subdir/example_module.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/subdir/example_module.py
new file mode 100644
index 00000000000..b8e5c350ae9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/subdir/example_module.py
@@ -0,0 +1,2 @@
+def module_function():
+ return [("Content-Type", "text/plain")], "PASS"
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/subdir/import_handler.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/subdir/import_handler.py
new file mode 100644
index 00000000000..3b42b29be95
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/docroot/subdir/import_handler.py
@@ -0,0 +1,5 @@
+import example_module
+
+
+def main(request, response):
+ return example_module.module_function()
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_handlers.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_handlers.py
index b9bcb3a4e6c..6769bd3adef 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_handlers.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_handlers.py
@@ -1,5 +1,6 @@
import json
import os
+import sys
import unittest
import uuid
@@ -228,6 +229,7 @@ class TestJSONHandler(TestUsingServer):
self.assertEqual("test-value", resp.info()["test-header"])
self.assertEqual({"data": "test data"}, json.load(resp))
+
class TestPythonHandler(TestUsingServer):
def test_string(self):
resp = self.request("/test_string.py")
@@ -250,6 +252,17 @@ class TestPythonHandler(TestUsingServer):
self.assertEqual("PASS", resp.info()["X-Test"])
self.assertEqual("PASS", resp.read())
+ def test_import(self):
+ dir_name = os.path.join(doc_root, "subdir")
+ assert dir_name not in sys.path
+ assert "test_module" not in sys.modules
+ resp = self.request("/subdir/import_handler.py")
+ assert dir_name not in sys.path
+ assert "test_module" not in sys.modules
+ self.assertEqual(200, resp.getcode())
+ self.assertEqual("text/plain", resp.info()["Content-Type"])
+ self.assertEqual("PASS", resp.read())
+
def test_no_main(self):
with pytest.raises(HTTPError) as cm:
self.request("/no_main.py")
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_pipes.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_pipes.py
index 147ad156225..069bd760510 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_pipes.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_pipes.py
@@ -1,5 +1,6 @@
import os
import unittest
+import urllib2
import time
import json
@@ -58,16 +59,59 @@ class TestSub(TestUsingServer):
expected = "localhost localhost %i" % self.server.port
self.assertEqual(resp.read().rstrip(), expected)
+ def test_sub_file_hash(self):
+ resp = self.request("/sub_file_hash.sub.txt")
+ expected = """
+md5: JmI1W8fMHfSfCarYOSxJcw==
+sha1: nqpWqEw4IW8NjD6R375gtrQvtTo=
+sha224: RqQ6fMmta6n9TuA/vgTZK2EqmidqnrwBAmQLRQ==
+sha256: G6Ljg1uPejQxqFmvFOcV/loqnjPTW5GSOePOfM/u0jw=
+sha384: lkXHChh1BXHN5nT5BYhi1x67E1CyYbPKRKoF2LTm5GivuEFpVVYtvEBHtPr74N9E
+sha512: r8eLGRTc7ZznZkFjeVLyo6/FyQdra9qmlYCwKKxm3kfQAswRS9+3HsYk3thLUhcFmmWhK4dXaICz
+JwGFonfXwg=="""
+ self.assertEqual(resp.read().rstrip(), expected.strip())
+
+ def test_sub_file_hash_unrecognized(self):
+ with self.assertRaises(urllib2.HTTPError):
+ self.request("/sub_file_hash_unrecognized.sub.txt")
+
def test_sub_headers(self):
resp = self.request("/sub_headers.txt", query="pipe=sub", headers={"X-Test": "PASS"})
expected = "PASS"
self.assertEqual(resp.read().rstrip(), expected)
+ def test_sub_location(self):
+ resp = self.request("/sub_location.sub.txt?query_string")
+ expected = """
+host: localhost:{0}
+hostname: localhost
+path: /sub_location.sub.txt
+pathname: /sub_location.sub.txt
+port: {0}
+query: ?query_string
+scheme: http
+server: http://localhost:{0}""".format(self.server.port)
+ self.assertEqual(resp.read().rstrip(), expected.strip())
+
def test_sub_params(self):
resp = self.request("/sub_params.txt", query="test=PASS&pipe=sub")
expected = "PASS"
self.assertEqual(resp.read().rstrip(), expected)
+ def test_sub_url_base(self):
+ resp = self.request("/sub_url_base.sub.txt")
+ self.assertEqual(resp.read().rstrip(), "Before / After")
+
+ def test_sub_uuid(self):
+ resp = self.request("/sub_uuid.sub.txt")
+ self.assertRegexpMatches(resp.read().rstrip(), r"Before [a-f0-9-]+ After")
+
+ def test_sub_var(self):
+ resp = self.request("/sub_var.sub.txt")
+ port = self.server.port
+ expected = "localhost %s A %s B localhost C" % (port, port)
+ self.assertEqual(resp.read().rstrip(), expected)
+
class TestTrickle(TestUsingServer):
def test_trickle(self):
#Actually testing that the response trickles in is not that easy
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/test_config.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/test_config.py
new file mode 100644
index 00000000000..c9c270b27b5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/test_config.py
@@ -0,0 +1,346 @@
+import logging
+import os
+import pickle
+from logging import handlers
+
+import pytest
+
+import localpaths
+
+config = pytest.importorskip("wptserve.config")
+
+
+def test_renamed_are_renamed():
+ assert len(set(config._renamed_props.viewkeys()) & set(config.Config._default.viewkeys())) == 0
+
+
+def test_renamed_exist():
+ assert set(config._renamed_props.viewvalues()).issubset(set(config.Config._default.viewkeys()))
+
+
+@pytest.mark.parametrize("base, override, expected", [
+ ({"a": 1}, {"a": 2}, {"a": 2}),
+ ({"a": 1}, {"b": 2}, {"a": 1}),
+ ({"a": {"b": 1}}, {"a": {}}, {"a": {"b": 1}}),
+ ({"a": {"b": 1}}, {"a": {"b": 2}}, {"a": {"b": 2}}),
+ ({"a": {"b": 1}}, {"a": {"b": 2, "c": 3}}, {"a": {"b": 2}}),
+ pytest.param({"a": {"b": 1}}, {"a": 2}, {"a": 1}, marks=pytest.mark.xfail),
+ pytest.param({"a": 1}, {"a": {"b": 2}}, {"a": 1}, marks=pytest.mark.xfail),
+])
+def test_merge_dict(base, override, expected):
+ assert expected == config._merge_dict(base, override)
+
+
+def test_logger_created():
+ c = config.Config()
+ assert c.logger is not None
+
+
+def test_logger_preserved():
+ logger = logging.getLogger("test_logger_preserved")
+ logger.setLevel(logging.DEBUG)
+
+ c = config.Config(logger=logger)
+ assert c.logger is logger
+
+
+def test_init_basic_prop():
+ c = config.Config(browser_host="foo.bar")
+ assert c.browser_host == "foo.bar"
+
+
+def test_init_prefixed_prop():
+ c = config.Config(doc_root="/")
+ assert c._doc_root == "/"
+
+
+def test_init_renamed_host():
+ logger = logging.getLogger("test_init_renamed_host")
+ logger.setLevel(logging.DEBUG)
+ handler = handlers.BufferingHandler(100)
+ logger.addHandler(handler)
+
+ c = config.Config(logger=logger, host="foo.bar")
+ assert c.logger is logger
+ assert len(handler.buffer) == 1
+ assert "browser_host" in handler.buffer[0].getMessage() # check we give the new name in the message
+ assert not hasattr(c, "host")
+ assert c.browser_host == "foo.bar"
+
+
+def test_init_bogus():
+ with pytest.raises(TypeError) as e:
+ config.Config(foo=1, bar=2)
+ assert "foo" in e.value.message
+ assert "bar" in e.value.message
+
+
+def test_getitem():
+ c = config.Config(browser_host="foo.bar")
+ assert c["browser_host"] == "foo.bar"
+
+
+def test_no_setitem():
+ c = config.Config()
+ with pytest.raises(TypeError):
+ c["browser_host"] = "foo.bar"
+
+
+def test_iter():
+ c = config.Config()
+ s = set(iter(c))
+ assert "browser_host" in s
+ assert "host" not in s
+ assert "__getitem__" not in s
+ assert "_browser_host" not in s
+
+
+def test_assignment():
+ c = config.Config()
+ c.browser_host = "foo.bar"
+ assert c.browser_host == "foo.bar"
+
+
+def test_update_basic():
+ c = config.Config()
+ c.update({"browser_host": "foo.bar"})
+ assert c.browser_host == "foo.bar"
+
+
+def test_update_prefixed():
+ c = config.Config()
+ c.update({"doc_root": "/"})
+ assert c._doc_root == "/"
+
+
+def test_update_renamed_host():
+ logger = logging.getLogger("test_update_renamed_host")
+ logger.setLevel(logging.DEBUG)
+ handler = handlers.BufferingHandler(100)
+ logger.addHandler(handler)
+
+ c = config.Config(logger=logger)
+ assert c.logger is logger
+ assert len(handler.buffer) == 0
+
+ c.update({"host": "foo.bar"})
+
+ assert len(handler.buffer) == 1
+ assert "browser_host" in handler.buffer[0].getMessage() # check we give the new name in the message
+ assert not hasattr(c, "host")
+ assert c.browser_host == "foo.bar"
+
+
+def test_update_bogus():
+ c = config.Config()
+ with pytest.raises(KeyError):
+ c.update({"foobar": 1})
+
+
+def test_ports_auto():
+ c = config.Config(ports={"http": ["auto"]},
+ ssl={"type": "none"})
+ ports = c.ports
+ assert set(ports.keys()) == {"http"}
+ assert len(ports["http"]) == 1
+ assert isinstance(ports["http"][0], int)
+
+
+def test_ports_auto_mutate():
+ c = config.Config(ports={"http": [1001]},
+ ssl={"type": "none"})
+ orig_ports = c.ports
+ assert set(orig_ports.keys()) == {"http"}
+ assert orig_ports["http"] == [1001]
+
+ c.ports = {"http": ["auto"]}
+ new_ports = c.ports
+ assert set(new_ports.keys()) == {"http"}
+ assert len(new_ports["http"]) == 1
+ assert isinstance(new_ports["http"][0], int)
+
+
+def test_ports_auto_roundtrip():
+ c = config.Config(ports={"http": ["auto"]},
+ ssl={"type": "none"})
+ old_ports = c.ports
+ c.ports = old_ports
+ new_ports = c.ports
+ assert old_ports == new_ports
+
+
+def test_ports_idempotent():
+ c = config.Config(ports={"http": ["auto"]},
+ ssl={"type": "none"})
+ ports_a = c.ports
+ ports_b = c.ports
+ assert ports_a == ports_b
+
+
+def test_ports_explicit():
+ c = config.Config(ports={"http": [1001]},
+ ssl={"type": "none"})
+ ports = c.ports
+ assert set(ports.keys()) == {"http"}
+ assert ports["http"] == [1001]
+
+
+def test_ports_no_ssl():
+ c = config.Config(ports={"http": [1001], "https": [1002], "ws": [1003], "wss": [1004]},
+ ssl={"type": "none"})
+ ports = c.ports
+ assert set(ports.keys()) == {"http", "https", "ws", "wss"}
+ assert ports["http"] == [1001]
+ assert ports["https"] == [None]
+ assert ports["ws"] == [1003]
+ assert ports["wss"] == [None]
+
+
+def test_ports_openssl():
+ c = config.Config(ports={"http": [1001], "https": [1002], "ws": [1003], "wss": [1004]},
+ ssl={"type": "openssl"})
+ ports = c.ports
+ assert set(ports.keys()) == {"http", "https", "ws", "wss"}
+ assert ports["http"] == [1001]
+ assert ports["https"] == [1002]
+ assert ports["ws"] == [1003]
+ assert ports["wss"] == [1004]
+
+
+def test_doc_root_default():
+ c = config.Config()
+ assert c.doc_root == localpaths.repo_root
+
+
+def test_init_doc_root():
+ c = config.Config(doc_root="/")
+ assert c._doc_root == "/"
+ assert c.doc_root == "/"
+
+
+def test_set_doc_root():
+ c = config.Config()
+ c.doc_root = "/"
+ assert c._doc_root == "/"
+ assert c.doc_root == "/"
+
+
+def test_ws_doc_root_default():
+ c = config.Config()
+ assert c.ws_doc_root == os.path.join(localpaths.repo_root, "websockets", "handlers")
+
+
+def test_ws_doc_root_from_doc_root():
+ c = config.Config(doc_root="/foo")
+ assert c.ws_doc_root == os.path.join("/foo", "websockets", "handlers")
+
+
+def test_init_ws_doc_root():
+ c = config.Config(ws_doc_root="/")
+ assert c.doc_root == localpaths.repo_root # check this hasn't changed
+ assert c._ws_doc_root == "/"
+ assert c.ws_doc_root == "/"
+
+
+def test_set_ws_doc_root():
+ c = config.Config()
+ c.ws_doc_root = "/"
+ assert c.doc_root == localpaths.repo_root # check this hasn't changed
+ assert c._ws_doc_root == "/"
+ assert c.ws_doc_root == "/"
+
+
+def test_server_host_from_browser_host():
+ c = config.Config(browser_host="foo.bar")
+ assert c.server_host == "foo.bar"
+
+
+def test_init_server_host():
+ c = config.Config(server_host="foo.bar")
+ assert c.browser_host == "web-platform.test" # check this hasn't changed
+ assert c._server_host == "foo.bar"
+ assert c.server_host == "foo.bar"
+
+
+def test_set_server_host():
+ c = config.Config()
+ c.server_host = "/"
+ assert c.browser_host == "web-platform.test" # check this hasn't changed
+ assert c._server_host == "/"
+ assert c.server_host == "/"
+
+
+def test_domains():
+ c = config.Config(browser_host="foo.bar",
+ subdomains={"a", "b"},
+ not_subdomains={"x", "y"})
+ domains = c.domains
+ assert domains == {
+ "": "foo.bar",
+ "a": "a.foo.bar",
+ "b": "b.foo.bar",
+ }
+
+
+def test_not_domains():
+ c = config.Config(browser_host="foo.bar",
+ subdomains={"a", "b"},
+ not_subdomains={"x", "y"})
+ not_domains = c.not_domains
+ assert not_domains == {
+ "x": "x.foo.bar",
+ "y": "y.foo.bar",
+ }
+
+
+def test_domains_not_domains_intersection():
+ c = config.Config(browser_host="foo.bar",
+ subdomains={"a", "b"},
+ not_subdomains={"x", "y"})
+ domains = c.domains
+ not_domains = c.not_domains
+ assert len(set(domains.iterkeys()) & set(not_domains.iterkeys())) == 0
+ assert len(set(domains.itervalues()) & set(not_domains.itervalues())) == 0
+
+
+def test_all_domains():
+ c = config.Config(browser_host="foo.bar",
+ subdomains={"a", "b"},
+ not_subdomains={"x", "y"})
+ all_domains = c.all_domains
+ assert all_domains == {
+ "": "foo.bar",
+ "a": "a.foo.bar",
+ "b": "b.foo.bar",
+ "x": "x.foo.bar",
+ "y": "y.foo.bar",
+ }
+
+
+def test_ssl_env_override():
+ c = config.Config(override_ssl_env="foobar")
+ assert c.ssl_env == "foobar"
+
+
+def test_ssl_env_none():
+ c = config.Config(ssl={"type": "none"})
+ assert c.ssl_env is not None
+ assert c.ssl_env.ssl_enabled is False
+
+
+def test_ssl_env_openssl():
+ c = config.Config(ssl={"type": "openssl", "openssl": {"openssl_binary": "foobar"}})
+ assert c.ssl_env is not None
+ assert c.ssl_env.ssl_enabled is True
+ assert c.ssl_env.binary == "foobar"
+
+
+def test_ssl_env_bogus():
+ c = config.Config(ssl={"type": "foobar"})
+ with pytest.raises(ValueError):
+ c.ssl_env
+
+
+def test_pickle():
+ # Ensure that the config object can be pickled
+ pickle.dumps(config.Config())
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/test_replacement_tokenizer.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/test_replacement_tokenizer.py
new file mode 100644
index 00000000000..ea0c0c283ea
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/test_replacement_tokenizer.py
@@ -0,0 +1,37 @@
+import pytest
+
+from wptserve.pipes import ReplacementTokenizer
+
+@pytest.mark.parametrize(
+ "content,expected",
+ [
+ ["aaa", [('ident', 'aaa')]],
+ ["bbb()", [('ident', 'bbb'), ('arguments', [])]],
+ ["$ccc:ddd", [('var', '$ccc'), ('ident', 'ddd')]],
+ ["$eee", [('ident', '$eee')]],
+ ["fff[0]", [('ident', 'fff'), ('index', 0)]],
+ ["ggg[hhh]", [('ident', 'ggg'), ('index', u'hhh')]],
+ ["[iii]", [('index', u'iii')]],
+ ["jjj['kkk']", [('ident', 'jjj'), ('index', u"'kkk'")]],
+ ["lll[]", [('ident', 'lll'), ('index', u"")]],
+ ["111", [('ident', u'111')]],
+ ["$111", [('ident', u'$111')]],
+ ]
+)
+def test_tokenizer(content, expected):
+ tokenizer = ReplacementTokenizer()
+ tokens = tokenizer.tokenize(content)
+ assert expected == tokens
+
+
+@pytest.mark.parametrize(
+ "content,expected",
+ [
+ ["/", []],
+ ["$aaa: BBB", [('var', '$aaa')]],
+ ]
+)
+def test_tokenizer_errors(content, expected):
+ tokenizer = ReplacementTokenizer()
+ tokens = tokenizer.tokenize(content)
+ assert expected == tokens
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/config.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/config.py
new file mode 100644
index 00000000000..914f6ac43e3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/config.py
@@ -0,0 +1,245 @@
+import json
+import logging
+import os
+
+from collections import defaultdict, Mapping
+
+import sslutils
+
+from localpaths import repo_root
+
+from .utils import get_port
+
+
+_renamed_props = {
+ "host": "browser_host",
+ "bind_hostname": "bind_address",
+ "external_host": "server_host",
+ "host_ip": "server_host",
+}
+
+
+def _merge_dict(base_dict, override_dict):
+ rv = base_dict.copy()
+ for key, value in base_dict.iteritems():
+ if key in override_dict:
+ if isinstance(value, dict):
+ rv[key] = _merge_dict(value, override_dict[key])
+ else:
+ rv[key] = override_dict[key]
+ return rv
+
+
+class Config(Mapping):
+ """wptserve config
+
+ Inherits from Mapping for backwards compatibility with the old dict-based config"""
+
+ with open(os.path.join(repo_root, "config.default.json"), "rb") as _fp:
+ _default = json.load(_fp)
+
+ def __init__(self,
+ logger=None,
+ subdomains=set(),
+ not_subdomains=set(),
+ **kwargs):
+
+ self.log_level = kwargs.get("log_level", "DEBUG")
+
+ if logger is None:
+ self._logger_name = "web-platform-tests"
+ else:
+ level_name = logging.getLevelName(logger.level)
+ if level_name != "NOTSET":
+ self.log_level = level_name
+ self._logger_name = logger.name
+
+ for k, v in self._default.iteritems():
+ setattr(self, k, kwargs.pop(k, v))
+
+ self.subdomains = subdomains
+ self.not_subdomains = not_subdomains
+
+ for k, new_k in _renamed_props.iteritems():
+ if k in kwargs:
+ self.logger.warning(
+ "%s in config is deprecated; use %s instead" % (
+ k,
+ new_k
+ )
+ )
+ setattr(self, new_k, kwargs.pop(k))
+
+ self.override_ssl_env = kwargs.pop("override_ssl_env", None)
+
+ if kwargs:
+ raise TypeError("__init__() got unexpected keyword arguments %r" % (tuple(kwargs),))
+
+ def __getitem__(self, k):
+ try:
+ return getattr(self, k)
+ except AttributeError:
+ raise KeyError(k)
+
+ def __iter__(self):
+ return iter([x for x in dir(self) if not x.startswith("_")])
+
+ def __len__(self):
+ return len([x for x in dir(self) if not x.startswith("_")])
+
+ def update(self, override):
+ """Load an overrides dict to override config values"""
+ override = override.copy()
+
+ for k in self._default:
+ if k in override:
+ self._set_override(k, override.pop(k))
+
+ for k, new_k in _renamed_props.iteritems():
+ if k in override:
+ self.logger.warning(
+ "%s in config is deprecated; use %s instead" % (
+ k,
+ new_k
+ )
+ )
+ self._set_override(new_k, override.pop(k))
+
+ if override:
+ k = next(iter(override))
+ raise KeyError("unknown config override '%s'" % k)
+
+ def _set_override(self, k, v):
+ old_v = getattr(self, k)
+ if isinstance(old_v, dict):
+ setattr(self, k, _merge_dict(old_v, v))
+ else:
+ setattr(self, k, v)
+
+ @property
+ def ports(self):
+ try:
+ old_ports = self._computed_ports
+ except AttributeError:
+ old_ports = {}
+
+ self._computed_ports = defaultdict(list)
+
+ for scheme, ports in self._ports.iteritems():
+ for i, port in enumerate(ports):
+ if scheme in ["wss", "https"] and not self.ssl_env.ssl_enabled:
+ port = None
+ if port == "auto":
+ try:
+ port = old_ports[scheme][i]
+ except (KeyError, IndexError):
+ port = get_port(self.server_host)
+ else:
+ port = port
+ self._computed_ports[scheme].append(port)
+
+ return self._computed_ports
+
+ @ports.setter
+ def ports(self, v):
+ self._ports = v
+
+ @property
+ def doc_root(self):
+ return self._doc_root if self._doc_root is not None else repo_root
+
+ @doc_root.setter
+ def doc_root(self, v):
+ self._doc_root = v
+
+ @property
+ def ws_doc_root(self):
+ if self._ws_doc_root is not None:
+ return self._ws_doc_root
+ else:
+ return os.path.join(self.doc_root, "websockets", "handlers")
+
+ @ws_doc_root.setter
+ def ws_doc_root(self, v):
+ self._ws_doc_root = v
+
+ @property
+ def server_host(self):
+ return self._server_host if self._server_host is not None else self.browser_host
+
+ @server_host.setter
+ def server_host(self, v):
+ self._server_host = v
+
+ @property
+ def domains(self):
+ assert self.browser_host.encode("idna") == self.browser_host
+ domains = {subdomain: (subdomain.encode("idna") + u"." + self.browser_host)
+ for subdomain in self.subdomains}
+ domains[""] = self.browser_host
+ return domains
+
+ @property
+ def not_domains(self):
+ assert self.browser_host.encode("idna") == self.browser_host
+ domains = {subdomain: (subdomain.encode("idna") + u"." + self.browser_host)
+ for subdomain in self.not_subdomains}
+ return domains
+
+ @property
+ def all_domains(self):
+ domains = self.domains.copy()
+ domains.update(self.not_domains)
+ return domains
+
+ @property
+ def ssl_env(self):
+ try:
+ if self.override_ssl_env is not None:
+ return self.override_ssl_env
+ except AttributeError:
+ pass
+
+ implementation_type = self.ssl["type"]
+
+ try:
+ cls = sslutils.environments[implementation_type]
+ except KeyError:
+ raise ValueError("%s is not a vaid ssl type." % implementation_type)
+ kwargs = self.ssl.get(implementation_type, {}).copy()
+ return cls(self.logger, **kwargs)
+
+ @property
+ def paths(self):
+ return {"doc_root": self.doc_root,
+ "ws_doc_root": self.ws_doc_root}
+
+ @property
+ def ssl_config(self):
+ key_path, cert_path = self.ssl_env.host_cert_path(self.domains.itervalues())
+ return {"key_path": key_path,
+ "cert_path": cert_path,
+ "encrypt_after_connect": self.ssl["encrypt_after_connect"]}
+
+ @property
+ def log_level(self):
+ return getattr(logging, self._log_level)
+
+ @log_level.setter
+ def log_level(self, value):
+ self._log_level = value.upper()
+
+ @property
+ def logger(self):
+ logger = logging.getLogger(self._logger_name)
+ logger.setLevel(self.log_level)
+ return logger
+
+ def as_dict(self):
+ rv = {
+ "domains": list(self.domains),
+ "sundomains": list(self.subdomains),
+ }
+ for item in self._default.iterkeys():
+ rv[item] = getattr(self, item)
+ return rv
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py
index 6c0297f2579..4536c06acc6 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/handlers.py
@@ -1,6 +1,7 @@
import cgi
import json
import os
+import sys
import traceback
from six.moves.urllib.parse import parse_qs, quote, unquote, urljoin
@@ -231,8 +232,11 @@ class PythonScriptHandler(object):
def __call__(self, request, response):
path = filesystem_path(self.base_path, request, self.url_base)
+ sys_path = sys.path[:]
+ sys_modules = sys.modules.copy()
try:
environ = {"__file__": path}
+ sys.path.insert(0, os.path.dirname(path))
execfile(path, environ, environ)
if "main" in environ:
handler = FunctionHandler(environ["main"])
@@ -242,6 +246,10 @@ class PythonScriptHandler(object):
raise HTTPException(500, "No main function in script %s" % path)
except IOError:
raise HTTPException(404)
+ finally:
+ sys.path = sys_path
+ sys.modules = sys_modules
+
python_script_handler = PythonScriptHandler()
@@ -252,6 +260,8 @@ class FunctionHandler(object):
def __call__(self, request, response):
try:
rv = self.func(request, response)
+ except HTTPException:
+ raise
except Exception:
msg = traceback.format_exc()
raise HTTPException(500, message=msg)
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py
index 126a68e32eb..f061f8392c7 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/pipes.py
@@ -1,5 +1,7 @@
from cgi import escape
import gzip as gzip_module
+import hashlib
+import os
import re
import time
import types
@@ -277,6 +279,10 @@ def slice(request, response, start, end=None):
class ReplacementTokenizer(object):
+ def arguments(self, token):
+ unwrapped = token[1:-1]
+ return ("arguments", re.split(r",\s*", token[1:-1]) if unwrapped else [])
+
def ident(self, token):
return ("ident", token)
@@ -296,8 +302,9 @@ class ReplacementTokenizer(object):
return self.scanner.scan(string)[0]
scanner = re.Scanner([(r"\$\w+:", var),
- (r"\$?\w+(?:\(\))?", ident),
- (r"\[[^\]]*\]", index)])
+ (r"\$?\w+", ident),
+ (r"\[[^\]]*\]", index),
+ (r"\([^)]*\)", arguments)])
class FirstWrapper(object):
@@ -339,6 +346,11 @@ def sub(request, response, escape_type="html"):
A dictionary of query parameters supplied with the request.
uuid()
A pesudo-random UUID suitable for usage with stash
+ file_hash(algorithm, filepath)
+ The cryptographic hash of a file. Supported algorithms: md5, sha1,
+ sha224, sha256, sha384, and sha512. For example:
+
+ {{file_hash(md5, dom/interfaces.html)}}
So for example in a setup running on localhost with a www
subdomain and a http server on ports 80 and 81::
@@ -351,7 +363,7 @@ def sub(request, response, escape_type="html"):
It is also possible to assign a value to a variable name, which must start with
the $ character, using the ":" syntax e.g.
- {{$id:uuid()}
+ {{$id:uuid()}}
Later substitutions in the same file may then refer to the variable
by name e.g.
@@ -365,6 +377,39 @@ def sub(request, response, escape_type="html"):
response.content = new_content
return response
+class SubFunctions(object):
+ @staticmethod
+ def uuid(request):
+ return str(uuid.uuid4())
+
+ # Maintain a whitelist of supported algorithms, restricted to those that
+ # are available on all platforms [1]. This ensures that test authors do not
+ # unknowingly introduce platform-specific tests.
+ #
+ # [1] https://docs.python.org/2/library/hashlib.html
+ supported_algorithms = ("md5", "sha1", "sha224", "sha256", "sha384", "sha512")
+
+ @staticmethod
+ def file_hash(request, algorithm, path):
+ if algorithm not in SubFunctions.supported_algorithms:
+ raise ValueError("Unsupported encryption algorithm: '%s'" % algorithm)
+
+ hash_obj = getattr(hashlib, algorithm)()
+ absolute_path = os.path.join(request.doc_root, path)
+
+ try:
+ with open(absolute_path) as f:
+ hash_obj.update(f.read())
+ except IOError:
+ # In this context, an unhandled IOError will be interpreted by the
+ # server as an indication that the template file is non-existent.
+ # Although the generic "Exception" is less precise, it avoids
+ # triggering a potentially-confusing HTTP 404 error in cases where
+ # the path to the file to be hashed is invalid.
+ raise Exception('Cannot open file for hash computation: "%s"' % absolute_path)
+
+ return hash_obj.digest().encode('base64').strip()
+
def template(request, content, escape_type="html"):
#TODO: There basically isn't any error handling here
tokenizer = ReplacementTokenizer()
@@ -382,12 +427,15 @@ def template(request, content, escape_type="html"):
else:
variable = None
- assert tokens[0][0] == "ident" and all(item[0] == "index" for item in tokens[1:]), tokens
+ assert tokens[0][0] == "ident", tokens
+ assert all(item[0] in ("index", "arguments") for item in tokens[1:]), tokens
field = tokens[0][1]
if field in variables:
value = variables[field]
+ elif hasattr(SubFunctions, field):
+ value = getattr(SubFunctions, field)
elif field == "headers":
value = request.headers
elif field == "GET":
@@ -414,15 +462,16 @@ def template(request, content, escape_type="html"):
"path": request.url_parts.path,
"pathname": request.url_parts.path,
"query": "?%s" % request.url_parts.query}
- elif field == "uuid()":
- value = str(uuid.uuid4())
elif field == "url_base":
value = request.url_base
else:
raise Exception("Undefined template variable %s" % field)
for item in tokens[1:]:
- value = value[item[1]]
+ if item[0] == "index":
+ value = value[item[1]]
+ else:
+ value = value(request, *item[1])
assert isinstance(value, (int,) + types.StringTypes), tokens
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py
index d1ef750861c..a678452cd75 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py
@@ -400,9 +400,10 @@ class WebTestHttpd(object):
server_cls = WebTestServer
if use_ssl:
- if key_file is not None:
- assert os.path.exists(key_file)
- assert certificate is not None and os.path.exists(certificate)
+ if not os.path.exists(key_file):
+ raise ValueError("SSL certificate not found: {}".format(key_file))
+ if not os.path.exists(certificate):
+ raise ValueError("SSL key not found: {}".format(certificate))
try:
self.httpd = server_cls((host, port),
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py
index e57ff196a8a..288f066a8ef 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/utils.py
@@ -1,3 +1,5 @@
+import socket
+
def invert_dict(dict):
rv = {}
for key, values in dict.iteritems():
@@ -12,3 +14,93 @@ class HTTPException(Exception):
def __init__(self, code, message=""):
self.code = code
self.message = message
+
+
+def _open_socket(host, port):
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ if port != 0:
+ sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ sock.bind((host, port))
+ sock.listen(5)
+ return sock
+
+def is_bad_port(port):
+ """
+ Bad port as per https://fetch.spec.whatwg.org/#port-blocking
+ """
+ return port in [
+ 1, # tcpmux
+ 7, # echo
+ 9, # discard
+ 11, # systat
+ 13, # daytime
+ 15, # netstat
+ 17, # qotd
+ 19, # chargen
+ 20, # ftp-data
+ 21, # ftp
+ 22, # ssh
+ 23, # telnet
+ 25, # smtp
+ 37, # time
+ 42, # name
+ 43, # nicname
+ 53, # domain
+ 77, # priv-rjs
+ 79, # finger
+ 87, # ttylink
+ 95, # supdup
+ 101, # hostriame
+ 102, # iso-tsap
+ 103, # gppitnp
+ 104, # acr-nema
+ 109, # pop2
+ 110, # pop3
+ 111, # sunrpc
+ 113, # auth
+ 115, # sftp
+ 117, # uucp-path
+ 119, # nntp
+ 123, # ntp
+ 135, # loc-srv / epmap
+ 139, # netbios
+ 143, # imap2
+ 179, # bgp
+ 389, # ldap
+ 465, # smtp+ssl
+ 512, # print / exec
+ 513, # login
+ 514, # shell
+ 515, # printer
+ 526, # tempo
+ 530, # courier
+ 531, # chat
+ 532, # netnews
+ 540, # uucp
+ 556, # remotefs
+ 563, # nntp+ssl
+ 587, # smtp
+ 601, # syslog-conn
+ 636, # ldap+ssl
+ 993, # imap+ssl
+ 995, # pop3+ssl
+ 2049, # nfs
+ 3659, # apple-sasl
+ 4045, # lockd
+ 6000, # x11
+ 6665, # irc (alternate)
+ 6666, # irc (alternate)
+ 6667, # irc (default)
+ 6668, # irc (alternate)
+ 6669, # irc (alternate)
+ ]
+
+def get_port(host):
+ port = 0
+ while True:
+ free_socket = _open_socket(host, 0)
+ port = free_socket.getsockname()[1]
+ free_socket.close()
+ if not is_bad_port(port):
+ break
+ return port
diff --git a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade.sub.https.html b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade.sub.https.html
index 6b315c83df7..46788e8883c 100644
--- a/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade.sub.https.html
+++ b/tests/wpt/web-platform-tests/upgrade-insecure-requests/link-upgrade.sub.https.html
@@ -2,6 +2,7 @@
<html>
<head>
+ <meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
@@ -56,7 +57,7 @@
});
});
- test.step_timeout(function(){test.force_timeout()}, 5000);
+ test.step_timeout(function(){test.force_timeout()}, 10000);
}
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/url/urlsearchparams-foreach.html b/tests/wpt/web-platform-tests/url/urlsearchparams-foreach.html
index faa699cae1f..33d1055b81c 100644
--- a/tests/wpt/web-platform-tests/url/urlsearchparams-foreach.html
+++ b/tests/wpt/web-platform-tests/url/urlsearchparams-foreach.html
@@ -36,4 +36,48 @@ test(function() {
assert_unreached(i);
}
}, "empty");
+
+test(function() {
+ const url = new URL("http://localhost/query?param0=0&param1=1&param2=2");
+ const searchParams = url.searchParams;
+ const seen = [];
+ for (const param of searchParams) {
+ if (param[0] === 'param0') {
+ searchParams.delete('param1');
+ }
+ seen.push(param);
+ }
+
+ assert_array_equals(seen[0], ["param0", "0"]);
+ assert_array_equals(seen[1], ["param2", "2"]);
+}, "delete next param during iteration");
+
+test(function() {
+ const url = new URL("http://localhost/query?param0=0&param1=1&param2=2");
+ const searchParams = url.searchParams;
+ const seen = [];
+ for (const param of searchParams) {
+ if (param[0] === 'param0') {
+ searchParams.delete('param0');
+ // 'param1=1' is now in the first slot, so the next iteration will see 'param2=2'.
+ } else {
+ seen.push(param);
+ }
+ }
+
+ assert_array_equals(seen[0], ["param2", "2"]);
+}, "delete current param during iteration");
+
+test(function() {
+ const url = new URL("http://localhost/query?param0=0&param1=1&param2=2");
+ const searchParams = url.searchParams;
+ const seen = [];
+ for (const param of searchParams) {
+ seen.push(param[0]);
+ searchParams.delete(param[0]);
+ }
+
+ assert_array_equals(seen, ["param0", "param2"], "param1 should not have been seen by the loop");
+ assert_equals(String(searchParams), "param1=1", "param1 should remain");
+}, "delete every param seen during iteration");
</script>
diff --git a/tests/wpt/web-platform-tests/user-timing/clearMarks.html b/tests/wpt/web-platform-tests/user-timing/clearMarks.html
new file mode 100644
index 00000000000..22d67262c3d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/user-timing/clearMarks.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>functionality test of window.performance.clearMarks</title>
+<link rel="author" title="Intel" href="http://www.intel.com/" />
+<link rel="help" href="http://www.w3.org/TR/user-timing/#extensions-performance-interface"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/performance-timeline-utils.js"></script>
+<script src="resources/webperftestharness.js"></script>
+<script src="resources/webperftestharnessextension.js"></script>
+<script>
+setup({ explicit_done: true });
+
+function onload_test()
+{
+ const entrylist_checker = new performance_entrylist_checker('mark');
+ const string_mark_names = mark_names.map(function (x) { return String(x)});
+ mark_names.forEach(performance.mark, performance);
+
+ for (let i = 0; i < mark_names.length; ++i)
+ {
+ performance.clearMarks(mark_names[i]);
+ const retained_entries = performance.getEntriesByType('mark');
+ const non_retained_entries = performance.getEntriesByName(mark_names[i], 'mark');
+ entrylist_checker.entrylist_check(retained_entries, mark_names.length - i - 1, string_mark_names,
+ 'First loop: checking entries after removing "' + mark_names[i] + '". ');
+ test_equals(non_retained_entries.length, 0,
+ 'First loop: marks that we cleared for "' + mark_names[i] + '" should not exist anymore.');
+ }
+
+ mark_names.forEach(performance.mark, performance);
+ performance.clearMarks();
+ test_equals(performance.getEntriesByType('mark').length, 0, 'No marks should exist after we clear all.');
+
+ // Following cases test clear existed mark name that is tied for two times.
+ mark_names.forEach(performance.mark, performance);
+ mark_names.forEach(performance.mark, performance);
+
+ for (let i = 0; i < mark_names.length; ++i)
+ {
+ performance.clearMarks(mark_names[i]);
+ const retained_entries = performance.getEntriesByType('mark');
+ const non_retained_entries = performance.getEntriesByName(mark_names[i], 'mark');
+ entrylist_checker.entrylist_check(retained_entries, (mark_names.length - i - 1) * 2, string_mark_names,
+ 'Second loop: checking entries after removing "' + mark_names[i] + '". ');
+ test_equals(non_retained_entries.length, 0,
+ 'Second loop: marks that we cleared for "' + mark_names[i] + '" should not exist anymore.');
+ }
+
+ // Following cases test clear functionality when mark names are tied for two times.
+ mark_names.forEach(performance.mark, performance);
+ mark_names.forEach(performance.mark, performance);
+ var entry_number_before_useless_clear = performance.getEntriesByType('Mark').length;
+ performance.clearMarks('NonExist');
+ var entry_number_after_useless_clear = performance.getEntriesByType('Mark').length;
+ test_equals(entry_number_before_useless_clear, entry_number_after_useless_clear, 'Nothing should happen if we clear a non-exist mark.');
+
+ performance.clearMarks();
+ test_equals(performance.getEntriesByType('mark').length, 0, 'No marks should exist when we clear all.');
+
+ done();
+}
+</script>
+</head>
+<body onload=onload_test()>
+ <h1>Description</h1>
+ <p>This test validates functionality of the interface window.performance.clearMarks.</p>
+ <div id="log"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/user-timing/clearMeasures.html b/tests/wpt/web-platform-tests/user-timing/clearMeasures.html
new file mode 100644
index 00000000000..488bece3733
--- /dev/null
+++ b/tests/wpt/web-platform-tests/user-timing/clearMeasures.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>functionality test of window.performance.clearMeasures</title>
+<link rel="author" title="Intel" href="http://www.intel.com/" />
+<link rel="help" href="http://www.w3.org/TR/user-timing/#extensions-performance-interface"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/performance-timeline-utils.js"></script>
+<script src="resources/webperftestharness.js"></script>
+<script src="resources/webperftestharnessextension.js"></script>
+<script>
+setup({ explicit_done: true });
+
+function onload_test()
+{
+ const context = new PerformanceContext(window.performance);
+ const entrylist_checker = new performance_entrylist_checker('measure');
+ const measure_names = measures.map(function(x) {return x[0];});
+
+ mark_names.forEach(context.mark, context);
+ measures.forEach(context.initialMeasures, context);
+ for (let i = 0; i < measures.length; ++i)
+ {
+ context.clearMeasures(measures[i][0]);
+ const retained_entries = context.getEntriesByType('measure');
+ const non_retained_entries = context.getEntriesByName(measures[i][0], 'measure');
+ entrylist_checker.entrylist_check(retained_entries, measures.length - i - 1, measure_names,
+ 'First loop: checking entries after removing "' + measures[i][0] + '". ');
+ test_equals(non_retained_entries.length, 0,
+ 'First loop: measure "' + measures[i][0] + '" should not exist anymore after we cleared it.');
+ }
+
+ measures.forEach(context.initialMeasures, context);
+ context.clearMeasures();
+ test_equals(context.getEntriesByType('measure').length, 0, 'No measures should exist after we clear all (after first loop).');
+
+ // Following cases test clear existed measure name that is tied twice.
+ measures.forEach(context.initialMeasures, context);
+ mark_names.forEach(context.mark, context);
+ measures.forEach(context.initialMeasures, context);
+ for (let i = 0; i < measures.length; ++i)
+ {
+ context.clearMeasures(measures[i][0]);
+ const retained_entries = context.getEntriesByType('measure');
+ const non_retained_entries = context.getEntriesByName(measures[i][0], 'measure');
+ entrylist_checker.entrylist_check(retained_entries, (measures.length - i - 1) * 2, measure_names,
+ 'Second loop: checking entries after removing "' + measures[i][0] + '". ');
+ test_equals(non_retained_entries.length, 0,
+ 'Second loop: measure "' + measures[i][0] +'" should not exist anymore after we cleared it.');
+ }
+
+ // Following cases test clear functionality when measure names are tied twice.
+ measures.forEach(context.initialMeasures, context);
+ measures.forEach(context.initialMeasures, context);
+ const entry_number_before_useless_clear = context.getEntriesByType('measure').length;
+ context.clearMeasures('NonExist');
+ const entry_number_after_useless_clear = context.getEntriesByType('measure').length;
+ test_equals(entry_number_before_useless_clear, entry_number_after_useless_clear, 'Nothing should happen if we clear a non-exist measure');
+ context.clearMeasures();
+ test_equals(context.getEntriesByType('measure').length, 0, 'No measures should exist when we clear all (after second loop).');
+
+ done();
+}
+</script>
+</head>
+<body onload=onload_test()>
+ <h1>Description</h1>
+ <p>This test validates functionality of the interface window.performance.clearMeasures.</p>
+ <div id="log"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/user-timing/mark.html b/tests/wpt/web-platform-tests/user-timing/mark.html
new file mode 100644
index 00000000000..a7074f1efdb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/user-timing/mark.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>functionality test of window.performance.mark</title>
+<link rel="author" title="Intel" href="http://www.intel.com/" />
+<link rel="help" href="http://www.w3.org/TR/user-timing/#extensions-performance-interface"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/performance-timeline-utils.js"></script>
+<script src="resources/webperftestharness.js"></script>
+<script src="resources/webperftestharnessextension.js"></script>
+<script>
+setup({ explicit_done: true });
+
+function onload_test()
+{
+ const entrylist_checker = new performance_entrylist_checker('mark');
+ const string_mark_names = mark_names.map(function (x) { return String(x)});
+
+ test_equals(performance.getEntriesByType("mark").length, 0, 'There should be ' + 0 + ' marks');
+ mark_names.forEach(performance.mark, performance);
+ let mark_entrylist = performance.getEntriesByType('mark');
+
+ entrylist_checker.entrylist_check(mark_entrylist, mark_names.length, string_mark_names, 'Checking all entries.');
+
+ for (let i = 0; i < mark_entrylist.length; ++i)
+ {
+ const mark_entrylist_by_name = performance.getEntriesByName(mark_entrylist[i].name, 'mark');
+ entrylist_checker.entrylist_check(mark_entrylist_by_name, 1, string_mark_names,
+ 'First loop: checking entry of name "' + mark_entrylist[i].name + '".');
+ }
+
+ mark_names.forEach(performance.mark, performance);
+ mark_entrylist = performance.getEntriesByType('mark');
+ entrylist_checker.entrylist_check(mark_entrylist, mark_names.length * 2, string_mark_names, 'Checking all doubly marked entries.');
+
+ for (let i = 0; i < mark_entrylist.length; ++i)
+ {
+ const mark_entrylist_by_name = performance.getEntriesByName(mark_entrylist[i].name, 'mark');
+ entrylist_checker.entrylist_check(mark_entrylist_by_name, 2, string_mark_names,
+ 'Second loop step ' + i + ': checking entries of name "' + mark_entrylist[i].name + '".');
+ }
+
+ done();
+}
+</script>
+</head>
+<body onload=onload_test()>
+ <h1>Description</h1>
+ <p>This test validates functionality of the interface window.performance.mark.</p>
+ <div id="log"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/user-timing/mark_exceptions.html b/tests/wpt/web-platform-tests/user-timing/mark_exceptions.html
index 477b3fabbba..e1f4c4e0f49 100644
--- a/tests/wpt/web-platform-tests/user-timing/mark_exceptions.html
+++ b/tests/wpt/web-platform-tests/user-timing/mark_exceptions.html
@@ -18,6 +18,12 @@ function test_exception(attrName) {
}, "window.performance.mark(\"" + attrName + "\") throws a SyntaxError exception.");
}
+test(() => {
+ assert_throws(new TypeError(), function() {
+ window.performance.mark();
+ });
+}, 'window.performance.mark() throws a TypeError exception.')
+
// loop through mark scenarios
for (var i in timingAttributes) {
test_exception(timingAttributes[i]);
diff --git a/tests/wpt/web-platform-tests/user-timing/measure_associated_with_navigation_timing.html b/tests/wpt/web-platform-tests/user-timing/measure_associated_with_navigation_timing.html
new file mode 100644
index 00000000000..9fd4664b9e9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/user-timing/measure_associated_with_navigation_timing.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>functionality test of window.performance.measure</title>
+<link rel="author" title="Intel" href="http://www.intel.com/" />
+<link rel="help" href="http://www.w3.org/TR/user-timing/#extensions-performance-interface"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/performance-timeline-utils.js"></script>
+<script src="resources/webperftestharness.js"></script>
+<script src="resources/webperftestharnessextension.js"></script>
+<script>
+setup({ explicit_done: true });
+
+function onload_test()
+{
+ const measures_for_timing_order = [
+ ['nav2now', 'navigationStart'],
+ ['loadTime', 'navigationStart', 'loadEventEnd'],
+ ['loadEventEnd2a', 'loadEventEnd', 'abc'],
+ ['nav2a', 'navigationStart', 'abc'],
+ ['domComplete2a', 'domComplete', 'abc'],
+ ['negativeValue', 1, 'navigationStart'],
+ ];
+ const context = new PerformanceContext(window.performance);
+
+ mark_names.forEach(context.mark, context);
+ measures_for_timing_order.forEach(context.initialMeasures, context);
+ test_greater_than(context.getEntriesByName('nav2now', 'measure')[0].duration, 0, 'Measure of navigationStart to now should be positive value.');
+ test_greater_than(context.getEntriesByName('loadTime', 'measure')[0].duration, 0, 'Measure of navigationStart to loadEventEnd should be positive value.');
+ test_greater_than(0, context.getEntriesByName('negativeValue', 'measure')[0].duration, 'Measure of current mark to navigationStart should be negative value.');
+ test_equals(context.getEntriesByName('loadTime', 'measure')[0].duration + context.getEntriesByName('loadEventEnd2a', 'measure')[0].duration, context.getEntriesByName('nav2a', 'measure')[0].duration, 'loadTime plus loadEventEnd to a mark "a" should equal to navigationStart to "a".');
+
+ // Following cases test for scenarios that measure names are tied twice.
+ mark_names.forEach(context.mark, context);
+ measures_for_timing_order.forEach(context.initialMeasures, context);
+
+ test_greater_than(context.getEntriesByName('nav2now', 'measure')[1].duration, context.getEntriesByName('nav2now', 'measure')[0].duration, 'Second measure of current mark to navigationStart should be negative value.');
+ test_equals(context.getEntriesByName('loadTime', 'measure')[0].duration, context.getEntriesByName('loadTime', 'measure')[1].duration, 'Measures of loadTime should have same duration.');
+ test_greater_than(context.getEntriesByName('domComplete2a', 'measure')[1].duration, context.getEntriesByName('domComplete2a', 'measure')[0].duration, 'Measure from domComplete event to most recent mark "a" should have longer duration.');
+ test_greater_than(context.getEntriesByName('negativeValue', 'measure')[0].duration, context.getEntriesByName('negativeValue', 'measure')[1].duration, 'Measure from most recent mark to navigationStart should have longer duration.');
+
+ done();
+}
+</script>
+</head>
+<body onload="setTimeout(onload_test,0)">
+ <h1>Description</h1>
+ <p>This test validates functionality of the interface window.performance.measure using keywords from the Navigation Timing spec.</p>
+ <div id="log"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/user-timing/measure_exception.html b/tests/wpt/web-platform-tests/user-timing/measure_exception.html
new file mode 100644
index 00000000000..8783ff7e226
--- /dev/null
+++ b/tests/wpt/web-platform-tests/user-timing/measure_exception.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>exception test of window.performance.measure</title>
+<link rel="author" title="Intel" href="http://www.intel.com/" />
+<link rel="help" href="http://www.w3.org/TR/user-timing/#extensions-performance-interface"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/performance-timeline-utils.js"></script>
+<script src="resources/webperftestharness.js"></script>
+<script src="resources/webperftestharnessextension.js"></script>
+</head>
+
+<body>
+<h1>Description</h1>
+<p>This test validates all exception scenarios of method window.performance.measure in User Timing API</p>
+
+<div id="log"></div>
+<script>
+performance.mark('ExistMark');
+test_method_throw_exception('performance.measure()', TypeError());
+test_method_throw_exception('performance.measure("Exception1", "NonExistMark1")', 'SYNTAX_ERR');
+test_method_throw_exception('performance.measure("Exception2", "NonExistMark1", "navigationStart")', 'SYNTAX_ERR');
+test_method_throw_exception('performance.measure("Exception3", "navigationStart", "NonExistMark1")', 'SYNTAX_ERR');
+test_method_throw_exception('performance.measure("Exception4", "NonExistMark1", "ExistMark")', 'SYNTAX_ERR');
+test_method_throw_exception('performance.measure("Exception5", "ExistMark", "NonExistMark1")', 'SYNTAX_ERR');
+test_method_throw_exception('performance.measure("Exception6", "NonExistMark1", "NonExistMark2")', 'SYNTAX_ERR');
+test_method_throw_exception('performance.measure("Exception7", "redirectStart")', 'INVALID_ACCESS_ERR');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/user-timing/measures.html b/tests/wpt/web-platform-tests/user-timing/measures.html
new file mode 100644
index 00000000000..d0ab11e39ae
--- /dev/null
+++ b/tests/wpt/web-platform-tests/user-timing/measures.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8" />
+<title>functionality test of window.performance.measure</title>
+<link rel="author" title="Intel" href="http://www.intel.com/" />
+<link rel="help" href="http://www.w3.org/TR/user-timing/#extensions-performance-interface"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/performance-timeline-utils.js"></script>
+<script src="resources/webperftestharness.js"></script>
+<script src="resources/webperftestharnessextension.js"></script>
+<script>
+setup({ explicit_done: true });
+
+function onload_test()
+{
+ const context = new PerformanceContext(window.performance);
+ const entrylist_checker = new performance_entrylist_checker('measure');
+ const measure_names = measures.map(function(x) {return x[0];});
+
+ test_equals(context.getEntriesByType('measure').length, 0, 'There should be ' + 0 + ' entries returned.');
+
+ mark_names.forEach(context.mark, context);
+ measures.forEach(context.initialMeasures, context);
+
+ let measure_entrylist = context.getEntriesByType('measure');
+ entrylist_checker.entrylist_check(measure_entrylist, measures.length, measure_names,
+ 'Checking all entries.');
+
+ for (let i = 0; i < measure_entrylist.length; ++i)
+ {
+ const measure_entrylist_by_name = context.getEntriesByName(measure_entrylist[i].name, 'measure');
+ entrylist_checker.entrylist_check(measure_entrylist_by_name, 1, measure_names,
+ 'First loop: checking entry of name "' + measure_entrylist[i].name + '".');
+ }
+
+ // Following cases test for scenarios that measure names are tied for two times
+ mark_names.forEach(context.mark, context);
+ measures.forEach(context.initialMeasures, context);
+
+ measure_entrylist = context.getEntriesByType('measure');
+ entrylist_checker.entrylist_check(measure_entrylist, measures.length * 2, measure_names,
+ 'Checking all doubly measured entries.');
+
+ for (let i = 0; i < measure_entrylist.length; ++i)
+ {
+ const measure_entrylist_by_name = context.getEntriesByName(measure_entrylist[i].name, 'measure');
+ entrylist_checker.entrylist_check(measure_entrylist_by_name, 2, measure_names,
+ 'Second loop step ' + i + ': checking entry of name "' + measure_entrylist[i].name + '".');
+ }
+
+ done();
+}
+</script>
+</head>
+<body onload=onload_test()>
+ <h1>Description</h1>
+ <p>This test validates functionality of the interface window.performance.measure.</p>
+ <div id="log"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/user-timing/resources/webperftestharnessextension.js b/tests/wpt/web-platform-tests/user-timing/resources/webperftestharnessextension.js
index 579ee9096aa..822376be24c 100644
--- a/tests/wpt/web-platform-tests/user-timing/resources/webperftestharnessextension.js
+++ b/tests/wpt/web-platform-tests/user-timing/resources/webperftestharnessextension.js
@@ -88,28 +88,29 @@ function test_resource_entries(entries, expected_entries)
}
}
}
+
function performance_entrylist_checker(type)
{
- var entryType = type;
+ const entryType = type;
- function entry_check(entry, expectedNames)
+ function entry_check(entry, expectedNames, testDescription = '')
{
- var msg = 'Entry \"' + entry.name + '\" should be one that we have set.';
+ const msg = testDescription + 'Entry \"' + entry.name + '\" should be one that we have set.';
wp_test(function() { assert_in_array(entry.name, expectedNames, msg); }, msg);
- test_equals(entry.entryType, entryType, 'entryType should be \"' + entryType + '\".');
+ test_equals(entry.entryType, entryType, testDescription + 'entryType should be \"' + entryType + '\".');
if (type === "measure") {
- test_true(isFinite(entry.startTime), 'startTime should be a number.');
- test_true(isFinite(entry.duration), 'duration should be a number.');
+ test_true(isFinite(entry.startTime), testDescription + 'startTime should be a number.');
+ test_true(isFinite(entry.duration), testDescription + 'duration should be a number.');
} else if (type === "mark") {
- test_greater_than(entry.startTime, 0, 'startTime should greater than 0.');
- test_equals(entry.duration, 0, 'duration of mark should be 0.');
+ test_greater_than(entry.startTime, 0, testDescription + 'startTime should greater than 0.');
+ test_equals(entry.duration, 0, testDescription + 'duration of mark should be 0.');
}
}
function entrylist_order_check(entryList)
{
- var inOrder = true;
- for (var i = 0; i < entryList.length - 1; ++i)
+ let inOrder = true;
+ for (let i = 0; i < entryList.length - 1; ++i)
{
if (entryList[i + 1].startTime < entryList[i].startTime) {
inOrder = false;
@@ -119,13 +120,13 @@ function performance_entrylist_checker(type)
return inOrder;
}
- function entrylist_check(entryList, expectedLength, expectedNames)
+ function entrylist_check(entryList, expectedLength, expectedNames, testDescription = '')
{
- test_equals(entryList.length, expectedLength, 'There should be ' + expectedLength + ' entries.');
- test_true(entrylist_order_check(entryList), 'Entries in entrylist should be in order.');
- for (var i = 0; i < entryList.length; ++i)
+ test_equals(entryList.length, expectedLength, testDescription + 'There should be ' + expectedLength + ' entries.');
+ test_true(entrylist_order_check(entryList), testDescription + 'Entries in entrylist should be in order.');
+ for (let i = 0; i < entryList.length; ++i)
{
- entry_check(entryList[i], expectedNames);
+ entry_check(entryList[i], expectedNames, testDescription + 'Entry_list ' + i + '. ');
}
}
diff --git a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js
index 400e12dba9d..6e526b67b9a 100644
--- a/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js
+++ b/tests/wpt/web-platform-tests/web-animations/animation-model/animation-types/property-list.js
@@ -425,7 +425,7 @@ const gCSSProperties = {
{ type: 'discrete', options: [ [ '"a"', '"b"' ] ] }
],
setup: t => {
- return createPseudo(t, 'before');
+ return getPseudoElement(t, 'before');
}
},
'counter-increment': {
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html
index c7b7b25a75c..cbec1b0c57a 100644
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html
+++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animatable/animate.html
@@ -205,13 +205,13 @@ test(t => {
// Tests on CSSPseudoElement
test(t => {
- const pseudoTarget = createPseudo(t, 'before');
+ const pseudoTarget = getPseudoElement(t, 'before');
const anim = pseudoTarget.animate(null);
assert_class_string(anim, 'Animation', 'The returned object is an Animation');
}, 'CSSPseudoElement.animate() creates an Animation object');
test(t => {
- const pseudoTarget = createPseudo(t, 'before');
+ const pseudoTarget = getPseudoElement(t, 'before');
const anim = pseudoTarget.animate(null);
assert_equals(anim.effect.target, pseudoTarget,
'The returned Animation targets to the correct object');
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html
index 3a1d7beb9ec..381d954ea7a 100644
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html
+++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Document/getAnimations.html
@@ -42,6 +42,19 @@ test(t => {
}, 'Test the order of document.getAnimations with script generated animations')
test(t => {
+ // This element exists but is not a descendent of any document, so isn't
+ // picked up by getAnimations.
+ const div = document.createElement('div');
+ const anim = div.animate(gKeyFrames, 100 * MS_PER_SEC);
+ assert_equals(document.getAnimations().length, 0);
+
+ // Now connect the div; it should appear in the list of animations.
+ document.body.appendChild(div);
+ t.add_cleanup(() => { div.remove(); });
+ assert_equals(document.getAnimations().length, 1);
+}, 'Test document.getAnimations for a disconnected node');
+
+test(t => {
const effect = new KeyframeEffect(null, gKeyFrames, 100 * MS_PER_SEC);
const anim = new Animation(effect, document.timeline);
anim.play();
diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html
index 133fd579041..1b28210b985 100644
--- a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html
+++ b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html
@@ -308,6 +308,20 @@ test(() => {
+ ' specified');
test(() => {
+ const test_error = { name: 'test' };
+ const bad_keyframe = { get left() { throw test_error; } };
+ assert_throws(test_error, () => {
+ new KeyframeEffect(null, createIterable([
+ { done: false, value: { left: '100px' } },
+ { done: false, value: bad_keyframe },
+ { done: false, value: { left: '200px' } },
+ { done: true },
+ ]));
+ });
+}, 'If a keyframe throws for an animatable property, that exception should be'
+ + ' propagated');
+
+test(() => {
assert_throws({ name: 'TypeError' }, () => {
new KeyframeEffect(null, createIterable([
{ done: false, value: { left: '100px' } },
@@ -321,6 +335,36 @@ test(() => {
test(() => {
const effect = new KeyframeEffect(null, createIterable([
+ { done: false, value: { left: '100px' } },
+ { done: false }, // No value member; keyframe is undefined.
+ { done: false, value: { left: '200px' } },
+ { done: true },
+ ]));
+ assert_frame_lists_equal(effect.getKeyframes(), [
+ { left: '100px', offset: null, computedOffset: 0, easing: 'linear', composite: null },
+ { offset: null, computedOffset: 0.5, easing: 'linear', composite: null },
+ { left: '200px', offset: null, computedOffset: 1, easing: 'linear', composite: null },
+ ]);
+}, 'An undefined keyframe returned from a custom iterator should be treated as a'
+ + ' default keyframe');
+
+test(() => {
+ const effect = new KeyframeEffect(null, createIterable([
+ { done: false, value: { left: '100px' } },
+ { done: false, value: null },
+ { done: false, value: { left: '200px' } },
+ { done: true },
+ ]));
+ assert_frame_lists_equal(effect.getKeyframes(), [
+ { left: '100px', offset: null, computedOffset: 0, easing: 'linear', composite: null },
+ { offset: null, computedOffset: 0.5, easing: 'linear', composite: null },
+ { left: '200px', offset: null, computedOffset: 1, easing: 'linear', composite: null },
+ ]);
+}, 'A null keyframe returned from a custom iterator should be treated as a'
+ + ' default keyframe');
+
+test(() => {
+ const effect = new KeyframeEffect(null, createIterable([
{ done: false, value: { left: ['100px', '200px'] } },
{ done: true },
]));
@@ -330,6 +374,44 @@ test(() => {
}, 'A list of values returned from a custom iterator should be ignored');
test(() => {
+ const test_error = { name: 'test' };
+ const keyframe_obj = {
+ [Symbol.iterator]() {
+ return { next() { throw test_error; } };
+ },
+ };
+ assert_throws(test_error, () => {
+ new KeyframeEffect(null, keyframe_obj);
+ });
+}, 'If a custom iterator throws from next(), the exception should be rethrown');
+
+// Test handling of invalid Symbol.iterator
+
+test(() => {
+ const test_error = { name: 'test' };
+ const keyframe_obj = {
+ [Symbol.iterator]() {
+ throw test_error;
+ },
+ };
+ assert_throws(test_error, () => {
+ new KeyframeEffect(null, keyframe_obj);
+ });
+}, 'Accessing a Symbol.iterator property that throws should rethrow');
+
+test(() => {
+ const keyframe_obj = {
+ [Symbol.iterator]() {
+ return 42; // Not an object.
+ },
+ };
+ assert_throws({ name: 'TypeError' }, () => {
+ new KeyframeEffect(null, keyframe_obj);
+ });
+}, 'A non-object returned from the Symbol.iterator property should cause a'
+ + ' TypeError to be thrown');
+
+test(() => {
const keyframe = {};
Object.defineProperty(keyframe, 'width', { value: '200px' });
Object.defineProperty(keyframe, 'height', {
diff --git a/tests/wpt/web-platform-tests/web-animations/testcommon.js b/tests/wpt/web-platform-tests/web-animations/testcommon.js
index 46f2356e8ef..1a8ca796c14 100644
--- a/tests/wpt/web-platform-tests/web-animations/testcommon.js
+++ b/tests/wpt/web-platform-tests/web-animations/testcommon.js
@@ -88,7 +88,7 @@ function createStyle(test, rules, doc) {
}
// Create a pseudo element
-function createPseudo(test, type) {
+function getPseudoElement(test, type) {
createStyle(test, { '@keyframes anim': '',
[`.pseudo::${type}`]: 'animation: anim 10s; ' +
'content: \'\';' });
@@ -97,8 +97,6 @@ function createPseudo(test, type) {
const anims = document.getAnimations();
assert_true(anims.length >= 1);
const anim = anims[anims.length - 1];
- assert_equals(anim.effect.target.parentElement, div);
- assert_equals(anim.effect.target.type, `::${type}`);
anim.cancel();
return anim.effect.target;
}
diff --git a/tests/wpt/web-platform-tests/web-nfc/nfc_insecure_context.html b/tests/wpt/web-platform-tests/web-nfc/nfc_insecure_context.html
index 9745fc25a45..e2a92f93b16 100644
--- a/tests/wpt/web-platform-tests/web-nfc/nfc_insecure_context.html
+++ b/tests/wpt/web-platform-tests/web-nfc/nfc_insecure_context.html
@@ -6,34 +6,19 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/nfc_help.js"></script>
-
<h2>Note</h2>
<ol>
<li>
Run test is an insecure context, e.g. http://example.com/
</li>
</ol>
-
-<div id="log"></div>
-
<script>
"use strict";
-promise_test(t => {
- return promise_rejects(t, 'SecurityError', navigator.nfc.push(test_text_data));
-}, "nfc.push should fail with SecurityError in an insecure context.");
-
-promise_test(t => {
- return promise_rejects(t, 'SecurityError', navigator.nfc.cancelPush());
-}, "nfc.cancelPush should fail with SecurityError in an insecure context.");
-
-promise_test(t => {
- return promise_rejects(t, 'SecurityError', navigator.nfc.watch(noop));
-}, "nfc.watch should fail with SecurityError in an insecure context.");
-
-promise_test(t => {
- return promise_rejects(t, 'SecurityError', navigator.nfc.cancelWatch());
-}, "nfc.cancelWatch should fail with SecurityError in an insecure context.");
+test(t => {
+ assert_false(isSecureContext);
+ assert_false('nfc' in navigator);
+}, 'navigator.nfc requires a secure context');
</script>
diff --git a/tests/wpt/web-platform-tests/webaudio/idlharness.https.html b/tests/wpt/web-platform-tests/webaudio/idlharness.https.html
index aed91706eb9..09ec2c430bc 100644
--- a/tests/wpt/web-platform-tests/webaudio/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/webaudio/idlharness.https.html
@@ -10,13 +10,16 @@
'use strict';
promise_test(async t => {
- const [html, dom, mediacapture, webaudio] = await Promise.all([
+ const [html, dom, uievents, mediacapture, webaudio] = await Promise.all([
// Needed for EventTarget, HTMLMediaElement
'/interfaces/html.idl',
// Needed for Event, EventListener
'/interfaces/dom.idl',
+ // Needed for MouseEvent
+ '/interfaces/uievents.idl',
+
// Needed for MediaStream, MediaStreamTrack
'/interfaces/mediacapture-main.idl',
@@ -28,7 +31,15 @@ promise_test(async t => {
// Dependencies of HTML
idl_array.add_untested_idls('interface LinkStyle {};');
idl_array.add_untested_idls('interface SVGElement {};');
+ idl_array.add_untested_idls('interface WorkletGlobalScope {};');
idl_array.add_untested_idls(html);
+ idl_array.add_untested_idls(uievents, { only: [
+ 'MouseEvent',
+ 'MouseEventInit',
+ 'EventModifierInit',
+ 'UIEvent',
+ 'UIEventInit',
+ ]});
idl_array.add_untested_idls(dom);
idl_array.add_untested_idls(mediacapture);
diff --git a/tests/wpt/web-platform-tests/webaudio/resources/biquad-testing.js b/tests/wpt/web-platform-tests/webaudio/resources/biquad-testing.js
new file mode 100644
index 00000000000..7a0b6e6c1f8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/resources/biquad-testing.js
@@ -0,0 +1,171 @@
+// Globals, to make testing and debugging easier.
+let context;
+let filter;
+let signal;
+let renderedBuffer;
+let renderedData;
+
+let sampleRate = 44100.0;
+let pulseLengthFrames = .1 * sampleRate;
+
+// Maximum allowed error for the test to succeed. Experimentally determined.
+let maxAllowedError = 5.9e-8;
+
+// This must be large enough so that the filtered result is
+// essentially zero. See comments for createTestAndRun.
+let timeStep = .1;
+
+// Maximum number of filters we can process (mostly for setting the
+// render length correctly.)
+let maxFilters = 5;
+
+// How long to render. Must be long enough for all of the filters we
+// want to test.
+let renderLengthSeconds = timeStep * (maxFilters + 1);
+
+let renderLengthSamples = Math.round(renderLengthSeconds * sampleRate);
+
+// Number of filters that will be processed.
+let nFilters;
+
+function createImpulseBuffer(context, length) {
+ let impulse = context.createBuffer(1, length, context.sampleRate);
+ let data = impulse.getChannelData(0);
+ for (let k = 1; k < data.length; ++k) {
+ data[k] = 0;
+ }
+ data[0] = 1;
+
+ return impulse;
+}
+
+
+function createTestAndRun(context, filterType, testParameters) {
+ // To test the filters, we apply a signal (an impulse) to each of
+ // the specified filters, with each signal starting at a different
+ // time. The output of the filters is summed together at the
+ // output. Thus for filter k, the signal input to the filter
+ // starts at time k * timeStep. For this to work well, timeStep
+ // must be large enough for the output of each filter to have
+ // decayed to zero with timeStep seconds. That way the filter
+ // outputs don't interfere with each other.
+
+ let filterParameters = testParameters.filterParameters;
+ nFilters = Math.min(filterParameters.length, maxFilters);
+
+ signal = new Array(nFilters);
+ filter = new Array(nFilters);
+
+ impulse = createImpulseBuffer(context, pulseLengthFrames);
+
+ // Create all of the signal sources and filters that we need.
+ for (let k = 0; k < nFilters; ++k) {
+ signal[k] = context.createBufferSource();
+ signal[k].buffer = impulse;
+
+ filter[k] = context.createBiquadFilter();
+ filter[k].type = filterType;
+ filter[k].frequency.value =
+ context.sampleRate / 2 * filterParameters[k].cutoff;
+ filter[k].detune.value = (filterParameters[k].detune === undefined) ?
+ 0 :
+ filterParameters[k].detune;
+ filter[k].Q.value = filterParameters[k].q;
+ filter[k].gain.value = filterParameters[k].gain;
+
+ signal[k].connect(filter[k]);
+ filter[k].connect(context.destination);
+
+ signal[k].start(timeStep * k);
+ }
+
+ return context.startRendering().then(buffer => {
+ checkFilterResponse(buffer, filterType, testParameters);
+ });
+}
+
+function addSignal(dest, src, destOffset) {
+ // Add src to dest at the given dest offset.
+ for (let k = destOffset, j = 0; k < dest.length, j < src.length; ++k, ++j) {
+ dest[k] += src[j];
+ }
+}
+
+function generateReference(filterType, filterParameters) {
+ let result = new Array(renderLengthSamples);
+ let data = new Array(renderLengthSamples);
+ // Initialize the result array and data.
+ for (let k = 0; k < result.length; ++k) {
+ result[k] = 0;
+ data[k] = 0;
+ }
+ // Make data an impulse.
+ data[0] = 1;
+
+ for (let k = 0; k < nFilters; ++k) {
+ // Filter an impulse
+ let detune = (filterParameters[k].detune === undefined) ?
+ 0 :
+ filterParameters[k].detune;
+ let frequency = filterParameters[k].cutoff *
+ Math.pow(2, detune / 1200); // Apply detune, converting from Cents.
+
+ let filterCoef = createFilter(
+ filterType, frequency, filterParameters[k].q, filterParameters[k].gain);
+ let y = filterData(filterCoef, data, renderLengthSamples);
+
+ // Accumulate this filtered data into the final output at the desired
+ // offset.
+ addSignal(result, y, timeToSampleFrame(timeStep * k, sampleRate));
+ }
+
+ return result;
+}
+
+function checkFilterResponse(renderedBuffer, filterType, testParameters) {
+ let filterParameters = testParameters.filterParameters;
+ let maxAllowedError = testParameters.threshold;
+ let should = testParameters.should;
+
+ renderedData = renderedBuffer.getChannelData(0);
+
+ reference = generateReference(filterType, filterParameters);
+
+ let len = Math.min(renderedData.length, reference.length);
+
+ let success = true;
+
+ // Maximum error between rendered data and expected data
+ let maxError = 0;
+
+ // Sample offset where the maximum error occurred.
+ let maxPosition = 0;
+
+ // Number of infinities or NaNs that occurred in the rendered data.
+ let invalidNumberCount = 0;
+
+ should(nFilters, 'Number of filters tested')
+ .beEqualTo(filterParameters.length);
+
+ // Compare the rendered signal with our reference, keeping
+ // track of the maximum difference (and the offset of the max
+ // difference.) Check for bad numbers in the rendered output
+ // too. There shouldn't be any.
+ for (let k = 0; k < len; ++k) {
+ let err = Math.abs(renderedData[k] - reference[k]);
+ if (err > maxError) {
+ maxError = err;
+ maxPosition = k;
+ }
+ if (!isValidNumber(renderedData[k])) {
+ ++invalidNumberCount;
+ }
+ }
+
+ should(
+ invalidNumberCount, 'Number of non-finite values in the rendered output')
+ .beEqualTo(0);
+
+ should(maxError, 'Max error in ' + filterTypeName[filterType] + ' response')
+ .beLessThanOrEqualTo(maxAllowedError);
+}
diff --git a/tests/wpt/web-platform-tests/webaudio/resources/mixing-rules.js b/tests/wpt/web-platform-tests/webaudio/resources/mixing-rules.js
new file mode 100644
index 00000000000..e06a1468a3b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/resources/mixing-rules.js
@@ -0,0 +1,350 @@
+// Utilities for mixing rule testing.
+// http://webaudio.github.io/web-audio-api/#channel-up-mixing-and-down-mixing
+
+
+/**
+ * Create an n-channel buffer, with all sample data zero except for a shifted
+ * impulse. The impulse position depends on the channel index. For example, for
+ * a 4-channel buffer:
+ * channel 0: 1 0 0 0 0 0 0 0
+ * channel 1: 0 1 0 0 0 0 0 0
+ * channel 2: 0 0 1 0 0 0 0 0
+ * channel 3: 0 0 0 1 0 0 0 0
+ * @param {AudioContext} context Associated AudioContext.
+ * @param {Number} numberOfChannels Number of channels of test buffer.
+ * @param {Number} frameLength Buffer length in frames.
+ * @return {AudioBuffer}
+ */
+function createShiftedImpulseBuffer(context, numberOfChannels, frameLength) {
+ let shiftedImpulseBuffer =
+ context.createBuffer(numberOfChannels, frameLength, context.sampleRate);
+ for (let channel = 0; channel < numberOfChannels; ++channel) {
+ let data = shiftedImpulseBuffer.getChannelData(channel);
+ data[channel] = 1;
+ }
+
+ return shiftedImpulseBuffer;
+}
+
+/**
+ * Create a string that displays the content of AudioBuffer.
+ * @param {AudioBuffer} audioBuffer AudioBuffer object to stringify.
+ * @param {Number} frameLength Number of frames to be printed.
+ * @param {Number} frameOffset Starting frame position for printing.
+ * @return {String}
+ */
+function stringifyBuffer(audioBuffer, frameLength, frameOffset) {
+ frameOffset = (frameOffset || 0);
+
+ let stringifiedBuffer = '';
+ for (let channel = 0; channel < audioBuffer.numberOfChannels; ++channel) {
+ let channelData = audioBuffer.getChannelData(channel);
+ for (let i = 0; i < frameLength; ++i)
+ stringifiedBuffer += channelData[i + frameOffset] + ' ';
+ stringifiedBuffer += '\n';
+ }
+
+ return stringifiedBuffer;
+}
+
+/**
+ * Compute number of channels from the connection.
+ * http://webaudio.github.io/web-audio-api/#dfn-computednumberofchannels
+ * @param {String} connections A string specifies the connection. For
+ * example, the string "128" means 3
+ * connections, having 1, 2, and 8 channels
+ * respectively.
+ * @param {Number} channelCount Channel count.
+ * @param {String} channelCountMode Channel count mode.
+ * @return {Number} Computed number of channels.
+ */
+function computeNumberOfChannels(connections, channelCount, channelCountMode) {
+ if (channelCountMode == 'explicit')
+ return channelCount;
+
+ // Must have at least one channel.
+ let computedNumberOfChannels = 1;
+
+ // Compute "computedNumberOfChannels" based on all the connections.
+ for (let i = 0; i < connections.length; ++i) {
+ let connectionNumberOfChannels = parseInt(connections[i]);
+ computedNumberOfChannels =
+ Math.max(computedNumberOfChannels, connectionNumberOfChannels);
+ }
+
+ if (channelCountMode == 'clamped-max')
+ computedNumberOfChannels = Math.min(computedNumberOfChannels, channelCount);
+
+ return computedNumberOfChannels;
+}
+
+/**
+ * Apply up/down-mixing (in-place summing) based on 'speaker' interpretation.
+ * @param {AudioBuffer} input Input audio buffer.
+ * @param {AudioBuffer} output Output audio buffer.
+ */
+function speakersSum(input, output) {
+ if (input.length != output.length) {
+ throw '[mixing-rules.js] speakerSum(): buffer lengths mismatch (input: ' +
+ input.length + ', output: ' + output.length + ')';
+ }
+
+ if (input.numberOfChannels === output.numberOfChannels) {
+ for (let channel = 0; channel < output.numberOfChannels; ++channel) {
+ let inputChannel = input.getChannelData(channel);
+ let outputChannel = output.getChannelData(channel);
+ for (let i = 0; i < outputChannel.length; i++)
+ outputChannel[i] += inputChannel[i];
+ }
+ } else if (input.numberOfChannels < output.numberOfChannels) {
+ processUpMix(input, output);
+ } else {
+ processDownMix(input, output);
+ }
+}
+
+/**
+ * In-place summing to |output| based on 'discrete' channel interpretation.
+ * @param {AudioBuffer} input Input audio buffer.
+ * @param {AudioBuffer} output Output audio buffer.
+ */
+function discreteSum(input, output) {
+ if (input.length != output.length) {
+ throw '[mixing-rules.js] speakerSum(): buffer lengths mismatch (input: ' +
+ input.length + ', output: ' + output.length + ')';
+ }
+
+ let numberOfChannels =
+ Math.min(input.numberOfChannels, output.numberOfChannels)
+
+ for (let channel = 0; channel < numberOfChannels; ++channel) {
+ let inputChannel = input.getChannelData(channel);
+ let outputChannel = output.getChannelData(channel);
+ for (let i = 0; i < outputChannel.length; i++)
+ outputChannel[i] += inputChannel[i];
+ }
+}
+
+/**
+ * Perform up-mix by in-place summing to |output| buffer.
+ * @param {AudioBuffer} input Input audio buffer.
+ * @param {AudioBuffer} output Output audio buffer.
+ */
+function processUpMix(input, output) {
+ let numberOfInputChannels = input.numberOfChannels;
+ let numberOfOutputChannels = output.numberOfChannels;
+ let i, length = output.length;
+
+ // Up-mixing: 1 -> 2, 1 -> 4
+ // output.L += input
+ // output.R += input
+ // output.SL += 0 (in the case of 1 -> 4)
+ // output.SR += 0 (in the case of 1 -> 4)
+ if ((numberOfInputChannels === 1 && numberOfOutputChannels === 2) ||
+ (numberOfInputChannels === 1 && numberOfOutputChannels === 4)) {
+ let inputChannel = input.getChannelData(0);
+ let outputChannel0 = output.getChannelData(0);
+ let outputChannel1 = output.getChannelData(1);
+ for (i = 0; i < length; i++) {
+ outputChannel0[i] += inputChannel[i];
+ outputChannel1[i] += inputChannel[i];
+ }
+
+ return;
+ }
+
+ // Up-mixing: 1 -> 5.1
+ // output.L += 0
+ // output.R += 0
+ // output.C += input
+ // output.LFE += 0
+ // output.SL += 0
+ // output.SR += 0
+ if (numberOfInputChannels == 1 && numberOfOutputChannels == 6) {
+ let inputChannel = input.getChannelData(0);
+ let outputChannel2 = output.getChannelData(2);
+ for (i = 0; i < length; i++)
+ outputChannel2[i] += inputChannel[i];
+
+ return;
+ }
+
+ // Up-mixing: 2 -> 4, 2 -> 5.1
+ // output.L += input.L
+ // output.R += input.R
+ // output.C += 0 (in the case of 2 -> 5.1)
+ // output.LFE += 0 (in the case of 2 -> 5.1)
+ // output.SL += 0
+ // output.SR += 0
+ if ((numberOfInputChannels === 2 && numberOfOutputChannels === 4) ||
+ (numberOfInputChannels === 2 && numberOfOutputChannels === 6)) {
+ let inputChannel0 = input.getChannelData(0);
+ let inputChannel1 = input.getChannelData(1);
+ let outputChannel0 = output.getChannelData(0);
+ let outputChannel1 = output.getChannelData(1);
+ for (i = 0; i < length; i++) {
+ outputChannel0[i] += inputChannel0[i];
+ outputChannel1[i] += inputChannel1[i];
+ }
+
+ return;
+ }
+
+ // Up-mixing: 4 -> 5.1
+ // output.L += input.L
+ // output.R += input.R
+ // output.C += 0
+ // output.LFE += 0
+ // output.SL += input.SL
+ // output.SR += input.SR
+ if (numberOfInputChannels === 4 && numberOfOutputChannels === 6) {
+ let inputChannel0 = input.getChannelData(0); // input.L
+ let inputChannel1 = input.getChannelData(1); // input.R
+ let inputChannel2 = input.getChannelData(2); // input.SL
+ let inputChannel3 = input.getChannelData(3); // input.SR
+ let outputChannel0 = output.getChannelData(0); // output.L
+ let outputChannel1 = output.getChannelData(1); // output.R
+ let outputChannel4 = output.getChannelData(4); // output.SL
+ let outputChannel5 = output.getChannelData(5); // output.SR
+ for (i = 0; i < length; i++) {
+ outputChannel0[i] += inputChannel0[i];
+ outputChannel1[i] += inputChannel1[i];
+ outputChannel4[i] += inputChannel2[i];
+ outputChannel5[i] += inputChannel3[i];
+ }
+
+ return;
+ }
+
+ // All other cases, fall back to the discrete sum.
+ discreteSum(input, output);
+}
+
+/**
+ * Perform down-mix by in-place summing to |output| buffer.
+ * @param {AudioBuffer} input Input audio buffer.
+ * @param {AudioBuffer} output Output audio buffer.
+ */
+function processDownMix(input, output) {
+ let numberOfInputChannels = input.numberOfChannels;
+ let numberOfOutputChannels = output.numberOfChannels;
+ let i, length = output.length;
+
+ // Down-mixing: 2 -> 1
+ // output += 0.5 * (input.L + input.R)
+ if (numberOfInputChannels === 2 && numberOfOutputChannels === 1) {
+ let inputChannel0 = input.getChannelData(0); // input.L
+ let inputChannel1 = input.getChannelData(1); // input.R
+ let outputChannel0 = output.getChannelData(0);
+ for (i = 0; i < length; i++)
+ outputChannel0[i] += 0.5 * (inputChannel0[i] + inputChannel1[i]);
+
+ return;
+ }
+
+ // Down-mixing: 4 -> 1
+ // output += 0.25 * (input.L + input.R + input.SL + input.SR)
+ if (numberOfInputChannels === 4 && numberOfOutputChannels === 1) {
+ let inputChannel0 = input.getChannelData(0); // input.L
+ let inputChannel1 = input.getChannelData(1); // input.R
+ let inputChannel2 = input.getChannelData(2); // input.SL
+ let inputChannel3 = input.getChannelData(3); // input.SR
+ let outputChannel0 = output.getChannelData(0);
+ for (i = 0; i < length; i++) {
+ outputChannel0[i] += 0.25 *
+ (inputChannel0[i] + inputChannel1[i] + inputChannel2[i] +
+ inputChannel3[i]);
+ }
+
+ return;
+ }
+
+ // Down-mixing: 5.1 -> 1
+ // output += sqrt(1/2) * (input.L + input.R) + input.C
+ // + 0.5 * (input.SL + input.SR)
+ if (numberOfInputChannels === 6 && numberOfOutputChannels === 1) {
+ let inputChannel0 = input.getChannelData(0); // input.L
+ let inputChannel1 = input.getChannelData(1); // input.R
+ let inputChannel2 = input.getChannelData(2); // input.C
+ let inputChannel4 = input.getChannelData(4); // input.SL
+ let inputChannel5 = input.getChannelData(5); // input.SR
+ let outputChannel0 = output.getChannelData(0);
+ let scaleSqrtHalf = Math.sqrt(0.5);
+ for (i = 0; i < length; i++) {
+ outputChannel0[i] +=
+ scaleSqrtHalf * (inputChannel0[i] + inputChannel1[i]) +
+ inputChannel2[i] + 0.5 * (inputChannel4[i] + inputChannel5[i]);
+ }
+
+ return;
+ }
+
+ // Down-mixing: 4 -> 2
+ // output.L += 0.5 * (input.L + input.SL)
+ // output.R += 0.5 * (input.R + input.SR)
+ if (numberOfInputChannels == 4 && numberOfOutputChannels == 2) {
+ let inputChannel0 = input.getChannelData(0); // input.L
+ let inputChannel1 = input.getChannelData(1); // input.R
+ let inputChannel2 = input.getChannelData(2); // input.SL
+ let inputChannel3 = input.getChannelData(3); // input.SR
+ let outputChannel0 = output.getChannelData(0); // output.L
+ let outputChannel1 = output.getChannelData(1); // output.R
+ for (i = 0; i < length; i++) {
+ outputChannel0[i] += 0.5 * (inputChannel0[i] + inputChannel2[i]);
+ outputChannel1[i] += 0.5 * (inputChannel1[i] + inputChannel3[i]);
+ }
+
+ return;
+ }
+
+ // Down-mixing: 5.1 -> 2
+ // output.L += input.L + sqrt(1/2) * (input.C + input.SL)
+ // output.R += input.R + sqrt(1/2) * (input.C + input.SR)
+ if (numberOfInputChannels == 6 && numberOfOutputChannels == 2) {
+ let inputChannel0 = input.getChannelData(0); // input.L
+ let inputChannel1 = input.getChannelData(1); // input.R
+ let inputChannel2 = input.getChannelData(2); // input.C
+ let inputChannel4 = input.getChannelData(4); // input.SL
+ let inputChannel5 = input.getChannelData(5); // input.SR
+ let outputChannel0 = output.getChannelData(0); // output.L
+ let outputChannel1 = output.getChannelData(1); // output.R
+ let scaleSqrtHalf = Math.sqrt(0.5);
+ for (i = 0; i < length; i++) {
+ outputChannel0[i] += inputChannel0[i] +
+ scaleSqrtHalf * (inputChannel2[i] + inputChannel4[i]);
+ outputChannel1[i] += inputChannel1[i] +
+ scaleSqrtHalf * (inputChannel2[i] + inputChannel5[i]);
+ }
+
+ return;
+ }
+
+ // Down-mixing: 5.1 -> 4
+ // output.L += input.L + sqrt(1/2) * input.C
+ // output.R += input.R + sqrt(1/2) * input.C
+ // output.SL += input.SL
+ // output.SR += input.SR
+ if (numberOfInputChannels === 6 && numberOfOutputChannels === 4) {
+ let inputChannel0 = input.getChannelData(0); // input.L
+ let inputChannel1 = input.getChannelData(1); // input.R
+ let inputChannel2 = input.getChannelData(2); // input.C
+ let inputChannel4 = input.getChannelData(4); // input.SL
+ let inputChannel5 = input.getChannelData(5); // input.SR
+ let outputChannel0 = output.getChannelData(0); // output.L
+ let outputChannel1 = output.getChannelData(1); // output.R
+ let outputChannel2 = output.getChannelData(2); // output.SL
+ let outputChannel3 = output.getChannelData(3); // output.SR
+ let scaleSqrtHalf = Math.sqrt(0.5);
+ for (i = 0; i < length; i++) {
+ outputChannel0[i] += inputChannel0[i] + scaleSqrtHalf * inputChannel2[i];
+ outputChannel1[i] += inputChannel1[i] + scaleSqrtHalf * inputChannel2[i];
+ outputChannel2[i] += inputChannel4[i];
+ outputChannel3[i] += inputChannel5[i];
+ }
+
+ return;
+ }
+
+ // All other cases, fall back to the discrete sum.
+ discreteSum(input, output);
+}
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html
new file mode 100644
index 00000000000..a1c3273cc3f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-channel-rules.html
@@ -0,0 +1,277 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ audionode-channel-rules.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/mixing-rules.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+ let context = 0;
+ let sampleRate = 44100;
+ let renderNumberOfChannels = 8;
+ let singleTestFrameLength = 8;
+ let testBuffers;
+
+ // A list of connections to an AudioNode input, each of which is to be
+ // used in one or more specific test cases. Each element in the list is a
+ // string, with the number of connections corresponding to the length of
+ // the string, and each character in the string is from '1' to '8'
+ // representing a 1 to 8 channel connection (from an AudioNode output).
+
+ // For example, the string "128" means 3 connections, having 1, 2, and 8
+ // channels respectively.
+
+ let connectionsList = [
+ '1', '2', '3', '4', '5', '6', '7', '8', '11', '12', '14', '18', '111',
+ '122', '123', '124', '128'
+ ];
+
+ // A list of mixing rules, each of which will be tested against all of the
+ // connections in connectionsList.
+ let mixingRulesList = [
+ {
+ channelCount: 2,
+ channelCountMode: 'max',
+ channelInterpretation: 'speakers'
+ },
+ {
+ channelCount: 4,
+ channelCountMode: 'clamped-max',
+ channelInterpretation: 'speakers'
+ },
+
+ // Test up-down-mix to some explicit speaker layouts.
+ {
+ channelCount: 1,
+ channelCountMode: 'explicit',
+ channelInterpretation: 'speakers'
+ },
+ {
+ channelCount: 2,
+ channelCountMode: 'explicit',
+ channelInterpretation: 'speakers'
+ },
+ {
+ channelCount: 4,
+ channelCountMode: 'explicit',
+ channelInterpretation: 'speakers'
+ },
+ {
+ channelCount: 6,
+ channelCountMode: 'explicit',
+ channelInterpretation: 'speakers'
+ },
+
+ {
+ channelCount: 2,
+ channelCountMode: 'max',
+ channelInterpretation: 'discrete'
+ },
+ {
+ channelCount: 4,
+ channelCountMode: 'clamped-max',
+ channelInterpretation: 'discrete'
+ },
+ {
+ channelCount: 4,
+ channelCountMode: 'explicit',
+ channelInterpretation: 'discrete'
+ },
+ {
+ channelCount: 8,
+ channelCountMode: 'explicit',
+ channelInterpretation: 'discrete'
+ },
+ ];
+
+ let numberOfTests = mixingRulesList.length * connectionsList.length;
+
+ // Print out the information for an individual test case.
+ function printTestInformation(
+ testNumber, actualBuffer, expectedBuffer, frameLength, frameOffset) {
+ let actual = stringifyBuffer(actualBuffer, frameLength);
+ let expected =
+ stringifyBuffer(expectedBuffer, frameLength, frameOffset);
+ debug('TEST CASE #' + testNumber + '\n');
+ debug('actual channels:\n' + actual);
+ debug('expected channels:\n' + expected);
+ }
+
+ function scheduleTest(
+ testNumber, connections, channelCount, channelCountMode,
+ channelInterpretation) {
+ let mixNode = context.createGain();
+ mixNode.channelCount = channelCount;
+ mixNode.channelCountMode = channelCountMode;
+ mixNode.channelInterpretation = channelInterpretation;
+ mixNode.connect(context.destination);
+
+ for (let i = 0; i < connections.length; ++i) {
+ let connectionNumberOfChannels =
+ connections.charCodeAt(i) - '0'.charCodeAt(0);
+
+ let source = context.createBufferSource();
+ // Get a buffer with the right number of channels, converting from
+ // 1-based to 0-based index.
+ let buffer = testBuffers[connectionNumberOfChannels - 1];
+ source.buffer = buffer;
+ source.connect(mixNode);
+
+ // Start at the right offset.
+ let sampleFrameOffset = testNumber * singleTestFrameLength;
+ let time = sampleFrameOffset / sampleRate;
+ source.start(time);
+ }
+ }
+
+ function checkTestResult(
+ renderedBuffer, testNumber, connections, channelCount,
+ channelCountMode, channelInterpretation, should) {
+ let s = 'connections: ' + connections + ', ' + channelCountMode;
+
+ // channelCount is ignored in "max" mode.
+ if (channelCountMode == 'clamped-max' ||
+ channelCountMode == 'explicit') {
+ s += '(' + channelCount + ')';
+ }
+
+ s += ', ' + channelInterpretation;
+
+ let computedNumberOfChannels = computeNumberOfChannels(
+ connections, channelCount, channelCountMode);
+
+ // Create a zero-initialized silent AudioBuffer with
+ // computedNumberOfChannels.
+ let destBuffer = context.createBuffer(
+ computedNumberOfChannels, singleTestFrameLength,
+ context.sampleRate);
+
+ // Mix all of the connections into the destination buffer.
+ for (let i = 0; i < connections.length; ++i) {
+ let connectionNumberOfChannels =
+ connections.charCodeAt(i) - '0'.charCodeAt(0);
+ let sourceBuffer =
+ testBuffers[connectionNumberOfChannels - 1]; // convert from
+ // 1-based to
+ // 0-based index
+
+ if (channelInterpretation == 'speakers') {
+ speakersSum(sourceBuffer, destBuffer);
+ } else if (channelInterpretation == 'discrete') {
+ discreteSum(sourceBuffer, destBuffer);
+ } else {
+ alert('Invalid channel interpretation!');
+ }
+ }
+
+ // Use this when debugging mixing rules.
+ // printTestInformation(testNumber, renderedBuffer, destBuffer,
+ // singleTestFrameLength, sampleFrameOffset);
+
+ // Validate that destBuffer matches the rendered output. We need to
+ // check the rendered output at a specific sample-frame-offset
+ // corresponding to the specific test case we're checking for based on
+ // testNumber.
+
+ let sampleFrameOffset = testNumber * singleTestFrameLength;
+ for (let c = 0; c < renderNumberOfChannels; ++c) {
+ let renderedData = renderedBuffer.getChannelData(c);
+ for (let frame = 0; frame < singleTestFrameLength; ++frame) {
+ let renderedValue = renderedData[frame + sampleFrameOffset];
+
+ let expectedValue = 0;
+ if (c < destBuffer.numberOfChannels) {
+ let expectedData = destBuffer.getChannelData(c);
+ expectedValue = expectedData[frame];
+ }
+
+ // We may need to add an epsilon in the comparison if we add more
+ // test vectors.
+ if (renderedValue != expectedValue) {
+ let message = s + 'rendered: ' + renderedValue +
+ ' expected: ' + expectedValue + ' channel: ' + c +
+ ' frame: ' + frame;
+ // testFailed(s);
+ should(renderedValue, s).beEqualTo(expectedValue);
+ return;
+ }
+ }
+ }
+
+ should(true, s).beTrue();
+ }
+
+ function checkResult(buffer, should) {
+ // Sanity check result.
+ should(buffer.length, 'Rendered number of frames')
+ .beEqualTo(numberOfTests * singleTestFrameLength);
+ should(buffer.numberOfChannels, 'Rendered number of channels')
+ .beEqualTo(renderNumberOfChannels);
+
+ // Check all the tests.
+ let testNumber = 0;
+ for (let m = 0; m < mixingRulesList.length; ++m) {
+ let mixingRules = mixingRulesList[m];
+ for (let i = 0; i < connectionsList.length; ++i, ++testNumber) {
+ checkTestResult(
+ buffer, testNumber, connectionsList[i],
+ mixingRules.channelCount, mixingRules.channelCountMode,
+ mixingRules.channelInterpretation, should);
+ }
+ }
+ }
+
+ audit.define(
+ {label: 'test', description: 'Channel mixing rules for AudioNodes'},
+ function(task, should) {
+
+ // Create 8-channel offline audio context. Each test will render 8
+ // sample-frames starting at sample-frame position testNumber * 8.
+ let totalFrameLength = numberOfTests * singleTestFrameLength;
+ context = new OfflineAudioContext(
+ renderNumberOfChannels, totalFrameLength, sampleRate);
+
+ // Set destination to discrete mixing.
+ context.destination.channelCount = renderNumberOfChannels;
+ context.destination.channelCountMode = 'explicit';
+ context.destination.channelInterpretation = 'discrete';
+
+ // Create test buffers from 1 to 8 channels.
+ testBuffers = new Array();
+ for (let i = 0; i < renderNumberOfChannels; ++i) {
+ testBuffers[i] = createShiftedImpulseBuffer(
+ context, i + 1, singleTestFrameLength);
+ }
+
+ // Schedule all the tests.
+ let testNumber = 0;
+ for (let m = 0; m < mixingRulesList.length; ++m) {
+ let mixingRules = mixingRulesList[m];
+ for (let i = 0; i < connectionsList.length; ++i, ++testNumber) {
+ scheduleTest(
+ testNumber, connectionsList[i], mixingRules.channelCount,
+ mixingRules.channelCountMode,
+ mixingRules.channelInterpretation);
+ }
+ }
+
+ // Render then check results.
+ // context.oncomplete = checkResult;
+ context.startRendering().then(buffer => {
+ checkResult(buffer, should);
+ task.done();
+ });
+ ;
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html
new file mode 100644
index 00000000000..0a8c73160e5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-method-chaining.html
@@ -0,0 +1,164 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ audionode-connect-method-chaining.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ // AudioNode dictionary with associated arguments.
+ let nodeDictionary = [
+ {name: 'Analyser'}, {name: 'BiquadFilter'}, {name: 'BufferSource'},
+ {name: 'ChannelMerger', args: [6]},
+ {name: 'ChannelSplitter', args: [6]}, {name: 'Convolver'},
+ {name: 'Delay', args: []}, {name: 'DynamicsCompressor'}, {name: 'Gain'},
+ {name: 'Oscillator'}, {name: 'Panner'},
+ {name: 'ScriptProcessor', args: [512, 1, 1]}, {name: 'StereoPanner'},
+ {name: 'WaveShaper'}
+ ];
+
+
+ function verifyReturnedNode(should, config) {
+ should(
+ config.destination === config.returned,
+ 'The return value of ' + config.desc + ' matches the destination ' +
+ config.returned.constructor.name)
+ .beEqualTo(true);
+ }
+
+ // Test utility for batch method checking: in order to test 3 method
+ // signatures, so we create 3 dummy destinations.
+ // 1) .connect(GainNode)
+ // 2) .connect(BiquadFilterNode, output)
+ // 3) .connect(ChannelMergerNode, output, input)
+ function testConnectMethod(context, should, options) {
+ let source =
+ context['create' + options.name].apply(context, options.args);
+ let sourceName = source.constructor.name;
+
+ let destination1 = context.createGain();
+ verifyReturnedNode(should, {
+ source: source,
+ destination: destination1,
+ returned: source.connect(destination1),
+ desc: sourceName + '.connect(' + destination1.constructor.name + ')'
+ });
+
+ let destination2 = context.createBiquadFilter();
+ verifyReturnedNode(should, {
+ source: source,
+ destination: destination2,
+ returned: source.connect(destination2, 0),
+ desc:
+ sourceName + '.connect(' + destination2.constructor.name + ', 0)'
+ });
+
+ let destination3 = context.createChannelMerger();
+ verifyReturnedNode(should, {
+ source: source,
+ destination: destination3,
+ returned: source.connect(destination3, 0, 1),
+ desc: sourceName + '.connect(' + destination3.constructor.name +
+ ', 0, 1)'
+ });
+ }
+
+
+ let audit = Audit.createTaskRunner();
+
+ // Task: testing entries from the dictionary.
+ audit.define('from-dictionary', (task, should) => {
+ let context = new AudioContext();
+
+ for (let i = 0; i < nodeDictionary.length; i++)
+ testConnectMethod(context, should, nodeDictionary[i]);
+
+ task.done();
+ });
+
+ // Task: testing Media* nodes.
+ audit.define('media-group', (task, should) => {
+ let context = new AudioContext();
+
+ // Test MediaElementSourceNode needs an <audio> element.
+ let mediaElement = document.createElement('audio');
+ testConnectMethod(
+ context, should,
+ {name: 'MediaElementSource', args: [mediaElement]});
+
+ testConnectMethod(context, should, {name: 'MediaStreamDestination'});
+
+ // MediaStreamSourceNode requires 'stream' object to be constructed,
+ // which is a part of MediaStreamDestinationNode.
+ let streamDestination = context.createMediaStreamDestination();
+ let stream = streamDestination.stream;
+ testConnectMethod(
+ context, should, {name: 'MediaStreamSource', args: [stream]});
+
+ task.done();
+ });
+
+ // Task: test the exception thrown by invalid operation.
+ audit.define('invalid-operation', (task, should) => {
+ let contextA = new AudioContext();
+ let contextB = new AudioContext();
+ let gain1 = contextA.createGain();
+ let gain2 = contextA.createGain();
+
+ // Test if the first connection throws correctly. The first gain node
+ // does not have the second output, so it should throw.
+ should(function() {
+ gain1.connect(gain2, 1).connect(contextA.destination);
+ }, 'Connecting with an invalid output').throw('IndexSizeError');
+
+ // Test if the second connection throws correctly. The contextB's
+ // destination is not compatible with the nodes from contextA, thus the
+ // first connection succeeds but the second one should throw.
+ should(
+ function() {
+ gain1.connect(gain2).connect(contextB.destination);
+ },
+ 'Connecting to a node from the different context')
+ .throw('InvalidAccessError');
+
+ task.done();
+ });
+
+ // Task: verify if the method chaining actually works.
+ audit.define('verification', (task, should) => {
+ // We pick the lowest sample rate allowed to run the test efficiently.
+ let context = new OfflineAudioContext(1, 128, 3000);
+
+ let constantBuffer = createConstantBuffer(context, 1, 1.0);
+
+ let source = context.createBufferSource();
+ source.buffer = constantBuffer;
+ source.loop = true;
+
+ let gain1 = context.createGain();
+ gain1.gain.value = 0.5;
+ let gain2 = context.createGain();
+ gain2.gain.value = 0.25;
+
+ source.connect(gain1).connect(gain2).connect(context.destination);
+ source.start();
+
+ context.startRendering()
+ .then(function(buffer) {
+ should(
+ buffer.getChannelData(0),
+ 'The output of chained connection of gain nodes')
+ .beConstantValueOf(0.125);
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html
new file mode 100644
index 00000000000..eca15dedfa0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-connect-order.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ audionode-connect-order.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+ let sampleRate = 44100.0;
+ let renderLengthSeconds = 0.125;
+ let delayTimeSeconds = 0.1;
+
+ function createSinWaveBuffer(context, lengthInSeconds, frequency) {
+ let audioBuffer =
+ context.createBuffer(1, lengthInSeconds * sampleRate, sampleRate);
+
+ let n = audioBuffer.length;
+ let data = audioBuffer.getChannelData(0);
+
+ for (let i = 0; i < n; ++i) {
+ data[i] = Math.sin(frequency * 2 * Math.PI * i / sampleRate);
+ }
+
+ return audioBuffer;
+ }
+
+ audit.define(
+ {
+ label: 'Test connections',
+ description:
+ 'AudioNode connection order doesn\'t trigger assertion errors'
+ },
+ function(task, should) {
+ // Create offline audio context.
+ let context = new OfflineAudioContext(
+ 1, sampleRate * renderLengthSeconds, sampleRate);
+ let toneBuffer =
+ createSinWaveBuffer(context, renderLengthSeconds, 880);
+
+ let bufferSource = context.createBufferSource();
+ bufferSource.buffer = toneBuffer;
+ bufferSource.connect(context.destination);
+
+ let delay = context.createDelay();
+ delay.delayTime.value = delayTimeSeconds;
+
+ // We connect delay node to gain node before anything is connected
+ // to delay node itself. We do this because we try to trigger the
+ // ASSERT which might be fired due to AudioNode connection order,
+ // especially when gain node and delay node is involved e.g.
+ // https://bugs.webkit.org/show_bug.cgi?id=76685.
+
+ should(() => {
+ let gain = context.createGain();
+ gain.connect(context.destination);
+ delay.connect(gain);
+ }, 'Connecting nodes').notThrow();
+
+ bufferSource.start(0);
+
+ let promise = context.startRendering();
+
+ should(promise, 'OfflineContext startRendering()')
+ .beResolved()
+ .then(task.done.bind(task));
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html
new file mode 100644
index 00000000000..c3d3fae2155
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect-audioparam.html
@@ -0,0 +1,214 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ audionode-disconnect-audioparam.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let renderQuantum = 128;
+
+ let sampleRate = 44100;
+ let renderDuration = 0.5;
+ let disconnectTime = 0.5 * renderDuration;
+
+ let audit = Audit.createTaskRunner();
+
+ // Calculate the index for disconnection.
+ function getDisconnectIndex(disconnectTime) {
+ let disconnectIndex = disconnectTime * sampleRate;
+ return disconnectIndex -= (disconnectIndex) % renderQuantum;
+ }
+
+ // Get the index of value change.
+ function getValueChangeIndex(array, targetValue) {
+ return array.findIndex(function(element, index) {
+ if (element === targetValue)
+ return true;
+ });
+ }
+
+ // Task 1: test disconnect(AudioParam) method.
+ audit.define('disconnect(AudioParam)', (task, should) => {
+
+ // Creates a buffer source with value [1] and then connect it to two
+ // gain nodes in series. The output of the buffer source is lowered by
+ // half
+ // (* 0.5) and then connected to two |.gain| AudioParams in each gain
+ // node.
+ //
+ // (1) bufferSource => gain1 => gain2
+ // (2) bufferSource => half => gain1.gain
+ // (3) half => gain2.gain
+ //
+ // This graph should produce the output of 2.25 (= 1 * 1.5 * 1.5). After
+ // disconnecting (3), it should produce 1.5.
+ let context =
+ new OfflineAudioContext(1, renderDuration * sampleRate, sampleRate);
+ let source = context.createBufferSource();
+ let buffer1ch = createConstantBuffer(context, 1, 1);
+ let half = context.createGain();
+ let gain1 = context.createGain();
+ let gain2 = context.createGain();
+
+ source.buffer = buffer1ch;
+ source.loop = true;
+ half.gain.value = 0.5;
+
+ source.connect(gain1);
+ gain1.connect(gain2);
+ gain2.connect(context.destination);
+ source.connect(half);
+
+ // Connecting |half| to both |gain1.gain| and |gain2.gain| amplifies the
+ // signal by 2.25 (= 1.5 * 1.5) because each gain node amplifies the
+ // signal by 1.5 (= 1.0 + 0.5).
+ half.connect(gain1.gain);
+ half.connect(gain2.gain);
+
+ source.start();
+
+ // Schedule the disconnection at the half of render duration.
+ context.suspend(disconnectTime).then(function() {
+ half.disconnect(gain2.gain);
+ context.resume();
+ });
+
+ context.startRendering()
+ .then(function(buffer) {
+ let channelData = buffer.getChannelData(0);
+ let disconnectIndex = getDisconnectIndex(disconnectTime);
+ let valueChangeIndex = getValueChangeIndex(channelData, 1.5);
+
+ // Expected values are: 1 * 1.5 * 1.5 -> 1 * 1.5 = [2.25, 1.5]
+ should(channelData, 'Channel #0').containValues([2.25, 1.5]);
+ should(valueChangeIndex, 'The index of value change')
+ .beEqualTo(disconnectIndex);
+
+ })
+ .then(() => task.done());
+ });
+
+ // Task 2: test disconnect(AudioParam, output) method.
+ audit.define('disconnect(AudioParam, output)', (task, should) => {
+
+ // Create a 2-channel buffer source with [1, 2] in each channel and
+ // make a serial connection through gain1 and gain 2. The make the
+ // buffer source half with a gain node and connect it to a 2-output
+ // splitter. Connect each output to 2 gain AudioParams respectively.
+ //
+ // (1) bufferSource => gain1 => gain2
+ // (2) bufferSource => half => splitter(2)
+ // (3) splitter#0 => gain1.gain
+ // (4) splitter#1 => gain2.gain
+ //
+ // This graph should produce 3 (= 1 * 1.5 * 2) and 6 (= 2 * 1.5 * 2) for
+ // each channel. After disconnecting (4), it should output 1.5 and 3.
+ let context =
+ new OfflineAudioContext(2, renderDuration * sampleRate, sampleRate);
+ let source = context.createBufferSource();
+ let buffer2ch = createConstantBuffer(context, 1, [1, 2]);
+ let splitter = context.createChannelSplitter(2);
+ let half = context.createGain();
+ let gain1 = context.createGain();
+ let gain2 = context.createGain();
+
+ source.buffer = buffer2ch;
+ source.loop = true;
+ half.gain.value = 0.5;
+
+ source.connect(gain1);
+ gain1.connect(gain2);
+ gain2.connect(context.destination);
+
+ // |source| originally is [1, 2] but it becomes [0.5, 1] after 0.5 gain.
+ // Each splitter's output will be applied to |gain1.gain| and
+ // |gain2.gain| respectively in an additive fashion.
+ source.connect(half);
+ half.connect(splitter);
+
+ // This amplifies the signal by 1.5. (= 1.0 + 0.5)
+ splitter.connect(gain1.gain, 0);
+
+ // This amplifies the signal by 2. (= 1.0 + 1.0)
+ splitter.connect(gain2.gain, 1);
+
+ source.start();
+
+ // Schedule the disconnection at the half of render duration.
+ context.suspend(disconnectTime).then(function() {
+ splitter.disconnect(gain2.gain, 1);
+ context.resume();
+ });
+
+ context.startRendering()
+ .then(function(buffer) {
+ let channelData0 = buffer.getChannelData(0);
+ let channelData1 = buffer.getChannelData(1);
+
+ let disconnectIndex = getDisconnectIndex(disconnectTime);
+ let valueChangeIndexCh0 = getValueChangeIndex(channelData0, 1.5);
+ let valueChangeIndexCh1 = getValueChangeIndex(channelData1, 3);
+
+ // Expected values are: 1 * 1.5 * 2 -> 1 * 1.5 = [3, 1.5]
+ should(channelData0, 'Channel #0').containValues([3, 1.5]);
+ should(
+ valueChangeIndexCh0,
+ 'The index of value change in channel #0')
+ .beEqualTo(disconnectIndex);
+
+ // Expected values are: 2 * 1.5 * 2 -> 2 * 1.5 = [6, 3]
+ should(channelData1, 'Channel #1').containValues([6, 3]);
+ should(
+ valueChangeIndexCh1,
+ 'The index of value change in channel #1')
+ .beEqualTo(disconnectIndex);
+
+ })
+ .then(() => task.done());
+ });
+
+ // Task 3: exception checks.
+ audit.define('exceptions', (task, should) => {
+ let context = new AudioContext();
+ let gain1 = context.createGain();
+ let splitter = context.createChannelSplitter(2);
+ let gain2 = context.createGain();
+ let gain3 = context.createGain();
+
+ // Connect a splitter to gain nodes and merger so we can test the
+ // possible ways of disconnecting the nodes to verify that appropriate
+ // exceptions are thrown.
+ gain1.connect(splitter);
+ splitter.connect(gain2.gain, 0);
+ splitter.connect(gain3.gain, 1);
+ gain2.connect(gain3);
+ gain3.connect(context.destination);
+
+ // gain1 is not connected to gain3.gain. Exception should be thrown.
+ should(function() {
+ gain1.disconnect(gain3.gain);
+ }, 'gain1.disconnect(gain3.gain)').throw('InvalidAccessError');
+
+ // When the output index is good but the destination is invalid.
+ should(function() {
+ splitter.disconnect(gain1.gain, 1);
+ }, 'splitter.disconnect(gain1.gain, 1)').throw('InvalidAccessError');
+
+ // When both arguments are wrong, throw IndexSizeError first.
+ should(function() {
+ splitter.disconnect(gain1.gain, 2);
+ }, 'splitter.disconnect(gain1.gain, 2)').throw('IndexSizeError');
+
+ task.done();
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect.html
new file mode 100644
index 00000000000..b29c09d395f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode-disconnect.html
@@ -0,0 +1,298 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ audionode-disconnect.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ // Task 1: test disconnect() method.
+ audit.define('disconnect()', (task, should) => {
+
+ // Connect a source to multiple gain nodes, each connected to the
+ // destination. Then disconnect the source. The expected output should
+ // be all zeros since the source was disconnected.
+ let context = new OfflineAudioContext(1, 128, 44100);
+ let source = context.createBufferSource();
+ let buffer1ch = createConstantBuffer(context, 128, [1]);
+ let gain1 = context.createGain();
+ let gain2 = context.createGain();
+ let gain3 = context.createGain();
+
+ source.buffer = buffer1ch;
+
+ source.connect(gain1);
+ source.connect(gain2);
+ source.connect(gain3);
+ gain1.connect(context.destination);
+ gain2.connect(context.destination);
+ gain3.connect(context.destination);
+ source.start();
+
+ // This disconnects everything.
+ source.disconnect();
+
+ context.startRendering()
+ .then(function(buffer) {
+
+ // With everything disconnected, the result should be zero.
+ should(buffer.getChannelData(0), 'Channel #0')
+ .beConstantValueOf(0);
+
+ })
+ .then(() => task.done());
+ });
+
+ // Task 2: test disconnect(output) method.
+ audit.define('disconnect(output)', (task, should) => {
+
+ // Create multiple connections from each output of a ChannelSplitter
+ // to a gain node. Then test if disconnecting a single output of
+ // splitter is actually disconnected.
+ let context = new OfflineAudioContext(1, 128, 44100);
+ let source = context.createBufferSource();
+ let buffer3ch = createConstantBuffer(context, 128, [1, 2, 3]);
+ let splitter = context.createChannelSplitter(3);
+ let sum = context.createGain();
+
+ source.buffer = buffer3ch;
+
+ source.connect(splitter);
+ splitter.connect(sum, 0);
+ splitter.connect(sum, 1);
+ splitter.connect(sum, 2);
+ sum.connect(context.destination);
+ source.start();
+
+ // This disconnects the second output.
+ splitter.disconnect(1);
+
+ context.startRendering()
+ .then(function(buffer) {
+
+ // The rendered channel should contain 4. (= 1 + 0 + 3)
+ should(buffer.getChannelData(0), 'Channel #0')
+ .beConstantValueOf(4);
+
+ })
+ .then(() => task.done());
+ });
+
+ // Task 3: test disconnect(AudioNode) method.
+ audit.define('disconnect(AudioNode)', (task, should) => {
+
+ // Connect a source to multiple gain nodes. Then test if disconnecting a
+ // single destination selectively works correctly.
+ let context = new OfflineAudioContext(1, 128, 44100);
+ let source = context.createBufferSource();
+ let buffer1ch = createConstantBuffer(context, 128, [1]);
+ let gain1 = context.createGain();
+ let gain2 = context.createGain();
+ let gain3 = context.createGain();
+ let orphan = context.createGain();
+
+ source.buffer = buffer1ch;
+
+ source.connect(gain1);
+ source.connect(gain2);
+ source.connect(gain3);
+ gain1.connect(context.destination);
+ gain2.connect(context.destination);
+ gain3.connect(context.destination);
+ source.start();
+
+ source.disconnect(gain2);
+
+ context.startRendering()
+ .then(function(buffer) {
+
+ // The |sum| gain node should produce value 2. (1 + 0 + 1 = 2)
+ should(buffer.getChannelData(0), 'Channel #0')
+ .beConstantValueOf(2);
+
+ })
+ .then(() => task.done());
+ });
+
+ // Task 4: test disconnect(AudioNode, output) method.
+ audit.define('disconnect(AudioNode, output)', (task, should) => {
+
+ // Connect a buffer with 2 channels with each containing 1 and 2
+ // respectively to a ChannelSplitter, then connect the splitter to 2
+ // gain nodes as shown below:
+ // (1) splitter#0 => gain1
+ // (2) splitter#0 => gain2
+ // (3) splitter#1 => gain2
+ // Then disconnect (2) and verify if the selective disconnection on a
+ // specified output of the destination node works correctly.
+ let context = new OfflineAudioContext(1, 128, 44100);
+ let source = context.createBufferSource();
+ let buffer2ch = createConstantBuffer(context, 128, [1, 2]);
+ let splitter = context.createChannelSplitter(2);
+ let gain1 = context.createGain();
+ let gain2 = context.createGain();
+
+ source.buffer = buffer2ch;
+
+ source.connect(splitter);
+ splitter.connect(gain1, 0); // gain1 gets channel 0.
+ splitter.connect(gain2, 0); // gain2 sums channel 0 and 1.
+ splitter.connect(gain2, 1);
+ gain1.connect(context.destination);
+ gain2.connect(context.destination);
+ source.start();
+
+ splitter.disconnect(gain2, 0); // Now gain2 gets [2]
+
+ context.startRendering()
+ .then(function(buffer) {
+
+ // The sum of gain1 and gain2 should produce value 3. (= 1 + 2)
+ should(buffer.getChannelData(0), 'Channel #0')
+ .beConstantValueOf(3);
+
+ })
+ .then(() => task.done());
+ });
+
+ // Task 5: test disconnect(AudioNode, output, input) method.
+ audit.define('disconnect(AudioNode, output, input)', (task, should) => {
+
+ // Create a 3-channel buffer with [1, 2, 3] in each channel and then
+ // pass it through a splitter and a merger. Each input/output of the
+ // splitter and the merger is connected in a sequential order as shown
+ // below.
+ // (1) splitter#0 => merger#0
+ // (2) splitter#1 => merger#1
+ // (3) splitter#2 => merger#2
+ // Then disconnect (3) and verify if each channel contains [1] and [2]
+ // respectively.
+ let context = new OfflineAudioContext(3, 128, 44100);
+ let source = context.createBufferSource();
+ let buffer3ch = createConstantBuffer(context, 128, [1, 2, 3]);
+ let splitter = context.createChannelSplitter(3);
+ let merger = context.createChannelMerger(3);
+
+ source.buffer = buffer3ch;
+
+ source.connect(splitter);
+ splitter.connect(merger, 0, 0);
+ splitter.connect(merger, 1, 1);
+ splitter.connect(merger, 2, 2);
+ merger.connect(context.destination);
+ source.start();
+
+ splitter.disconnect(merger, 2, 2);
+
+ context.startRendering()
+ .then(function(buffer) {
+
+ // Each channel should have 1, 2, and 0 respectively.
+ should(buffer.getChannelData(0), 'Channel #0')
+ .beConstantValueOf(1);
+ should(buffer.getChannelData(1), 'Channel #1')
+ .beConstantValueOf(2);
+ should(buffer.getChannelData(2), 'Channel #2')
+ .beConstantValueOf(0);
+
+ })
+ .then(() => task.done());
+ });
+
+ // Task 6: exception checks.
+ audit.define('exceptions', (task, should) => {
+ let context = new OfflineAudioContext(2, 128, 44100);
+ let gain1 = context.createGain();
+ let splitter = context.createChannelSplitter(2);
+ let merger = context.createChannelMerger(2);
+ let gain2 = context.createGain();
+ let gain3 = context.createGain();
+
+ // Connect a splitter to gain nodes and merger so we can test the
+ // possible ways of disconnecting the nodes to verify that appropriate
+ // exceptions are thrown.
+ gain1.connect(splitter);
+ splitter.connect(gain2, 0);
+ splitter.connect(gain3, 1);
+ splitter.connect(merger, 0, 0);
+ splitter.connect(merger, 1, 1);
+ gain2.connect(gain3);
+ gain3.connect(context.destination);
+ merger.connect(context.destination);
+
+ // There is no output #2. An exception should be thrown.
+ should(function() {
+ splitter.disconnect(2);
+ }, 'splitter.disconnect(2)').throw('IndexSizeError');
+
+ // Disconnecting the output already disconnected should not throw.
+ should(function() {
+ splitter.disconnect(1);
+ splitter.disconnect(1);
+ }, 'Disconnecting a connection twice').notThrow();
+
+ // gain1 is not connected gain2. An exception should be thrown.
+ should(function() {
+ gain1.disconnect(gain2);
+ }, 'gain1.disconnect(gain2)').throw('InvalidAccessError');
+
+ // gain1 and gain3 are not connected. An exception should be thrown.
+ should(function() {
+ gain1.disconnect(gain3);
+ }, 'gain1.disconnect(gain3)').throw('InvalidAccessError');
+
+ // There is no output #2 in the splitter. An exception should be thrown.
+ should(function() {
+ splitter.disconnect(gain2, 2);
+ }, 'splitter.disconnect(gain2, 2)').throw('IndexSizeError');
+
+ // The splitter and gain1 are not connected. An exception should be
+ // thrown.
+ should(function() {
+ splitter.disconnect(gain1, 0);
+ }, 'splitter.disconnect(gain1, 0)').throw('InvalidAccessError');
+
+ // The splitter output #0 and the gain3 output #0 are not connected. An
+ // exception should be thrown.
+ should(function() {
+ splitter.disconnect(gain3, 0, 0);
+ }, 'splitter.disconnect(gain3, 0, 0)').throw('InvalidAccessError');
+
+ // The output index is out of bound. An exception should be thrown.
+ should(function() {
+ splitter.disconnect(merger, 3, 0);
+ }, 'splitter.disconnect(merger, 3, 0)').throw('IndexSizeError');
+
+ task.done();
+ });
+
+ audit.define('disabled-outputs', (task, should) => {
+ // See crbug.com/656652
+ let context = new OfflineAudioContext(2, 1024, 44100);
+ let g1 = context.createGain();
+ let g2 = context.createGain();
+ g1.connect(g2);
+ g1.disconnect(g2);
+ let g3 = context.createGain();
+ g2.connect(g3);
+ g1.connect(g2);
+ context.startRendering()
+ .then(function() {
+ // If we make it here, we passed.
+ should(true, 'Disabled outputs handled')
+ .message('correctly', 'inccorrectly');
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode.html
new file mode 100644
index 00000000000..b75cd0b5c0e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/audionode.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ audionode.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <div id="description"></div>
+ <div id="console"></div>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ let context = 0;
+ let context2 = 0;
+ let context3 = 0;
+
+ audit.define(
+ {label: 'test', description: 'Basic tests for AudioNode API.'},
+ function(task, should) {
+
+ context = new AudioContext();
+ window.audioNode = context.createBufferSource();
+
+ // Check input and output numbers of AudioSourceNode.
+ should(audioNode.numberOfInputs, 'AudioBufferSource.numberOfInputs')
+ .beEqualTo(0);
+ should(
+ audioNode.numberOfOutputs, 'AudioBufferSource.numberOfOutputs')
+ .beEqualTo(1);
+
+ // Check input and output numbers of AudioDestinationNode
+ should(
+ context.destination.numberOfInputs,
+ 'AudioContext.destination.numberOfInputs')
+ .beEqualTo(1);
+ should(
+ context.destination.numberOfOutputs,
+ 'AudioContext.destination.numberOfOutputs')
+ .beEqualTo(0);
+
+ // Try calling connect() method with illegal values.
+ should(
+ () => audioNode.connect(0, 0, 0), 'audioNode.connect(0, 0, 0)')
+ .throw('TypeError');
+ should(
+ () => audioNode.connect(null, 0, 0),
+ 'audioNode.connect(null, 0, 0)')
+ .throw('TypeError');
+ should(
+ () => audioNode.connect(context.destination, 5, 0),
+ 'audioNode.connect(context.destination, 5, 0)')
+ .throw('IndexSizeError');
+ should(
+ () => audioNode.connect(context.destination, 0, 5),
+ 'audioNode.connect(context.destination, 0, 5)')
+ .throw('IndexSizeError');
+
+ should(
+ () => audioNode.connect(context.destination, 0, 0),
+ 'audioNode.connect(context.destination, 0, 0)')
+ .notThrow();
+
+ // Create a new context and try to connect the other context's node
+ // to this one.
+ context2 = new AudioContext();
+ should(
+ () => window.audioNode.connect(context2.destination),
+ 'Connecting a node to a different context')
+ .throw('InvalidAccessError');
+
+ // 3-arg AudioContext doesn't create an offline context anymore.
+ should(
+ () => context3 = new AudioContext(1, 44100, 44100),
+ 'context3 = new AudioContext(1, 44100, 44100)')
+ .throw('TypeError');
+
+ // Ensure it is an EventTarget
+ should(
+ audioNode instanceof EventTarget, 'AudioNode is an EventTarget')
+ .beTrue();
+
+ task.done();
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html
new file mode 100644
index 00000000000..35cfca8e4ee
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audionode-interface/channel-mode-interp-basic.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ Test Setting of channelCountMode and channelInterpretation
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ // Fairly arbitrary sample rate and number of frames, except the number of
+ // frames should be more than a few render quantums.
+ let sampleRate = 16000;
+ let renderFrames = 10 * 128;
+
+ let audit = Audit.createTaskRunner();
+
+ audit.define('interp', (task, should) => {
+ let context = new OfflineAudioContext(1, renderFrames, sampleRate);
+ let node = context.createGain();
+
+ // Set a new interpretation and verify that it changed.
+ node.channelInterpretation = 'discrete';
+ let value = node.channelInterpretation;
+ should(value, 'node.channelInterpretation').beEqualTo('discrete');
+ node.connect(context.destination);
+
+ context.startRendering()
+ .then(function(buffer) {
+ // After rendering, the value should have been changed.
+ should(
+ node.channelInterpretation,
+ 'After rendering node.channelInterpretation')
+ .beEqualTo('discrete');
+ })
+ .then(() => task.done());
+ });
+
+ audit.define('mode', (task, should) => {
+ let context = new OfflineAudioContext(1, renderFrames, sampleRate);
+ let node = context.createGain();
+
+ // Set a new mode and verify that it changed.
+ node.channelCountMode = 'explicit';
+ let value = node.channelCountMode;
+ should(value, 'node.channelCountMode').beEqualTo('explicit');
+ node.connect(context.destination);
+
+ context.startRendering()
+ .then(function(buffer) {
+ // After rendering, the value should have been changed.
+ should(
+ node.channelCountMode,
+ 'After rendering node.channelCountMode')
+ .beEqualTo('explicit');
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html
new file mode 100644
index 00000000000..330b359f7d9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-automatic-pull.https.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ Test AudioWorkletNode's automatic pull feature
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ const audit = Audit.createTaskRunner();
+
+ // Arbitrary sample rate. Anything should work.
+ const sampleRate = 48000;
+ const renderLength = RENDER_QUANTUM_FRAMES * 2;
+ const channelCount = 1;
+ const filePath = 'processors/zero-output-processor.js';
+
+ const sourceOffset = 0.5;
+
+ // Connect a constant source node to the zero-output AudioWorkletNode.
+ // Then verify if it captures the data correctly.
+ audit.define('setup-worklet', (task, should) => {
+ const context =
+ new OfflineAudioContext(channelCount, renderLength, sampleRate);
+
+ context.audioWorklet.addModule(filePath).then(() => {
+ let testSource =
+ new ConstantSourceNode(context, { offset: sourceOffset });
+ let zeroOutputWorkletNode =
+ new AudioWorkletNode(context, 'zero-output-processor', {
+ numberOfInputs: 1,
+ numberOfOutputs: 0,
+ processorOptions: {
+ bufferLength: renderLength,
+ channeCount: channelCount
+ }
+ });
+
+ // Start the source and stop at the first render quantum.
+ testSource.connect(zeroOutputWorkletNode);
+ testSource.start();
+ testSource.stop(RENDER_QUANTUM_FRAMES/sampleRate);
+
+ zeroOutputWorkletNode.port.onmessage = (event) => {
+ // The |capturedBuffer| can be multichannel. Iterate through it.
+ for (let i = 0; i < event.data.capturedBuffer.length; ++i) {
+ let buffer = event.data.capturedBuffer[i];
+ // Split the captured buffer in half for the easier test.
+ should(buffer.subarray(0, RENDER_QUANTUM_FRAMES),
+ 'The first half of the captured buffer')
+ .beConstantValueOf(sourceOffset);
+ should(buffer.subarray(RENDER_QUANTUM_FRAMES, renderLength),
+ 'The second half of the captured buffer')
+ .beConstantValueOf(0);
+ }
+ task.done();
+ };
+
+ // Starts the rendering, but we don't need the rendered buffer from
+ // the context.
+ context.startRendering();
+ });
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
+
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/zero-output-processor.js b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/zero-output-processor.js
new file mode 100644
index 00000000000..b97ed6e1151
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/processors/zero-output-processor.js
@@ -0,0 +1,42 @@
+/**
+ * @class ZeroOutputProcessor
+ * @extends AudioWorkletProcessor
+ *
+ * This processor accumulates the incoming buffer and send the buffered data
+ * to the main thread when it reaches the specified frame length. The processor
+ * only supports the single input.
+ */
+
+const kRenderQuantumFrames = 128;
+
+class ZeroOuttputProcessor extends AudioWorkletProcessor {
+ constructor(options) {
+ super();
+
+ this._framesRequested = options.processorOptions.bufferLength;
+ this._framesCaptured = 0;
+ this._buffer = [];
+ for (let i = 0; i < options.processorOptions.channeCount; ++i) {
+ this._buffer[i] = new Float32Array(this._framesRequested);
+ }
+ }
+
+ process(inputs) {
+ let input = inputs[0];
+ let startIndex = this._framesCaptured;
+ let endIndex = startIndex + kRenderQuantumFrames;
+ for (let i = 0; i < this._buffer.length; ++i) {
+ this._buffer[i].subarray(startIndex, endIndex).set(input[i]);
+ }
+ this._framesCaptured = endIndex;
+
+ if (this._framesCaptured >= this._framesRequested) {
+ this.port.postMessage({ capturedBuffer: this._buffer });
+ return false;
+ } else {
+ return true;
+ }
+ }
+}
+
+registerProcessor('zero-output-processor', ZeroOuttputProcessor);
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html
new file mode 100644
index 00000000000..86618f9e46d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-allpass.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquad-allpass.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/biquad-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'test', description: 'Biquad allpass filter'},
+ function(task, should) {
+
+ // Create offline audio context.
+ let context = new OfflineAudioContext(
+ 2, sampleRate * renderLengthSeconds, sampleRate);
+
+ let filterParameters = [
+ {cutoff: 0, q: 10, gain: 1},
+ {cutoff: 1, q: 10, gain: 1},
+ {cutoff: .5, q: 0, gain: 1},
+ {cutoff: 0.25, q: 10, gain: 1},
+ ];
+ createTestAndRun(context, 'allpass', {
+ should: should,
+ threshold: 3.9337e-8,
+ filterParameters: filterParameters
+ }).then(task.done.bind(task));
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html
new file mode 100644
index 00000000000..54b2142cea2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-automation.html
@@ -0,0 +1,406 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ Biquad Automation Test
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/audioparam-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ // Don't need to run these tests at high sampling rate, so just use a low
+ // one to reduce memory usage and complexity.
+ let sampleRate = 16000;
+
+ // How long to render for each test.
+ let renderDuration = 0.25;
+ // Where to end the automations. Fairly arbitrary, but must end before
+ // the renderDuration.
+ let automationEndTime = renderDuration / 2;
+
+ let audit = Audit.createTaskRunner();
+
+ // The definition of the linear ramp automation function.
+ function linearRamp(t, v0, v1, t0, t1) {
+ return v0 + (v1 - v0) * (t - t0) / (t1 - t0);
+ }
+
+ // Generate the filter coefficients for the specified filter using the
+ // given parameters for the given duration. |filterTypeFunction| is a
+ // function that returns the filter coefficients for one set of
+ // parameters. |parameters| is a property bag that contains the start and
+ // end values (as an array) for each of the biquad attributes. The
+ // properties are |freq|, |Q|, |gain|, and |detune|. |duration| is the
+ // number of seconds for which the coefficients are generated.
+ //
+ // A property bag with properties |b0|, |b1|, |b2|, |a1|, |a2|. Each
+ // propery is an array consisting of the coefficients for the time-varying
+ // biquad filter.
+ function generateFilterCoefficients(
+ filterTypeFunction, parameters, duration) {
+ let renderEndFrame = Math.ceil(renderDuration * sampleRate);
+ let endFrame = Math.ceil(duration * sampleRate);
+ let nCoef = renderEndFrame;
+ let b0 = new Float64Array(nCoef);
+ let b1 = new Float64Array(nCoef);
+ let b2 = new Float64Array(nCoef);
+ let a1 = new Float64Array(nCoef);
+ let a2 = new Float64Array(nCoef);
+
+ let k = 0;
+ // If the property is not given, use the defaults.
+ let freqs = parameters.freq || [350, 350];
+ let qs = parameters.Q || [1, 1];
+ let gains = parameters.gain || [0, 0];
+ let detunes = parameters.detune || [0, 0];
+
+ for (let frame = 0; frame <= endFrame; ++frame) {
+ // Apply linear ramp at frame |frame|.
+ let f =
+ linearRamp(frame / sampleRate, freqs[0], freqs[1], 0, duration);
+ let q = linearRamp(frame / sampleRate, qs[0], qs[1], 0, duration);
+ let g =
+ linearRamp(frame / sampleRate, gains[0], gains[1], 0, duration);
+ let d = linearRamp(
+ frame / sampleRate, detunes[0], detunes[1], 0, duration);
+
+ // Compute actual frequency parameter
+ f = f * Math.pow(2, d / 1200);
+
+ // Compute filter coefficients
+ let coef = filterTypeFunction(f / (sampleRate / 2), q, g);
+ b0[k] = coef.b0;
+ b1[k] = coef.b1;
+ b2[k] = coef.b2;
+ a1[k] = coef.a1;
+ a2[k] = coef.a2;
+ ++k;
+ }
+
+ // Fill the rest of the arrays with the constant value to the end of
+ // the rendering duration.
+ b0.fill(b0[endFrame], endFrame + 1);
+ b1.fill(b1[endFrame], endFrame + 1);
+ b2.fill(b2[endFrame], endFrame + 1);
+ a1.fill(a1[endFrame], endFrame + 1);
+ a2.fill(a2[endFrame], endFrame + 1);
+
+ return {b0: b0, b1: b1, b2: b2, a1: a1, a2: a2};
+ }
+
+ // Apply the given time-varying biquad filter to the given signal,
+ // |signal|. |coef| should be the time-varying coefficients of the
+ // filter, as returned by |generateFilterCoefficients|.
+ function timeVaryingFilter(signal, coef) {
+ let length = signal.length;
+ // Use double precision for the internal computations.
+ let y = new Float64Array(length);
+
+ // Prime the pump. (Assumes the signal has length >= 2!)
+ y[0] = coef.b0[0] * signal[0];
+ y[1] =
+ coef.b0[1] * signal[1] + coef.b1[1] * signal[0] - coef.a1[1] * y[0];
+
+ for (let n = 2; n < length; ++n) {
+ y[n] = coef.b0[n] * signal[n] + coef.b1[n] * signal[n - 1] +
+ coef.b2[n] * signal[n - 2];
+ y[n] -= coef.a1[n] * y[n - 1] + coef.a2[n] * y[n - 2];
+ }
+
+ // But convert the result to single precision for comparison.
+ return y.map(Math.fround);
+ }
+
+ // Configure the audio graph using |context|. Returns the biquad filter
+ // node and the AudioBuffer used for the source.
+ function configureGraph(context, toneFrequency) {
+ // The source is just a simple sine wave.
+ let src = context.createBufferSource();
+ let b =
+ context.createBuffer(1, renderDuration * sampleRate, sampleRate);
+ let data = b.getChannelData(0);
+ let omega = 2 * Math.PI * toneFrequency / sampleRate;
+ for (let k = 0; k < data.length; ++k) {
+ data[k] = Math.sin(omega * k);
+ }
+ src.buffer = b;
+ let f = context.createBiquadFilter();
+ src.connect(f);
+ f.connect(context.destination);
+
+ src.start();
+
+ return {filter: f, source: b};
+ }
+
+ function createFilterVerifier(
+ should, filterCreator, threshold, parameters, input, message) {
+ return function(resultBuffer) {
+ let actual = resultBuffer.getChannelData(0);
+ let coefs = generateFilterCoefficients(
+ filterCreator, parameters, automationEndTime);
+
+ reference = timeVaryingFilter(input, coefs);
+
+ should(actual, message).beCloseToArray(reference, {
+ absoluteThreshold: threshold
+ });
+ };
+ }
+
+ // Automate just the frequency parameter. A bandpass filter is used where
+ // the center frequency is swept across the source (which is a simple
+ // tone).
+ audit.define('automate-freq', (task, should) => {
+ let context =
+ new OfflineAudioContext(1, renderDuration * sampleRate, sampleRate);
+
+ // Center frequency of bandpass filter and also the frequency of the
+ // test tone.
+ let centerFreq = 10 * 440;
+
+ // Sweep the frequency +/- 5*440 Hz from the center. This should cause
+ // the output to be low at the beginning and end of the test where the
+ // tone is outside the pass band of the filter, but high in the middle
+ // of the automation time where the tone is near the center of the pass
+ // band. Make sure the frequency sweep stays inside the Nyquist
+ // frequency.
+ let parameters = {freq: [centerFreq - 5 * 440, centerFreq + 5 * 440]};
+ let graph = configureGraph(context, centerFreq);
+ let f = graph.filter;
+ let b = graph.source;
+
+ f.type = 'bandpass';
+ f.frequency.setValueAtTime(parameters.freq[0], 0);
+ f.frequency.linearRampToValueAtTime(
+ parameters.freq[1], automationEndTime);
+
+ context.startRendering()
+ .then(createFilterVerifier(
+ should, createBandpassFilter, 4.6455e-6, parameters,
+ b.getChannelData(0),
+ 'Output of bandpass filter with frequency automation'))
+ .then(() => task.done());
+ });
+
+ // Automate just the Q parameter. A bandpass filter is used where the Q
+ // of the filter is swept.
+ audit.define('automate-q', (task, should) => {
+ let context =
+ new OfflineAudioContext(1, renderDuration * sampleRate, sampleRate);
+
+ // The frequency of the test tone.
+ let centerFreq = 440;
+
+ // Sweep the Q paramter between 1 and 200. This will cause the output
+ // of the filter to pass most of the tone at the beginning to passing
+ // less of the tone at the end. This is because we set center frequency
+ // of the bandpass filter to be slightly off from the actual tone.
+ let parameters = {
+ Q: [1, 200],
+ // Center frequency of the bandpass filter is just 25 Hz above the
+ // tone frequency.
+ freq: [centerFreq + 25, centerFreq + 25]
+ };
+ let graph = configureGraph(context, centerFreq);
+ let f = graph.filter;
+ let b = graph.source;
+
+ f.type = 'bandpass';
+ f.frequency.value = parameters.freq[0];
+ f.Q.setValueAtTime(parameters.Q[0], 0);
+ f.Q.linearRampToValueAtTime(parameters.Q[1], automationEndTime);
+
+ context.startRendering()
+ .then(createFilterVerifier(
+ should, createBandpassFilter, 9.8348e-7, parameters,
+ b.getChannelData(0),
+ 'Output of bandpass filter with Q automation'))
+ .then(() => task.done());
+ });
+
+ // Automate just the gain of the lowshelf filter. A test tone will be in
+ // the lowshelf part of the filter. The output will vary as the gain of
+ // the lowshelf is changed.
+ audit.define('automate-gain', (task, should) => {
+ let context =
+ new OfflineAudioContext(1, renderDuration * sampleRate, sampleRate);
+
+ // Frequency of the test tone.
+ let centerFreq = 440;
+
+ // Set the cutoff frequency of the lowshelf to be significantly higher
+ // than the test tone. Sweep the gain from 20 dB to -20 dB. (We go from
+ // 20 to -20 to easily verify that the filter didn't go unstable.)
+ let parameters = {freq: [3500, 3500], gain: [20, -20]};
+ let graph = configureGraph(context, centerFreq);
+ let f = graph.filter;
+ let b = graph.source;
+
+ f.type = 'lowshelf';
+ f.frequency.value = parameters.freq[0];
+ f.gain.setValueAtTime(parameters.gain[0], 0);
+ f.gain.linearRampToValueAtTime(parameters.gain[1], automationEndTime);
+
+ context.startRendering()
+ .then(createFilterVerifier(
+ should, createLowShelfFilter, 2.7657e-5, parameters,
+ b.getChannelData(0),
+ 'Output of lowshelf filter with gain automation'))
+ .then(() => task.done());
+ });
+
+ // Automate just the detune parameter. Basically the same test as for the
+ // frequncy parameter but we just use the detune parameter to modulate the
+ // frequency parameter.
+ audit.define('automate-detune', (task, should) => {
+ let context =
+ new OfflineAudioContext(1, renderDuration * sampleRate, sampleRate);
+ let centerFreq = 10 * 440;
+ let parameters = {
+ freq: [centerFreq, centerFreq],
+ detune: [-10 * 1200, 10 * 1200]
+ };
+ let graph = configureGraph(context, centerFreq);
+ let f = graph.filter;
+ let b = graph.source;
+
+ f.type = 'bandpass';
+ f.frequency.value = parameters.freq[0];
+ f.detune.setValueAtTime(parameters.detune[0], 0);
+ f.detune.linearRampToValueAtTime(
+ parameters.detune[1], automationEndTime);
+
+ context.startRendering()
+ .then(createFilterVerifier(
+ should, createBandpassFilter, 3.1471e-5, parameters,
+ b.getChannelData(0),
+ 'Output of bandpass filter with detune automation'))
+ .then(() => task.done());
+ });
+
+ // Automate all of the filter parameters at once. This is a basic check
+ // that everything is working. A peaking filter is used because it uses
+ // all of the parameters.
+ audit.define('automate-all', (task, should) => {
+ let context =
+ new OfflineAudioContext(1, renderDuration * sampleRate, sampleRate);
+ let graph = configureGraph(context, 10 * 440);
+ let f = graph.filter;
+ let b = graph.source;
+
+ // Sweep all of the filter parameters. These are pretty much arbitrary.
+ let parameters = {
+ freq: [8000, 100],
+ Q: [f.Q.value, .0001],
+ gain: [f.gain.value, 20],
+ detune: [2400, -2400]
+ };
+
+ f.type = 'peaking';
+ // Set starting points for all parameters of the filter. Start at 10
+ // kHz for the center frequency, and the defaults for Q and gain.
+ f.frequency.setValueAtTime(parameters.freq[0], 0);
+ f.Q.setValueAtTime(parameters.Q[0], 0);
+ f.gain.setValueAtTime(parameters.gain[0], 0);
+ f.detune.setValueAtTime(parameters.detune[0], 0);
+
+ // Linear ramp each parameter
+ f.frequency.linearRampToValueAtTime(
+ parameters.freq[1], automationEndTime);
+ f.Q.linearRampToValueAtTime(parameters.Q[1], automationEndTime);
+ f.gain.linearRampToValueAtTime(parameters.gain[1], automationEndTime);
+ f.detune.linearRampToValueAtTime(
+ parameters.detune[1], automationEndTime);
+
+ context.startRendering()
+ .then(createFilterVerifier(
+ should, createPeakingFilter, 6.2907e-4, parameters,
+ b.getChannelData(0),
+ 'Output of peaking filter with automation of all parameters'))
+ .then(() => task.done());
+ });
+
+ // Test that modulation of the frequency parameter of the filter works. A
+ // sinusoid of 440 Hz is the test signal that is applied to a bandpass
+ // biquad filter. The frequency parameter of the filter is modulated by a
+ // sinusoid at 103 Hz, and the frequency modulation varies from 116 to 412
+ // Hz. (This test was taken from the description in
+ // https://github.com/WebAudio/web-audio-api/issues/509#issuecomment-94731355)
+ audit.define('modulation', (task, should) => {
+ let context =
+ new OfflineAudioContext(1, renderDuration * sampleRate, sampleRate);
+
+ // Create a graph with the sinusoidal source at 440 Hz as the input to a
+ // biquad filter.
+ let graph = configureGraph(context, 440);
+ let f = graph.filter;
+ let b = graph.source;
+
+ f.type = 'bandpass';
+ f.Q.value = 5;
+ f.frequency.value = 264;
+
+ // Create the modulation source, a sinusoid with frequency 103 Hz and
+ // amplitude 148. (The amplitude of 148 is added to the filter's
+ // frequency value of 264 to produce a sinusoidal modulation of the
+ // frequency parameter from 116 to 412 Hz.)
+ let mod = context.createBufferSource();
+ let mbuffer =
+ context.createBuffer(1, renderDuration * sampleRate, sampleRate);
+ let d = mbuffer.getChannelData(0);
+ let omega = 2 * Math.PI * 103 / sampleRate;
+ for (let k = 0; k < d.length; ++k) {
+ d[k] = 148 * Math.sin(omega * k);
+ }
+ mod.buffer = mbuffer;
+
+ mod.connect(f.frequency);
+
+ mod.start();
+ context.startRendering()
+ .then(function(resultBuffer) {
+ let actual = resultBuffer.getChannelData(0);
+ // Compute the filter coefficients using the mod sine wave
+
+ let endFrame = Math.ceil(renderDuration * sampleRate);
+ let nCoef = endFrame;
+ let b0 = new Float64Array(nCoef);
+ let b1 = new Float64Array(nCoef);
+ let b2 = new Float64Array(nCoef);
+ let a1 = new Float64Array(nCoef);
+ let a2 = new Float64Array(nCoef);
+
+ // Generate the filter coefficients when the frequency varies from
+ // 116 to 248 Hz using the 103 Hz sinusoid.
+ for (let k = 0; k < nCoef; ++k) {
+ let freq = f.frequency.value + d[k];
+ let c = createBandpassFilter(
+ freq / (sampleRate / 2), f.Q.value, f.gain.value);
+ b0[k] = c.b0;
+ b1[k] = c.b1;
+ b2[k] = c.b2;
+ a1[k] = c.a1;
+ a2[k] = c.a2;
+ }
+ reference = timeVaryingFilter(
+ b.getChannelData(0),
+ {b0: b0, b1: b1, b2: b2, a1: a1, a2: a2});
+
+ should(
+ actual,
+ 'Output of bandpass filter with sinusoidal modulation of bandpass center frequency')
+ .beCloseToArray(reference, {absoluteThreshold: 3.9787e-5});
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-bandpass.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-bandpass.html
new file mode 100644
index 00000000000..166aa9b3cb8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-bandpass.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquad-bandpass.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/biquad-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'test', description: 'Biquad bandpass filter.'},
+ function(task, should) {
+
+ // Create offline audio context.
+ let context = new OfflineAudioContext(
+ 2, sampleRate * renderLengthSeconds, sampleRate);
+
+ // The filters we want to test.
+ let filterParameters = [
+ {cutoff: 0, q: 0, gain: 1},
+ {cutoff: 1, q: 0, gain: 1},
+ {cutoff: 0.5, q: 0, gain: 1},
+ {cutoff: 0.25, q: 1, gain: 1},
+ ];
+
+ createTestAndRun(context, 'bandpass', {
+ should: should,
+ threshold: 2.2501e-8,
+ filterParameters: filterParameters
+ }).then(task.done.bind(task));
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html
new file mode 100644
index 00000000000..c4f7c07965f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-basic.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ Test Basic BiquadFilterNode Properties
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let sampleRate = 48000;
+ let testFrames = 100;
+
+ // Global context that can be used by the individual tasks. It must be
+ // defined by the initialize task.
+ let context;
+
+ let audit = Audit.createTaskRunner();
+
+ audit.define('initialize', (task, should) => {
+ should(() => {
+ context = new OfflineAudioContext(1, testFrames, sampleRate);
+ }, 'Initialize context for testing').notThrow();
+ task.done();
+ });
+
+ audit.define('existence', (task, should) => {
+ should(context.createBiquadFilter, 'context.createBiquadFilter')
+ .exist();
+ task.done();
+ });
+
+ audit.define('parameters', (task, should) => {
+ // Create a really simple IIR filter. Doesn't much matter what.
+ let coef = Float32Array.from([1]);
+
+ let f = context.createBiquadFilter(coef, coef);
+
+ should(f.numberOfInputs, 'numberOfInputs').beEqualTo(1);
+ should(f.numberOfOutputs, 'numberOfOutputs').beEqualTo(1);
+ should(f.channelCountMode, 'channelCountMode').beEqualTo('max');
+ should(f.channelInterpretation, 'channelInterpretation')
+ .beEqualTo('speakers');
+
+ task.done();
+ });
+
+ audit.define('exceptions-createBiquadFilter', (task, should) => {
+ should(function() {
+ // Two args are required.
+ context.createBiquadFilter();
+ }, 'createBiquadFilter()').notThrow();
+
+ task.done();
+ });
+
+ audit.define('exceptions-getFrequencyData', (task, should) => {
+ // Create a really simple IIR filter. Doesn't much matter what.
+ let coef = Float32Array.from([1]);
+
+ let f = context.createBiquadFilter(coef, coef);
+
+ should(
+ function() {
+ // frequencyHz can't be null.
+ f.getFrequencyResponse(
+ null, new Float32Array(1), new Float32Array(1));
+ },
+ 'getFrequencyResponse(' +
+ 'null, ' +
+ 'new Float32Array(1), ' +
+ 'new Float32Array(1))')
+ .throw('TypeError');
+
+ should(
+ function() {
+ // magResponse can't be null.
+ f.getFrequencyResponse(
+ new Float32Array(1), null, new Float32Array(1));
+ },
+ 'getFrequencyResponse(' +
+ 'new Float32Array(1), ' +
+ 'null, ' +
+ 'new Float32Array(1))')
+ .throw('TypeError');
+
+ should(
+ function() {
+ // phaseResponse can't be null.
+ f.getFrequencyResponse(
+ new Float32Array(1), new Float32Array(1), null);
+ },
+ 'getFrequencyResponse(' +
+ 'new Float32Array(1), ' +
+ 'new Float32Array(1), ' +
+ 'null)')
+ .throw('TypeError');
+
+ should(
+ function() {
+ // magResponse array must the same length as frequencyHz
+ f.getFrequencyResponse(
+ new Float32Array(10), new Float32Array(1),
+ new Float32Array(20));
+ },
+ 'getFrequencyResponse(' +
+ 'new Float32Array(10), ' +
+ 'new Float32Array(1), ' +
+ 'new Float32Array(20))')
+ .throw('InvalidAccessError');
+
+ should(
+ function() {
+ // phaseResponse array must be the same length as frequencyHz
+ f.getFrequencyResponse(
+ new Float32Array(10), new Float32Array(20),
+ new Float32Array(1));
+ },
+ 'getFrequencyResponse(' +
+ 'new Float32Array(10), ' +
+ 'new Float32Array(20), ' +
+ 'new Float32Array(1))')
+ .throw('InvalidAccessError');
+
+ task.done();
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html
new file mode 100644
index 00000000000..83f057fce7e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-getFrequencyResponse.html
@@ -0,0 +1,335 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ Test BiquadFilter getFrequencyResponse() functionality
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/biquad-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ // Test the frequency response of a biquad filter. We compute the
+ // frequency response for a simple peaking biquad filter and compare it
+ // with the expected frequency response. The actual filter used doesn't
+ // matter since we're testing getFrequencyResponse and not the actual
+ // filter output. The filters are extensively tested in other biquad
+ // tests.
+
+ // The magnitude response of the biquad filter.
+ let magResponse;
+
+ // The phase response of the biquad filter.
+ let phaseResponse;
+
+ // Number of frequency samples to take.
+ let numberOfFrequencies = 1000;
+
+ // The filter parameters.
+ let filterCutoff = 1000; // Hz.
+ let filterQ = 1;
+ let filterGain = 5; // Decibels.
+
+ // The maximum allowed error in the magnitude response.
+ let maxAllowedMagError = 9.775e-7;
+
+ // The maximum allowed error in the phase response.
+ let maxAllowedPhaseError = 5.4187e-8;
+
+ // The magnitudes and phases of the reference frequency response.
+ let expectedMagnitudes;
+ let expectedPhases;
+
+ // Convert frequency in Hz to a normalized frequency between 0 to 1 with 1
+ // corresponding to the Nyquist frequency.
+ function normalizedFrequency(freqHz, sampleRate) {
+ let nyquist = sampleRate / 2;
+ return freqHz / nyquist;
+ }
+
+ // Get the filter response at a (normalized) frequency |f| for the filter
+ // with coefficients |coef|.
+ function getResponseAt(coef, f) {
+ let b0 = coef.b0;
+ let b1 = coef.b1;
+ let b2 = coef.b2;
+ let a1 = coef.a1;
+ let a2 = coef.a2;
+
+ // H(z) = (b0 + b1 / z + b2 / z^2) / (1 + a1 / z + a2 / z^2)
+ //
+ // Compute H(exp(i * pi * f)). No native complex numbers in javascript,
+ // so break H(exp(i * pi * // f)) in to the real and imaginary parts of
+ // the numerator and denominator. Let omega = pi * f. Then the
+ // numerator is
+ //
+ // b0 + b1 * cos(omega) + b2 * cos(2 * omega) - i * (b1 * sin(omega) +
+ // b2 * sin(2 * omega))
+ //
+ // and the denominator is
+ //
+ // 1 + a1 * cos(omega) + a2 * cos(2 * omega) - i * (a1 * sin(omega) + a2
+ // * sin(2 * omega))
+ //
+ // Compute the magnitude and phase from the real and imaginary parts.
+
+ let omega = Math.PI * f;
+ let numeratorReal =
+ b0 + b1 * Math.cos(omega) + b2 * Math.cos(2 * omega);
+ let numeratorImag = -(b1 * Math.sin(omega) + b2 * Math.sin(2 * omega));
+ let denominatorReal =
+ 1 + a1 * Math.cos(omega) + a2 * Math.cos(2 * omega);
+ let denominatorImag =
+ -(a1 * Math.sin(omega) + a2 * Math.sin(2 * omega));
+
+ let magnitude = Math.sqrt(
+ (numeratorReal * numeratorReal + numeratorImag * numeratorImag) /
+ (denominatorReal * denominatorReal +
+ denominatorImag * denominatorImag));
+ let phase = Math.atan2(numeratorImag, numeratorReal) -
+ Math.atan2(denominatorImag, denominatorReal);
+
+ if (phase >= Math.PI) {
+ phase -= 2 * Math.PI;
+ } else if (phase <= -Math.PI) {
+ phase += 2 * Math.PI;
+ }
+
+ return {magnitude: magnitude, phase: phase};
+ }
+
+ // Compute the reference frequency response for the biquad filter |filter|
+ // at the frequency samples given by |frequencies|.
+ function frequencyResponseReference(filter, frequencies) {
+ let sampleRate = filter.context.sampleRate;
+ let normalizedFreq =
+ normalizedFrequency(filter.frequency.value, sampleRate);
+ let filterCoefficients = createFilter(
+ filter.type, normalizedFreq, filter.Q.value, filter.gain.value);
+
+ let magnitudes = [];
+ let phases = [];
+
+ for (let k = 0; k < frequencies.length; ++k) {
+ let response = getResponseAt(
+ filterCoefficients,
+ normalizedFrequency(frequencies[k], sampleRate));
+ magnitudes.push(response.magnitude);
+ phases.push(response.phase);
+ }
+
+ return {magnitudes: magnitudes, phases: phases};
+ }
+
+ // Compute a set of linearly spaced frequencies.
+ function createFrequencies(nFrequencies, sampleRate) {
+ let frequencies = new Float32Array(nFrequencies);
+ let nyquist = sampleRate / 2;
+ let freqDelta = nyquist / nFrequencies;
+
+ for (let k = 0; k < nFrequencies; ++k) {
+ frequencies[k] = k * freqDelta;
+ }
+
+ return frequencies;
+ }
+
+ function linearToDecibels(x) {
+ if (x) {
+ return 20 * Math.log(x) / Math.LN10;
+ } else {
+ return -1000;
+ }
+ }
+
+ // Look through the array and find any NaN or infinity. Returns the index
+ // of the first occurence or -1 if none.
+ function findBadNumber(signal) {
+ for (let k = 0; k < signal.length; ++k) {
+ if (!isValidNumber(signal[k])) {
+ return k;
+ }
+ }
+ return -1;
+ }
+
+ // Compute absolute value of the difference between phase angles, taking
+ // into account the wrapping of phases.
+ function absolutePhaseDifference(x, y) {
+ let diff = Math.abs(x - y);
+
+ if (diff > Math.PI) {
+ diff = 2 * Math.PI - diff;
+ }
+ return diff;
+ }
+
+ // Compare the frequency response with our expected response.
+ function compareResponses(
+ should, filter, frequencies, magResponse, phaseResponse) {
+ let expectedResponse = frequencyResponseReference(filter, frequencies);
+
+ expectedMagnitudes = expectedResponse.magnitudes;
+ expectedPhases = expectedResponse.phases;
+
+ let n = magResponse.length;
+ let badResponse = false;
+
+ let maxMagError = -1;
+ let maxMagErrorIndex = -1;
+
+ let k;
+ let hasBadNumber;
+
+ hasBadNumber = findBadNumber(magResponse);
+ badResponse = !should(
+ hasBadNumber >= 0 ? 1 : 0,
+ 'Number of non-finite values in magnitude response')
+ .beEqualTo(0);
+
+ hasBadNumber = findBadNumber(phaseResponse);
+ badResponse = !should(
+ hasBadNumber >= 0 ? 1 : 0,
+ 'Number of non-finte values in phase response')
+ .beEqualTo(0);
+
+ // These aren't testing the implementation itself. Instead, these are
+ // sanity checks on the reference. Failure here does not imply an error
+ // in the implementation.
+ hasBadNumber = findBadNumber(expectedMagnitudes);
+ badResponse =
+ !should(
+ hasBadNumber >= 0 ? 1 : 0,
+ 'Number of non-finite values in the expected magnitude response')
+ .beEqualTo(0);
+
+ hasBadNumber = findBadNumber(expectedPhases);
+ badResponse =
+ !should(
+ hasBadNumber >= 0 ? 1 : 0,
+ 'Number of non-finite values in expected phase response')
+ .beEqualTo(0);
+
+ // If we found a NaN or infinity, the following tests aren't very
+ // helpful, especially for NaN. We run them anyway, after printing a
+ // warning message.
+ should(
+ !badResponse,
+ 'Actual and expected results contained only finite values')
+ .beTrue();
+
+ for (k = 0; k < n; ++k) {
+ let error = Math.abs(
+ linearToDecibels(magResponse[k]) -
+ linearToDecibels(expectedMagnitudes[k]));
+ if (error > maxMagError) {
+ maxMagError = error;
+ maxMagErrorIndex = k;
+ }
+ }
+
+ should(
+ linearToDecibels(maxMagError),
+ 'Max error (' + linearToDecibels(maxMagError) +
+ ' dB) of magnitude response at frequency ' +
+ frequencies[maxMagErrorIndex] + ' Hz')
+ .beLessThanOrEqualTo(linearToDecibels(maxAllowedMagError));
+ let maxPhaseError = -1;
+ let maxPhaseErrorIndex = -1;
+
+ for (k = 0; k < n; ++k) {
+ let error =
+ absolutePhaseDifference(phaseResponse[k], expectedPhases[k]);
+ if (error > maxPhaseError) {
+ maxPhaseError = error;
+ maxPhaseErrorIndex = k;
+ }
+ }
+
+ should(
+ radToDegree(maxPhaseError),
+ 'Max error (' + radToDegree(maxPhaseError) +
+ ' deg) in phase response at frequency ' +
+ frequencies[maxPhaseErrorIndex] + ' Hz')
+ .beLessThanOrEqualTo(radToDegree(maxAllowedPhaseError));
+ }
+
+ function radToDegree(rad) {
+ // Radians to degrees
+ return rad * 180 / Math.PI;
+ }
+
+ audit.define(
+ {label: 'test', description: 'Biquad frequency response'},
+ function(task, should) {
+ context = new AudioContext();
+
+ filter = context.createBiquadFilter();
+
+ // Arbitrarily test a peaking filter, but any kind of filter can be
+ // tested.
+ filter.type = 'peaking';
+ filter.frequency.value = filterCutoff;
+ filter.Q.value = filterQ;
+ filter.gain.value = filterGain;
+
+ let frequencies =
+ createFrequencies(numberOfFrequencies, context.sampleRate);
+ magResponse = new Float32Array(numberOfFrequencies);
+ phaseResponse = new Float32Array(numberOfFrequencies);
+
+ filter.getFrequencyResponse(
+ frequencies, magResponse, phaseResponse);
+ compareResponses(
+ should, filter, frequencies, magResponse, phaseResponse);
+
+ task.done();
+ });
+
+ audit.define(
+ {
+ label: 'getFrequencyResponse',
+ description: 'Test out-of-bounds frequency values'
+ },
+ (task, should) => {
+ let context = new OfflineAudioContext(1, 1, sampleRate);
+ let filter = new BiquadFilterNode(context);
+
+ // Frequencies to test. These are all outside the valid range of
+ // frequencies of 0 to Nyquist.
+ let freq = new Float32Array(2);
+ freq[0] = -1;
+ freq[1] = context.sampleRate / 2 + 1;
+
+ let mag = new Float32Array(freq.length);
+ let phase = new Float32Array(freq.length);
+
+ filter.getFrequencyResponse(freq, mag, phase);
+
+ // Verify that the returned magnitude and phase entries are alL NaN
+ // since the frequencies are outside the valid range
+ for (let k = 0; k < mag.length; ++k) {
+ should(mag[k],
+ 'Magnitude response at frequency ' + freq[k])
+ .beNaN();
+ }
+
+ for (let k = 0; k < phase.length; ++k) {
+ should(phase[k],
+ 'Phase response at frequency ' + freq[k])
+ .beNaN();
+ }
+
+ task.done();
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html
new file mode 100644
index 00000000000..45c335bc4b8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highpass.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquad-highpass.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/biquad-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'test', description: 'Biquad highpass filter'},
+ function(task, should) {
+ // Create offline audio context.
+ let context = new OfflineAudioContext(
+ 2, sampleRate * renderLengthSeconds, sampleRate);
+
+ // The filters we want to test.
+ let filterParameters = [
+ {cutoff: 0, q: 1, gain: 1},
+ {cutoff: 1, q: 1, gain: 1},
+ {cutoff: 0.25, q: 1, gain: 1},
+ ];
+
+ createTestAndRun(context, 'highpass', {
+ should: should,
+ threshold: 1.5487e-8,
+ filterParameters: filterParameters
+ }).then(task.done.bind(task));
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highshelf.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highshelf.html
new file mode 100644
index 00000000000..345195f104e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-highshelf.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquad-highshelf.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/biquad-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'test', description: 'Biquad highshelf filter'},
+ function(task, should) {
+
+ // Create offline audio context.
+ let context = new OfflineAudioContext(
+ 2, sampleRate * renderLengthSeconds, sampleRate);
+
+ // The filters we want to test.
+ let filterParameters = [
+ {cutoff: 0, q: 10, gain: 10},
+ {cutoff: 1, q: 10, gain: 10},
+ {cutoff: 0.25, q: 10, gain: 10},
+ ];
+
+ createTestAndRun(context, 'highshelf', {
+ should: should,
+ threshold: 6.2577e-8,
+ filterParameters: filterParameters
+ }).then(task.done.bind(task));
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowpass.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowpass.html
new file mode 100644
index 00000000000..d20786e36b1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowpass.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquad-lowpass.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/biquad-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'test', description: 'Biquad lowpass filter'},
+ function(task, should) {
+
+ // Create offline audio context.
+ let context = new OfflineAudioContext(
+ 2, sampleRate * renderLengthSeconds, sampleRate);
+
+ // The filters we want to test.
+ let filterParameters = [
+ {cutoff: 0, q: 1, gain: 1},
+ {cutoff: 1, q: 1, gain: 1},
+ {cutoff: 0.25, q: 1, gain: 1},
+ {cutoff: 0.25, q: 1, gain: 1, detune: 100},
+ {cutoff: 0.01, q: 1, gain: 1, detune: -200},
+ ];
+
+ createTestAndRun(context, 'lowpass', {
+ should: should,
+ threshold: 9.7869e-8,
+ filterParameters: filterParameters
+ }).then(task.done.bind(task));
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowshelf.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowshelf.html
new file mode 100644
index 00000000000..ab76cefd4bc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-lowshelf.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquad-lowshelf.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/biquad-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'test', description: 'Biquad lowshelf filter'},
+ function(task, should) {
+
+ // Create offline audio context.
+ let context = new OfflineAudioContext(
+ 2, sampleRate * renderLengthSeconds, sampleRate);
+
+ // The filters we want to test.
+ let filterParameters = [
+ {cutoff: 0, q: 10, gain: 10},
+ {cutoff: 1, q: 10, gain: 10},
+ {cutoff: 0.25, q: 10, gain: 10},
+ ];
+
+ createTestAndRun(context, 'lowshelf', {
+ should: should,
+ threshold: 3.8349e-8,
+ filterParameters: filterParameters
+ }).then(task.done.bind(task));
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html
new file mode 100644
index 00000000000..98e6e6e02c0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-notch.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquad-notch.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/biquad-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'test', description: 'Biquad notch filter'},
+ function(task, should) {
+
+ // Create offline audio context.
+ let context = new OfflineAudioContext(
+ 2, sampleRate * renderLengthSeconds, sampleRate);
+
+ let filterParameters = [
+ {cutoff: 0, q: 10, gain: 1},
+ {cutoff: 1, q: 10, gain: 1},
+ {cutoff: .5, q: 0, gain: 1},
+ {cutoff: 0.25, q: 10, gain: 1},
+ ];
+
+ createTestAndRun(context, 'notch', {
+ should: should,
+ threshold: 1.9669e-8,
+ filterParameters: filterParameters
+ }).then(task.done.bind(task));
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-peaking.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-peaking.html
new file mode 100644
index 00000000000..90b7c1546de
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-peaking.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquad-peaking.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ <script src="/webaudio/resources/biquad-testing.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'test', description: 'Biquad peaking filter'},
+ function(task, should) {
+
+ window.jsTestIsAsync = true;
+
+ // Create offline audio context.
+ let context = new OfflineAudioContext(
+ 2, sampleRate * renderLengthSeconds, sampleRate);
+
+ // The filters we want to test.
+ let filterParameters = [
+ {cutoff: 0, q: 10, gain: 10},
+ {cutoff: 1, q: 10, gain: 10},
+ {cutoff: .5, q: 0, gain: 10},
+ {cutoff: 0.25, q: 10, gain: 10},
+ ];
+
+ createTestAndRun(context, 'peaking', {
+ should: should,
+ threshold: 5.8234e-8,
+ filterParameters: filterParameters
+ }).then(task.done.bind(task));
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html
new file mode 100644
index 00000000000..3141bf7ff31
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquad-tail.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ Test Biquad Tail Output
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ // A high sample rate shows the issue more clearly.
+ let sampleRate = 192000;
+ // Some short duration because we don't need to run the test for very
+ // long.
+ let testDurationSec = 0.5;
+ let testDurationFrames = testDurationSec * sampleRate;
+
+ // Amplitude experimentally determined to give a biquad output close to 1.
+ // (No attempt was made to produce exactly 1; it's not needed.)
+ let sourceAmplitude = 100;
+
+ // The output of the biquad filter should not change by more than this
+ // much between output samples. Threshold was determined experimentally.
+ let glitchThreshold = 0.012968;
+
+ // Test that a Biquad filter doesn't have it's output terminated because
+ // the input has gone away. Generally, when a source node is finished, it
+ // disconnects itself from any downstream nodes. This is the correct
+ // behavior. Nodes that have no inputs (disconnected) are generally
+ // assumed to output zeroes. This is also desired behavior. However,
+ // biquad filters have memory so they should not suddenly output zeroes
+ // when the input is disconnected. This test checks to see if the output
+ // doesn't suddenly change to zero.
+ audit.define(
+ {label: 'test', description: 'Biquad Tail Output'},
+ function(task, should) {
+ let context =
+ new OfflineAudioContext(1, testDurationFrames, sampleRate);
+
+ // Create an impulse source.
+ let buffer = context.createBuffer(1, 1, context.sampleRate);
+ buffer.getChannelData(0)[0] = sourceAmplitude;
+ let source = context.createBufferSource();
+ source.buffer = buffer;
+
+ // Create the biquad filter. It doesn't really matter what kind, so
+ // the default filter type and parameters is fine. Connect the
+ // source to it.
+ let biquad = context.createBiquadFilter();
+ source.connect(biquad);
+ biquad.connect(context.destination);
+
+ source.start();
+
+ context.startRendering().then(function(result) {
+ // There should be no large discontinuities in the output
+ should(result.getChannelData(0), 'Biquad output')
+ .notGlitch(glitchThreshold);
+ task.done();
+ })
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquadfilternode-basic.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquadfilternode-basic.html
new file mode 100644
index 00000000000..7e71d073024
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/biquadfilternode-basic.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquadfilternode-basic.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {label: 'test', description: 'Basic tests for BiquadFilterNode'},
+ function(task, should) {
+
+ let context = new AudioContext();
+ let filter = context.createBiquadFilter();
+
+ should(filter.numberOfInputs, 'Number of inputs').beEqualTo(1);
+
+ should(filter.numberOfOutputs, 'Number of outputs').beEqualTo(1);
+
+ should(filter.type, 'Default filter type').beEqualTo('lowpass');
+
+ should(filter.frequency.value, 'Default frequency value')
+ .beEqualTo(350);
+
+ should(filter.Q.value, 'Default Q value').beEqualTo(1);
+
+ should(filter.gain.value, 'Default gain value').beEqualTo(0);
+
+ // Check that all legal filter types can be set.
+ let filterTypeArray = [
+ {type: 'lowpass'}, {type: 'highpass'}, {type: 'bandpass'},
+ {type: 'lowshelf'}, {type: 'highshelf'}, {type: 'peaking'},
+ {type: 'notch'}, {type: 'allpass'}
+ ];
+
+ for (let i = 0; i < filterTypeArray.length; ++i) {
+ should(
+ () => filter.type = filterTypeArray[i].type,
+ 'Setting filter.type to ' + filterTypeArray[i].type)
+ .notThrow();
+ should(filter.type, 'Filter type is')
+ .beEqualTo(filterTypeArray[i].type);
+ }
+
+
+ // Check that numerical values are no longer supported
+ filter.type = 99;
+ should(filter.type, 'Setting filter.type to (invalid) 99')
+ .notBeEqualTo(99);
+
+ task.done();
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html
new file mode 100644
index 00000000000..d54bc0bd8ab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-biquadfilternode-interface/no-dezippering.html
@@ -0,0 +1,288 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>
+ biquad-bandpass.html
+ </title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ <script src="/webaudio/resources/biquad-filters.js"></script>
+ </head>
+ <body>
+ <script id="layout-test-code">
+ let audit = Audit.createTaskRunner();
+
+ // In the tests below, the initial values are not important, except that
+ // we wanted them to be all different so that the output contains
+ // different values for the first few samples. Otherwise, the actual
+ // values don't really matter. A peaking filter is used because the
+ // frequency, Q, gain, and detune parameters are used by this filter.
+ //
+ // Also, for the changeList option, the times and new values aren't really
+ // important. They just need to change so that we can verify that the
+ // outputs from the .value setter still matches the output from the
+ // corresponding setValueAtTime.
+ audit.define(
+ {label: 'Test 0', description: 'No dezippering for frequency'},
+ (task, should) => {
+ doTest(should, {
+ paramName: 'frequency',
+ initializer: {type: 'peaking', Q: 1, gain: 5},
+ changeList:
+ [{quantum: 2, newValue: 800}, {quantum: 7, newValue: 200}],
+ threshold: 3.0399e-6
+ }).then(() => task.done());
+ });
+
+ audit.define(
+ {label: 'Test 1', description: 'No dezippering for detune'},
+ (task, should) => {
+ doTest(should, {
+ paramName: 'detune',
+ initializer:
+ {type: 'peaking', frequency: 400, Q: 3, detune: 33, gain: 10},
+ changeList:
+ [{quantum: 2, newValue: 1000}, {quantum: 5, newValue: -400}],
+ threshold: 4.0532e-6
+ }).then(() => task.done());
+ });
+
+ audit.define(
+ {label: 'Test 2', description: 'No dezippering for Q'},
+ (task, should) => {
+ doTest(should, {
+ paramName: 'Q',
+ initializer: {type: 'peaking', Q: 5},
+ changeList:
+ [{quantum: 2, newValue: 10}, {quantum: 8, newValue: -10}]
+ }).then(() => task.done());
+ });
+
+ audit.define(
+ {label: 'Test 3', description: 'No dezippering for gain'},
+ (task, should) => {
+ doTest(should, {
+ paramName: 'gain',
+ initializer: {type: 'peaking', gain: 1},
+ changeList:
+ [{quantum: 2, newValue: 5}, {quantum: 6, newValue: -.3}],
+ threshold: 1.9074e-6
+ }).then(() => task.done());
+ });
+
+ // This test compares the filter output against a JS implementation of the
+ // filter. We're only testing a change in the frequency for a lowpass
+ // filter. This assumes we don't need to test other AudioParam changes
+ // with JS code because any mistakes would be exposed in the tests above.
+ audit.define(
+ {
+ label: 'Test 4',
+ description: 'No dezippering of frequency vs JS filter'
+ },
+ (task, should) => {
+ // Channel 0 is the source, channel 1 is the filtered output.
+ let context = new OfflineAudioContext(2, 2048, 16384);
+
+ let merger = new ChannelMergerNode(
+ context, {numberOfInputs: context.destination.channelCount});
+ merger.connect(context.destination);
+
+ let src = new OscillatorNode(context);
+ let f = new BiquadFilterNode(context, {type: 'lowpass'});
+
+ // Remember the initial filter parameters.
+ let initialFilter = {
+ type: f.type,
+ frequency: f.frequency.value,
+ gain: f.gain.value,
+ detune: f.detune.value,
+ Q: f.Q.value
+ };
+
+ src.connect(merger, 0, 0);
+ src.connect(f).connect(merger, 0, 1);
+
+ // Apply the filter change at frame |changeFrame| with a new
+ // frequency value of |newValue|.
+ let changeFrame = 2 * RENDER_QUANTUM_FRAMES;
+ let newValue = 750;
+
+ context.suspend(changeFrame / context.sampleRate)
+ .then(() => f.frequency.value = newValue)
+ .then(() => context.resume());
+
+ src.start();
+
+ context.startRendering()
+ .then(audio => {
+ let signal = audio.getChannelData(0);
+ let actual = audio.getChannelData(1);
+
+ // Get initial filter coefficients and updated coefficients
+ let nyquistFreq = context.sampleRate / 2;
+ let initialCoef = createFilter(
+ initialFilter.type, initialFilter.frequency / nyquistFreq,
+ initialFilter.Q, initialFilter.gain);
+
+ let finalCoef = createFilter(
+ f.type, f.frequency.value / nyquistFreq, f.Q.value,
+ f.gain.value);
+
+ let expected = new Float32Array(signal.length);
+
+ // Filter the initial part of the signal.
+ expected[0] =
+ filterSample(signal[0], initialCoef, 0, 0, 0, 0);
+ expected[1] = filterSample(
+ signal[1], initialCoef, expected[0], 0, signal[0], 0);
+
+ for (let k = 2; k < changeFrame; ++k) {
+ expected[k] = filterSample(
+ signal[k], initialCoef, expected[k - 1],
+ expected[k - 2], signal[k - 1], signal[k - 2]);
+ }
+
+ // Filter the rest of the input with the new coefficients
+ for (let k = changeFrame; k < signal.length; ++k) {
+ expected[k] = filterSample(
+ signal[k], finalCoef, expected[k - 1], expected[k - 2],
+ signal[k - 1], signal[k - 2]);
+ }
+
+ // The JS filter should match the actual output.
+ let match =
+ should(actual, 'Output from ' + f.type + ' filter')
+ .beCloseToArray(
+ expected, {absoluteThreshold: 4.7684e-7});
+ should(match, 'Output matches JS filter results').beTrue();
+ })
+ .then(() => task.done());
+ });
+
+ audit.define(
+ {label: 'Test 5', description: 'Test with modulation'},
+ (task, should) => {
+ doTest(should, {
+ prefix: 'Modulation: ',
+ paramName: 'frequency',
+ initializer: {type: 'peaking', Q: 5, gain: 5},
+ modulation: true,
+ changeList:
+ [{quantum: 2, newValue: 10}, {quantum: 8, newValue: -10}]
+ }).then(() => task.done());
+
+ });
+
+ audit.run();
+
+ // Run test, returning the promise from startRendering. |options|
+ // specifies the parameters for the test. |options.paramName| is the name
+ // of the AudioParam of the filter that is being tested.
+ // |options.initializer| is the initial value to be used in constructing
+ // the filter. |options.changeList| is an array consisting of dictionary
+ // with two members: |quantum| is the rendering quantum at which time we
+ // want to change the AudioParam value, and |newValue| is the value to be
+ // used.
+ function doTest(should, options) {
+ let paramName = options.paramName;
+ let newValue = options.newValue;
+ let prefix = options.prefix || '';
+
+ // Create offline audio context. The sample rate should be a power of
+ // two to eliminate any round-off errors in computing the time at which
+ // to suspend the context for the parameter change. The length is
+ // fairly arbitrary as long as it's big enough to the changeList
+ // values. There are two channels: channel 0 is output for the filter
+ // under test, and channel 1 is the output of referencef filter.
+ let context = new OfflineAudioContext(2, 2048, 16384);
+
+ let merger = new ChannelMergerNode(
+ context, {numberOfInputs: context.destination.channelCount});
+ merger.connect(context.destination);
+
+ let src = new OscillatorNode(context);
+
+ // |f0| is the filter under test that will have its AudioParam value
+ // changed. |f1| is the reference filter that uses setValueAtTime to
+ // update the AudioParam value.
+ let f0 = new BiquadFilterNode(context, options.initializer);
+ let f1 = new BiquadFilterNode(context, options.initializer);
+
+ src.connect(f0).connect(merger, 0, 0);
+ src.connect(f1).connect(merger, 0, 1);
+
+ // Modulate the AudioParam with an input signal, if requested.
+ if (options.modulation) {
+ // The modulation signal is a sine wave with amplitude 1/3 the cutoff
+ // frequency of the test filter. The amplitude is fairly arbitrary,
+ // but we want it to be a significant fraction of the cutoff so that
+ // the cutoff varies quite a bit in the test.
+ let mod =
+ new OscillatorNode(context, {type: 'sawtooth', frequency: 1000});
+ let modGain = new GainNode(context, {gain: f0.frequency.value / 3});
+ mod.connect(modGain);
+ modGain.connect(f0[paramName]);
+ modGain.connect(f1[paramName]);
+ mod.start();
+ }
+ // Output a message showing where we're starting from.
+ should(f0[paramName].value, prefix + `At time 0, ${paramName}`)
+ .beEqualTo(f0[paramName].value);
+
+ // Schedule all of the desired changes from |changeList|.
+ options.changeList.forEach(change => {
+ let changeTime =
+ change.quantum * RENDER_QUANTUM_FRAMES / context.sampleRate;
+ let value = change.newValue;
+
+ // Just output a message to show what we're doing.
+ should(value, prefix + `At time ${changeTime}, ${paramName}`)
+ .beEqualTo(value);
+
+ // Update the AudioParam value of each filter using setValueAtTime or
+ // the value setter.
+ f1[paramName].setValueAtTime(value, changeTime);
+ context.suspend(changeTime)
+ .then(() => f0[paramName].value = value)
+ .then(() => context.resume());
+ });
+
+ src.start();
+
+ return context.startRendering().then(audio => {
+ let actual = audio.getChannelData(0);
+ let expected = audio.getChannelData(1);
+
+ // The output from both filters MUST match exactly if dezippering has
+ // been properly removed.
+ let match = should(actual, `${prefix}Output from ${paramName} setter`)
+ .beCloseToArray(
+ expected, {absoluteThreshold: options.threshold});
+
+ // Just an extra message saying that what we're comparing, to make the
+ // output clearer. (Not really neceesary, but nice.)
+ should(
+ match,
+ `${prefix}Output from ${
+ paramName
+ } setter matches setValueAtTime output`)
+ .beTrue();
+ });
+ }
+
+ // Filter one sample:
+ //
+ // y[n] = b0 * x[n] + b1*x[n-1] + b2*x[n-2] - a1*y[n-1] - a2*y[n-2]
+ //
+ // where |x| is x[n], |xn1| is x[n-1], |xn2| is x[n-2], |yn1| is y[n-1],
+ // and |yn2| is y[n-2]. |coef| is a dictonary of the filter coefficients
+ // |b0|, |b1|, |b2|, |a1|, and |a2|.
+ function filterSample(x, coef, yn1, yn2, xn1, xn2) {
+ return coef.b0 * x + coef.b1 * xn1 + coef.b2 * xn2 - coef.a1 * yn1 -
+ coef.a2 * yn2;
+ }
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/idl-test.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/idl-test.html
deleted file mode 100644
index 5922b96f697..00000000000
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/idl-test.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<!DOCTYPE html>
-<html class="a">
-<head>
-<title>DelayNode IDL Test</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/idlharness.js"></script>
-<script src="/resources/WebIDLParser.js"></script>
-<script src="/webaudio/js/helpers.js"></script>
-<style type="text/css">
- #event-target-idl,
- #base-audio-context-idl,
- #audio-node-idl,
- #audio-param-idl
- { visibility:hidden; height: 0px;}
- </style>
-</head>
-<body class="a">
-
- <pre id="event-target-idl">interface EventTarget {
- void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
- void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
- boolean dispatchEvent(Event event);
-};
-
-/*
-callback interface EventListener {
- void handleEvent(Event event);
-};
-*/
-// Callback interfaces are not supported yet, but that's ok
-interface EventListener {};
-</pre>
-
- <pre id="base-audio-context-idl">callback DecodeErrorCallback = void (DOMException error);
-
-callback DecodeSuccessCallback = void (AudioBuffer decodedData);
-
-interface BaseAudioContext : EventTarget {
- readonly attribute AudioDestinationNode destination;
- readonly attribute float sampleRate;
- readonly attribute double currentTime;
- readonly attribute AudioListener listener;
- readonly attribute AudioContextState state;
- readonly attribute double baseLatency;
- Promise<void> resume ();
- attribute EventHandler onstatechange;
- AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate);
- Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, optional DecodeSuccessCallback successCallback, optional DecodeErrorCallback errorCallback);
- AudioBufferSourceNode createBufferSource ();
- ConstantSourceNode createConstantSource ();
- ScriptProcessorNode createScriptProcessor (optional unsigned long bufferSize = 0
- , optional unsigned long numberOfInputChannels = 2
- , optional unsigned long numberOfOutputChannels = 2
- );
- AnalyserNode createAnalyser ();
- GainNode createGain ();
- DelayNode createDelay (optional double maxDelayTime);
- BiquadFilterNode createBiquadFilter ();
- IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback);
- WaveShaperNode createWaveShaper ();
- PannerNode createPanner ();
- StereoPannerNode createStereoPanner ();
- ConvolverNode createConvolver ();
- ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6
- );
- ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6
- );
- DynamicsCompressorNode createDynamicsCompressor ();
- OscillatorNode createOscillator ();
- PeriodicWave createPeriodicWave (Float32Array real, Float32Array imag, optional PeriodicWaveConstraints constraints);
-};</pre>
-
- <pre id="audio-node-idl">enum ChannelCountMode {
- "max",
- "clamped-max",
- "explicit"
-};
-
-enum ChannelInterpretation {
- "speakers",
- "discrete"
-};
-
-interface AudioNode : EventTarget {
-
- void connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0);
- void connect(AudioParam destination, optional unsigned long output = 0);
- void disconnect(optional unsigned long output = 0);
-
- readonly attribute BaseAudioContext context;
- readonly attribute unsigned long numberOfInputs;
- readonly attribute unsigned long numberOfOutputs;
-
- // Channel up-mixing and down-mixing rules for all inputs.
- attribute unsigned long channelCount;
- attribute ChannelCountMode channelCountMode;
- attribute ChannelInterpretation channelInterpretation;
-
-};</pre>
-
- <pre id="audio-param-idl">interface AudioParam {
-
- attribute float value;
- readonly attribute float defaultValue;
- readonly attribute float minValue;
- readonly attribute float maxValue;
-
- // Parameter automation.
- void setValueAtTime(float value, double startTime);
- void linearRampToValueAtTime(float value, double endTime);
- void exponentialRampToValueAtTime(float value, double endTime);
-
- // Exponentially approach the target value with a rate having the given time constant.
- void setTargetAtTime(float target, double startTime, double timeConstant);
-
- // Sets an array of arbitrary parameter values starting at time for the given duration.
- // The number of values will be scaled to fit into the desired duration.
- void setValueCurveAtTime(Float32Array values, double startTime, double duration);
-
- // Cancels all scheduled parameter changes with times greater than or equal to startTime.
- void cancelScheduledValues(double startTime);
-
-};</pre>
-
-<pre id="delay-node-idl">dictionary DelayOptions : AudioNodeOptions {
- double maxDelayTime = 1;
- double delayTime = 0;
-};
-
-[Constructor(BaseAudioContext context, optional DelayOptions options)]
-interface DelayNode : AudioNode {
-
- readonly attribute AudioParam delayTime;
-
-};</pre>
-
- <div id="log"></div>
-
- <script>
-(function() {
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("event-target-idl").textContent);
- idl_array.add_untested_idls(document.getElementById("base-audio-context-idl").textContent);
- idl_array.add_untested_idls(document.getElementById("audio-node-idl").textContent);
- idl_array.add_untested_idls(document.getElementById("audio-param-idl").textContent);
- idl_array.add_idls(document.getElementById("delay-node-idl").textContent);
-
- delay_node = (new AudioContext).createDelay();
-
- idl_array.add_objects({DelayNode: ["delay_node"]});
- idl_array.test();
-})();
- </script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-gainnode-interface/idl-test.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-gainnode-interface/idl-test.html
deleted file mode 100644
index 7ad8bc90364..00000000000
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-gainnode-interface/idl-test.html
+++ /dev/null
@@ -1,154 +0,0 @@
-<!DOCTYPE html>
-<html class="a">
-<head>
-<title>GainNode IDL Test</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/idlharness.js"></script>
-<script src="/resources/WebIDLParser.js"></script>
-<script src="/webaudio/js/helpers.js"></script>
-<style type="text/css">
- #event-target-idl,
- #base-audio-context-idl,
- #audio-node-idl,
- #audio-param-idl
- { visibility:hidden; height: 0px;}
- </style>
-</head>
-<body class="a">
-
- <pre id="event-target-idl">interface EventTarget {
- void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
- void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
- boolean dispatchEvent(Event event);
-};
-
-/*
-callback interface EventListener {
- void handleEvent(Event event);
-};
-*/
-// Callback interfaces are not supported yet, but that's ok
-interface EventListener {};
-</pre>
-
- <pre id="base-audio-context-idl">callback DecodeErrorCallback = void (DOMException error);
-callback DecodeSuccessCallback = void (AudioBuffer decodedData);
-
-interface BaseAudioContext : EventTarget {
- readonly attribute AudioDestinationNode destination;
- readonly attribute float sampleRate;
- readonly attribute double currentTime;
- readonly attribute AudioListener listener;
- readonly attribute AudioContextState state;
- readonly attribute double baseLatency;
- Promise<void> resume ();
- attribute EventHandler onstatechange;
- AudioBuffer createBuffer (unsigned long numberOfChannels, unsigned long length, float sampleRate);
- Promise<AudioBuffer> decodeAudioData (ArrayBuffer audioData, optional DecodeSuccessCallback successCallback, optional DecodeErrorCallback errorCallback);
- AudioBufferSourceNode createBufferSource ();
- ConstantSourceNode createConstantSource ();
- ScriptProcessorNode createScriptProcessor (optional unsigned long bufferSize = 0
- , optional unsigned long numberOfInputChannels = 2
- , optional unsigned long numberOfOutputChannels = 2
- );
- AnalyserNode createAnalyser ();
- GainNode createGain ();
- DelayNode createDelay (optional double maxDelayTime);
- BiquadFilterNode createBiquadFilter ();
- IIRFilterNode createIIRFilter (sequence<double> feedforward, sequence<double> feedback);
- WaveShaperNode createWaveShaper ();
- PannerNode createPanner ();
- StereoPannerNode createStereoPanner ();
- ConvolverNode createConvolver ();
- ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6
- );
- ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6
- );
- DynamicsCompressorNode createDynamicsCompressor ();
- OscillatorNode createOscillator ();
- PeriodicWave createPeriodicWave (Float32Array real, Float32Array imag, optional PeriodicWaveConstraints constraints);
-};</pre>
-
- <pre id="audio-node-idl">enum ChannelCountMode {
- "max",
- "clamped-max",
- "explicit"
-};
-
-enum ChannelInterpretation {
- "speakers",
- "discrete"
-};
-
-interface AudioNode : EventTarget {
-
- void connect(AudioNode destination, optional unsigned long output = 0, optional unsigned long input = 0);
- void connect(AudioParam destination, optional unsigned long output = 0);
- void disconnect(optional unsigned long output = 0);
-
- readonly attribute BaseAudioContext context;
- readonly attribute unsigned long numberOfInputs;
- readonly attribute unsigned long numberOfOutputs;
-
- // Channel up-mixing and down-mixing rules for all inputs.
- attribute unsigned long channelCount;
- attribute ChannelCountMode channelCountMode;
- attribute ChannelInterpretation channelInterpretation;
-
-};</pre>
-
- <pre id="audio-param-idl">interface AudioParam {
-
- attribute float value;
- readonly attribute float defaultValue;
- readonly attribute float minValue;
- readonly attribute float maxValue;
-
- // Parameter automation.
- void setValueAtTime(float value, double startTime);
- void linearRampToValueAtTime(float value, double endTime);
- void exponentialRampToValueAtTime(float value, double endTime);
-
- // Exponentially approach the target value with a rate having the given time constant.
- void setTargetAtTime(float target, double startTime, double timeConstant);
-
- // Sets an array of arbitrary parameter values starting at time for the given duration.
- // The number of values will be scaled to fit into the desired duration.
- void setValueCurveAtTime(Float32Array values, double startTime, double duration);
-
- // Cancels all scheduled parameter changes with times greater than or equal to startTime.
- void cancelScheduledValues(double startTime);
-
-};</pre>
-
-<pre id="gain-node-idl">dictionary GainOptions : AudioNodeOptions {
- float gain = 1.0;
-};
-
-[Constructor(BaseAudioContext context, optional GainOptions options)]
-interface GainNode : AudioNode {
-
- readonly attribute AudioParam gain;
-
-};</pre>
-
- <div id="log"></div>
-
- <script>
-(function() {
- var idl_array = new IdlArray();
- idl_array.add_untested_idls(document.getElementById("event-target-idl").textContent);
- idl_array.add_untested_idls(document.getElementById("base-audio-context-idl").textContent);
- idl_array.add_untested_idls(document.getElementById("audio-node-idl").textContent);
- idl_array.add_untested_idls(document.getElementById("audio-param-idl").textContent);
- idl_array.add_idls(document.getElementById("gain-node-idl").textContent);
-
- gain_node = (new AudioContext).createGain();
-
- idl_array.add_objects({GainNode: ["gain_node"]});
- idl_array.test();
-})();
- </script>
-</body>
-</html>
diff --git a/tests/wpt/web-platform-tests/webauthn/interfaces.https.any.js b/tests/wpt/web-platform-tests/webauthn/interfaces.https.any.js
index bd5f9dc4a28..22766e650ce 100644
--- a/tests/wpt/web-platform-tests/webauthn/interfaces.https.any.js
+++ b/tests/wpt/web-platform-tests/webauthn/interfaces.https.any.js
@@ -20,6 +20,7 @@ promise_test(async () => {
idlArray.add_untested_idls('interface CredentialCreationOptions {};');
idlArray.add_untested_idls('interface CredentialRequestOptions {};');
idlArray.add_untested_idls("interface Navigator { };");
+ idlArray.add_untested_idls("interface Credential { };");
// TODO: change to "tested" for real browsers?
idlArray.add_untested_idls("partial interface Navigator { readonly attribute WebAuthentication authentication; };");
idlArray.add_objects({
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/actions/modifier_click.py b/tests/wpt/web-platform-tests/webdriver/tests/actions/modifier_click.py
index fdd43e2ebcb..85a23d46642 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/actions/modifier_click.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/actions/modifier_click.py
@@ -1,39 +1,9 @@
-# META: timeout=long
-
import pytest
from tests.actions.support.refine import filter_dict, get_events
from tests.actions.support.keys import Keys
-# Using local fixtures because we want to start a new session between
-# each test, otherwise the clicks in each test interfere with each other.
-@pytest.fixture(autouse=True)
-def release_actions(mod_click_session, request):
- request.addfinalizer(mod_click_session.actions.release)
-
-
-@pytest.fixture
-def mod_click_session(new_session, url, add_browser_capabilites):
- _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}})
- session.url = url("/webdriver/tests/actions/support/test_actions_wdspec.html")
-
- return session
-
-
-@pytest.fixture
-def key_chain(mod_click_session):
- return mod_click_session.actions.sequence("key", "keyboard_id")
-
-
-@pytest.fixture
-def mouse_chain(mod_click_session):
- return mod_click_session.actions.sequence(
- "pointer",
- "pointer_id",
- {"pointerType": "mouse"})
-
-
@pytest.mark.parametrize("modifier, prop", [
(Keys.ALT, "altKey"),
(Keys.R_ALT, "altKey"),
@@ -42,19 +12,15 @@ def mouse_chain(mod_click_session):
(Keys.SHIFT, "shiftKey"),
(Keys.R_SHIFT, "shiftKey"),
])
-def test_modifier_click(mod_click_session,
- key_chain,
- mouse_chain,
- modifier,
- prop):
+def test_modifier_click(session, test_actions_page, key_chain, mouse_chain, modifier, prop):
key_chain \
.pause(200) \
.key_down(modifier) \
.pause(200) \
.key_up(modifier)
- outer = mod_click_session.find.css("#outer", all=False)
+ outer = session.find.css("#outer", all=False)
mouse_chain.click(element=outer)
- mod_click_session.actions.perform([key_chain.dict, mouse_chain.dict])
+ session.actions.perform([key_chain.dict, mouse_chain.dict])
expected = [
{"type": "mousemove"},
{"type": "mousedown"},
@@ -71,12 +37,12 @@ def test_modifier_click(mod_click_session,
e.update(defaults)
if e["type"] != "mousemove":
e[prop] = True
- filtered_events = [filter_dict(e, expected[0]) for e in get_events(mod_click_session)]
+ filtered_events = [filter_dict(e, expected[0]) for e in get_events(session)]
assert expected == filtered_events
-def test_many_modifiers_click(mod_click_session, key_chain, mouse_chain):
- outer = mod_click_session.find.css("#outer", all=False)
+def test_many_modifiers_click(session, test_actions_page, key_chain, mouse_chain):
+ outer = session.find.css("#outer", all=False)
key_chain \
.pause(0) \
.key_down(Keys.CONTROL) \
@@ -92,7 +58,7 @@ def test_many_modifiers_click(mod_click_session, key_chain, mouse_chain):
.pause(0) \
.pause(0) \
.pointer_down()
- mod_click_session.actions.perform([key_chain.dict, mouse_chain.dict])
+ session.actions.perform([key_chain.dict, mouse_chain.dict])
expected = [
{"type": "mousemove"},
# shift and ctrl presses
@@ -113,5 +79,5 @@ def test_many_modifiers_click(mod_click_session, key_chain, mouse_chain):
for e in expected[1:4]:
e["shiftKey"] = True
e["ctrlKey"] = True
- events = [filter_dict(e, expected[0]) for e in get_events(mod_click_session)]
+ events = [filter_dict(e, expected[0]) for e in get_events(session)]
assert events == expected
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse_dblclick.py b/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse_dblclick.py
index bdd39057f5d..fc53a51ab76 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse_dblclick.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse_dblclick.py
@@ -1,40 +1,11 @@
import pytest
-from tests.actions.support.mouse import get_inview_center, get_viewport_rect
from tests.actions.support.refine import get_events, filter_dict
from tests.support.asserts import assert_move_to_coordinates
-_DBLCLICK_INTERVAL = 640
-
-
-# Using local fixtures because we want to start a new session between
-# each test, otherwise the clicks in each test interfere with each other.
-@pytest.fixture(autouse=True)
-def release_actions(dblclick_session, request):
- # release all actions after each test
- # equivalent to a teardown_function, but with access to session fixture
- request.addfinalizer(dblclick_session.actions.release)
-
-
-@pytest.fixture
-def dblclick_session(new_session, url, add_browser_capabilites):
- _, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}})
- session.url = url("/webdriver/tests/actions/support/test_actions_wdspec.html")
-
- return session
-
-
-@pytest.fixture
-def mouse_chain(dblclick_session):
- return dblclick_session.actions.sequence(
- "pointer",
- "pointer_id",
- {"pointerType": "mouse"})
-
-
@pytest.mark.parametrize("click_pause", [0, 200])
-def test_dblclick_at_coordinates(dblclick_session, mouse_chain, click_pause):
+def test_dblclick_at_coordinates(session, test_actions_page, mouse_chain, click_pause):
div_point = {
"x": 82,
"y": 187,
@@ -45,7 +16,7 @@ def test_dblclick_at_coordinates(dblclick_session, mouse_chain, click_pause):
.pause(click_pause) \
.click() \
.perform()
- events = get_events(dblclick_session)
+ events = get_events(session)
assert_move_to_coordinates(div_point, "outer", events)
expected = [
{"type": "mousedown", "button": 0},
@@ -59,51 +30,3 @@ def test_dblclick_at_coordinates(dblclick_session, mouse_chain, click_pause):
assert len(events) == 8
filtered_events = [filter_dict(e, expected[0]) for e in events]
assert expected == filtered_events[1:]
-
-
-def test_dblclick_with_pause_after_second_pointerdown(dblclick_session, mouse_chain):
- outer = dblclick_session.find.css("#outer", all=False)
- center = get_inview_center(outer.rect, get_viewport_rect(dblclick_session))
- mouse_chain \
- .pointer_move(int(center["x"]), int(center["y"])) \
- .click() \
- .pointer_down() \
- .pause(_DBLCLICK_INTERVAL + 10) \
- .pointer_up() \
- .perform()
- events = get_events(dblclick_session)
- expected = [
- {"type": "mousedown", "button": 0},
- {"type": "mouseup", "button": 0},
- {"type": "click", "button": 0},
- {"type": "mousedown", "button": 0},
- {"type": "mouseup", "button": 0},
- {"type": "click", "button": 0},
- {"type": "dblclick", "button": 0},
- ]
- assert len(events) == 8
- filtered_events = [filter_dict(e, expected[0]) for e in events]
- assert expected == filtered_events[1:]
-
-
-def test_no_dblclick(dblclick_session, mouse_chain):
- outer = dblclick_session.find.css("#outer", all=False)
- center = get_inview_center(outer.rect, get_viewport_rect(dblclick_session))
- mouse_chain \
- .pointer_move(int(center["x"]), int(center["y"])) \
- .click() \
- .pause(_DBLCLICK_INTERVAL + 10) \
- .click() \
- .perform()
- events = get_events(dblclick_session)
- expected = [
- {"type": "mousedown", "button": 0},
- {"type": "mouseup", "button": 0},
- {"type": "click", "button": 0},
- {"type": "mousedown", "button": 0},
- {"type": "mouseup", "button": 0},
- {"type": "click", "button": 0},
- ]
- assert len(events) == 7
- filtered_events = [filter_dict(e, expected[0]) for e in events]
- assert expected == filtered_events[1:]
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse_pause_dblclick.py b/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse_pause_dblclick.py
new file mode 100644
index 00000000000..ad179673176
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse_pause_dblclick.py
@@ -0,0 +1,52 @@
+from tests.actions.support.mouse import get_inview_center, get_viewport_rect
+from tests.actions.support.refine import get_events, filter_dict
+
+_DBLCLICK_INTERVAL = 640
+
+
+def test_dblclick_with_pause_after_second_pointerdown(session, test_actions_page, mouse_chain):
+ outer = session.find.css("#outer", all=False)
+ center = get_inview_center(outer.rect, get_viewport_rect(session))
+ mouse_chain \
+ .pointer_move(int(center["x"]), int(center["y"])) \
+ .click() \
+ .pointer_down() \
+ .pause(_DBLCLICK_INTERVAL + 10) \
+ .pointer_up() \
+ .perform()
+ events = get_events(session)
+ expected = [
+ {"type": "mousedown", "button": 0},
+ {"type": "mouseup", "button": 0},
+ {"type": "click", "button": 0},
+ {"type": "mousedown", "button": 0},
+ {"type": "mouseup", "button": 0},
+ {"type": "click", "button": 0},
+ {"type": "dblclick", "button": 0},
+ ]
+ assert len(events) == 8
+ filtered_events = [filter_dict(e, expected[0]) for e in events]
+ assert expected == filtered_events[1:]
+
+
+def test_no_dblclick(session, test_actions_page, mouse_chain):
+ outer = session.find.css("#outer", all=False)
+ center = get_inview_center(outer.rect, get_viewport_rect(session))
+ mouse_chain \
+ .pointer_move(int(center["x"]), int(center["y"])) \
+ .click() \
+ .pause(_DBLCLICK_INTERVAL + 10) \
+ .click() \
+ .perform()
+ events = get_events(session)
+ expected = [
+ {"type": "mousedown", "button": 0},
+ {"type": "mouseup", "button": 0},
+ {"type": "click", "button": 0},
+ {"type": "mousedown", "button": 0},
+ {"type": "mouseup", "button": 0},
+ {"type": "click", "button": 0},
+ ]
+ assert len(events) == 7
+ filtered_events = [filter_dict(e, expected[0]) for e in events]
+ assert expected == filtered_events[1:]
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/actions/special_keys.py b/tests/wpt/web-platform-tests/webdriver/tests/actions/special_keys.py
index e1157e71562..d2a44229ce0 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/actions/special_keys.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/actions/special_keys.py
@@ -5,7 +5,7 @@ import time
from tests.support.fixtures import configuration
from tests.actions.support.keys import ALL_EVENTS, Keys
from tests.actions.support.refine import filter_dict, get_keys, get_events
-
+from webdriver import error
@pytest.mark.parametrize("name,expected", ALL_EVENTS.items())
def test_webdriver_special_key_sends_keydown(session,
@@ -47,3 +47,37 @@ def test_webdriver_special_key_sends_keydown(session,
assert entered_keys == expected["key"]
else:
assert len(entered_keys) == 0
+
+
+@pytest.mark.parametrize("value", [
+ (u"f"),
+ (u"\u0BA8\u0BBF"),
+ (u"\u1100\u1161\u11A8"),
+])
+def test_multiple_codepoint_keys_behave_correctly(session,
+ key_reporter,
+ key_chain,
+ value):
+ key_chain \
+ .key_down(value) \
+ .key_up(value) \
+ .perform()
+
+ assert get_keys(key_reporter) == value
+
+
+@pytest.mark.parametrize("value", [
+ (u"fa"),
+ (u"\u0BA8\u0BBFb"),
+ (u"\u0BA8\u0BBF\u0BA8"),
+ (u"\u1100\u1161\u11A8c")
+])
+def test_invalid_multiple_codepoint_keys_fail(session,
+ key_reporter,
+ key_chain,
+ value):
+ with pytest.raises(error.InvalidArgumentException):
+ key_chain \
+ .key_down(value) \
+ .key_up(value) \
+ .perform() \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py
new file mode 100644
index 00000000000..5affdc9af35
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/collections.py
@@ -0,0 +1,158 @@
+import os
+
+from tests.support.asserts import assert_same_element, assert_success
+from tests.support.inline import inline
+
+
+def execute_async_script(session, script, args=None):
+ if args is None:
+ args = []
+ body = {"script": script, "args": args}
+ return session.transport.send(
+ "POST",
+ "/session/{session_id}/execute/async".format(**vars(session)),
+ body)
+
+
+def test_arguments(session):
+ response = execute_async_script(session, """
+ let [resolve] = arguments;
+ function func() {
+ return arguments;
+ }
+ resolve(func("foo", "bar"));
+ """)
+ assert_success(response, [u"foo", u"bar"])
+
+
+def test_array(session):
+ response = execute_async_script(session, """
+ let [resolve] = arguments;
+ resolve([1, 2]);
+ """)
+ assert_success(response, [1, 2])
+
+
+def test_file_list(session, tmpdir):
+ files = [tmpdir.join("foo.txt"), tmpdir.join("bar.txt")]
+
+ session.url = inline("<input type=file multiple>")
+ upload = session.find.css("input", all=False)
+ for file in files:
+ file.write("morn morn")
+ upload.send_keys(str(file))
+
+ response = execute_async_script(session, """
+ let [resolve] = arguments;
+ resolve(document.querySelector('input').files);
+ """)
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == len(files)
+ for expected, actual in zip(files, value):
+ assert isinstance(actual, dict)
+ assert "name" in actual
+ assert isinstance(actual["name"], basestring)
+ assert os.path.basename(str(expected)) == actual["name"]
+
+
+def test_html_all_collection(session):
+ session.url = inline("""
+ <p>foo
+ <p>bar
+ """)
+ html = session.find.css("html", all=False)
+ head = session.find.css("head", all=False)
+ body = session.find.css("body", all=False)
+ ps = session.find.css("p")
+
+ response = execute_async_script(session, """
+ let [resolve] = arguments;
+ resolve(document.all);
+ """)
+ value = assert_success(response)
+ assert isinstance(value, list)
+ # <html>, <head>, <body>, <p>, <p>
+ assert len(value) == 5
+
+ assert_same_element(session, html, value[0])
+ assert_same_element(session, head, value[1])
+ assert_same_element(session, body, value[2])
+ assert_same_element(session, ps[0], value[3])
+ assert_same_element(session, ps[1], value[4])
+
+
+def test_html_collection(session):
+ session.url = inline("""
+ <p>foo
+ <p>bar
+ """)
+ ps = session.find.css("p")
+
+ response = execute_async_script(session, """
+ let [resolve] = arguments;
+ resolve(document.getElementsByTagName('p'));
+ """)
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == 2
+ for expected, actual in zip(ps, value):
+ assert_same_element(session, expected, actual)
+
+
+def test_html_form_controls_collection(session):
+ session.url = inline("""
+ <form>
+ <input>
+ <input>
+ </form>
+ """)
+ inputs = session.find.css("input")
+
+ response = execute_async_script(session, """
+ let [resolve] = arguments;
+ resolve(document.forms[0].elements);
+ """)
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == 2
+ for expected, actual in zip(inputs, value):
+ assert_same_element(session, expected, actual)
+
+
+def test_html_options_collection(session):
+ session.url = inline("""
+ <select>
+ <option>
+ <option>
+ </select>
+ """)
+ options = session.find.css("option")
+
+ response = execute_async_script(session, """
+ let [resolve] = arguments;
+ resolve(document.querySelector('select').options);
+ """)
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == 2
+ for expected, actual in zip(options, value):
+ assert_same_element(session, expected, actual)
+
+
+def test_node_list(session):
+ session.url = inline("""
+ <p>foo
+ <p>bar
+ """)
+ ps = session.find.css("p")
+
+ response = execute_async_script(session, """
+ let [resolve] = arguments;
+ resolve(document.querySelectorAll('p'));
+ """)
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == 2
+ for expected, actual in zip(ps, value):
+ assert_same_element(session, expected, actual)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/user_prompts.py
index 03e1762d8b0..67f5512841b 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/user_prompts.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/user_prompts.py
@@ -7,52 +7,66 @@ from webdriver import error
def test_handle_prompt_accept(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}})
- session.execute_async_script("window.alert('Hello');")
+ value = session.execute_async_script("window.alert('Hello');")
+ assert value is None
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.accept()
def test_handle_prompt_dismiss(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}})
- session.execute_async_script("window.alert('Hello');")
+ value = session.execute_async_script("window.alert('Hello');")
+ assert value is None
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.dismiss()
def test_handle_prompt_dismiss_and_notify(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss and notify"})}})
+ value = session.execute_async_script("window.alert('Hello');")
+ assert value is None
with pytest.raises(error.UnexpectedAlertOpenException):
- session.execute_async_script("window.alert('Hello');")
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.dismiss()
def test_handle_prompt_accept_and_notify(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept and notify"})}})
+ value = session.execute_async_script("window.alert('Hello');")
+ assert value is None
with pytest.raises(error.UnexpectedAlertOpenException):
- session.execute_async_script("window.alert('Hello');")
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.accept()
def test_handle_prompt_ignore(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "ignore"})}})
+ value = session.execute_async_script("window.alert('Hello');")
+ assert value is None
with pytest.raises(error.UnexpectedAlertOpenException):
- session.execute_async_script("window.alert('Hello');")
+ title = session.title
session.alert.dismiss()
def test_handle_prompt_default(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}})
+ value = session.execute_async_script("window.alert('Hello');")
+ assert value is None
with pytest.raises(error.UnexpectedAlertOpenException):
- session.execute_async_script("window.alert('Hello');")
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.dismiss()
def test_handle_prompt_twice(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}})
- session.execute_async_script("window.alert('Hello');window.alert('Bye');")
+ value = session.execute_async_script("window.alert('Hello');window.alert('Bye');")
+ assert value is None
+ session.alert.dismiss()
# The first alert has been accepted by the user prompt handler, the second one remains.
# FIXME: this is how browsers currently work, but the spec should clarify if this is the
# expected behavior, see https://github.com/w3c/webdriver/issues/1153.
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py
new file mode 100644
index 00000000000..d96c7fe3a67
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/collections.py
@@ -0,0 +1,136 @@
+import os
+
+from tests.support.asserts import assert_same_element, assert_success
+from tests.support.inline import inline
+
+
+def execute_script(session, script, args=None):
+ if args is None:
+ args = []
+ body = {"script": script, "args": args}
+ return session.transport.send(
+ "POST",
+ "/session/{session_id}/execute/sync".format(**vars(session)),
+ body)
+
+
+def test_arguments(session):
+ response = execute_script(session, """
+ function func() {
+ return arguments;
+ }
+ return func("foo", "bar");
+ """)
+ assert_success(response, [u"foo", u"bar"])
+
+
+def test_array(session):
+ response = execute_script(session, "return [1, 2]")
+ assert_success(response, [1, 2])
+
+
+def test_file_list(session, tmpdir):
+ files = [tmpdir.join("foo.txt"), tmpdir.join("bar.txt")]
+
+ session.url = inline("<input type=file multiple>")
+ upload = session.find.css("input", all=False)
+ for file in files:
+ file.write("morn morn")
+ upload.send_keys(str(file))
+
+ response = execute_script(session, "return document.querySelector('input').files")
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == len(files)
+ for expected, actual in zip(files, value):
+ assert isinstance(actual, dict)
+ assert "name" in actual
+ assert isinstance(actual["name"], basestring)
+ assert os.path.basename(str(expected)) == actual["name"]
+
+
+def test_html_all_collection(session):
+ session.url = inline("""
+ <p>foo
+ <p>bar
+ """)
+ html = session.find.css("html", all=False)
+ head = session.find.css("head", all=False)
+ body = session.find.css("body", all=False)
+ ps = session.find.css("p")
+
+ response = execute_script(session, "return document.all")
+ value = assert_success(response)
+ assert isinstance(value, list)
+ # <html>, <head>, <body>, <p>, <p>
+ assert len(value) == 5
+
+ assert_same_element(session, html, value[0])
+ assert_same_element(session, head, value[1])
+ assert_same_element(session, body, value[2])
+ assert_same_element(session, ps[0], value[3])
+ assert_same_element(session, ps[1], value[4])
+
+
+def test_html_collection(session):
+ session.url = inline("""
+ <p>foo
+ <p>bar
+ """)
+ ps = session.find.css("p")
+
+ response = execute_script(session, "return document.getElementsByTagName('p')")
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == 2
+ for expected, actual in zip(ps, value):
+ assert_same_element(session, expected, actual)
+
+
+def test_html_form_controls_collection(session):
+ session.url = inline("""
+ <form>
+ <input>
+ <input>
+ </form>
+ """)
+ inputs = session.find.css("input")
+
+ response = execute_script(session, "return document.forms[0].elements")
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == 2
+ for expected, actual in zip(inputs, value):
+ assert_same_element(session, expected, actual)
+
+
+def test_html_options_collection(session):
+ session.url = inline("""
+ <select>
+ <option>
+ <option>
+ </select>
+ """)
+ options = session.find.css("option")
+
+ response = execute_script(session, "return document.querySelector('select').options")
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == 2
+ for expected, actual in zip(options, value):
+ assert_same_element(session, expected, actual)
+
+
+def test_node_list(session):
+ session.url = inline("""
+ <p>foo
+ <p>bar
+ """)
+ ps = session.find.css("p")
+
+ response = execute_script(session, "return document.querySelectorAll('p')")
+ value = assert_success(response)
+ assert isinstance(value, list)
+ assert len(value) == 2
+ for expected, actual in zip(ps, value):
+ assert_same_element(session, expected, actual)
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/user_prompts.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/user_prompts.py
index 8d91bdd8f9f..befa8d827e8 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/user_prompts.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/user_prompts.py
@@ -7,52 +7,66 @@ from webdriver import error
def test_handle_prompt_accept(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}})
- session.execute_script("window.alert('Hello');")
+ value = session.execute_script("window.alert('Hello');")
+ assert value is None
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.accept()
def test_handle_prompt_dismiss(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss"})}})
- session.execute_script("window.alert('Hello');")
+ value = session.execute_script("window.alert('Hello');")
+ assert value is None
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.dismiss()
def test_handle_prompt_dismiss_and_notify(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "dismiss and notify"})}})
+ value = session.execute_script("window.alert('Hello');")
+ assert value is None
with pytest.raises(error.UnexpectedAlertOpenException):
- session.execute_script("window.alert('Hello');")
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.dismiss()
def test_handle_prompt_accept_and_notify(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept and notify"})}})
+ value = session.execute_script("window.alert('Hello');")
+ assert value is None
with pytest.raises(error.UnexpectedAlertOpenException):
- session.execute_script("window.alert('Hello');")
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.accept()
def test_handle_prompt_ignore(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "ignore"})}})
+ value = session.execute_script("window.alert('Hello');")
+ assert value is None
with pytest.raises(error.UnexpectedAlertOpenException):
- session.execute_script("window.alert('Hello');")
+ title = session.title
session.alert.dismiss()
def test_handle_prompt_default(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({})}})
+ value = session.execute_script("window.alert('Hello');")
+ assert value is None
with pytest.raises(error.UnexpectedAlertOpenException):
- session.execute_script("window.alert('Hello');")
+ title = session.title
with pytest.raises(error.NoSuchAlertException):
session.alert.dismiss()
def test_handle_prompt_twice(new_session, add_browser_capabilites):
_, session = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"unhandledPromptBehavior": "accept"})}})
- session.execute_script("window.alert('Hello');window.alert('Bye');")
+ value = session.execute_script("window.alert('Hello');window.alert('Bye');")
+ assert value is None
+ session.alert.dismiss()
# The first alert has been accepted by the user prompt handler, the second one remains.
# FIXME: this is how browsers currently work, but the spec should clarify if this is the
# expected behavior, see https://github.com/w3c/webdriver/issues/1153.
diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py
index c20219ae7b3..6a20fec2a40 100644
--- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py
+++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py
@@ -214,7 +214,7 @@ def add_browser_capabilites(configuration):
def url(server_config):
def inner(path, protocol="http", query="", fragment=""):
port = server_config["ports"][protocol][0]
- host = "%s:%s" % (server_config["host"], port)
+ host = "%s:%s" % (server_config["browser_host"], port)
return urlparse.urlunsplit((protocol, host, path, query, fragment))
inner.__name__ = "url"
diff --git a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html
index 861b5504752..1d05feb7edb 100644
--- a/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html
+++ b/tests/wpt/web-platform-tests/webmessaging/broadcastchannel/workers.html
@@ -121,4 +121,21 @@ async_test(t => {
}
}, 'BroadcastChannel created after a worker self.close()');
+async_test(t => {
+ function workerCode() {
+ close();
+ var bc = new BroadcastChannel('worker-test-after-close');
+ bc.postMessage(true);
+ }
+
+ var bc = new BroadcastChannel('worker-test-after-close');
+ bc.onmessage = function(e) {
+ assert_true(e.data, "BroadcastChannel created on worker shutdown.");
+ t.done();
+ }
+
+ var workerBlob = new Blob([workerCode.toString() + ";workerCode();"], {type:"application/javascript"});
+ new Worker(URL.createObjectURL(workerBlob));
+}, 'BroadcastChannel used after a worker self.close()');
+
</script>
diff --git a/tests/wpt/web-platform-tests/webmessaging/message-channels/close.html b/tests/wpt/web-platform-tests/webmessaging/message-channels/close.html
index 912aacda52c..cc3afd82b57 100644
--- a/tests/wpt/web-platform-tests/webmessaging/message-channels/close.html
+++ b/tests/wpt/web-platform-tests/webmessaging/message-channels/close.html
@@ -38,18 +38,6 @@ async_test(t => {
async_test(t => {
const c = new MessageChannel();
- c.port1.onmessage = t.unreached_func('Should not have delivered message');
- c.port2.close();
- const c2 = new MessageChannel();
- c2.port1.onmessage = t.step_func(e => {
- e.ports[0].postMessage('TESTMSG');
- setTimeout(t.step_func_done(), time_to_wait_for_messages);
- });
- c2.port2.postMessage('TEST', [c.port2]);
- }, 'Message sent from transferred closed port should not arrive.');
-
-async_test(t => {
- const c = new MessageChannel();
let isClosed = false;
c.port1.onmessage = t.step_func_done(e => {
assert_true(isClosed);
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html
index 9fa900c7368..bfb8b8c0067 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCDTMFSender-ontonechange.https.html
@@ -282,4 +282,15 @@
}, `Setting transceiver.currentDirection to recvonly in the middle of tonechange events should stop future tonechange events from firing`);
+ /* Section 7.3 - Tone change event */
+ test(t => {
+ let ev = new RTCDTMFToneChangeEvent('tonechange', {'tone': '1'});
+ assert_equals(ev.type, 'tonechange');
+ assert_equals(ev.tone, '1');
+ }, 'Tone change event constructor works');
+
+ test(t => {
+ let ev = new RTCDTMFToneChangeEvent('worngname', {});
+ }, 'Tone change event with unexpected name should not crash');
+
</script>
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html
index c6c8ce3e9a8..c21bd82af0b 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-track-stats.https.html
@@ -378,7 +378,7 @@
}));
}, 'replaceTrack(): original track attachment stats present after replacing');
- promise_test(async function() {
+ promise_test(async t => {
const caller = new RTCPeerConnection();
const callee = new RTCPeerConnection();
let [tracks, streams] = await getUserMediaTracksAndStreams(2);
@@ -424,7 +424,7 @@
'senderReport should contain remote-candidate stats');
}, 'RTCRtpSender.getStats() contains only outbound-rtp and related stats');
- promise_test(async function() {
+ promise_test(async t => {
const caller = new RTCPeerConnection();
const callee = new RTCPeerConnection();
let [tracks, streams] = await getUserMediaTracksAndStreams(2);
@@ -470,6 +470,74 @@
'receiverReport should contain remote-candidate stats');
}, 'RTCRtpReceiver.getStats() contains only inbound-rtp and related stats');
+ promise_test(async t => {
+ const caller = new RTCPeerConnection();
+ const callee = new RTCPeerConnection();
+ let [tracks, streams] = await getUserMediaTracksAndStreams(2);
+ let sender = caller.addTrack(tracks[0], streams[0]);
+ callee.addTrack(tracks[1], streams[1]);
+ exchangeIceCandidates(caller, callee);
+ await doSignalingHandshake(caller, callee);
+ await onIceConnectionStateCompleted(caller);
+
+ let senderReport = await sender.getStats();
+ let trackReport = await caller.getStats(sender.track);
+
+ // Verify the same stats objects are returned but don't compare each
+ // individual metric because timestamps and counters could have gone up
+ // between the two getStats() calls.
+ senderReport.forEach(senderReportStat => {
+ assert_true(trackReport.has(senderReportStat.id));
+ });
+ trackReport.forEach(trackReportStat => {
+ assert_true(senderReport.has(trackReportStat.id));
+ });
+ }, 'RTCPeerConnection.getStats(sendingTrack) is the same as ' +
+ 'RTCRtpSender.getStats()');
+
+ promise_test(async t => {
+ const caller = new RTCPeerConnection();
+ const callee = new RTCPeerConnection();
+ let [tracks, streams] = await getUserMediaTracksAndStreams(2);
+ let sender = caller.addTrack(tracks[0], streams[0]);
+ callee.addTrack(tracks[1], streams[1]);
+ exchangeIceCandidates(caller, callee);
+ await doSignalingHandshake(caller, callee);
+ await onIceConnectionStateCompleted(caller);
+ let receiver = caller.getReceivers()[0];
+
+ let receiverReport = await receiver.getStats();
+ let trackReport = await caller.getStats(receiver.track);
+
+ // Verify the same stats objects are returned but don't compare each
+ // individual metric because timestamps and counters could have gone up
+ // between the two getStats() calls.
+ receiverReport.forEach(receiverReportStat => {
+ assert_true(trackReport.has(receiverReportStat.id));
+ });
+ trackReport.forEach(trackReportStat => {
+ assert_true(receiverReport.has(trackReportStat.id));
+ });
+ }, 'RTCPeerConnection.getStats(receivingTrack) is the same as ' +
+ 'RTCRtpReceiver.getStats()');
+
+ promise_test(async t => {
+ const pc = new RTCPeerConnection();
+ let [tracks, streams] = await getUserMediaTracksAndStreams(1);
+ await promise_rejects(t, 'InvalidAccessError', pc.getStats(tracks[0]));
+ }, 'RTCPeerConnection.getStats(track) throws InvalidAccessError when there ' +
+ 'are zero senders or receivers for the track');
+
+ promise_test(async t => {
+ const pc = new RTCPeerConnection();
+ let [tracks, streams] = await getUserMediaTracksAndStreams(2);
+ let sender1 = pc.addTrack(tracks[0]);
+ let sender2 = pc.addTrack(tracks[1]);
+ await sender2.replaceTrack(sender1.track);
+ await promise_rejects(t, 'InvalidAccessError', pc.getStats(sender1.track));
+ }, 'RTCPeerConnection.getStats(track) throws InvalidAccessError when there ' +
+ 'are multiple senders for the track');
+
// Helpers.
function findStatsByTypeAndId(report, type, identifier) {
@@ -501,14 +569,20 @@
return stats;
}
- // Returns a promise that is resolved when pc.iceConnectionState changes to
- // 'completed'. This is when transport stats can be expected to have its
- // selectedCandidatePairId defined.
+ // Returns a promise that is resolved when pc.iceConnectionState reaches the
+ // 'connected' or 'completed' state. This is when transport stats can be
+ // expected to have its selectedCandidatePairId defined.
async function onIceConnectionStateCompleted(pc) {
+ if (pc.iceConnectionState == 'connected' ||
+ pc.iceConnectionState == 'completed') {
+ return Promise.resolve();
+ }
let resolver = new Resolver();
pc.oniceconnectionstatechange = e => {
- if (pc.iceConnectionState == 'completed')
+ if (pc.iceConnectionState == 'connected' ||
+ pc.iceConnectionState == 'completed') {
resolver.resolve();
+ }
};
return resolver.promise;
}
@@ -541,4 +615,14 @@
}
}
+ async function async_assert_throws(exceptionName, promise, description) {
+ try {
+ await promise;
+ } catch (e) {
+ assert_equals(e.name, exceptionName);
+ return;
+ }
+ assert_unreached('No exception was thrown.');
+ }
+
</script>
diff --git a/tests/wpt/web-platform-tests/webstorage/idlharness.html b/tests/wpt/web-platform-tests/webstorage/idlharness.html
index cd880a33f03..efff83029b3 100644
--- a/tests/wpt/web-platform-tests/webstorage/idlharness.html
+++ b/tests/wpt/web-platform-tests/webstorage/idlharness.html
@@ -18,12 +18,6 @@
[Global=Window, Exposed=Window]
interface Window {
};
-
-interface Event {
-};
-
-interface EventInit {
-};
</pre>
<pre id='idl'>
@@ -64,18 +58,26 @@ dictionary StorageEventInit : EventInit {
</pre>
<script>
-
-(function() {
+function do_test([html, dom]) {
var idl_array = new IdlArray();
+ idl_array.add_untested_idls(dom, { only: ['Event', 'EventInit'] });
+ idl_array.add_untested_idls(html, { only: ['EventStorageInit'] });
idl_array.add_untested_idls(document.getElementById("untested_idl").textContent);
idl_array.add_idls(document.getElementById("idl").textContent);
idl_array.add_objects({Storage: ["window.localStorage"]});
idl_array.test();
-})();
+}
+
+function fetch_text(url) {
+ return fetch(url).then(response => response.text());
+}
+promise_test(function () {
+ return Promise.all(['/interfaces/html.idl', '/interfaces/dom.idl'].map(fetch_text)).then(do_test);
+}, 'webstorage interfaces');
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/webusb/usb.https.html b/tests/wpt/web-platform-tests/webusb/usb.https.html
index 9ead12a8d77..0583079852d 100644
--- a/tests/wpt/web-platform-tests/webusb/usb.https.html
+++ b/tests/wpt/web-platform-tests/webusb/usb.https.html
@@ -130,4 +130,24 @@ usb_test(usb => {
});
});
}, 'ondisconnect event is triggered by removing a device');
+
+usb_test(() => {
+ return getFakeDevice().then(({ device, fakeDevice }) => {
+ navigator.usb.test.onrequestdevice = event => {
+ event.respondWith(fakeDevice);
+ }
+ return callWithTrustedClick(() => {
+ let first = navigator.usb.requestDevice({ filters: [] });
+ let second = navigator.usb.requestDevice({ filters: [] });
+ return Promise.all([
+ first.then(chosenDevice => {
+ assert_equals(chosenDevice, device);
+ }),
+ second.then(chosenDevice => {
+ assert_equals(chosenDevice, device);
+ })
+ ]);
+ });
+ });
+}, 'multiple requestDevice calls are allowed per user activation');
</script>
diff --git a/tests/wpt/web-platform-tests/webvr/idlharness.https.html b/tests/wpt/web-platform-tests/webvr/idlharness.https.html
index df59441abd1..2a89c575cef 100644
--- a/tests/wpt/web-platform-tests/webvr/idlharness.https.html
+++ b/tests/wpt/web-platform-tests/webvr/idlharness.https.html
@@ -226,6 +226,12 @@ partial interface Gamepad {
idl_array.add_untested_idls("interface HTMLIFrameElement {};");
idl_array.add_untested_idls("interface Gamepad {};");
+ idl_array.add_untested_idls(`dictionary EventInit {
+ boolean bubbles = false;
+ boolean cancelable = false;
+ boolean composed = false;
+ };`);
+
idl_array.add_idls(document.getElementById("webvr_idl").textContent);
idl_array.test();
diff --git a/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/WindowTimers/005.html b/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/WindowTimers/005.html
new file mode 100644
index 00000000000..b86eff1fbdd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/WindowTimers/005.html
@@ -0,0 +1,23 @@
+<!--
+self.close();
+var t = setInterval(function() {}, 10);
+postMessage(t);
+/*
+-->
+<!doctype html>
+<title>setInterval when closing</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id=log></div>
+<script>
+async_test(function() {
+ var worker = new Worker('#');
+ worker.onmessage = this.step_func(function(e) {
+ assert_equals(e.data, 1);
+ this.done();
+ });
+});
+</script>
+<!--
+*/
+//-->
diff --git a/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/1.headers b/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/1.headers
new file mode 100644
index 00000000000..a17a9a3a12c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/1.headers
@@ -0,0 +1 @@
+Content-Type: application/javascript
diff --git a/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/null.headers b/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/null.headers
new file mode 100644
index 00000000000..a17a9a3a12c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/null.headers
@@ -0,0 +1 @@
+Content-Type: application/javascript
diff --git a/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/undefined.headers b/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/undefined.headers
new file mode 100644
index 00000000000..a17a9a3a12c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/interfaces/WorkerUtils/importScripts/undefined.headers
@@ -0,0 +1 @@
+Content-Type: application/javascript
diff --git a/tests/wpt/web-platform-tests/x-frame-options/deny.sub.html b/tests/wpt/web-platform-tests/x-frame-options/deny.sub.html
index 8ef583106c0..626f2043f32 100644
--- a/tests/wpt/web-platform-tests/x-frame-options/deny.sub.html
+++ b/tests/wpt/web-platform-tests/x-frame-options/deny.sub.html
@@ -11,7 +11,7 @@
assert_no_message_from(i, t);
i.onload = t.step_func_done(_ => {
- assert_throws("SecurityError", function () { return i.contentDocument; });
+ assert_equals(i.contentDocument, null);
i.remove();
});
@@ -25,7 +25,7 @@
assert_no_message_from(i, t);
i.onload = t.step_func_done(_ => {
- assert_throws("SecurityError", function () { return i.contentDocument; });
+ assert_equals(i.contentDocument, null);
i.remove();
});
diff --git a/tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html b/tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html
index 6cf3d46a499..f7a28e40ee2 100644
--- a/tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html
+++ b/tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html
@@ -24,7 +24,7 @@
assert_no_message_from(i, t);
i.onload = t.step_func_done(_ => {
- assert_throws("SecurityError", function () { return i.contentDocument; });
+ assert_equals(i.contentDocument, null);
i.remove();
});
@@ -38,7 +38,7 @@
assert_no_message_from(i, t);
i.onload = t.step_func_done(_ => {
- assert_throws("SecurityError", function () { return i.contentDocument; });
+ assert_equals(i.contentDocument, null);
i.remove();
});
@@ -52,7 +52,7 @@
assert_no_message_from(i, t);
i.onload = t.step_func_done(_ => {
- assert_throws("SecurityError", function () { return i.contentDocument; });
+ assert_equals(i.contentDocument, null);
i.remove();
});
@@ -66,7 +66,7 @@
assert_no_message_from(i, t);
i.onload = t.step_func_done(_ => {
- assert_throws("SecurityError", function () { return i.contentDocument; });
+ assert_equals(i.contentDocument, null);
i.remove();
});
@@ -80,7 +80,7 @@
assert_no_message_from(i, t);
i.onload = t.step_func_done(_ => {
- assert_throws("SecurityError", function () { return i.contentDocument; });
+ assert_equals(i.contentDocument, null);
i.remove();
});
diff --git a/tests/wpt/web-platform-tests/x-frame-options/sameorigin.sub.html b/tests/wpt/web-platform-tests/x-frame-options/sameorigin.sub.html
index 9687426b452..9efbc320946 100644
--- a/tests/wpt/web-platform-tests/x-frame-options/sameorigin.sub.html
+++ b/tests/wpt/web-platform-tests/x-frame-options/sameorigin.sub.html
@@ -37,7 +37,7 @@
assert_no_message_from(i, t);
i.onload = t.step_func_done(_ => {
- assert_throws("SecurityError", function () { return i.contentDocument; });
+ assert_equals(i.contentDocument, null);
i.remove();
});
diff --git a/tests/wpt/web-platform-tests/xhr/header-user-agent-async.htm b/tests/wpt/web-platform-tests/xhr/header-user-agent-async.htm
new file mode 100644
index 00000000000..8c1d0b663f4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/xhr/header-user-agent-async.htm
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Test that async requests (both OPTIONS preflight and regular) are sent with the User-Agent header</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/common/get-host-info.sub.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+ async_test((test) => {
+ let xhr = new XMLHttpRequest;
+ xhr.open("GET", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/header-user-agent.py");
+ xhr.setRequestHeader("x-test", "foobar");
+
+ xhr.onerror = test.unreached_func("Unexpected error");
+
+ xhr.onload = test.step_func_done(() => {
+ assert_equals(xhr.responseText, "PASS");
+ });
+
+ xhr.send();
+ }, "Async request has User-Agent header");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/xhr/header-user-agent-sync.htm b/tests/wpt/web-platform-tests/xhr/header-user-agent-sync.htm
new file mode 100644
index 00000000000..d88aac2805d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/xhr/header-user-agent-sync.htm
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Test that sync requests (both OPTIONS preflight and regular) are sent with the User-Agent header</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/common/get-host-info.sub.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+ test(function() {
+ let xhr = new XMLHttpRequest;
+ xhr.open("post", get_host_info().HTTP_REMOTE_ORIGIN + "/xhr/resources/header-user-agent.py", false);
+ xhr.setRequestHeader("x-test", "foobar");
+ xhr.send();
+ assert_equals(xhr.responseText, "PASS");
+ }, "Sync request has User-Agent header");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/xhr/overridemimetype-blob.html b/tests/wpt/web-platform-tests/xhr/overridemimetype-blob.html
index 83378a89bd7..db4b880d1ac 100644
--- a/tests/wpt/web-platform-tests/xhr/overridemimetype-blob.html
+++ b/tests/wpt/web-platform-tests/xhr/overridemimetype-blob.html
@@ -6,60 +6,51 @@
<div id="log"></div>
<script>
async_test(t => {
- const client = new XMLHttpRequest()
+ const client = new XMLHttpRequest();
client.onload = t.step_func_done(() => {
- assert_equals(client.getResponseHeader("Content-Type"), "")
- assert_equals(client.response.type, "text/xml")
- })
- client.open("GET", "resources/status.py")
- client.responseType = "blob"
- client.send()
-}, "Use text/xml as fallback MIME type")
+ assert_equals(client.getResponseHeader("Content-Type"), "");
+ assert_equals(client.response.type, "text/xml");
+ });
+ client.open("GET", "resources/status.py");
+ client.responseType = "blob";
+ client.send();
+}, "Use text/xml as fallback MIME type");
async_test(t => {
- const client = new XMLHttpRequest()
+ const client = new XMLHttpRequest();
client.onload = t.step_func_done(() => {
- assert_equals(client.getResponseHeader("Content-Type"), "")
- assert_equals(client.response.type, "text/xml")
+ assert_equals(client.getResponseHeader("Content-Type"), "");
+ assert_equals(client.response.type, "text/xml");
})
- client.open("GET", "resources/status.py?content=thisshouldnotmakeadifferencebutdoes")
- client.responseType = "blob"
- client.send()
-}, "Use text/xml as fallback MIME type, 2")
+ client.open("GET", "resources/status.py?content=thisshouldnotmakeadifferencebutdoes");
+ client.responseType = "blob";
+ client.send();
+}, "Use text/xml as fallback MIME type, 2");
-async_test(t => {
- const client = new XMLHttpRequest()
- client.onload = t.step_func_done(() => {
- assert_equals(client.getResponseHeader("Content-Type"), "")
- assert_equals(client.response.type, "application/octet-stream")
- })
- client.open("GET", "resources/status.py")
- client.responseType = "blob"
- client.overrideMimeType("bogus")
- client.send()
-}, "Bogus MIME type should end up as application/octet-stream")
+promise_test(() => {
+ // Don't load generated-mime-types.json as sending them all over the network would be prohibitive
+ return fetch("../mimesniff/mime-types/resources/mime-types.json").then(res => res.json()).then(runTests);
+}, "Loading data…");
-async_test(t => {
- const client = new XMLHttpRequest()
- client.onload = t.step_func_done(() => {
- assert_equals(client.getResponseHeader("Content-Type"), "")
- assert_equals(client.response.type, "application/octet-stream")
- })
- client.open("GET", "resources/status.py")
- client.responseType = "blob"
- client.overrideMimeType("text/xml;charset=†")
- client.send()
-}, "Bogus MIME type should end up as application/octet-stream, 2")
-
-async_test(t => {
- const client = new XMLHttpRequest()
- client.onload = t.step_func_done(() => {
- assert_equals(client.getResponseHeader("Content-Type"), "")
- assert_equals(client.response.type, "hi/x")
- })
- client.open("GET", "resources/status.py")
- client.responseType = "blob"
- client.overrideMimeType("HI/x;test=test")
- client.send()
-}, "Valid MIME types need to be normalized")
+function runTests(tests) {
+ let index = 0;
+ tests.forEach((val) => {
+ if(typeof val === "string") {
+ return;
+ }
+ index++;
+ async_test(t => {
+ const client = new XMLHttpRequest(),
+ expectedOutput = val.output !== null ? val.output : "application/octet-stream";
+ client.onload = t.step_func_done(() => {
+ assert_equals(client.getResponseHeader("Content-Type"), "");
+ assert_equals(client.response.type, expectedOutput);
+ });
+ client.open("GET", "resources/status.py");
+ client.responseType = "blob";
+ client.overrideMimeType(val.input);
+ client.send();
+ }, index + ") MIME types need to be parsed and serialized: " + val.input);
+ });
+}
</script>
diff --git a/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js b/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js
new file mode 100644
index 00000000000..6dfe755b767
--- /dev/null
+++ b/tests/wpt/web-platform-tests/xhr/overridemimetype-edge-cases.window.js
@@ -0,0 +1,40 @@
+const testURL = "resources/status.py?type=" + encodeURIComponent("text/plain;charset=windows-1252") + "&content=%C2%F0";
+
+async_test(t => {
+ const client = new XMLHttpRequest();
+ let secondTime = false;
+ client.onload = t.step_func(() => {
+ if(!secondTime) {
+ assert_equals(client.responseText, "\uFFFD");
+ secondTime = true;
+ client.open("GET", testURL);
+ client.send();
+ } else {
+ assert_equals(client.responseText, "Âð");
+ t.done();
+ }
+ });
+ client.open("GET", testURL);
+ client.overrideMimeType("text/plain;charset=UTF-8")
+ client.send();
+}, "overrideMimeType() state needs to be reset across requests");
+
+async_test(t => {
+ const client = new XMLHttpRequest();
+ client.onload = t.step_func_done(() => {
+ assert_equals(client.responseText, "Âð")
+ });
+ client.open("GET", testURL);
+ client.overrideMimeType("text/xml");
+ client.send();
+}, "If charset is not overridden by overrideMimeType() the original continues to be used");
+
+async_test(t => {
+ const client = new XMLHttpRequest();
+ client.onload = t.step_func_done(() => {
+ assert_equals(client.responseText, "\uFFFD")
+ });
+ client.open("GET", testURL);
+ client.overrideMimeType("text/plain;charset=342");
+ client.send();
+}, "Charset can be overridden by overrideMimeType() with a bogus charset");
diff --git a/tests/wpt/web-platform-tests/xhr/resources/header-user-agent.py b/tests/wpt/web-platform-tests/xhr/resources/header-user-agent.py
new file mode 100644
index 00000000000..4778de40268
--- /dev/null
+++ b/tests/wpt/web-platform-tests/xhr/resources/header-user-agent.py
@@ -0,0 +1,15 @@
+def main(request, response):
+ response.headers.set("Access-Control-Allow-Origin", "*")
+ response.headers.set("Access-Control-Max-Age", 0)
+ response.headers.set('Access-Control-Allow-Headers', "x-test")
+
+ if request.method == "OPTIONS":
+ if not request.headers.get("User-Agent"):
+ response.content = "FAIL: User-Agent header missing in preflight request."
+ response.status = 400
+ else:
+ if request.headers.get("User-Agent"):
+ response.content = "PASS"
+ else:
+ response.content = "FAIL: User-Agent header missing in request"
+ response.status = 400
diff --git a/tests/wpt/web-platform-tests/xhr/responsetext-decoding.htm b/tests/wpt/web-platform-tests/xhr/responsetext-decoding.htm
index c7e37832c34..fae01048ba3 100644
--- a/tests/wpt/web-platform-tests/xhr/responsetext-decoding.htm
+++ b/tests/wpt/web-platform-tests/xhr/responsetext-decoding.htm
@@ -82,6 +82,7 @@
request("text/plain", "%EF%BB%BF", "", "text");
request("text/plain", "%EF%BB%BF%EF%BB%BF", "\uFEFF", "text");
request("text/plain", "%C2", "\uFFFD", "text");
+ request("text/plain;charset=bogus", "%C2", "\uFFFD", "text");
request("text/xml", "%FE%FF", "", "text");
request("text/xml", "%FE%FF%FE%FF", "\uFEFF", "text");
request("text/xml", "%EF%BB%BF", "", "text");
diff --git a/tests/wpt/web-platform-tests/xhr/send-content-type-charset.htm b/tests/wpt/web-platform-tests/xhr/send-content-type-charset.htm
index 9e93279d6ba..4e75df23468 100644
--- a/tests/wpt/web-platform-tests/xhr/send-content-type-charset.htm
+++ b/tests/wpt/web-platform-tests/xhr/send-content-type-charset.htm
@@ -15,7 +15,7 @@
test(function() {
var client = new XMLHttpRequest()
client.open("POST", "resources/content.py", false)
- if(input)
+ if(input !== null)
client.setRequestHeader("Content-Type", input)
client.send("TEST")
assert_equals(client.responseText, "TEST")
@@ -29,6 +29,11 @@
"header with invalid MIME type is not changed"
)
request(
+ "",
+ "",
+ "header with invalid MIME type (empty string) is not changed"
+ )
+ request(
"charset=ascii",
"charset=ascii",
"known charset but bogus header - missing MIME type"
@@ -40,7 +45,7 @@
)
request(
"text/plain;charset=utf-8",
- "text/plain;charset=utf-8",
+ "text/plain;charset=UTF-8",
"Correct text/plain MIME with charset"
)
request(
@@ -54,13 +59,18 @@
"If no charset= param is given, implementation should not add one - known MIME"
)
request(
+ "text/plain; hi=bye",
+ "text/plain; hi=bye",
+ "If no charset= param is given, implementation should not add one - known MIME, unknown param, two spaces"
+ )
+ request(
"text/x-thepiano;charset= waddup",
"text/x-thepiano;charset=UTF-8",
"charset given but wrong, fix it (unknown MIME, bogus charset)"
)
request(
"text/plain;charset=utf-8;charset=waddup",
- "text/plain;charset=utf-8;charset=UTF-8",
+ "text/plain;charset=UTF-8",
"charset given but wrong, fix it (known MIME, bogus charset)"
)
request(
@@ -70,14 +80,34 @@
)
request(
"text/x-pink-unicorn; charset=windows-1252; charset=bogus; notrelated; charset=ascii",
- "text/x-pink-unicorn; charset=UTF-8; charset=UTF-8; notrelated; charset=UTF-8",
- "If multiple charset parameters are given, all should be rewritten"
+ "text/x-pink-unicorn;charset=UTF-8",
+ "Multiple charset parameters deduplicate, bogus parameter dropped"
)
request(
null,
"text/plain;charset=UTF-8",
"No content type set, give MIME and charset"
)
+ request(
+ "text/plain;charset= utf-8",
+ "text/plain;charset=UTF-8",
+ "charset with space")
+ request(
+ "text/plain;charset=\"utf-8\"",
+ "text/plain;charset=UTF-8",
+ "charset in double quotes")
+ request(
+ "text/plain;charset=\" utf-8\"",
+ "text/plain;charset=UTF-8",
+ "charset in double quotes with space")
+ request(
+ "text/plain;charset=\"u\\t\\f-8\"",
+ "text/plain;charset=UTF-8",
+ "charset in double quotes with backslashes")
+ request(
+ "YO/yo;charset=x;yo=YO; X=y",
+ "yo/yo;charset=UTF-8;yo=YO;x=y",
+ "unknown parameters need to be preserved")
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/xhr/xmlhttprequest-closing-worker.html b/tests/wpt/web-platform-tests/xhr/xmlhttprequest-closing-worker.html
deleted file mode 100644
index 5c8142f23ae..00000000000
--- a/tests/wpt/web-platform-tests/xhr/xmlhttprequest-closing-worker.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-self.close()
-var xhr = new XMLHttpRequest();
-xhr.open("GET", "/resources/testharness.js");
-xhr.send(42);
-postMessage(xhr.readyState)
-/*-->
-<!DOCTYPE html>
-<html>
- <head>
- <meta charset="utf-8" />
- <title>XHR used when worker is closing itself</title>
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- </head>
- <body>
- <div id="log"></div>
- <script>
- var test = async_test();
- test.step(function() {
- var worker = new Worker('#')
- worker.onmessage = function(e) {
- test.step(function() {
- assert_equals(e.data, XMLHttpRequest.OPENED, 'XHR.readyState')
- })
- test.done()
- }
- })
- </script>
- </body>
-</html>
-<!--*/ //-->