From 0e1caebaf4671498ee05abc24027ce0da3b5e601 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Wed, 31 Jan 2018 09:13:41 -0500 Subject: [PATCH] Update web-platform-tests to revision 10168e9a5d44efbc6e7d416d1d454eb9c9f1396c --- .../createImageBitmap-drawImage.html.ini | 24 + .../createImageBitmap-invalid-args.html.ini | 97 +- .../createImageBitmap-origin.sub.html.ini | 16 + tests/wpt/metadata/MANIFEST.json | 4912 +++++++++++++++-- .../floats-clear/float-applies-to-008.xht.ini | 4 - .../normal-flow/width-inherit-001.xht.ini | 3 - .../css/CSS2/positioning/abspos-027.xht.ini | 3 - .../css/CSS2/values/color-000.xht.ini | 3 - .../metadata/css/css-color/rgb-002.html.ini | 2 - .../metadata/css/css-color/rgb-004.html.ini | 2 - .../metadata/css/css-color/rgb-006.html.ini | 2 - .../metadata/css/css-color/rgb-008.html.ini | 2 - .../metadata/css/css-color/rgba-002.html.ini | 2 - .../metadata/css/css-color/rgba-004.html.ini | 2 - .../metadata/css/css-color/rgba-006.html.ini | 2 - .../metadata/css/css-color/rgba-008.html.ini | 2 - .../astral-bidi/adlam-anti-ref.html.ini} | 3 +- .../astral-bidi/cypriot-anti-ref.html.ini | 3 + ...erspective-origin-parsing-invalid.html.ini | 25 + .../parsing/translate-parsing-valid.html.ini | 6 + ...d-caption-contains-fixed-position.html.ini | 2 + ...med-tbody-contains-fixed-position.html.ini | 2 + ...formed-td-contains-fixed-position.html.ini | 2 + ...med-tfoot-contains-fixed-position.html.ini | 2 + ...formed-th-contains-fixed-position.html.ini | 2 + ...med-thead-contains-fixed-position.html.ini | 2 + ...formed-tr-contains-fixed-position.html.ini | 2 + .../css/css-ui/text-overflow-024.html.ini | 2 + .../css/css-ui/text-overflow-025.html.ini | 2 + .../css/css-ui/text-overflow-026.html.ini | 2 + .../calc-in-font-feature-settings.html.ini | 4 + .../vh_not_refreshing_on_chrome.html.ini | 2 + .../scrollIntoView-scrollMargin.html.ini | 10 + .../scrollIntoView-scrollPadding.html.ini | 10 + .../wpt/metadata/css/cssom/MediaList.html.ini | 3 + .../mediaqueries/test_media_queries.html.ini | 54 +- .../sheet-going-away-001.html.ini | 4 + .../Document-createElement-svg.svg.ini | 2 + .../custom-elements/builtin-coverage.html.ini | 4 + ...rser-sets-attributes-and-children.html.ini | 4 + .../api/response/response-init-002.html.ini | 3 + .../fetch/data-urls/base64.any.js.ini | 153 + .../fetch/data-urls/processing.any.js.ini | 381 ++ .../pageload-image-in-popup.html.ini | 5 + .../scroll-to-anchor-name.html.ini | 4 + .../wpt/metadata/html/dom/interfaces.html.ini | 3 + .../html/dom/usvstring-reflection.html.ini | 3 + .../mime-types/canPlayType.html.ini | 3 + .../rellist-feature-detection.html.ini | 0 .../module/inline-async-execorder.html.ini | 4 + .../processing-model-1/span-limits.html.ini | 1 + .../rellist-feature-detection.html.ini | 4 - tests/wpt/metadata/mozilla-sync | 4 +- .../performance-timeline/idlharness.html.ini | 3 + .../imagebitmap/{common.js => common.sub.js} | 36 +- .../createImageBitmap-drawImage.html | 3 +- .../createImageBitmap-invalid-args.html | 46 +- .../createImageBitmap-origin.sub.html | 86 + .../acid/acid3/numbered-tests.html | 27 + .../web-platform-tests/acid/acid3/test.html | 3 + .../beacon/beacon-error.window.js | 25 +- .../web-platform-tests/bluetooth/README.md | 15 +- .../blocklisted-service-in-filter.https.html | 25 + ...ted-service-in-optionalServices.https.html | 35 + ...evice-name-longer-than-29-bytes.https.html | 19 + .../empty-filter.https.html | 16 + .../empty-filters-member.https.html | 18 + .../empty-namePrefix.https.html | 44 + .../empty-services-member.https.html | 23 + .../filters-xor-acceptAllDevices.https.html | 33 + ...ax-length-exceeded-name-unicode.https.html | 23 + .../max-length-exceeded-name.https.html | 21 + ...gth-exceeded-namePrefix-unicode.https.html | 23 + .../max-length-exceeded-namePrefix.https.html | 21 + .../max-length-name-unicode.https.html | 18 + .../max-length-name.https.html | 16 + .../max-length-namePrefix-unicode.https.html | 20 + .../max-length-namePrefix.https.html | 18 + .../no-arguments.https.html | 17 + .../unicode-valid-length-name-name.https.html | 21 + ...de-valid-length-name-namePrefix.https.html | 21 + ...vice-in-optionalServices-member.https.html | 44 + ...rong-service-in-services-member.https.html | 22 + .../consumes-user-gesture.https.html | 27 + .../discovery-succeeds.https.html | 28 + .../requestDevice/filter-matches.https.html | 67 + .../requestDevice/le-not-supported.https.html | 18 + ...y-device-from-name-empty-filter.https.html | 15 + .../not-processing-user-gesture.https.html | 19 + .../radio-not-present.https.html | 20 + .../request-from-iframe.https.html | 43 + .../request-from-sandboxed-iframe.https.html | 39 + .../requestDevice/same-device.https.html | 30 + .../single-filter-single-service.https.html | 17 + .../bluetooth/resources/bluetooth-helpers.js | 38 +- .../resources/health-thermometer-iframe.html | 33 +- .../service/blocklisted-characteristic.js | 19 + .../service/characteristic-not-found.js | 15 + .../garbage-collection-ran-during-error.js | 24 + .../script-tests/service/get-same-object.js | 24 + .../service/invalid-characteristic-name.js | 23 + .../script-tests/service/reconnect-during.js | 36 + .../service-found.https.html | 31 + .../two-iframes-from-same-origin.https.html | 80 + .../blocklisted-services-with-uuid.https.html | 23 + .../blocklisted-services.https.html | 26 + .../correct-services.https.html | 36 + .../services-found-with-uuid.https.html | 27 + .../services-found.https.html | 29 + .../services-not-found.https.html | 19 + .../gen-blocklisted-characteristic.https.html | 26 + .../gen-characteristic-not-found.https.html | 22 + ...age-collection-ran-during-error.https.html | 30 + .../gen-get-same-object.https.html | 31 + ...gen-invalid-characteristic-name.https.html | 30 + .../gen-reconnect-during.https.html | 42 + ...listed-characteristic-with-uuid.https.html | 26 + ...racteristic-not-found-with-uuid.https.html | 22 + ...tion-ran-during-error-with-uuid.https.html | 30 + ...age-collection-ran-during-error.https.html | 30 + .../gen-get-same-object-with-uuid.https.html | 31 + .../gen-get-same-object.https.html | 31 + ...gen-invalid-characteristic-name.https.html | 30 + .../gen-reconnect-during-with-uuid.https.html | 42 + .../gen-reconnect-during.https.html | 42 + .../web-platform-tests/common/namespaces.js | 4 + .../required_csp-header.html | 4 +- ...d-reports-without-violation.https.sub.html | 0 ...thout-violation.https.sub.html.sub.headers | 2 +- ...-sends-reports-on-violation.https.sub.html | 0 ...ts-on-violation.https.sub.html.sub.headers | 2 +- ...t-to-overrides-report-uri-1.https.sub.html | 0 ...es-report-uri-1.https.sub.html.sub.headers | 2 +- ...t-to-overrides-report-uri-2.https.sub.html | 0 ...es-report-uri-2.https.sub.html.sub.headers | 2 +- ...-sends-reports-on-violation.https.sub.html | 0 ...ts-on-violation.https.sub.html.sub.headers | 2 +- ...ting-api-works-on-frame-src.https.sub.html | 22 + ...ks-on-frame-src.https.sub.html.sub.headers | 6 + .../reporting/multiple-report-policies.html | 19 + .../multiple-report-policies.html.sub.headers | 8 + .../reporting/report-and-enforce.html | 34 + .../report-and-enforce.html.sub.headers | 7 + .../reporting/report-blocked-data-uri.html | 15 + .../report-blocked-data-uri.html.sub.headers | 6 + .../report-blocked-uri-cross-origin.sub.html | 16 + ...cked-uri-cross-origin.sub.html.sub.headers | 7 + .../reporting/report-blocked-uri.html | 16 + .../report-blocked-uri.html.sub.headers | 7 + .../report-cross-origin-no-cookies.sub.html | 30 + ...oss-origin-no-cookies.sub.html.sub.headers | 6 + .../report-multiple-violations-01.html | 16 + ...rt-multiple-violations-01.html.sub.headers | 6 + .../report-multiple-violations-02.html | 19 + ...rt-multiple-violations-02.html.sub.headers | 6 + .../reporting/report-only-in-meta.sub.html | 39 + .../report-only-in-meta.sub.html.sub.headers | 5 + .../reporting/report-original-url.sub.html | 51 + .../report-original-url.sub.html.sub.headers | 6 + .../report-same-origin-with-cookies.html | 30 + ...-same-origin-with-cookies.html.sub.headers | 6 + .../reporting/report-strips-fragment.html | 23 + .../report-uri-effective-directive.html | 18 + ...t-uri-effective-directive.html.sub.headers | 6 + .../report-uri-from-child-frame.html | 27 + .../report-uri-from-inline-javascript.html | 20 + ...ri-from-inline-javascript.html.sub.headers | 6 + .../reporting/report-uri-from-javascript.html | 15 + ...eport-uri-from-javascript.html.sub.headers | 6 + .../report-uri-multiple-reversed.html | 16 + ...ort-uri-multiple-reversed.html.sub.headers | 7 + .../reporting/report-uri-multiple.html | 16 + .../report-uri-multiple.html.sub.headers | 7 + .../reporting/report-uri-scheme-relative.html | 18 + ...eport-uri-scheme-relative.html.sub.headers | 6 + .../securitypolicyviolation-idl.html | 61 - .../support/generate-csp-report.html | 12 + .../generate-csp-report.html.sub.headers | 6 + .../reporting/support/set-cookie.py | 28 + .../support/inject-image.js | 1 - .../content-security-policy/support/pass2.png | Bin 0 -> 1689 bytes .../require_securecontext.html | 13 + .../floats-clear/clear-applies-to-008-ref.xht | 4 +- .../floats-clear/clear-applies-to-008.xht | 2 + .../floats-clear/clear-applies-to-012.xht | 4 +- .../floats-clear/float-applies-to-008-ref.xht | 6 +- .../floats-clear/float-applies-to-008.xht | 43 +- .../floats-clear/float-applies-to-012.xht | 68 +- .../css/CSS2/floats-clear/floats-028-ref.xht | 30 +- .../css/CSS2/floats-clear/floats-028.xht | 2 +- .../css/CSS2/floats-clear/floats-036-ref.xht | 6 +- .../css/CSS2/floats-clear/floats-036.xht | 4 +- .../CSS2/normal-flow/inline-table-002-ref.xht | 6 +- .../inline-table-valign-001-ref.xht | 9 +- .../CSS2/normal-flow/width-inherit-001.xht | 2 + .../css/CSS2/positioning/abspos-011-ref.xht | 2 +- .../css/CSS2/positioning/abspos-011.xht | 8 +- .../css/CSS2/positioning/abspos-012.xht | 8 +- .../css/CSS2/positioning/abspos-027.xht | 2 +- .../positioning/position-relative-031-ref.xht | 6 +- .../positioning/position-relative-031.xht | 4 +- .../positioning/positioning-float-001-ref.xht | 3 + .../positioning/positioning-float-001.xht | 5 +- .../css/CSS2/values/color-000-ref.xht | 2 - .../css/CSS2/values/color-000.xht | 6 +- .../parse-align-content-001.html | 33 + .../parse-align-content-002.html | 57 + .../parse-align-content-003.html | 34 + .../parse-align-content-004.html | 23 + .../parse-align-content-005.html | 22 + .../parse-justify-content-001.html | 30 + .../parse-justify-content-002.html | 57 + .../parse-justify-content-003.html | 31 + .../parse-justify-content-004.html | 23 + .../parse-justify-content-005.html | 22 + .../place-content-shorthand-001.html | 9 +- .../place-content-shorthand-002.html | 21 +- .../place-content-shorthand-004.html | 25 +- .../place-content-shorthand-006.html | 17 +- .../place-content-shorthand-007-ref.html | 22 + .../place-content-shorthand-007.html | 22 + .../parse-align-items-001.html | 32 + .../parse-align-items-002.html | 57 + .../parse-align-items-003.html | 33 + .../parse-align-items-004.html | 23 + .../parse-align-items-005.html | 22 + .../parse-justify-items-001.html | 32 + .../parse-justify-items-002.html | 57 + .../parse-justify-items-003.html | 33 + .../parse-justify-items-004.html | 24 + .../parse-justify-items-005.html | 22 + .../parse-justify-items-006.html | 22 + .../place-items-shorthand-001.html | 9 +- .../place-items-shorthand-002.html | 15 +- .../place-items-shorthand-004.html | 12 +- .../place-items-shorthand-006.html | 17 +- .../resources/alignment-parsing-utils.js | 102 +- .../self-alignment/parse-align-self-001.html | 32 + .../self-alignment/parse-align-self-002.html | 57 + .../self-alignment/parse-align-self-003.html | 33 + .../self-alignment/parse-align-self-004.html | 23 + .../self-alignment/parse-align-self-005.html | 22 + .../parse-justify-self-001.html | 33 + .../parse-justify-self-002.html | 57 + .../parse-justify-self-003.html | 33 + .../parse-justify-self-004.html | 23 + .../parse-justify-self-005.html | 22 + .../place-self-shorthand-001.html | 10 +- .../place-self-shorthand-002.html | 16 +- .../place-self-shorthand-004.html | 12 +- .../place-self-shorthand-006.html | 18 +- .../css/css-color/rgb-002.html | 2 +- .../css/css-color/rgb-004.html | 2 +- .../css/css-color/rgb-006.html | 2 +- .../css/css-color/rgb-008.html | 2 +- .../css/css-color/rgb-rounding-001.html | 20 + .../css/css-color/rgba-002.html | 2 +- .../css/css-color/rgba-004.html | 2 +- .../css/css-color/rgba-006.html | 2 +- .../css/css-color/rgba-008.html | 2 +- ...y-contents-fieldset-nested-legend-ref.html | 6 + ...splay-contents-fieldset-nested-legend.html | 24 + .../paint-order-001.tentative.html | 42 + .../paint-order-001-ref.tentative.html | 42 + .../css/css-flexbox/support/100x100-green.png | Bin 343 -> 91 bytes ...nt-feature-settings-serialization-001.html | 26 + .../css-fonts/font-variant-alternates-07.html | 4 +- .../css-fonts/font-variant-alternates-08.html | 4 +- .../css-fonts/font-variant-alternates-09.html | 4 +- .../css-fonts/font-variant-alternates-10.html | 4 +- .../css-fonts/font-variant-alternates-11.html | 4 +- .../css-fonts/font-variant-alternates-12.html | 4 +- .../css-fonts/font-variant-alternates-13.html | 4 +- .../css-fonts/font-variant-alternates-14.html | 4 +- .../css-fonts/font-variant-alternates-15.html | 4 +- .../css-fonts/font-variant-alternates-16.html | 4 +- .../css-fonts/font-variant-alternates-17.html | 4 +- .../css-fonts/font-variant-alternates-18.html | 4 +- .../font-variant-alternates-parsing.html | 2 +- ...ositioned-items-content-alignment-001.html | 2 +- ...ioned-items-content-alignment-rtl-001.html | 2 +- ...rid-alignment-implies-size-change-011.html | 2 +- ...rid-alignment-implies-size-change-012.html | 2 +- ...rid-alignment-implies-size-change-013.html | 2 +- ...rid-alignment-implies-size-change-014.html | 2 +- ...rid-alignment-implies-size-change-015.html | 2 +- ...rid-alignment-implies-size-change-016.html | 2 +- ...rid-alignment-implies-size-change-017.html | 2 +- ...rid-alignment-implies-size-change-018.html | 2 +- ...rid-alignment-implies-size-change-029.html | 2 +- ...rid-alignment-implies-size-change-030.html | 2 +- ...rid-alignment-implies-size-change-031.html | 2 +- ...rid-alignment-implies-size-change-032.html | 2 +- ...rid-alignment-implies-size-change-033.html | 2 +- ...rid-alignment-implies-size-change-034.html | 2 +- ...rid-alignment-implies-size-change-035.html | 2 +- ...rid-alignment-implies-size-change-036.html | 2 +- .../alignment/support/100x100-green.png | Bin 0 -> 91 bytes .../grid-items/support/100x100-green.png | Bin 30204 -> 91 bytes .../grid-find-fr-size-gutters-001.html | 165 + .../grid-find-fr-size-gutters-002.html | 54 + .../css/css-grid/support/grid-alignment.css | 240 - .../css/css-layout-api/OWNERS | 2 + .../at-supports-rule.https.html | 23 + .../computed-style-layout-function.https.html | 50 + .../inline-style-layout-function.https.html | 36 + .../css/css-layout-api/supports.https.html | 11 + .../multicol-gap-percentage-001.html | 131 + .../invalid-image-constructor-error-ref.html | 10 +- ...invalid-image-constructor-error.https.html | 16 +- .../invalid-image-paint-error.https.html | 11 +- .../invalid-image-pending-script.https.html | 18 +- .../parse-input-arguments-011.https.html | 2 +- .../parse-input-arguments-018-ref.html | 12 +- .../parse-input-arguments-018.https.html | 28 +- .../style-background-image.https.html | 6 +- .../style-before-pseudo.https.html | 6 +- .../position-sticky-bottom-ref.html | 69 - .../css-position/position-sticky-bottom.html | 125 +- .../position-sticky-left-ref.html | 68 - .../css-position/position-sticky-left.html | 125 +- .../position-sticky-rendering-ref.html | 104 + .../position-sticky-rendering.html | 156 + .../position-sticky-right-ref.html | 68 - .../css-position/position-sticky-right.html | 123 +- .../css-position/position-sticky-top-ref.html | 68 - .../css/css-position/position-sticky-top.html | 127 +- .../css/css-position/resources/sticky-util.js | 69 + .../css/css-scoping/slotted-invalidation.html | 35 + .../css/css-scoping/slotted-slot.html | 17 + .../css-text/astral-bidi/adlam-anti-ref.html | 13 + .../css/css-text/astral-bidi/adlam-ref.html | 12 + .../css/css-text/astral-bidi/adlam.html | 15 + .../astral-bidi/cypriot-anti-ref.html | 13 + .../css/css-text/astral-bidi/cypriot-ref.html | 12 + .../css/css-text/astral-bidi/cypriot.html | 15 + .../css-text/astral-bidi/support/adlam.css | 9 + .../css-text/astral-bidi/support/cypriot.css | 9 + .../perspective-origin-parsing-invalid.html | 34 + .../perspective-origin-parsing-valid.html | 36 + .../parsing/resources/parsing-testcommon.js | 18 +- .../parsing/translate-parsing-valid.html | 2 +- ...d-caption-contains-fixed-position-ref.html | 30 + ...ormed-caption-contains-fixed-position.html | 38 + ...med-tbody-contains-fixed-position-ref.html | 30 + ...sformed-tbody-contains-fixed-position.html | 41 + ...formed-td-contains-fixed-position-ref.html | 30 + ...ransformed-td-contains-fixed-position.html | 39 + ...med-tfoot-contains-fixed-position-ref.html | 30 + ...sformed-tfoot-contains-fixed-position.html | 41 + ...formed-th-contains-fixed-position-ref.html | 32 + ...ransformed-th-contains-fixed-position.html | 41 + ...med-thead-contains-fixed-position-ref.html | 30 + ...sformed-thead-contains-fixed-position.html | 41 + ...formed-tr-contains-fixed-position-ref.html | 30 + ...ransformed-tr-contains-fixed-position.html | 39 + .../css/css-typed-om/OWNERS | 1 + .../css/css-typed-om/resources/testhelper.js | 24 +- ...ransformvalue-normalization.tentative.html | 28 +- .../cssMathValue.tentative.html | 84 +- .../cssTransformValue.tentative.html | 28 +- .../cssMatrixComponent.tentative.html | 61 + .../cssPerspective.tentative.html | 60 + .../cssPositionValue-invalid.html | 67 + .../cssPositionValue.html | 61 + .../cssRotate.tentative.html | 126 + .../cssScale.tentative.html | 88 + .../cssSkew.tentative.html | 70 + .../cssTransformValue.tentative.html | 166 + .../cssTranslate.tentative.html | 110 + .../cssUnparsedValue-interface.html | 30 + .../cssUnparsedValue.html | 50 + .../cssUrlImageValue.tentative.html | 73 + .../cssVariableReferenceValue-interface.html | 26 + .../cssVariableReferenceValue-invalid.html | 41 + .../cssVariableReferenceValue.html | 45 + .../add-two-types.tentative.html | 60 + .../numeric-objects/arithmetic.tentative.html | 147 + .../create-a-type.tentative.html | 51 + .../numeric-objects/cssMathInvert-type.html | 30 + .../numeric-objects/cssMathNegate-type.html | 23 + .../cssMathValue.tentative.html | 64 + .../cssUnitValue.tentative.html | 44 + ...ricvalue-multiply-two-types.tentative.html | 61 + .../numeric-objects/equals.tentative.html | 62 + .../numeric-factory.tentative.html | 21 + .../numeric-objects/parse.tentative.html | 26 + .../numeric-objects/resources/testhelper.js | 9 + .../numeric-objects/to.tentative.html | 101 + .../numeric-objects/toSum.tentative.html | 71 + .../computed/get-invalid.html | 18 + .../the-stylepropertymap/computed/get.html | 51 + .../computed/get.tentative.html | 42 - .../declared/declared.tentative.html | 4 +- .../declared/delete-invalid.html | 18 + .../the-stylepropertymap/declared/delete.html | 56 + .../declared/get-invalid.html | 18 + .../the-stylepropertymap/declared/get.html | 56 + .../declared/get.tentative.html | 47 - .../declared/test.tentative.html | 24 - .../inline/delete-invalid.html | 18 + .../the-stylepropertymap/inline/delete.html | 56 + .../inline/delete.tentative.html | 41 - .../inline/get-invalid.html | 18 + .../the-stylepropertymap/inline/get.html | 56 + .../inline/get.tentative.html | 47 - .../the-stylepropertymap/interface.html | 2 +- .../css/css-ui/text-overflow-024-ref.html | 26 + .../css/css-ui/text-overflow-024.html | 31 + .../css/css-ui/text-overflow-025-ref.html | 24 + .../css/css-ui/text-overflow-025.html | 33 + .../css/css-ui/text-overflow-026-ref.html | 62 + .../css/css-ui/text-overflow-026.html | 67 + .../css/css-values/calc-ch-ex-lang-ref.html | 12 + .../css/css-values/calc-ch-ex-lang.html | 16 + .../calc-in-font-feature-settings.html | 22 + .../css/css-values/calc-rem-lang-ref.html | 6 + .../css/css-values/calc-rem-lang.html | 17 + .../css-writing-modes/available-size-001.html | 43 + .../css-writing-modes/available-size-002.html | 44 + .../css-writing-modes/available-size-003.html | 46 + .../css-writing-modes/available-size-004.html | 43 + .../css-writing-modes/available-size-005.html | 52 + .../css-writing-modes/available-size-006.html | 44 + .../css-writing-modes/available-size-007.html | 43 + .../css-writing-modes/available-size-008.html | 50 + .../css-writing-modes/available-size-009.html | 54 + .../css-writing-modes/available-size-010.html | 52 + .../css-writing-modes/ch-units-vrl-001.html | 56 + .../css-writing-modes/ch-units-vrl-002.html | 56 + .../css-writing-modes/ch-units-vrl-003.html | 56 + .../css-writing-modes/ch-units-vrl-004.html | 56 + .../css-writing-modes/ch-units-vrl-005.html | 56 + .../css-writing-modes/ch-units-vrl-006.html | 56 + .../css-writing-modes/ch-units-vrl-007.html | 56 + .../css-writing-modes/ch-units-vrl-008.html | 56 + .../css-writing-modes/logical-props-001.html | 34 + .../css-writing-modes/logical-props-002.html | 34 + .../css-writing-modes/logical-props-003.html | 34 + .../css-writing-modes/logical-props-004.html | 34 + .../mongolian-orientation-001.html | 24 + .../mongolian-orientation-002.html | 24 + .../nested-orthogonal-001.html | 29 + .../reference/available-size-001-ref.html | 18 + .../reference/available-size-002-ref.html | 17 + .../reference/ch-units-vrl-001-ref.html | 32 + .../reference/ch-units-vrl-005-ref.html | 32 + .../reference/logical-props-001-ref.html | 17 + .../mongolian-orientation-001-ref.html | 20 + .../reference/svg-aliasing-001-ref.html | 23 + .../reference/svg-aliasing-002-ref.html | 21 + .../css-writing-modes/svg-aliasing-001.html | 28 + .../css-writing-modes/svg-aliasing-002.html | 26 + .../elementFromPoint-dynamic-anon-box.html | 44 + .../cssom-view/overscrollBehavior-manual.html | 5 + .../scrollIntoView-scrollMargin.html | 78 + .../scrollIntoView-scrollPadding.html | 77 + .../css/cssom/MediaList.html | 7 + .../noto/NotoSansAdlam-hinted/LICENSE_OFL.txt | 92 + .../NotoSansAdlam-Regular.ttf | Bin 0 -> 83160 bytes .../fonts/noto/NotoSansAdlam-hinted/README | 11 + .../NotoSansCypriot-hinted/LICENSE_OFL.txt | 92 + .../NotoSansCypriot-Regular.ttf | Bin 0 -> 15420 bytes .../fonts/noto/NotoSansCypriot-hinted/README | 11 + .../css/mediaqueries/test_media_queries.html | 2 + .../css/selectors/hover-002-manual.html | 33 + .../selectorText-dynamic-001.html | 24 + .../invalidation/sheet-going-away-001.html | 26 + .../sheet-going-away-002-ref.html | 7 + .../invalidation/sheet-going-away-002.html | 23 + .../selector-structural-pseudo-root-ref.html | 7 + .../selector-structural-pseudo-root.html | 8 + .../css/support/alignment.css | 367 ++ ...bspos-staticpos-align-content-001-ref.html | 4 - ...ex-abspos-staticpos-align-content-001.html | 4 - ...bspos-staticpos-align-content-002-ref.html | 4 - ...ex-abspos-staticpos-align-content-002.html | 4 - ...bspos-staticpos-align-content-003-ref.html | 4 - ...ex-abspos-staticpos-align-content-003.html | 4 - ...bspos-staticpos-align-content-004-ref.html | 4 - ...ex-abspos-staticpos-align-content-004.html | 4 - ...bspos-staticpos-align-content-005-ref.html | 4 - ...ex-abspos-staticpos-align-content-005.html | 4 - ...bspos-staticpos-align-content-006-ref.html | 4 - ...ex-abspos-staticpos-align-content-006.html | 4 - ...bspos-staticpos-align-content-007-ref.html | 4 - ...ex-abspos-staticpos-align-content-007.html | 4 - ...bspos-staticpos-align-content-008-ref.html | 4 - ...ex-abspos-staticpos-align-content-008.html | 4 - ...s-staticpos-align-content-rtl-001-ref.html | 4 - ...bspos-staticpos-align-content-rtl-001.html | 4 - ...s-staticpos-align-content-rtl-002-ref.html | 4 - ...bspos-staticpos-align-content-rtl-002.html | 4 - ...taticpos-align-content-vertWM-001-ref.html | 4 - ...os-staticpos-align-content-vertWM-001.html | 4 - ...taticpos-align-content-vertWM-002-ref.html | 4 - ...os-staticpos-align-content-vertWM-002.html | 4 - ...x-abspos-staticpos-align-self-001-ref.html | 4 - .../flex-abspos-staticpos-align-self-001.html | 4 - ...x-abspos-staticpos-align-self-002-ref.html | 4 - .../flex-abspos-staticpos-align-self-002.html | 4 - ...x-abspos-staticpos-align-self-003-ref.html | 4 - .../flex-abspos-staticpos-align-self-003.html | 4 - ...x-abspos-staticpos-align-self-004-ref.html | 4 - .../flex-abspos-staticpos-align-self-004.html | 4 - ...x-abspos-staticpos-align-self-005-ref.html | 4 - .../flex-abspos-staticpos-align-self-005.html | 4 - ...x-abspos-staticpos-align-self-006-ref.html | 4 - .../flex-abspos-staticpos-align-self-006.html | 4 - ...x-abspos-staticpos-align-self-007-ref.html | 4 - .../flex-abspos-staticpos-align-self-007.html | 4 - ...x-abspos-staticpos-align-self-008-ref.html | 4 - .../flex-abspos-staticpos-align-self-008.html | 4 - ...spos-staticpos-align-self-rtl-001-ref.html | 4 - ...x-abspos-staticpos-align-self-rtl-001.html | 4 - ...spos-staticpos-align-self-rtl-002-ref.html | 4 - ...x-abspos-staticpos-align-self-rtl-002.html | 4 - ...spos-staticpos-align-self-rtl-003-ref.html | 4 - ...x-abspos-staticpos-align-self-rtl-003.html | 4 - ...spos-staticpos-align-self-rtl-004-ref.html | 4 - ...x-abspos-staticpos-align-self-rtl-004.html | 4 - ...s-staticpos-align-self-vertWM-003-ref.html | 4 - ...bspos-staticpos-align-self-vertWM-003.html | 4 - ...s-staticpos-align-self-vertWM-004-ref.html | 4 - ...bspos-staticpos-align-self-vertWM-004.html | 4 - ...ticpos-fallback-align-content-001-ref.html | 28 +- ...-staticpos-fallback-align-content-001.html | 4 + ...cpos-fallback-justify-content-001-ref.html | 20 +- ...taticpos-fallback-justify-content-001.html | 4 + ...pos-staticpos-justify-content-001-ref.html | 8 - ...-abspos-staticpos-justify-content-001.html | 8 - ...pos-staticpos-justify-content-002-ref.html | 8 - ...-abspos-staticpos-justify-content-002.html | 8 - ...pos-staticpos-justify-content-003-ref.html | 8 - ...-abspos-staticpos-justify-content-003.html | 8 - ...pos-staticpos-justify-content-004-ref.html | 8 - ...-abspos-staticpos-justify-content-004.html | 8 - ...pos-staticpos-justify-content-005-ref.html | 8 - ...-abspos-staticpos-justify-content-005.html | 8 - ...pos-staticpos-justify-content-006-ref.html | 8 - ...-abspos-staticpos-justify-content-006.html | 8 - ...pos-staticpos-justify-content-007-ref.html | 8 - ...-abspos-staticpos-justify-content-007.html | 8 - ...pos-staticpos-justify-content-008-ref.html | 8 - ...-abspos-staticpos-justify-content-008.html | 8 - ...staticpos-justify-content-rtl-001-ref.html | 8 - ...pos-staticpos-justify-content-rtl-001.html | 8 - ...staticpos-justify-content-rtl-002-ref.html | 8 - ...pos-staticpos-justify-content-rtl-002.html | 8 - ...ticpos-justify-content-vertWM-001-ref.html | 8 - ...-staticpos-justify-content-vertWM-001.html | 8 - ...ticpos-justify-content-vertWM-002-ref.html | 8 - ...-staticpos-justify-content-vertWM-002.html | 8 - ...d-abspos-staticpos-align-self-001-ref.html | 4 - .../grid-abspos-staticpos-align-self-001.html | 4 - ...d-abspos-staticpos-align-self-002-ref.html | 4 - .../grid-abspos-staticpos-align-self-002.html | 4 - ...abspos-staticpos-justify-self-001-ref.html | 8 - ...rid-abspos-staticpos-justify-self-001.html | 8 - ...abspos-staticpos-justify-self-002-ref.html | 8 - ...rid-abspos-staticpos-justify-self-002.html | 8 - ...os-staticpos-justify-self-img-001-ref.html | 12 - ...abspos-staticpos-justify-self-img-001.html | 12 - ...os-staticpos-justify-self-img-002-ref.html | 12 - ...abspos-staticpos-justify-self-img-002.html | 12 - ...os-staticpos-justify-self-rtl-001-ref.html | 8 - ...abspos-staticpos-justify-self-rtl-001.html | 8 - ...os-staticpos-justify-self-rtl-002-ref.html | 8 - ...abspos-staticpos-justify-self-rtl-002.html | 8 - ...os-staticpos-justify-self-rtl-003-ref.html | 8 - ...abspos-staticpos-justify-self-rtl-003.html | 8 - ...os-staticpos-justify-self-rtl-004-ref.html | 8 - ...abspos-staticpos-justify-self-rtl-004.html | 8 - ...staticpos-justify-self-vertWM-001-ref.html | 8 - ...pos-staticpos-justify-self-vertWM-001.html | 8 - ...staticpos-justify-self-vertWM-002-ref.html | 8 - ...pos-staticpos-justify-self-vertWM-002.html | 8 - ...staticpos-justify-self-vertWM-003-ref.html | 8 - ...pos-staticpos-justify-self-vertWM-003.html | 8 - ...staticpos-justify-self-vertWM-004-ref.html | 8 - ...pos-staticpos-justify-self-vertWM-004.html | 8 - .../flexbox-align-content-horiz-001-ref.xhtml | 29 - .../flexbox-align-content-horiz-001a.xhtml | 29 - .../flexbox-align-content-horiz-001b.xhtml | 29 - .../flexbox-align-content-vert-001-ref.xhtml | 29 - .../flexbox-align-content-vert-001a.xhtml | 29 - .../flexbox-align-content-vert-001b.xhtml | 29 - .../flexbox-align-self-horiz-001-block.xhtml | 10 - .../flexbox-align-self-horiz-001-ref.xhtml | 10 +- .../flexbox-align-self-horiz-001-table.xhtml | 10 - .../flexbox-align-self-vert-001-ref.xhtml | 16 +- .../flexbox/flexbox-align-self-vert-001.xhtml | 10 - .../flexbox-align-self-vert-rtl-001-ref.xhtml | 16 +- .../flexbox-align-self-vert-rtl-001.xhtml | 10 - .../flexbox-paint-ordering-003-ref.html | 20 + .../flexbox/flexbox-paint-ordering-003.html | 52 + .../flexbox/reftest.list | 1 + .../Document-createElement-svg.svg | 24 + .../Document-createElement.html | 15 + .../Document-createElementNS.html | 43 + .../attribute-changed-callback.html | 31 + .../custom-elements/builtin-coverage.html | 823 +++ ...er-constructs-custom-elements-with-is.html | 51 + .../parser-sets-attributes-and-children.html | 16 + .../upgrading/Node-cloneNode.html | 19 + .../device-memory.https.any.js | 0 .../editing/data/insertparagraph.js | 286 +- .../resources/feature-policy-image.html | 13 + .../experimental-features/resources/image.jpg | Bin 0 -> 570855 bytes .../experimental-features/resources/image.png | Bin 0 -> 217 bytes .../experimental-features/resources/image.svg | 4 + .../experimental-features/resources/video.ogv | Bin 0 -> 103746 bytes .../unsized-image.tentative.https.sub.html | 94 + ...zed-image.tentative.https.sub.html.headers | 1 + .../fetch/api/response/response-init-002.html | 5 + .../fetch/data-urls/README.md | 11 + .../fetch/data-urls/base64.any.js | 16 + .../fetch/data-urls/processing.any.js | 20 + .../fetch/data-urls/resources/base64.json | 79 + .../fetch/data-urls/resources/data-urls.json | 199 + .../generic-sensor/generic-sensor-tests.js | 6 +- .../web-platform-tests/graphics-aam/OWNERS | 2 + ...phics-document_on_html_element-manual.html | 103 + ...aphics-document_on_svg_element-manual.html | 106 + ...raphics-object_on_html_element-manual.html | 97 + ...graphics-object_on_svg_element-manual.html | 100 + ...raphics-symbol_on_html_element-manual.html | 98 + ...graphics-symbol_on_svg_element-manual.html | 99 + .../read-media/pageload-image-in-popup.html | 43 + .../scroll-to-fragid/003.html | 6 +- .../scroll-to-anchor-name.html | 6 + .../dom-tree-accessors/Document.body.html | 50 + .../html/dom/usvstring-reflection.html | 10 + .../autocapitalization/autocapitalize.html | 688 +++ .../mime-types/canPlayType.html | 26 +- ...ue-rendering-after-controls-added-ref.html | 31 + ...ck-cue-rendering-after-controls-added.html | 37 + ...-rendering-after-controls-removed-ref.html | 29 + ...-cue-rendering-after-controls-removed.html | 34 + .../track-webvtt-non-snap-to-lines-ref.html | 29 + .../track-webvtt-non-snap-to-lines.html | 24 + ...tt-two-cue-layout-after-first-end-ref.html | 23 + ...webvtt-two-cue-layout-after-first-end.html | 30 + .../semantics/rellist-feature-detection.html | 80 + .../module/inline-async-execorder.html | 29 + .../module/load-error-events-inline.html | 1 - .../module/module-in-xhtml.xhtml | 6 +- .../module/resources/fast-module.js | 1 + .../module/resources/slow-module.js | 3 + .../rellist-feature-detection.html | 57 - .../rellist-feature-detection.html | 57 - .../html/webappapis/atob/base64.html | 199 +- .../http/resources/securedimage.py | 2 + .../cross-origin-iframe.sub.https.html | 38 + .../wpt/web-platform-tests/images/pattern.svg | 6 + .../web-platform-tests/interfaces/html.idl | 12 +- .../interfaces/screen-orientation.idl | 28 + tests/wpt/web-platform-tests/lint.whitelist | 2 - .../mediasource-addsourcebuffer.html | 27 +- .../mediasource-is-type-supported.html | 9 +- .../MediaDevices-IDL-enumerateDevices.html | 2 + .../web-platform-tests/payment-request/OWNERS | 2 - .../payment-request-id-attribute.https.html | 24 +- .../performance-timeline/idlharness.html | 1 + ...sentationReceiver_create-manual.https.html | 81 +- ...sentationReceiver_create_receiving-ua.html | 103 +- ...ionReceiver_create_receiving-ua_child.html | 56 +- .../proximity/DeviceProximityEvent_tests.html | 10 - .../proximity/DeviceProximityEvent_tests.js | 441 -- .../proximity/ProximitySensor.https.html | 14 + .../ProximitySensor_insecure_context.html | 20 + .../ProximitySensor_onerror-manual.https.html | 20 + .../proximity/UserProximityEvent_tests.html | 10 - .../proximity/UserProximityEvent_tests.js | 340 -- tests/wpt/web-platform-tests/quirks/OWNERS | 1 + .../resource_initiator_types.html | 5 + .../resource-timing/resource_timing.worker.js | 64 + .../resource-timing/resources/empty.js | 1 + .../chromium/fake_bluetooth.mojom.js | 204 +- .../resources/chromium/web-bluetooth-test.js | 20 +- .../resources/idlharness.js | 2 +- .../screen-orientation/interfaces.html | 28 + .../screen-orientation/orientation-api.html | 35 - .../resources/sandboxed-iframe-locking.html | 9 +- .../server-timing/cross_origin.html | 31 + .../web-platform-tests/service-workers/OWNERS | 3 +- .../about-blank-replacement.https.html | 55 +- .../fetch-canvas-tainting-cache.https.html | 38 - ...tch-canvas-tainting-image-cache.https.html | 16 + .../fetch-canvas-tainting-image.https.html | 16 + ...tch-canvas-tainting-video-cache.https.html | 16 + .../fetch-canvas-tainting-video.https.html | 16 + .../fetch-canvas-tainting.https.html | 38 - .../service-worker/fetch-event.https.html | 173 +- .../fetch-response-taint.https.html | 6 + .../local-url-inherit-controller.https.html | 129 + ...eplacement-blank-dynamic-nested-frame.html | 21 + ...-blank-replacement-blank-nested-frame.html | 22 + ...blank-replacement-srcdoc-nested-frame.html | 22 + .../resources/clients-get-worker.js | 7 - .../service-worker/resources/echo-content.py | 11 + .../resources/fetch-access-control.py | 6 + .../fetch-canvas-tainting-iframe.html | 346 +- .../resources/fetch-canvas-tainting-tests.js | 241 + .../resources/fetch-rewrite-worker.js | 9 + .../local-url-inherit-controller-frame.html | 123 + .../local-url-inherit-controller-worker.js | 5 + ...gister-then-register-new-script.https.html | 45 +- .../worker-interception.https.html | 12 +- ...ShadowRoot-prototype-elementFromPoint.html | 236 + ...ent-composed-path-with-related-target.html | 6 +- .../event-path-001.html | 56 - tests/wpt/web-platform-tests/svg/OWNERS | 1 + .../svg/types/scripted/SVGAnimatedAngle.html | 33 + .../types/scripted/SVGAnimatedBoolean.html | 45 + .../types/scripted/SVGAnimatedInteger.html | 35 + .../svg/types/scripted/SVGAnimatedLength.html | 33 + .../types/scripted/SVGAnimatedLengthList.html | 34 + .../svg/types/scripted/SVGAnimatedNumber.html | 42 + .../types/scripted/SVGAnimatedNumberList.html | 34 + .../SVGAnimatedPreserveAspectRatio.html | 41 + .../svg/types/scripted/SVGAnimatedRect.html | 33 + .../wpt/web-platform-tests/tools/lint/lint.py | 3 +- .../tools/lint/tests/test_lint.py | 5 +- tests/wpt/web-platform-tests/tools/pytest.ini | 1 + tests/wpt/web-platform-tests/tools/tox.ini | 2 +- .../tools/wpt/tests/test_wpt.py | 92 +- .../tools/wptrunner/README.rst | 2 +- .../tools/wptrunner/requirements_sauce.txt | 1 + .../tools/wptrunner/tox.ini | 6 +- .../wptrunner/wptrunner/browsers/sauce.py | 24 +- .../wptrunner/executors/executormarionette.py | 19 +- .../executors/pytestrunner/runner.py | 3 +- .../tools/wptrunner/wptrunner/metadata.py | 4 +- .../wptrunner/tests/browsers/test_sauce.py | 84 + .../wai-aria/tools/make_tests.pl | 3 + .../web-animations/README.md | 17 +- .../animation-types/property-list.js | 6 +- .../interfaces/Animation/playbackRate.html | 8 +- .../AnimationEffectTiming/direction.html | 24 +- .../AnimationEffectTiming/duration.html | 12 +- .../AnimationEffectTiming/endDelay.html | 8 +- .../AnimationEffectTiming/iterationStart.html | 6 +- .../AnimationEffectTiming/iterations.html | 10 +- .../interfaces/KeyframeEffect/composite.html | 4 +- .../KeyframeEffect/constructor.html | 10 +- .../processing-a-keyframes-argument-001.html | 166 +- .../resources/keyframe-tests.js | 12 +- .../web-animations/testcommon.js | 10 +- .../animation-effects/active-time.html | 14 +- .../timing-model/animations/current-time.html | 2 +- .../animations/playing-an-animation.html | 12 +- .../set-the-animation-start-time.html | 15 +- .../set-the-timeline-of-an-animation.html | 6 +- tests/wpt/web-platform-tests/webauthn/OWNERS | 1 + .../createcredential-badargs-rp.https.html | 42 + .../createcredential-passing.https.html | 20 + .../webauthn/getcredential-passing.https.html | 21 + .../web-platform-tests/webauthn/helpers.js | 339 +- .../webauthn/interfaces.idl | 172 +- ...tial-badargs-accountinformation.https.html | 34 - ...al-badargs-attestationchallenge.https.html | 20 - ...ential-badargs-cryptoparameters.https.html | 33 - .../webauthn/securecontext.http.html | 48 + .../webauthn/securecontext.https.html | 30 + tests/wpt/web-platform-tests/webdriver/OWNERS | 1 - .../webdriver/tests/__init__.py | 4 + .../webdriver/tests/actions/mouse.py | 3 +- .../webdriver/tests/actions/mouse_dblclick.py | 3 +- .../webdriver/tests/actions/support/mouse.py | 8 - .../webdriver/tests/cookies/add_cookie.py | 14 +- .../webdriver/tests/cookies/delete_cookie.py | 3 +- .../tests/cookies/get_named_cookie.py | 6 +- .../webdriver/tests/element_click/select.py | 12 + .../tests/element_send_keys/form_controls.py | 94 + .../element_send_keys/interactability.py | 4 +- .../tests/execute_async_script/__init__.py | 0 .../tests/execute_script/__init__.py | 0 .../tests/interaction/element_clear.py | 525 +- .../tests/sessions/new_session/response.py | 2 +- .../sessions/new_session/support/create.py | 2 +- .../tests/state/get_element_attribute.py | 2 + .../tests/state/get_element_property.py | 2 + .../tests/state/get_element_tag_name.py | 2 + .../tests/state/is_element_selected.py | 2 + .../webdriver/tests/support/asserts.py | 19 + .../webmessaging/MessageEvent.html | 7 + .../webrtc/RTCStats-helper.js | 78 +- .../webxr/resources/webxr_util.js | 1 + .../xhr/responsexml-document-properties.htm | 2 +- ...quest-sync-default-feature-policy.sub.html | 10 +- 791 files changed, 23381 insertions(+), 5501 deletions(-) create mode 100644 tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-origin.sub.html.ini delete mode 100644 tests/wpt/metadata/css/CSS2/floats-clear/float-applies-to-008.xht.ini delete mode 100644 tests/wpt/metadata/css/CSS2/normal-flow/width-inherit-001.xht.ini delete mode 100644 tests/wpt/metadata/css/CSS2/positioning/abspos-027.xht.ini delete mode 100644 tests/wpt/metadata/css/CSS2/values/color-000.xht.ini delete mode 100644 tests/wpt/metadata/css/css-color/rgb-002.html.ini delete mode 100644 tests/wpt/metadata/css/css-color/rgb-004.html.ini delete mode 100644 tests/wpt/metadata/css/css-color/rgb-006.html.ini delete mode 100644 tests/wpt/metadata/css/css-color/rgb-008.html.ini delete mode 100644 tests/wpt/metadata/css/css-color/rgba-002.html.ini delete mode 100644 tests/wpt/metadata/css/css-color/rgba-004.html.ini delete mode 100644 tests/wpt/metadata/css/css-color/rgba-006.html.ini delete mode 100644 tests/wpt/metadata/css/css-color/rgba-008.html.ini rename tests/wpt/metadata/css/{CSS2/floats-clear/floats-028.xht.ini => css-text/astral-bidi/adlam-anti-ref.html.ini} (52%) create mode 100644 tests/wpt/metadata/css/css-text/astral-bidi/cypriot-anti-ref.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/parsing/perspective-origin-parsing-invalid.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-transformed-caption-contains-fixed-position.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-transformed-tbody-contains-fixed-position.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-transformed-td-contains-fixed-position.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-transformed-tfoot-contains-fixed-position.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-transformed-th-contains-fixed-position.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-transformed-thead-contains-fixed-position.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-transformed-tr-contains-fixed-position.html.ini create mode 100644 tests/wpt/metadata/css/css-ui/text-overflow-024.html.ini create mode 100644 tests/wpt/metadata/css/css-ui/text-overflow-025.html.ini create mode 100644 tests/wpt/metadata/css/css-ui/text-overflow-026.html.ini create mode 100644 tests/wpt/metadata/css/css-values/calc-in-font-feature-settings.html.ini create mode 100644 tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scrollIntoView-scrollMargin.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/scrollIntoView-scrollPadding.html.ini create mode 100644 tests/wpt/metadata/css/selectors/invalidation/sheet-going-away-001.html.ini create mode 100644 tests/wpt/metadata/custom-elements/Document-createElement-svg.svg.ini create mode 100644 tests/wpt/metadata/custom-elements/builtin-coverage.html.ini create mode 100644 tests/wpt/metadata/custom-elements/parser/parser-sets-attributes-and-children.html.ini create mode 100644 tests/wpt/metadata/fetch/data-urls/base64.any.js.ini create mode 100644 tests/wpt/metadata/fetch/data-urls/processing.any.js.ini create mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini create mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html.ini rename tests/wpt/metadata/html/semantics/{text-level-semantics/the-a-element => }/rellist-feature-detection.html.ini (100%) create mode 100644 tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html.ini delete mode 100644 tests/wpt/metadata/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html.ini rename tests/wpt/web-platform-tests/2dcontext/imagebitmap/{common.js => common.sub.js} (75%) create mode 100644 tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-origin.sub.html create mode 100644 tests/wpt/web-platform-tests/acid/acid3/numbered-tests.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-filter.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/consumes-user-gesture.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/filter-matches.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/le-not-supported.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/radio-not-present.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-iframe.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/same-device.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/requestDevice/single-filter-single-service.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/script-tests/service/blocklisted-characteristic.js create mode 100644 tests/wpt/web-platform-tests/bluetooth/script-tests/service/characteristic-not-found.js create mode 100644 tests/wpt/web-platform-tests/bluetooth/script-tests/service/garbage-collection-ran-during-error.js create mode 100644 tests/wpt/web-platform-tests/bluetooth/script-tests/service/get-same-object.js create mode 100644 tests/wpt/web-platform-tests/bluetooth/script-tests/service/invalid-characteristic-name.js create mode 100644 tests/wpt/web-platform-tests/bluetooth/script-tests/service/reconnect-during.js create mode 100644 tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/service-found.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/correct-services.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found-with-uuid.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-not-found.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-get-same-object.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-reconnect-during.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-get-same-object.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.html create mode 100644 tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-reconnect-during.https.html create mode 100644 tests/wpt/web-platform-tests/common/namespaces.js rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-doesnt-send-reports-without-violation.https.sub.html (100%) rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers (88%) rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-report-only-sends-reports-on-violation.https.sub.html (100%) rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers (89%) rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-report-to-overrides-report-uri-1.https.sub.html (100%) rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers (91%) rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-report-to-overrides-report-uri-2.https.sub.html (100%) rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers (91%) rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-sends-reports-on-violation.https.sub.html (100%) rename tests/wpt/web-platform-tests/content-security-policy/{reporting => reporting-api}/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers (90%) create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/multiple-report-policies.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/multiple-report-policies.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-and-enforce.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-and-enforce.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-data-uri.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-data-uri.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-01.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-01.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-original-url.sub.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-original-url.sub.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-strips-fragment.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-effective-directive.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-effective-directive.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-from-child-frame.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-from-inline-javascript.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-from-inline-javascript.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-from-javascript.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-from-javascript.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-multiple-reversed.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-multiple-reversed.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-multiple.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-multiple.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-scheme-relative.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-scheme-relative.html.sub.headers delete mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/securitypolicyviolation-idl.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/support/generate-csp-report.html create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/support/generate-csp-report.html.sub.headers create mode 100644 tests/wpt/web-platform-tests/content-security-policy/reporting/support/set-cookie.py create mode 100644 tests/wpt/web-platform-tests/content-security-policy/support/pass2.png create mode 100644 tests/wpt/web-platform-tests/credential-management/require_securecontext.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-align-content-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-align-content-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-align-content-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-align-content-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-align-content-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-justify-content-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-justify-content-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-justify-content-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-justify-content-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/parse-justify-content-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-007-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/content-distribution/place-content-shorthand-007.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-align-items-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-align-items-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-align-items-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-align-items-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-align-items-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/default-alignment/parse-justify-items-006.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-align-self-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-align-self-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-align-self-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-align-self-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-align-self-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-justify-self-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-justify-self-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-justify-self-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-justify-self-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-align/self-alignment/parse-justify-self-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-color/rgb-rounding-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-display/display-contents-fieldset-nested-legend-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-display/display-contents-fieldset-nested-legend.html create mode 100644 tests/wpt/web-platform-tests/css/css-fill-stroke/paint-order-001.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-fill-stroke/reference/paint-order-001-ref.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-fonts/font-feature-settings-serialization-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-grid/alignment/support/100x100-green.png create mode 100644 tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html delete mode 100644 tests/wpt/web-platform-tests/css/css-grid/support/grid-alignment.css create mode 100644 tests/wpt/web-platform-tests/css/css-layout-api/OWNERS create mode 100644 tests/wpt/web-platform-tests/css/css-layout-api/at-supports-rule.https.html create mode 100644 tests/wpt/web-platform-tests/css/css-layout-api/computed-style-layout-function.https.html create mode 100644 tests/wpt/web-platform-tests/css/css-layout-api/inline-style-layout-function.https.html create mode 100644 tests/wpt/web-platform-tests/css/css-layout-api/supports.https.html create mode 100644 tests/wpt/web-platform-tests/css/css-multicol/multicol-gap-percentage-001.html delete mode 100644 tests/wpt/web-platform-tests/css/css-position/position-sticky-bottom-ref.html delete mode 100644 tests/wpt/web-platform-tests/css/css-position/position-sticky-left-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-sticky-rendering-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-sticky-rendering.html delete mode 100644 tests/wpt/web-platform-tests/css/css-position/position-sticky-right-ref.html delete mode 100644 tests/wpt/web-platform-tests/css/css-position/position-sticky-top-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-position/resources/sticky-util.js create mode 100644 tests/wpt/web-platform-tests/css/css-scoping/slotted-invalidation.html create mode 100644 tests/wpt/web-platform-tests/css/css-scoping/slotted-slot.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/astral-bidi/adlam-anti-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/astral-bidi/adlam-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/astral-bidi/adlam.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/astral-bidi/cypriot-anti-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/astral-bidi/cypriot-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/astral-bidi/cypriot.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/astral-bidi/support/adlam.css create mode 100644 tests/wpt/web-platform-tests/css/css-text/astral-bidi/support/cypriot.css create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/parsing/perspective-origin-parsing-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/parsing/perspective-origin-parsing-valid.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-caption-contains-fixed-position-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-caption-contains-fixed-position.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-tbody-contains-fixed-position-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-tbody-contains-fixed-position.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-td-contains-fixed-position-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-td-contains-fixed-position.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-tfoot-contains-fixed-position-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-tfoot-contains-fixed-position.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-th-contains-fixed-position-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-th-contains-fixed-position.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-thead-contains-fixed-position-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-thead-contains-fixed-position.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-tr-contains-fixed-position-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-transformed-tr-contains-fixed-position.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/OWNERS create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPositionValue-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssPositionValue.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssRotate.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssScale.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssSkew.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue-interface.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssUrlImageValue.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue-interface.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/add-two-types.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/arithmetic.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/create-a-type.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathInvert-type.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathNegate-type.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathValue.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssnumericvalue-multiply-two-types.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/equals.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/numeric-factory.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/resources/testhelper.js create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/to.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/stylevalue-subclasses/numeric-objects/toSum.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get.html delete mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/computed/get.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/delete-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/delete.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/get-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/get.html delete mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/get.tentative.html delete mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/declared/test.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/delete-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/delete.html delete mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/get-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/get.html delete mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/inline/get.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-ui/text-overflow-024-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-ui/text-overflow-024.html create mode 100644 tests/wpt/web-platform-tests/css/css-ui/text-overflow-025-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-ui/text-overflow-025.html create mode 100644 tests/wpt/web-platform-tests/css/css-ui/text-overflow-026-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-ui/text-overflow-026.html create mode 100644 tests/wpt/web-platform-tests/css/css-values/calc-ch-ex-lang-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-values/calc-ch-ex-lang.html create mode 100644 tests/wpt/web-platform-tests/css/css-values/calc-in-font-feature-settings.html create mode 100644 tests/wpt/web-platform-tests/css/css-values/calc-rem-lang-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-values/calc-rem-lang.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-006.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-007.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-008.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-009.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/available-size-010.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-006.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-007.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/ch-units-vrl-008.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/logical-props-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/logical-props-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/logical-props-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/logical-props-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/mongolian-orientation-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/mongolian-orientation-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/nested-orthogonal-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/reference/available-size-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/reference/available-size-002-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/reference/ch-units-vrl-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/reference/ch-units-vrl-005-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/reference/logical-props-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/reference/mongolian-orientation-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/reference/svg-aliasing-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/reference/svg-aliasing-002-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/svg-aliasing-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-writing-modes/svg-aliasing-002.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-dynamic-anon-box.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-scrollMargin.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/scrollIntoView-scrollPadding.html create mode 100644 tests/wpt/web-platform-tests/css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt create mode 100644 tests/wpt/web-platform-tests/css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf create mode 100644 tests/wpt/web-platform-tests/css/fonts/noto/NotoSansAdlam-hinted/README create mode 100644 tests/wpt/web-platform-tests/css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt create mode 100644 tests/wpt/web-platform-tests/css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf create mode 100644 tests/wpt/web-platform-tests/css/fonts/noto/NotoSansCypriot-hinted/README create mode 100644 tests/wpt/web-platform-tests/css/selectors/hover-002-manual.html create mode 100644 tests/wpt/web-platform-tests/css/selectors/invalidation/selectorText-dynamic-001.html create mode 100644 tests/wpt/web-platform-tests/css/selectors/invalidation/sheet-going-away-001.html create mode 100644 tests/wpt/web-platform-tests/css/selectors/invalidation/sheet-going-away-002-ref.html create mode 100644 tests/wpt/web-platform-tests/css/selectors/invalidation/sheet-going-away-002.html create mode 100644 tests/wpt/web-platform-tests/css/selectors/selector-structural-pseudo-root-ref.html create mode 100644 tests/wpt/web-platform-tests/css/selectors/selector-structural-pseudo-root.html create mode 100644 tests/wpt/web-platform-tests/css/support/alignment.css create mode 100644 tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-003-ref.html create mode 100644 tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-003.html create mode 100644 tests/wpt/web-platform-tests/custom-elements/Document-createElement-svg.svg create mode 100644 tests/wpt/web-platform-tests/custom-elements/Document-createElementNS.html create mode 100644 tests/wpt/web-platform-tests/custom-elements/builtin-coverage.html create mode 100644 tests/wpt/web-platform-tests/custom-elements/parser/parser-constructs-custom-elements-with-is.html rename tests/wpt/web-platform-tests/{navigator => device-memory}/device-memory.https.any.js (100%) create mode 100644 tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/feature-policy-image.html create mode 100644 tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/image.jpg create mode 100644 tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/image.png create mode 100644 tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/image.svg create mode 100644 tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/video.ogv create mode 100644 tests/wpt/web-platform-tests/feature-policy/experimental-features/unsized-image.tentative.https.sub.html create mode 100644 tests/wpt/web-platform-tests/feature-policy/experimental-features/unsized-image.tentative.https.sub.html.headers create mode 100644 tests/wpt/web-platform-tests/fetch/data-urls/README.md create mode 100644 tests/wpt/web-platform-tests/fetch/data-urls/base64.any.js create mode 100644 tests/wpt/web-platform-tests/fetch/data-urls/processing.any.js create mode 100644 tests/wpt/web-platform-tests/fetch/data-urls/resources/base64.json create mode 100644 tests/wpt/web-platform-tests/fetch/data-urls/resources/data-urls.json create mode 100644 tests/wpt/web-platform-tests/graphics-aam/OWNERS create mode 100644 tests/wpt/web-platform-tests/graphics-aam/graphics-document_on_html_element-manual.html create mode 100644 tests/wpt/web-platform-tests/graphics-aam/graphics-document_on_svg_element-manual.html create mode 100644 tests/wpt/web-platform-tests/graphics-aam/graphics-object_on_html_element-manual.html create mode 100644 tests/wpt/web-platform-tests/graphics-aam/graphics-object_on_svg_element-manual.html create mode 100644 tests/wpt/web-platform-tests/graphics-aam/graphics-symbol_on_html_element-manual.html create mode 100644 tests/wpt/web-platform-tests/graphics-aam/graphics-symbol_on_svg_element-manual.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html create mode 100644 tests/wpt/web-platform-tests/html/editing/editing-0/autocapitalization/autocapitalize.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added-ref.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed-ref.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines-ref.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end-ref.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/rellist-feature-detection.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/fast-module.js create mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/slow-module.js delete mode 100644 tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html delete mode 100644 tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html create mode 100644 tests/wpt/web-platform-tests/http/tests/bluetooth/https/requestDevice/cross-origin-iframe.sub.https.html create mode 100644 tests/wpt/web-platform-tests/images/pattern.svg create mode 100644 tests/wpt/web-platform-tests/interfaces/screen-orientation.idl delete mode 100644 tests/wpt/web-platform-tests/proximity/DeviceProximityEvent_tests.html delete mode 100644 tests/wpt/web-platform-tests/proximity/DeviceProximityEvent_tests.js create mode 100644 tests/wpt/web-platform-tests/proximity/ProximitySensor.https.html create mode 100644 tests/wpt/web-platform-tests/proximity/ProximitySensor_insecure_context.html create mode 100644 tests/wpt/web-platform-tests/proximity/ProximitySensor_onerror-manual.https.html delete mode 100644 tests/wpt/web-platform-tests/proximity/UserProximityEvent_tests.html delete mode 100644 tests/wpt/web-platform-tests/proximity/UserProximityEvent_tests.js create mode 100644 tests/wpt/web-platform-tests/quirks/OWNERS create mode 100644 tests/wpt/web-platform-tests/resource-timing/resource_timing.worker.js create mode 100644 tests/wpt/web-platform-tests/resource-timing/resources/empty.js create mode 100644 tests/wpt/web-platform-tests/screen-orientation/interfaces.html delete mode 100644 tests/wpt/web-platform-tests/screen-orientation/orientation-api.html create mode 100644 tests/wpt/web-platform-tests/server-timing/cross_origin.html delete mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video.https.html delete mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/local-url-inherit-controller.https.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-blank-dynamic-nested-frame.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-blank-nested-frame.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-srcdoc-nested-frame.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-content.py create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-tests.js create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/local-url-inherit-controller-frame.html create mode 100644 tests/wpt/web-platform-tests/service-workers/service-worker/resources/local-url-inherit-controller-worker.js create mode 100644 tests/wpt/web-platform-tests/shadow-dom/DocumentOrShadowRoot-prototype-elementFromPoint.html delete mode 100644 tests/wpt/web-platform-tests/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-event-interface/event-path-001.html create mode 100644 tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedAngle.html create mode 100644 tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedBoolean.html create mode 100644 tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedInteger.html create mode 100644 tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedLength.html create mode 100644 tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedLengthList.html create mode 100644 tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedNumber.html create mode 100644 tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedNumberList.html create mode 100644 tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedPreserveAspectRatio.html create mode 100644 tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedRect.html create mode 100644 tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py create mode 100644 tests/wpt/web-platform-tests/webauthn/createcredential-badargs-rp.https.html create mode 100644 tests/wpt/web-platform-tests/webauthn/createcredential-passing.https.html create mode 100644 tests/wpt/web-platform-tests/webauthn/getcredential-passing.https.html delete mode 100644 tests/wpt/web-platform-tests/webauthn/makecredential-badargs-accountinformation.https.html delete mode 100644 tests/wpt/web-platform-tests/webauthn/makecredential-badargs-attestationchallenge.https.html delete mode 100644 tests/wpt/web-platform-tests/webauthn/makecredential-badargs-cryptoparameters.https.html create mode 100644 tests/wpt/web-platform-tests/webauthn/securecontext.http.html create mode 100644 tests/wpt/web-platform-tests/webauthn/securecontext.https.html create mode 100644 tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/form_controls.py create mode 100644 tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/__init__.py create mode 100644 tests/wpt/web-platform-tests/webdriver/tests/execute_script/__init__.py diff --git a/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-drawImage.html.ini b/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-drawImage.html.ini index 7d06eb0372e..2a478cda6b3 100644 --- a/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-drawImage.html.ini +++ b/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-drawImage.html.ini @@ -51,3 +51,27 @@ [createImageBitmap from a Blob with negative sw/sh, and drawImage on the created ImageBitmap] expected: FAIL + [createImageBitmap from a bitmap HTMLImageElement, and drawImage on the created ImageBitmap] + expected: FAIL + + [createImageBitmap from a bitmap HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap] + expected: FAIL + + [createImageBitmap from a vector HTMLImageElement, and drawImage on the created ImageBitmap] + expected: FAIL + + [createImageBitmap from a vector HTMLImageElement with negative sw/sh, and drawImage on the created ImageBitmap] + expected: FAIL + + [createImageBitmap from a bitmap SVGImageElement, and drawImage on the created ImageBitmap] + expected: FAIL + + [createImageBitmap from a bitmap SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap] + expected: FAIL + + [createImageBitmap from a vector SVGImageElement, and drawImage on the created ImageBitmap] + expected: FAIL + + [createImageBitmap from a vector SVGImageElement with negative sw/sh, and drawImage on the created ImageBitmap] + expected: FAIL + diff --git a/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-invalid-args.html.ini b/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-invalid-args.html.ini index d6de451b2a9..2595ee23ece 100644 --- a/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-invalid-args.html.ini +++ b/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-invalid-args.html.ini @@ -1,5 +1,6 @@ [createImageBitmap-invalid-args.html] type: testharness + expected: TIMEOUT [createImageBitmap with a HTMLImageElement source and sw set to 0 rejects with a RangeError.] expected: FAIL @@ -118,68 +119,122 @@ expected: FAIL [createImageBitmap with a an OffscreenCanvas source and sw set to 0] - expected: FAIL + expected: NOTRUN [createImageBitmap with a an OffscreenCanvas source and sh set to 0] - expected: FAIL + expected: NOTRUN [createImageBitmap with a an OffscreenCanvas source and oversized (unallocatable) crop region] - expected: FAIL + expected: NOTRUN [createImageBitmap with a an ImageData source and sw set to 0] - expected: FAIL + expected: NOTRUN [createImageBitmap with a an ImageData source and sh set to 0] - expected: FAIL + expected: NOTRUN [createImageBitmap with a an ImageData source and oversized (unallocatable) crop region] - expected: FAIL + expected: NOTRUN [createImageBitmap with a an ImageBitmap source and sw set to 0] - expected: FAIL + expected: NOTRUN [createImageBitmap with a an ImageBitmap source and sh set to 0] - expected: FAIL + expected: NOTRUN [createImageBitmap with a an ImageBitmap source and oversized (unallocatable) crop region] - expected: FAIL + expected: NOTRUN [createImageBitmap with a a Blob source and sw set to 0] - expected: FAIL + expected: NOTRUN [createImageBitmap with a a Blob source and sh set to 0] - expected: FAIL + expected: NOTRUN [createImageBitmap with a a Blob source and oversized (unallocatable) crop region] - expected: FAIL + expected: NOTRUN [createImageBitmap with undefined image source.] - expected: FAIL + expected: NOTRUN [createImageBitmap with null image source.] - expected: FAIL + expected: NOTRUN [createImageBitmap with empty image source.] - expected: FAIL + expected: NOTRUN [createImageBitmap with empty video source.] - expected: FAIL + expected: NOTRUN [createImageBitmap with an oversized canvas source.] - expected: FAIL + expected: NOTRUN [createImageBitmap with an invalid OffscreenCanvas source.] - expected: FAIL + expected: NOTRUN [createImageBitmap with an undecodable blob source.] - expected: FAIL + expected: NOTRUN [createImageBitmap with a broken image source.] - expected: FAIL + expected: NOTRUN [createImageBitmap with an available but undecodable image source.] - expected: FAIL + expected: NOTRUN [createImageBitmap with a closed ImageBitmap.] + expected: NOTRUN + + [createImageBitmap with a a bitmap HTMLImageElement source and sw set to 0] expected: FAIL + [createImageBitmap with a a bitmap HTMLImageElement source and sh set to 0] + expected: FAIL + + [createImageBitmap with a a bitmap HTMLImageElement source and oversized (unallocatable) crop region] + expected: FAIL + + [createImageBitmap with a a vector HTMLImageElement source and sw set to 0] + expected: TIMEOUT + + [createImageBitmap with a a vector HTMLImageElement source and sh set to 0] + expected: NOTRUN + + [createImageBitmap with a a vector HTMLImageElement source and oversized (unallocatable) crop region] + expected: NOTRUN + + [createImageBitmap with a a bitmap SVGImageElement source and sw set to 0] + expected: NOTRUN + + [createImageBitmap with a a bitmap SVGImageElement source and sh set to 0] + expected: NOTRUN + + [createImageBitmap with a a bitmap SVGImageElement source and oversized (unallocatable) crop region] + expected: NOTRUN + + [createImageBitmap with a a vector SVGImageElement source and sw set to 0] + expected: NOTRUN + + [createImageBitmap with a a vector SVGImageElement source and sh set to 0] + expected: NOTRUN + + [createImageBitmap with a a vector SVGImageElement source and oversized (unallocatable) crop region] + expected: NOTRUN + + [createImageBitmap with CanvasRenderingContext2D image source.] + expected: NOTRUN + + [createImageBitmap with WebGLRenderingContext image source.] + expected: NOTRUN + + [createImageBitmap with Uint8Array image source.] + expected: NOTRUN + + [createImageBitmap with ArrayBuffer image source.] + expected: NOTRUN + + [createImageBitmap with an available but zero height image source.] + expected: NOTRUN + + [createImageBitmap with an available but zero width image source.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-origin.sub.html.ini b/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-origin.sub.html.ini new file mode 100644 index 00000000000..a3d31b14f8e --- /dev/null +++ b/tests/wpt/metadata/2dcontext/imagebitmap/createImageBitmap-origin.sub.html.ini @@ -0,0 +1,16 @@ +[createImageBitmap-origin.sub.html] + [cross-origin HTMLImageElement] + expected: FAIL + + [cross-origin SVGImageElement] + expected: FAIL + + [cross-origin HTMLVideoElement] + expected: FAIL + + [unclean HTMLCanvasElement] + expected: FAIL + + [unclean ImageBitmap] + expected: FAIL + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 29132f8bbcc..05feb9d3bf0 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -11335,6 +11335,12 @@ {} ] ], + "css/selectors/hover-002-manual.html": [ + [ + "/css/selectors/hover-002-manual.html", + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-1.html": [ [ "/css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-block-page-break-inside-avoid-1.html", @@ -12235,6 +12241,42 @@ {} ] ], + "graphics-aam/graphics-document_on_html_element-manual.html": [ + [ + "/graphics-aam/graphics-document_on_html_element-manual.html", + {} + ] + ], + "graphics-aam/graphics-document_on_svg_element-manual.html": [ + [ + "/graphics-aam/graphics-document_on_svg_element-manual.html", + {} + ] + ], + "graphics-aam/graphics-object_on_html_element-manual.html": [ + [ + "/graphics-aam/graphics-object_on_html_element-manual.html", + {} + ] + ], + "graphics-aam/graphics-object_on_svg_element-manual.html": [ + [ + "/graphics-aam/graphics-object_on_svg_element-manual.html", + {} + ] + ], + "graphics-aam/graphics-symbol_on_html_element-manual.html": [ + [ + "/graphics-aam/graphics-symbol_on_html_element-manual.html", + {} + ] + ], + "graphics-aam/graphics-symbol_on_svg_element-manual.html": [ + [ + "/graphics-aam/graphics-symbol_on_svg_element-manual.html", + {} + ] + ], "gyroscope/Gyroscope_onerror-manual.https.html": [ [ "/gyroscope/Gyroscope_onerror-manual.https.html", @@ -14503,6 +14545,12 @@ {} ] ], + "proximity/ProximitySensor_onerror-manual.https.html": [ + [ + "/proximity/ProximitySensor_onerror-manual.https.html", + {} + ] + ], "quirks/active-and-hover-manual.html": [ [ "/quirks/active-and-hover-manual.html", @@ -98493,6 +98541,18 @@ {} ] ], + "css/css-align/content-distribution/place-content-shorthand-007.html": [ + [ + "/css/css-align/content-distribution/place-content-shorthand-007.html", + [ + [ + "/css/css-align/content-distribution/place-content-shorthand-007-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-align/distribution-values/space-evenly-001.html": [ [ "/css/css-align/distribution-values/space-evenly-001.html", @@ -105441,6 +105501,18 @@ {} ] ], + "css/css-display/display-contents-fieldset-nested-legend.html": [ + [ + "/css/css-display/display-contents-fieldset-nested-legend.html", + [ + [ + "/css/css-display/display-contents-fieldset-nested-legend-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-display/display-contents-fieldset.html": [ [ "/css/css-display/display-contents-fieldset.html", @@ -107409,6 +107481,18 @@ {} ] ], + "css/css-fill-stroke/paint-order-001.tentative.html": [ + [ + "/css/css-fill-stroke/paint-order-001.tentative.html", + [ + [ + "/css/css-fill-stroke/reference/paint-order-001-ref.tentative.html", + "==" + ] + ], + {} + ] + ], "css/css-flexbox/Flexible-order.html": [ [ "/css/css-flexbox/Flexible-order.html", @@ -120857,18 +120941,6 @@ {} ] ], - "css/css-position/position-sticky-bottom.html": [ - [ - "/css/css-position/position-sticky-bottom.html", - [ - [ - "/css/css-position/position-sticky-bottom-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-position/position-sticky-flexbox.html": [ [ "/css/css-position/position-sticky-flexbox.html", @@ -120917,18 +120989,6 @@ {} ] ], - "css/css-position/position-sticky-left.html": [ - [ - "/css/css-position/position-sticky-left.html", - [ - [ - "/css/css-position/position-sticky-left-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-position/position-sticky-margins.html": [ [ "/css/css-position/position-sticky-margins.html", @@ -121025,12 +121085,12 @@ {} ] ], - "css/css-position/position-sticky-right.html": [ + "css/css-position/position-sticky-rendering.html": [ [ - "/css/css-position/position-sticky-right.html", + "/css/css-position/position-sticky-rendering.html", [ [ - "/css/css-position/position-sticky-right-ref.html", + "/css/css-position/position-sticky-rendering-ref.html", "==" ] ], @@ -121169,18 +121229,6 @@ {} ] ], - "css/css-position/position-sticky-top.html": [ - [ - "/css/css-position/position-sticky-top.html", - [ - [ - "/css/css-position/position-sticky-top-ref.html", - "==" - ] - ], - {} - ] - ], "css/css-position/position-sticky-transforms-translate.html": [ [ "/css/css-position/position-sticky-transforms-translate.html", @@ -125781,6 +125829,30 @@ {} ] ], + "css/css-text/astral-bidi/adlam-anti-ref.html": [ + [ + "/css/css-text/astral-bidi/adlam-anti-ref.html", + [ + [ + "/css/css-text/astral-bidi/adlam.html", + "!=" + ] + ], + {} + ] + ], + "css/css-text/astral-bidi/cypriot-anti-ref.html": [ + [ + "/css/css-text/astral-bidi/cypriot-anti-ref.html", + [ + [ + "/css/css-text/astral-bidi/cypriot.html", + "!=" + ] + ], + {} + ] + ], "css/css-text/i18n/css3-text-line-break-jazh-001.html": [ [ "/css/css-text/i18n/css3-text-line-break-jazh-001.html", @@ -142693,6 +142765,90 @@ {} ] ], + "css/css-transforms/transform-transformed-caption-contains-fixed-position.html": [ + [ + "/css/css-transforms/transform-transformed-caption-contains-fixed-position.html", + [ + [ + "/css/css-transforms/transform-transformed-caption-contains-fixed-position-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-transforms/transform-transformed-tbody-contains-fixed-position.html": [ + [ + "/css/css-transforms/transform-transformed-tbody-contains-fixed-position.html", + [ + [ + "/css/css-transforms/transform-transformed-tbody-contains-fixed-position-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-transforms/transform-transformed-td-contains-fixed-position.html": [ + [ + "/css/css-transforms/transform-transformed-td-contains-fixed-position.html", + [ + [ + "/css/css-transforms/transform-transformed-td-contains-fixed-position-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-transforms/transform-transformed-tfoot-contains-fixed-position.html": [ + [ + "/css/css-transforms/transform-transformed-tfoot-contains-fixed-position.html", + [ + [ + "/css/css-transforms/transform-transformed-tfoot-contains-fixed-position-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-transforms/transform-transformed-th-contains-fixed-position.html": [ + [ + "/css/css-transforms/transform-transformed-th-contains-fixed-position.html", + [ + [ + "/css/css-transforms/transform-transformed-th-contains-fixed-position-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-transforms/transform-transformed-thead-contains-fixed-position.html": [ + [ + "/css/css-transforms/transform-transformed-thead-contains-fixed-position.html", + [ + [ + "/css/css-transforms/transform-transformed-thead-contains-fixed-position-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-transforms/transform-transformed-tr-contains-fixed-position.html": [ + [ + "/css/css-transforms/transform-transformed-tr-contains-fixed-position.html", + [ + [ + "/css/css-transforms/transform-transformed-tr-contains-fixed-position-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-transforms/transform-translate-001.html": [ [ "/css/css-transforms/transform-translate-001.html", @@ -147109,6 +147265,42 @@ {} ] ], + "css/css-ui/text-overflow-024.html": [ + [ + "/css/css-ui/text-overflow-024.html", + [ + [ + "/css/css-ui/text-overflow-024-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-ui/text-overflow-025.html": [ + [ + "/css/css-ui/text-overflow-025.html", + [ + [ + "/css/css-ui/text-overflow-025-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-ui/text-overflow-026.html": [ + [ + "/css/css-ui/text-overflow-026.html", + [ + [ + "/css/css-ui/text-overflow-026-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-values/attr-color-invalid-cast.html": [ [ "/css/css-values/attr-color-invalid-cast.html", @@ -147265,6 +147457,18 @@ {} ] ], + "css/css-values/calc-ch-ex-lang.html": [ + [ + "/css/css-values/calc-ch-ex-lang.html", + [ + [ + "/css/css-values/calc-ch-ex-lang-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-values/calc-in-calc.html": [ [ "/css/css-values/calc-in-calc.html", @@ -147325,6 +147529,18 @@ {} ] ], + "css/css-values/calc-rem-lang.html": [ + [ + "/css/css-values/calc-rem-lang.html", + [ + [ + "/css/css-values/calc-rem-lang-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-values/ch-unit-001.html": [ [ "/css/css-values/ch-unit-001.html", @@ -150745,6 +150961,126 @@ {} ] ], + "css/css-writing-modes/available-size-001.html": [ + [ + "/css/css-writing-modes/available-size-001.html", + [ + [ + "/css/css-writing-modes/reference/available-size-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/available-size-002.html": [ + [ + "/css/css-writing-modes/available-size-002.html", + [ + [ + "/css/css-writing-modes/reference/available-size-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/available-size-003.html": [ + [ + "/css/css-writing-modes/available-size-003.html", + [ + [ + "/css/css-writing-modes/reference/available-size-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/available-size-004.html": [ + [ + "/css/css-writing-modes/available-size-004.html", + [ + [ + "/css/css-writing-modes/reference/available-size-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/available-size-005.html": [ + [ + "/css/css-writing-modes/available-size-005.html", + [ + [ + "/css/css-writing-modes/reference/available-size-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/available-size-006.html": [ + [ + "/css/css-writing-modes/available-size-006.html", + [ + [ + "/css/css-writing-modes/reference/available-size-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/available-size-007.html": [ + [ + "/css/css-writing-modes/available-size-007.html", + [ + [ + "/css/css-writing-modes/reference/available-size-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/available-size-008.html": [ + [ + "/css/css-writing-modes/available-size-008.html", + [ + [ + "/css/css-writing-modes/reference/available-size-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/available-size-009.html": [ + [ + "/css/css-writing-modes/available-size-009.html", + [ + [ + "/css/css-writing-modes/reference/available-size-002-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/available-size-010.html": [ + [ + "/css/css-writing-modes/available-size-010.html", + [ + [ + "/css/css-writing-modes/reference/available-size-002-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-writing-modes/background-position-vrl-018.xht": [ [ "/css/css-writing-modes/background-position-vrl-018.xht", @@ -152977,6 +153313,102 @@ {} ] ], + "css/css-writing-modes/ch-units-vrl-001.html": [ + [ + "/css/css-writing-modes/ch-units-vrl-001.html", + [ + [ + "/css/css-writing-modes/reference/ch-units-vrl-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/ch-units-vrl-002.html": [ + [ + "/css/css-writing-modes/ch-units-vrl-002.html", + [ + [ + "/css/css-writing-modes/reference/ch-units-vrl-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/ch-units-vrl-003.html": [ + [ + "/css/css-writing-modes/ch-units-vrl-003.html", + [ + [ + "/css/css-writing-modes/reference/ch-units-vrl-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/ch-units-vrl-004.html": [ + [ + "/css/css-writing-modes/ch-units-vrl-004.html", + [ + [ + "/css/css-writing-modes/reference/ch-units-vrl-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/ch-units-vrl-005.html": [ + [ + "/css/css-writing-modes/ch-units-vrl-005.html", + [ + [ + "/css/css-writing-modes/reference/ch-units-vrl-005-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/ch-units-vrl-006.html": [ + [ + "/css/css-writing-modes/ch-units-vrl-006.html", + [ + [ + "/css/css-writing-modes/reference/ch-units-vrl-005-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/ch-units-vrl-007.html": [ + [ + "/css/css-writing-modes/ch-units-vrl-007.html", + [ + [ + "/css/css-writing-modes/reference/ch-units-vrl-005-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/ch-units-vrl-008.html": [ + [ + "/css/css-writing-modes/ch-units-vrl-008.html", + [ + [ + "/css/css-writing-modes/reference/ch-units-vrl-005-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-writing-modes/clearance-calculations-vrl-002.xht": [ [ "/css/css-writing-modes/clearance-calculations-vrl-002.xht", @@ -154957,6 +155389,54 @@ {} ] ], + "css/css-writing-modes/logical-props-001.html": [ + [ + "/css/css-writing-modes/logical-props-001.html", + [ + [ + "/css/css-writing-modes/reference/logical-props-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/logical-props-002.html": [ + [ + "/css/css-writing-modes/logical-props-002.html", + [ + [ + "/css/css-writing-modes/reference/logical-props-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/logical-props-003.html": [ + [ + "/css/css-writing-modes/logical-props-003.html", + [ + [ + "/css/css-writing-modes/reference/logical-props-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/logical-props-004.html": [ + [ + "/css/css-writing-modes/logical-props-004.html", + [ + [ + "/css/css-writing-modes/reference/logical-props-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-writing-modes/margin-collapse-vlr-003.xht": [ [ "/css/css-writing-modes/margin-collapse-vlr-003.xht", @@ -155197,6 +155677,42 @@ {} ] ], + "css/css-writing-modes/mongolian-orientation-001.html": [ + [ + "/css/css-writing-modes/mongolian-orientation-001.html", + [ + [ + "/css/css-writing-modes/reference/mongolian-orientation-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/mongolian-orientation-002.html": [ + [ + "/css/css-writing-modes/mongolian-orientation-002.html", + [ + [ + "/css/css-writing-modes/reference/mongolian-orientation-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/nested-orthogonal-001.html": [ + [ + "/css/css-writing-modes/nested-orthogonal-001.html", + [ + [ + "/css/reference/ref-filled-green-100px-square.xht", + "==" + ] + ], + {} + ] + ], "css/css-writing-modes/normal-flow-overconstrained-vlr-003.xht": [ [ "/css/css-writing-modes/normal-flow-overconstrained-vlr-003.xht", @@ -157081,6 +157597,30 @@ {} ] ], + "css/css-writing-modes/svg-aliasing-001.html": [ + [ + "/css/css-writing-modes/svg-aliasing-001.html", + [ + [ + "/css/css-writing-modes/reference/svg-aliasing-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/svg-aliasing-002.html": [ + [ + "/css/css-writing-modes/svg-aliasing-002.html", + [ + [ + "/css/css-writing-modes/reference/svg-aliasing-002-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-writing-modes/table-cell-001.html": [ [ "/css/css-writing-modes/table-cell-001.html", @@ -159681,6 +160221,18 @@ {} ] ], + "css/selectors/invalidation/sheet-going-away-002.html": [ + [ + "/css/selectors/invalidation/sheet-going-away-002.html", + [ + [ + "/css/selectors/invalidation/sheet-going-away-002-ref.html", + "==" + ] + ], + {} + ] + ], "css/selectors/of-type-selectors.xhtml": [ [ "/css/selectors/of-type-selectors.xhtml", @@ -159813,6 +160365,18 @@ {} ] ], + "css/selectors/selector-structural-pseudo-root.html": [ + [ + "/css/selectors/selector-structural-pseudo-root.html", + [ + [ + "/css/selectors/selector-structural-pseudo-root-ref.html", + "==" + ] + ], + {} + ] + ], "css/selectors/selectors-attr-white-space-001.html": [ [ "/css/selectors/selectors-attr-white-space-001.html", @@ -163569,6 +164133,18 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-003.html": [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-003.html", + [ + [ + "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-003-ref.html", + "==" + ] + ], + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-root-node-001a.html": [ [ "/css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-root-node-001a.html", @@ -176637,6 +177213,30 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added.html", + [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added-ref.html", + "==" + ] + ], + {} + ] + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html", + [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed-ref.html", + "==" + ] + ], + {} + ] + ], "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html": [ [ "/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit.html", @@ -176661,6 +177261,30 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines.html", + [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines-ref.html", + "==" + ] + ], + {} + ] + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end.html": [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end.html", + [ + [ + "/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end-ref.html", + "==" + ] + ], + {} + ] + ], "html/semantics/embedded-content/the-audio-element/audio_001.htm": [ [ "/html/semantics/embedded-content/the-audio-element/audio_001.htm", @@ -181991,6 +182615,30 @@ {} ] ], + "css/css-text/astral-bidi/adlam.html": [ + [ + "/css/css-text/astral-bidi/adlam.html", + [ + [ + "/css/css-text/astral-bidi/adlam-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text/astral-bidi/cypriot.html": [ + [ + "/css/css-text/astral-bidi/cypriot.html", + [ + [ + "/css/css-text/astral-bidi/cypriot-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-transforms/2d-rotate-notref.html": [ [ "/css/css-transforms/2d-rotate-notref.html", @@ -183416,7 +184064,7 @@ {} ] ], - "2dcontext/imagebitmap/common.js": [ + "2dcontext/imagebitmap/common.sub.js": [ [ {} ] @@ -187266,6 +187914,36 @@ {} ] ], + "bluetooth/script-tests/service/blocklisted-characteristic.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/service/characteristic-not-found.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/service/garbage-collection-ran-during-error.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/service/get-same-object.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/service/invalid-characteristic-name.js": [ + [ + {} + ] + ], + "bluetooth/script-tests/service/reconnect-during.js": [ + [ + {} + ] + ], "clear-site-data/support/echo-clear-site-data.py": [ [ {} @@ -187441,6 +188119,11 @@ {} ] ], + "common/namespaces.js": [ + [ + {} + ] + ], "common/object-association.js": [ [ {} @@ -209881,27 +210564,132 @@ {} ] ], - "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers": [ + "content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers": [ + "content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers": [ + "content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers": [ + "content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers": [ [ {} ] ], - "content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers": [ + "content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/multiple-report-policies.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-and-enforce.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-blocked-data-uri.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-blocked-uri.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-cross-origin-no-cookies.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-multiple-violations-01.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-multiple-violations-02.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-only-in-meta.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-original-url.sub.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-same-origin-with-cookies.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-uri-effective-directive.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-uri-from-inline-javascript.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-uri-from-javascript.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-uri-multiple-reversed.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-uri-multiple.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/report-uri-scheme-relative.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/support/generate-csp-report.html": [ + [ + {} + ] + ], + "content-security-policy/reporting/support/generate-csp-report.html.sub.headers": [ + [ + {} + ] + ], + "content-security-policy/reporting/support/set-cookie.py": [ [ {} ] @@ -210291,6 +211079,11 @@ {} ] ], + "content-security-policy/support/pass2.png": [ + [ + {} + ] + ], "content-security-policy/support/ping.js": [ [ {} @@ -232396,6 +233189,11 @@ {} ] ], + "css/css-align/content-distribution/place-content-shorthand-007-ref.html": [ + [ + {} + ] + ], "css/css-align/reference/ttwf-reftest-alignContent-ref.html": [ [ {} @@ -234076,6 +234874,11 @@ {} ] ], + "css/css-display/display-contents-fieldset-nested-legend-ref.html": [ + [ + {} + ] + ], "css/css-display/display-contents-flex-001-ref.html": [ [ {} @@ -234281,6 +235084,11 @@ {} ] ], + "css/css-fill-stroke/reference/paint-order-001-ref.tentative.html": [ + [ + {} + ] + ], "css/css-flexbox/OWNERS": [ [ {} @@ -243961,6 +244769,11 @@ {} ] ], + "css/css-grid/alignment/support/100x100-green.png": [ + [ + {} + ] + ], "css/css-grid/alignment/support/style-change.js": [ [ {} @@ -244111,11 +244924,6 @@ {} ] ], - "css/css-grid/support/grid-alignment.css": [ - [ - {} - ] - ], "css/css-grid/support/grid.css": [ [ {} @@ -244411,6 +245219,11 @@ {} ] ], + "css/css-layout-api/OWNERS": [ + [ + {} + ] + ], "css/css-lists/OWNERS": [ [ {} @@ -245806,11 +246619,6 @@ {} ] ], - "css/css-position/position-sticky-bottom-ref.html": [ - [ - {} - ] - ], "css/css-position/position-sticky-flexbox-ref.html": [ [ {} @@ -245831,11 +246639,6 @@ {} ] ], - "css/css-position/position-sticky-left-ref.html": [ - [ - {} - ] - ], "css/css-position/position-sticky-margins-ref.html": [ [ {} @@ -245876,7 +246679,7 @@ {} ] ], - "css/css-position/position-sticky-right-ref.html": [ + "css/css-position/position-sticky-rendering-ref.html": [ [ {} ] @@ -245936,11 +246739,6 @@ {} ] ], - "css/css-position/position-sticky-top-ref.html": [ - [ - {} - ] - ], "css/css-position/position-sticky-transforms-ref.html": [ [ {} @@ -245956,6 +246754,11 @@ {} ] ], + "css/css-position/resources/sticky-util.js": [ + [ + {} + ] + ], "css/css-pseudo/OWNERS": [ [ {} @@ -248196,6 +248999,26 @@ {} ] ], + "css/css-text/astral-bidi/adlam-ref.html": [ + [ + {} + ] + ], + "css/css-text/astral-bidi/cypriot-ref.html": [ + [ + {} + ] + ], + "css/css-text/astral-bidi/support/adlam.css": [ + [ + {} + ] + ], + "css/css-text/astral-bidi/support/cypriot.css": [ + [ + {} + ] + ], "css/css-text/hanging-punctuation/reference/hanging-punctuation-allow-end-001-ref.xht": [ [ {} @@ -252756,6 +253579,41 @@ {} ] ], + "css/css-transforms/transform-transformed-caption-contains-fixed-position-ref.html": [ + [ + {} + ] + ], + "css/css-transforms/transform-transformed-tbody-contains-fixed-position-ref.html": [ + [ + {} + ] + ], + "css/css-transforms/transform-transformed-td-contains-fixed-position-ref.html": [ + [ + {} + ] + ], + "css/css-transforms/transform-transformed-tfoot-contains-fixed-position-ref.html": [ + [ + {} + ] + ], + "css/css-transforms/transform-transformed-th-contains-fixed-position-ref.html": [ + [ + {} + ] + ], + "css/css-transforms/transform-transformed-thead-contains-fixed-position-ref.html": [ + [ + {} + ] + ], + "css/css-transforms/transform-transformed-tr-contains-fixed-position-ref.html": [ + [ + {} + ] + ], "css/css-transforms/transform-translate-ref.html": [ [ {} @@ -253206,6 +254064,11 @@ {} ] ], + "css/css-typed-om/OWNERS": [ + [ + {} + ] + ], "css/css-typed-om/resources/1x1-green.png": [ [ {} @@ -253216,6 +254079,11 @@ {} ] ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/resources/testhelper.js": [ + [ + {} + ] + ], "css/css-ui/OWNERS": [ [ {} @@ -254521,6 +255389,21 @@ {} ] ], + "css/css-ui/text-overflow-024-ref.html": [ + [ + {} + ] + ], + "css/css-ui/text-overflow-025-ref.html": [ + [ + {} + ] + ], + "css/css-ui/text-overflow-026-ref.html": [ + [ + {} + ] + ], "css/css-ui/text-overflow-ref.html": [ [ {} @@ -254531,6 +255414,16 @@ {} ] ], + "css/css-values/calc-ch-ex-lang-ref.html": [ + [ + {} + ] + ], + "css/css-values/calc-rem-lang-ref.html": [ + [ + {} + ] + ], "css/css-values/ex-calc-expression-001-ref.html": [ [ {} @@ -255341,6 +256234,16 @@ {} ] ], + "css/css-writing-modes/reference/available-size-001-ref.html": [ + [ + {} + ] + ], + "css/css-writing-modes/reference/available-size-002-ref.html": [ + [ + {} + ] + ], "css/css-writing-modes/reference/bidi-embed-001.html": [ [ {} @@ -255821,6 +256724,16 @@ {} ] ], + "css/css-writing-modes/reference/ch-units-vrl-001-ref.html": [ + [ + {} + ] + ], + "css/css-writing-modes/reference/ch-units-vrl-005-ref.html": [ + [ + {} + ] + ], "css/css-writing-modes/reference/full-width-001-horizontal-notref.html": [ [ {} @@ -255871,6 +256784,16 @@ {} ] ], + "css/css-writing-modes/reference/logical-props-001-ref.html": [ + [ + {} + ] + ], + "css/css-writing-modes/reference/mongolian-orientation-001-ref.html": [ + [ + {} + ] + ], "css/css-writing-modes/reference/outline-inline-block-vrl-006.html": [ [ {} @@ -255896,6 +256819,16 @@ {} ] ], + "css/css-writing-modes/reference/svg-aliasing-001-ref.html": [ + [ + {} + ] + ], + "css/css-writing-modes/reference/svg-aliasing-002-ref.html": [ + [ + {} + ] + ], "css/css-writing-modes/reference/table-cell-001-ref.html": [ [ {} @@ -258776,6 +259709,36 @@ {} ] ], + "css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt": [ + [ + {} + ] + ], + "css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf": [ + [ + {} + ] + ], + "css/fonts/noto/NotoSansAdlam-hinted/README": [ + [ + {} + ] + ], + "css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt": [ + [ + {} + ] + ], + "css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf": [ + [ + {} + ] + ], + "css/fonts/noto/NotoSansCypriot-hinted/README": [ + [ + {} + ] + ], "css/geometry/OWNERS": [ [ {} @@ -260616,6 +261579,11 @@ {} ] ], + "css/selectors/invalidation/sheet-going-away-002-ref.html": [ + [ + {} + ] + ], "css/selectors/of-type-selectors-ref.xhtml": [ [ {} @@ -260661,6 +261629,11 @@ {} ] ], + "css/selectors/selector-structural-pseudo-root-ref.html": [ + [ + {} + ] + ], "css/selectors/selectors-attr-white-space-001-ref.html": [ [ {} @@ -260776,6 +261749,11 @@ {} ] ], + "css/support/alignment.css": [ + [ + {} + ] + ], "css/support/b-green.css": [ [ {} @@ -262631,6 +263609,11 @@ {} ] ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-003-ref.html": [ + [ + {} + ] + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-root-node-001-ref.html": [ [ {} @@ -267481,6 +268464,36 @@ {} ] ], + "feature-policy/experimental-features/resources/feature-policy-image.html": [ + [ + {} + ] + ], + "feature-policy/experimental-features/resources/image.jpg": [ + [ + {} + ] + ], + "feature-policy/experimental-features/resources/image.png": [ + [ + {} + ] + ], + "feature-policy/experimental-features/resources/image.svg": [ + [ + {} + ] + ], + "feature-policy/experimental-features/resources/video.ogv": [ + [ + {} + ] + ], + "feature-policy/experimental-features/unsized-image.tentative.https.sub.html.headers": [ + [ + {} + ] + ], "feature-policy/payment-allowed-by-feature-policy.https.sub.html.headers": [ [ {} @@ -267931,6 +268944,21 @@ {} ] ], + "fetch/data-urls/README.md": [ + [ + {} + ] + ], + "fetch/data-urls/resources/base64.json": [ + [ + {} + ] + ], + "fetch/data-urls/resources/data-urls.json": [ + [ + {} + ] + ], "fetch/http-cache/README.md": [ [ {} @@ -268436,6 +269464,11 @@ {} ] ], + "graphics-aam/OWNERS": [ + [ + {} + ] + ], "gyroscope/Gyroscope-disabled-by-feature-policy.https.html.headers": [ [ {} @@ -277271,6 +278304,16 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added-ref.html": [ + [ + {} + ] + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed-ref.html": [ + [ + {} + ] + ], "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-line-doesnt-fit-ref.html": [ [ {} @@ -277286,6 +278329,16 @@ {} ] ], + "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines-ref.html": [ + [ + {} + ] + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end-ref.html": [ + [ + {} + ] + ], "html/semantics/embedded-content/resources/should-load.html": [ [ {} @@ -279106,6 +280159,11 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/resources/fast-module.js": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/module/resources/import-non-utf8-with-charset-header.js": [ [ {} @@ -279161,6 +280219,11 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/resources/slow-module.js": [ + [ + {} + ] + ], "html/semantics/scripting-1/the-script-element/module/set-currentScript-on-window.js": [ [ {} @@ -280541,6 +281604,11 @@ {} ] ], + "images/pattern.svg": [ + [ + {} + ] + ], "images/red-16x16.png": [ [ {} @@ -280806,6 +281874,11 @@ {} ] ], + "interfaces/screen-orientation.idl": [ + [ + {} + ] + ], "interfaces/touchevents.idl": [ [ {} @@ -282876,17 +283949,12 @@ {} ] ], - "proximity/DeviceProximityEvent_tests.js": [ - [ - {} - ] - ], "proximity/OWNERS": [ [ {} ] ], - "proximity/UserProximityEvent_tests.js": [ + "quirks/OWNERS": [ [ {} ] @@ -285576,6 +286644,11 @@ {} ] ], + "resource-timing/resources/empty.js": [ + [ + {} + ] + ], "resource-timing/resources/empty_script.js": [ [ {} @@ -286976,6 +288049,16 @@ {} ] ], + "service-workers/service-worker/resources/about-blank-replacement-blank-dynamic-nested-frame.html": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/about-blank-replacement-blank-nested-frame.html": [ + [ + {} + ] + ], "service-workers/service-worker/resources/about-blank-replacement-frame.py": [ [ {} @@ -286991,6 +288074,11 @@ {} ] ], + "service-workers/service-worker/resources/about-blank-replacement-srcdoc-nested-frame.html": [ + [ + {} + ] + ], "service-workers/service-worker/resources/about-blank-replacement-uncontrolled-nested-frame.html": [ [ {} @@ -287176,6 +288264,11 @@ {} ] ], + "service-workers/service-worker/resources/echo-content.py": [ + [ + {} + ] + ], "service-workers/service-worker/resources/echo-message-to-source-worker.js": [ [ {} @@ -287241,6 +288334,11 @@ {} ] ], + "service-workers/service-worker/resources/fetch-canvas-tainting-tests.js": [ + [ + {} + ] + ], "service-workers/service-worker/resources/fetch-cors-exposed-header-names-worker.js": [ [ {} @@ -287621,6 +288719,16 @@ {} ] ], + "service-workers/service-worker/resources/local-url-inherit-controller-frame.html": [ + [ + {} + ] + ], + "service-workers/service-worker/resources/local-url-inherit-controller-worker.js": [ + [ + {} + ] + ], "service-workers/service-worker/resources/malformed-worker.py": [ [ {} @@ -290031,6 +291139,16 @@ {} ] ], + "webdriver/tests/execute_async_script/__init__.py": [ + [ + {} + ] + ], + "webdriver/tests/execute_script/__init__.py": [ + [ + {} + ] + ], "webdriver/tests/sessions/new_session/conftest.py": [ [ {} @@ -296365,6 +297483,12 @@ {} ] ], + "2dcontext/imagebitmap/createImageBitmap-origin.sub.html": [ + [ + "/2dcontext/imagebitmap/createImageBitmap-origin.sub.html", + {} + ] + ], "2dcontext/imagebitmap/createImageBitmap-sizeOverflow.html": [ [ "/2dcontext/imagebitmap/createImageBitmap-sizeOverflow.html", @@ -301695,6 +302819,12 @@ {} ] ], + "acid/acid3/numbered-tests.html": [ + [ + "/acid/acid3/numbered-tests.html", + {} + ] + ], "ambient-light/AmbientLightSensor-disabled-by-feature-policy.https.html": [ [ "/ambient-light/AmbientLightSensor-disabled-by-feature-policy.https.html", @@ -302163,6 +303293,262 @@ } ] ], + "bluetooth/requestDevice/blocklisted-service-in-filter.https.html": [ + [ + "/bluetooth/requestDevice/blocklisted-service-in-filter.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html": [ + [ + "/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.html": [ + [ + "/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/consumes-user-gesture.https.html": [ + [ + "/bluetooth/requestDevice/consumes-user-gesture.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/discovery-succeeds.https.html": [ + [ + "/bluetooth/requestDevice/discovery-succeeds.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/filter-matches.https.html": [ + [ + "/bluetooth/requestDevice/filter-matches.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/le-not-supported.https.html": [ + [ + "/bluetooth/requestDevice/le-not-supported.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.html": [ + [ + "/bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/not-processing-user-gesture.https.html": [ + [ + "/bluetooth/requestDevice/not-processing-user-gesture.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/radio-not-present.https.html": [ + [ + "/bluetooth/requestDevice/radio-not-present.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/request-from-iframe.https.html": [ + [ + "/bluetooth/requestDevice/request-from-iframe.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/request-from-sandboxed-iframe.https.html": [ + [ + "/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/same-device.https.html": [ + [ + "/bluetooth/requestDevice/same-device.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/requestDevice/single-filter-single-service.https.html": [ + [ + "/bluetooth/requestDevice/single-filter-single-service.https.html", + { + "testdriver": true + } + ] + ], "bluetooth/server/connect/connection-succeeds.https.html": [ [ "/bluetooth/server/connect/connection-succeeds.https.html", @@ -302355,6 +303741,46 @@ } ] ], + "bluetooth/server/getPrimaryService/service-found.https.html": [ + [ + "/bluetooth/server/getPrimaryService/service-found.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.html": [ + [ + "/bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/blocklisted-services.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/blocklisted-services.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/correct-services.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/correct-services.https.html", + { + "testdriver": true + } + ] + ], "bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html": [ [ "/bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html", @@ -302563,6 +303989,30 @@ } ] ], + "bluetooth/server/getPrimaryServices/services-found-with-uuid.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/services-found-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/services-found.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/services-found.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/server/getPrimaryServices/services-not-found.https.html": [ + [ + "/bluetooth/server/getPrimaryServices/services-not-found.https.html", + { + "testdriver": true + } + ] + ], "bluetooth/service/getCharacteristic/characteristic-found.https.html": [ [ "/bluetooth/service/getCharacteristic/characteristic-found.https.html", @@ -302571,6 +304021,54 @@ } ] ], + "bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.html": [ + [ + "/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.html": [ + [ + "/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.html": [ + [ + "/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristic/gen-get-same-object.https.html": [ + [ + "/bluetooth/service/getCharacteristic/gen-get-same-object.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.html": [ + [ + "/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristic/gen-reconnect-during.https.html": [ + [ + "/bluetooth/service/getCharacteristic/gen-reconnect-during.https.html", + { + "testdriver": true + } + ] + ], "bluetooth/service/getCharacteristics/blocklisted-characteristics.https.html": [ [ "/bluetooth/service/getCharacteristics/blocklisted-characteristics.https.html", @@ -302603,6 +304101,78 @@ } ] ], + "bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.html": [ + [ + "/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.html": [ + [ + "/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.html": [ + [ + "/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.html": [ + [ + "/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.html": [ + [ + "/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristics/gen-get-same-object.https.html": [ + [ + "/bluetooth/service/getCharacteristics/gen-get-same-object.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.html": [ + [ + "/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.html": [ + [ + "/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.html", + { + "testdriver": true + } + ] + ], + "bluetooth/service/getCharacteristics/gen-reconnect-during.https.html": [ + [ + "/bluetooth/service/getCharacteristics/gen-reconnect-during.https.html", + { + "testdriver": true + } + ] + ], "clear-site-data/navigation-insecure.html": [ [ "/clear-site-data/navigation-insecure.html", @@ -303703,41 +305273,155 @@ {} ] ], - "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html": [ [ - "/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html", + "/content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html", {} ] ], - "content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html": [ [ - "/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html", + "/content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html", {} ] ], - "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html": [ [ - "/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html", + "/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html", {} ] ], - "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html": [ [ - "/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html", + "/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html", { "timeout": "long" } ] ], - "content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html": [ [ - "/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html", + "/content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html", {} ] ], - "content-security-policy/reporting/securitypolicyviolation-idl.html": [ + "content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html": [ [ - "/content-security-policy/reporting/securitypolicyviolation-idl.html", + "/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html", + {} + ] + ], + "content-security-policy/reporting/multiple-report-policies.html": [ + [ + "/content-security-policy/reporting/multiple-report-policies.html", + {} + ] + ], + "content-security-policy/reporting/report-and-enforce.html": [ + [ + "/content-security-policy/reporting/report-and-enforce.html", + {} + ] + ], + "content-security-policy/reporting/report-blocked-data-uri.html": [ + [ + "/content-security-policy/reporting/report-blocked-data-uri.html", + {} + ] + ], + "content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html": [ + [ + "/content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html", + {} + ] + ], + "content-security-policy/reporting/report-blocked-uri.html": [ + [ + "/content-security-policy/reporting/report-blocked-uri.html", + {} + ] + ], + "content-security-policy/reporting/report-cross-origin-no-cookies.sub.html": [ + [ + "/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html", + {} + ] + ], + "content-security-policy/reporting/report-multiple-violations-01.html": [ + [ + "/content-security-policy/reporting/report-multiple-violations-01.html", + {} + ] + ], + "content-security-policy/reporting/report-multiple-violations-02.html": [ + [ + "/content-security-policy/reporting/report-multiple-violations-02.html", + {} + ] + ], + "content-security-policy/reporting/report-only-in-meta.sub.html": [ + [ + "/content-security-policy/reporting/report-only-in-meta.sub.html", + {} + ] + ], + "content-security-policy/reporting/report-original-url.sub.html": [ + [ + "/content-security-policy/reporting/report-original-url.sub.html", + {} + ] + ], + "content-security-policy/reporting/report-same-origin-with-cookies.html": [ + [ + "/content-security-policy/reporting/report-same-origin-with-cookies.html", + {} + ] + ], + "content-security-policy/reporting/report-strips-fragment.html": [ + [ + "/content-security-policy/reporting/report-strips-fragment.html", + {} + ] + ], + "content-security-policy/reporting/report-uri-effective-directive.html": [ + [ + "/content-security-policy/reporting/report-uri-effective-directive.html", + {} + ] + ], + "content-security-policy/reporting/report-uri-from-child-frame.html": [ + [ + "/content-security-policy/reporting/report-uri-from-child-frame.html", + {} + ] + ], + "content-security-policy/reporting/report-uri-from-inline-javascript.html": [ + [ + "/content-security-policy/reporting/report-uri-from-inline-javascript.html", + {} + ] + ], + "content-security-policy/reporting/report-uri-from-javascript.html": [ + [ + "/content-security-policy/reporting/report-uri-from-javascript.html", + {} + ] + ], + "content-security-policy/reporting/report-uri-multiple-reversed.html": [ + [ + "/content-security-policy/reporting/report-uri-multiple-reversed.html", + {} + ] + ], + "content-security-policy/reporting/report-uri-multiple.html": [ + [ + "/content-security-policy/reporting/report-uri-multiple.html", + {} + ] + ], + "content-security-policy/reporting/report-uri-scheme-relative.html": [ + [ + "/content-security-policy/reporting/report-uri-scheme-relative.html", {} ] ], @@ -305263,6 +306947,12 @@ {} ] ], + "credential-management/require_securecontext.html": [ + [ + "/credential-management/require_securecontext.html", + {} + ] + ], "css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html": [ [ "/css/compositing/mix-blend-mode/mix-blend-mode-creates-stacking-context.html", @@ -305275,6 +306965,66 @@ {} ] ], + "css/css-align/content-distribution/parse-align-content-001.html": [ + [ + "/css/css-align/content-distribution/parse-align-content-001.html", + {} + ] + ], + "css/css-align/content-distribution/parse-align-content-002.html": [ + [ + "/css/css-align/content-distribution/parse-align-content-002.html", + {} + ] + ], + "css/css-align/content-distribution/parse-align-content-003.html": [ + [ + "/css/css-align/content-distribution/parse-align-content-003.html", + {} + ] + ], + "css/css-align/content-distribution/parse-align-content-004.html": [ + [ + "/css/css-align/content-distribution/parse-align-content-004.html", + {} + ] + ], + "css/css-align/content-distribution/parse-align-content-005.html": [ + [ + "/css/css-align/content-distribution/parse-align-content-005.html", + {} + ] + ], + "css/css-align/content-distribution/parse-justify-content-001.html": [ + [ + "/css/css-align/content-distribution/parse-justify-content-001.html", + {} + ] + ], + "css/css-align/content-distribution/parse-justify-content-002.html": [ + [ + "/css/css-align/content-distribution/parse-justify-content-002.html", + {} + ] + ], + "css/css-align/content-distribution/parse-justify-content-003.html": [ + [ + "/css/css-align/content-distribution/parse-justify-content-003.html", + {} + ] + ], + "css/css-align/content-distribution/parse-justify-content-004.html": [ + [ + "/css/css-align/content-distribution/parse-justify-content-004.html", + {} + ] + ], + "css/css-align/content-distribution/parse-justify-content-005.html": [ + [ + "/css/css-align/content-distribution/parse-justify-content-005.html", + {} + ] + ], "css/css-align/content-distribution/place-content-shorthand-001.html": [ [ "/css/css-align/content-distribution/place-content-shorthand-001.html", @@ -305317,6 +307067,72 @@ {} ] ], + "css/css-align/default-alignment/parse-align-items-001.html": [ + [ + "/css/css-align/default-alignment/parse-align-items-001.html", + {} + ] + ], + "css/css-align/default-alignment/parse-align-items-002.html": [ + [ + "/css/css-align/default-alignment/parse-align-items-002.html", + {} + ] + ], + "css/css-align/default-alignment/parse-align-items-003.html": [ + [ + "/css/css-align/default-alignment/parse-align-items-003.html", + {} + ] + ], + "css/css-align/default-alignment/parse-align-items-004.html": [ + [ + "/css/css-align/default-alignment/parse-align-items-004.html", + {} + ] + ], + "css/css-align/default-alignment/parse-align-items-005.html": [ + [ + "/css/css-align/default-alignment/parse-align-items-005.html", + {} + ] + ], + "css/css-align/default-alignment/parse-justify-items-001.html": [ + [ + "/css/css-align/default-alignment/parse-justify-items-001.html", + {} + ] + ], + "css/css-align/default-alignment/parse-justify-items-002.html": [ + [ + "/css/css-align/default-alignment/parse-justify-items-002.html", + {} + ] + ], + "css/css-align/default-alignment/parse-justify-items-003.html": [ + [ + "/css/css-align/default-alignment/parse-justify-items-003.html", + {} + ] + ], + "css/css-align/default-alignment/parse-justify-items-004.html": [ + [ + "/css/css-align/default-alignment/parse-justify-items-004.html", + {} + ] + ], + "css/css-align/default-alignment/parse-justify-items-005.html": [ + [ + "/css/css-align/default-alignment/parse-justify-items-005.html", + {} + ] + ], + "css/css-align/default-alignment/parse-justify-items-006.html": [ + [ + "/css/css-align/default-alignment/parse-justify-items-006.html", + {} + ] + ], "css/css-align/default-alignment/place-items-shorthand-001.html": [ [ "/css/css-align/default-alignment/place-items-shorthand-001.html", @@ -305353,6 +307169,66 @@ {} ] ], + "css/css-align/self-alignment/parse-align-self-001.html": [ + [ + "/css/css-align/self-alignment/parse-align-self-001.html", + {} + ] + ], + "css/css-align/self-alignment/parse-align-self-002.html": [ + [ + "/css/css-align/self-alignment/parse-align-self-002.html", + {} + ] + ], + "css/css-align/self-alignment/parse-align-self-003.html": [ + [ + "/css/css-align/self-alignment/parse-align-self-003.html", + {} + ] + ], + "css/css-align/self-alignment/parse-align-self-004.html": [ + [ + "/css/css-align/self-alignment/parse-align-self-004.html", + {} + ] + ], + "css/css-align/self-alignment/parse-align-self-005.html": [ + [ + "/css/css-align/self-alignment/parse-align-self-005.html", + {} + ] + ], + "css/css-align/self-alignment/parse-justify-self-001.html": [ + [ + "/css/css-align/self-alignment/parse-justify-self-001.html", + {} + ] + ], + "css/css-align/self-alignment/parse-justify-self-002.html": [ + [ + "/css/css-align/self-alignment/parse-justify-self-002.html", + {} + ] + ], + "css/css-align/self-alignment/parse-justify-self-003.html": [ + [ + "/css/css-align/self-alignment/parse-justify-self-003.html", + {} + ] + ], + "css/css-align/self-alignment/parse-justify-self-004.html": [ + [ + "/css/css-align/self-alignment/parse-justify-self-004.html", + {} + ] + ], + "css/css-align/self-alignment/parse-justify-self-005.html": [ + [ + "/css/css-align/self-alignment/parse-justify-self-005.html", + {} + ] + ], "css/css-align/self-alignment/place-self-shorthand-001.html": [ [ "/css/css-align/self-alignment/place-self-shorthand-001.html", @@ -305489,6 +307365,12 @@ {} ] ], + "css/css-color/rgb-rounding-001.html": [ + [ + "/css/css-color/rgb-rounding-001.html", + {} + ] + ], "css/css-conditional/js/001.html": [ [ "/css/css-conditional/js/001.html", @@ -306077,6 +307959,12 @@ {} ] ], + "css/css-fonts/font-feature-settings-serialization-001.html": [ + [ + "/css/css-fonts/font-feature-settings-serialization-001.html", + {} + ] + ], "css/css-fonts/font-variant-alternates-parsing.html": [ [ "/css/css-fonts/font-variant-alternates-parsing.html", @@ -307271,6 +309159,42 @@ {} ] ], + "css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html": [ + [ + "/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html", + {} + ] + ], + "css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html": [ + [ + "/css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html", + {} + ] + ], + "css/css-layout-api/at-supports-rule.https.html": [ + [ + "/css/css-layout-api/at-supports-rule.https.html", + {} + ] + ], + "css/css-layout-api/computed-style-layout-function.https.html": [ + [ + "/css/css-layout-api/computed-style-layout-function.https.html", + {} + ] + ], + "css/css-layout-api/inline-style-layout-function.https.html": [ + [ + "/css/css-layout-api/inline-style-layout-function.https.html", + {} + ] + ], + "css/css-layout-api/supports.https.html": [ + [ + "/css/css-layout-api/supports.https.html", + {} + ] + ], "css/css-logical/logicalprops-block-size-vlr.html": [ [ "/css/css-logical/logicalprops-block-size-vlr.html", @@ -307361,6 +309285,18 @@ {} ] ], + "css/css-multicol/multicol-gap-percentage-001.html": [ + [ + "/css/css-multicol/multicol-gap-percentage-001.html", + {} + ] + ], + "css/css-position/position-sticky-bottom.html": [ + [ + "/css/css-position/position-sticky-bottom.html", + {} + ] + ], "css/css-position/position-sticky-get-bounding-client-rect.html": [ [ "/css/css-position/position-sticky-get-bounding-client-rect.html", @@ -307373,6 +309309,12 @@ {} ] ], + "css/css-position/position-sticky-left.html": [ + [ + "/css/css-position/position-sticky-left.html", + {} + ] + ], "css/css-position/position-sticky-offset-overflow.html": [ [ "/css/css-position/position-sticky-offset-overflow.html", @@ -307391,6 +309333,18 @@ {} ] ], + "css/css-position/position-sticky-right.html": [ + [ + "/css/css-position/position-sticky-right.html", + {} + ] + ], + "css/css-position/position-sticky-top.html": [ + [ + "/css/css-position/position-sticky-top.html", + {} + ] + ], "css/css-regions/cssomview-apis-no-region-chain-001.html": [ [ "/css/css-regions/cssomview-apis-no-region-chain-001.html", @@ -307433,12 +309387,24 @@ {} ] ], + "css/css-scoping/slotted-invalidation.html": [ + [ + "/css/css-scoping/slotted-invalidation.html", + {} + ] + ], "css/css-scoping/slotted-parsing.html": [ [ "/css/css-scoping/slotted-parsing.html", {} ] ], + "css/css-scoping/slotted-slot.html": [ + [ + "/css/css-scoping/slotted-slot.html", + {} + ] + ], "css/css-scroll-anchoring/abspos-containing-block-outside-scroller.html": [ [ "/css/css-scroll-anchoring/abspos-containing-block-outside-scroller.html", @@ -309473,6 +311439,18 @@ {} ] ], + "css/css-transforms/parsing/perspective-origin-parsing-invalid.html": [ + [ + "/css/css-transforms/parsing/perspective-origin-parsing-invalid.html", + {} + ] + ], + "css/css-transforms/parsing/perspective-origin-parsing-valid.html": [ + [ + "/css/css-transforms/parsing/perspective-origin-parsing-valid.html", + {} + ] + ], "css/css-transforms/parsing/rotate-parsing-invalid.html": [ [ "/css/css-transforms/parsing/rotate-parsing-invalid.html", @@ -309899,21 +311877,195 @@ {} ] ], + "css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative.html", + {} + ] + ], "css/css-typed-om/stylevalue-subclasses/cssPositionValue-interface.html": [ [ "/css/css-typed-om/stylevalue-subclasses/cssPositionValue-interface.html", {} ] ], + "css/css-typed-om/stylevalue-subclasses/cssPositionValue-invalid.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssPositionValue-invalid.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssPositionValue.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssPositionValue.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssRotate.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssRotate.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssScale.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssScale.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssSkew.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssSkew.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssUnparsedValue-interface.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue-interface.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssUrlImageValue.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssUrlImageValue.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue-interface.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue-interface.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue-invalid.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue-invalid.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/add-two-types.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/add-two-types.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/arithmetic.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/arithmetic.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/create-a-type.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/create-a-type.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathInvert-type.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathInvert-type.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathNegate-type.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathNegate-type.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathValue.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathValue.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssnumericvalue-multiply-two-types.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/cssnumericvalue-multiply-two-types.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/equals.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/equals.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/numeric-factory.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/numeric-factory.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/to.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/to.tentative.html", + {} + ] + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/toSum.tentative.html": [ + [ + "/css/css-typed-om/stylevalue-subclasses/numeric-objects/toSum.tentative.html", + {} + ] + ], "css/css-typed-om/the-stylepropertymap/computed/computed.tentative.html": [ [ "/css/css-typed-om/the-stylepropertymap/computed/computed.tentative.html", {} ] ], - "css/css-typed-om/the-stylepropertymap/computed/get.tentative.html": [ + "css/css-typed-om/the-stylepropertymap/computed/get-invalid.html": [ [ - "/css/css-typed-om/the-stylepropertymap/computed/get.tentative.html", + "/css/css-typed-om/the-stylepropertymap/computed/get-invalid.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/computed/get.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/computed/get.html", {} ] ], @@ -309953,9 +312105,27 @@ {} ] ], - "css/css-typed-om/the-stylepropertymap/declared/get.tentative.html": [ + "css/css-typed-om/the-stylepropertymap/declared/delete-invalid.html": [ [ - "/css/css-typed-om/the-stylepropertymap/declared/get.tentative.html", + "/css/css-typed-om/the-stylepropertymap/declared/delete-invalid.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/delete.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/delete.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/get-invalid.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/get-invalid.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/declared/get.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/declared/get.html", {} ] ], @@ -309989,12 +312159,6 @@ {} ] ], - "css/css-typed-om/the-stylepropertymap/declared/test.tentative.html": [ - [ - "/css/css-typed-om/the-stylepropertymap/declared/test.tentative.html", - {} - ] - ], "css/css-typed-om/the-stylepropertymap/declared/update.tentative.html": [ [ "/css/css-typed-om/the-stylepropertymap/declared/update.tentative.html", @@ -310007,15 +312171,27 @@ {} ] ], - "css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html": [ + "css/css-typed-om/the-stylepropertymap/inline/delete-invalid.html": [ [ - "/css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html", + "/css/css-typed-om/the-stylepropertymap/inline/delete-invalid.html", {} ] ], - "css/css-typed-om/the-stylepropertymap/inline/get.tentative.html": [ + "css/css-typed-om/the-stylepropertymap/inline/delete.html": [ [ - "/css/css-typed-om/the-stylepropertymap/inline/get.tentative.html", + "/css/css-typed-om/the-stylepropertymap/inline/delete.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/get-invalid.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/get-invalid.html", + {} + ] + ], + "css/css-typed-om/the-stylepropertymap/inline/get.html": [ + [ + "/css/css-typed-om/the-stylepropertymap/inline/get.html", {} ] ], @@ -310133,6 +312309,12 @@ {} ] ], + "css/css-values/calc-in-font-feature-settings.html": [ + [ + "/css/css-values/calc-in-font-feature-settings.html", + {} + ] + ], "css/css-values/calc-serialization.html": [ [ "/css/css-values/calc-serialization.html", @@ -310871,6 +313053,12 @@ {} ] ], + "css/cssom-view/elementFromPoint-dynamic-anon-box.html": [ + [ + "/css/cssom-view/elementFromPoint-dynamic-anon-box.html", + {} + ] + ], "css/cssom-view/elementFromPoint-parameters.html": [ [ "/css/cssom-view/elementFromPoint-parameters.html", @@ -311009,6 +313197,18 @@ {} ] ], + "css/cssom-view/scrollIntoView-scrollMargin.html": [ + [ + "/css/cssom-view/scrollIntoView-scrollMargin.html", + {} + ] + ], + "css/cssom-view/scrollIntoView-scrollPadding.html": [ + [ + "/css/cssom-view/scrollIntoView-scrollPadding.html", + {} + ] + ], "css/cssom-view/scrollIntoView-shadow.html": [ [ "/css/cssom-view/scrollIntoView-shadow.html", @@ -312041,6 +314241,18 @@ {} ] ], + "css/selectors/invalidation/selectorText-dynamic-001.html": [ + [ + "/css/selectors/invalidation/selectorText-dynamic-001.html", + {} + ] + ], + "css/selectors/invalidation/sheet-going-away-001.html": [ + [ + "/css/selectors/invalidation/sheet-going-away-001.html", + {} + ] + ], "css/selectors/missing-right-token.html": [ [ "/css/selectors/missing-right-token.html", @@ -312059,12 +314271,24 @@ {} ] ], + "custom-elements/Document-createElement-svg.svg": [ + [ + "/custom-elements/Document-createElement-svg.svg", + {} + ] + ], "custom-elements/Document-createElement.html": [ [ "/custom-elements/Document-createElement.html", {} ] ], + "custom-elements/Document-createElementNS.html": [ + [ + "/custom-elements/Document-createElementNS.html", + {} + ] + ], "custom-elements/HTMLElement-constructor.html": [ [ "/custom-elements/HTMLElement-constructor.html", @@ -312083,6 +314307,12 @@ {} ] ], + "custom-elements/builtin-coverage.html": [ + [ + "/custom-elements/builtin-coverage.html", + {} + ] + ], "custom-elements/connected-callbacks.html": [ [ "/custom-elements/connected-callbacks.html", @@ -312143,6 +314373,12 @@ {} ] ], + "custom-elements/parser/parser-constructs-custom-elements-with-is.html": [ + [ + "/custom-elements/parser/parser-constructs-custom-elements-with-is.html", + {} + ] + ], "custom-elements/parser/parser-constructs-custom-elements.html": [ [ "/custom-elements/parser/parser-constructs-custom-elements.html", @@ -312359,6 +314595,16 @@ {} ] ], + "device-memory/device-memory.https.any.js": [ + [ + "/device-memory/device-memory.https.any.html", + {} + ], + [ + "/device-memory/device-memory.https.any.worker.html", + {} + ] + ], "dom/abort/event.any.js": [ [ "/dom/abort/event.any.html", @@ -316625,6 +318871,12 @@ } ] ], + "feature-policy/experimental-features/unsized-image.tentative.https.sub.html": [ + [ + "/feature-policy/experimental-features/unsized-image.tentative.https.sub.html", + {} + ] + ], "feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ [ "/feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html", @@ -317633,6 +319885,26 @@ {} ] ], + "fetch/data-urls/base64.any.js": [ + [ + "/fetch/data-urls/base64.any.html", + {} + ], + [ + "/fetch/data-urls/base64.any.worker.html", + {} + ] + ], + "fetch/data-urls/processing.any.js": [ + [ + "/fetch/data-urls/processing.any.html", + {} + ], + [ + "/fetch/data-urls/processing.any.worker.html", + {} + ] + ], "fetch/http-cache/304-update.html": [ [ "/fetch/http-cache/304-update.html", @@ -318379,6 +320651,12 @@ {} ] ], + "html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html": [ + [ + "/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html", + {} + ] + ], "html/browsers/browsing-the-web/read-media/pageload-image.html": [ [ "/html/browsers/browsing-the-web/read-media/pageload-image.html", @@ -321071,6 +323349,12 @@ {} ] ], + "html/editing/editing-0/autocapitalization/autocapitalize.html": [ + [ + "/html/editing/editing-0/autocapitalization/autocapitalize.html", + {} + ] + ], "html/editing/editing-0/contenteditable/contentEditable-invalidvalue.html": [ [ "/html/editing/editing-0/contenteditable/contentEditable-invalidvalue.html", @@ -326013,6 +328297,12 @@ {} ] ], + "html/semantics/rellist-feature-detection.html": [ + [ + "/html/semantics/rellist-feature-detection.html", + {} + ] + ], "html/semantics/scripting-1/the-script-element/async_001.htm": [ [ "/html/semantics/scripting-1/the-script-element/async_001.htm", @@ -327305,6 +329595,14 @@ {} ] ], + "html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html": [ + [ + "/html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html", + { + "timeout": "long" + } + ] + ], "html/semantics/scripting-1/the-script-element/module/instantiation-error-1.html": [ [ "/html/semantics/scripting-1/the-script-element/module/instantiation-error-1.html", @@ -328087,18 +330385,6 @@ {} ] ], - "html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html": [ - [ - "/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html", - {} - ] - ], - "html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html": [ - [ - "/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html", - {} - ] - ], "html/semantics/text-level-semantics/the-data-element/data.value-001.html": [ [ "/html/semantics/text-level-semantics/the-data-element/data.value-001.html", @@ -330139,6 +332425,14 @@ {} ] ], + "http/tests/bluetooth/https/requestDevice/cross-origin-iframe.sub.https.html": [ + [ + "/http/tests/bluetooth/https/requestDevice/cross-origin-iframe.sub.https.html", + { + "testdriver": true + } + ] + ], "imagebitmap-renderingcontext/bitmaprenderer-as-imagesource.html": [ [ "/imagebitmap-renderingcontext/bitmaprenderer-as-imagesource.html", @@ -332973,16 +335267,6 @@ {} ] ], - "navigator/device-memory.https.any.js": [ - [ - "/navigator/device-memory.https.any.html", - {} - ], - [ - "/navigator/device-memory.https.any.worker.html", - {} - ] - ], "netinfo/netinfo-basics.html": [ [ "/netinfo/netinfo-basics.html", @@ -342611,15 +344895,15 @@ {} ] ], - "proximity/DeviceProximityEvent_tests.html": [ + "proximity/ProximitySensor.https.html": [ [ - "/proximity/DeviceProximityEvent_tests.html", + "/proximity/ProximitySensor.https.html", {} ] ], - "proximity/UserProximityEvent_tests.html": [ + "proximity/ProximitySensor_insecure_context.html": [ [ - "/proximity/UserProximityEvent_tests.html", + "/proximity/ProximitySensor_insecure_context.html", {} ] ], @@ -351013,6 +353297,12 @@ {} ] ], + "resource-timing/resource_timing.worker.js": [ + [ + "/resource-timing/resource_timing.worker.html", + {} + ] + ], "resource-timing/single-entry-per-resource.html": [ [ "/resource-timing/single-entry-per-resource.html", @@ -351027,6 +353317,12 @@ {} ] ], + "screen-orientation/interfaces.html": [ + [ + "/screen-orientation/interfaces.html", + {} + ] + ], "screen-orientation/lock-bad-argument.html": [ [ "/screen-orientation/lock-bad-argument.html", @@ -351057,12 +353353,6 @@ {} ] ], - "screen-orientation/orientation-api.html": [ - [ - "/screen-orientation/orientation-api.html", - {} - ] - ], "screen-orientation/orientation-reading.html": [ [ "/screen-orientation/orientation-reading.html", @@ -351379,6 +353669,12 @@ {} ] ], + "server-timing/cross_origin.html": [ + [ + "/server-timing/cross_origin.html", + {} + ] + ], "server-timing/server_timing_header-parsing.html": [ [ "/server-timing/server_timing_header-parsing.html", @@ -351859,15 +354155,27 @@ {} ] ], - "service-workers/service-worker/fetch-canvas-tainting-cache.https.html": [ + "service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html": [ [ - "/service-workers/service-worker/fetch-canvas-tainting-cache.https.html", + "/service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html", {} ] ], - "service-workers/service-worker/fetch-canvas-tainting.https.html": [ + "service-workers/service-worker/fetch-canvas-tainting-image.https.html": [ [ - "/service-workers/service-worker/fetch-canvas-tainting.https.html", + "/service-workers/service-worker/fetch-canvas-tainting-image.https.html", + {} + ] + ], + "service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html": [ + [ + "/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html", + {} + ] + ], + "service-workers/service-worker/fetch-canvas-tainting-video.https.html": [ + [ + "/service-workers/service-worker/fetch-canvas-tainting-video.https.html", {} ] ], @@ -352179,6 +354487,14 @@ {} ] ], + "service-workers/service-worker/local-url-inherit-controller.https.html": [ + [ + "/service-workers/service-worker/local-url-inherit-controller.https.html", + { + "timeout": "long" + } + ] + ], "service-workers/service-worker/mime-sniffing.https.html": [ [ "/service-workers/service-worker/mime-sniffing.https.html", @@ -352661,6 +354977,12 @@ {} ] ], + "shadow-dom/DocumentOrShadowRoot-prototype-elementFromPoint.html": [ + [ + "/shadow-dom/DocumentOrShadowRoot-prototype-elementFromPoint.html", + {} + ] + ], "shadow-dom/Element-interface-attachShadow.html": [ [ "/shadow-dom/Element-interface-attachShadow.html", @@ -352847,12 +355169,6 @@ {} ] ], - "shadow-dom/untriaged/elements-and-dom-objects/extensions-to-event-interface/event-path-001.html": [ - [ - "/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-event-interface/event-path-001.html", - {} - ] - ], "shadow-dom/untriaged/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/activeElement-confirm-return-null.html": [ [ "/shadow-dom/untriaged/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/activeElement-confirm-return-null.html", @@ -354655,6 +356971,18 @@ {} ] ], + "svg/types/scripted/SVGAnimatedAngle.html": [ + [ + "/svg/types/scripted/SVGAnimatedAngle.html", + {} + ] + ], + "svg/types/scripted/SVGAnimatedBoolean.html": [ + [ + "/svg/types/scripted/SVGAnimatedBoolean.html", + {} + ] + ], "svg/types/scripted/SVGAnimatedEnumeration-SVGClipPathElement.html": [ [ "/svg/types/scripted/SVGAnimatedEnumeration-SVGClipPathElement.html", @@ -354757,6 +357085,48 @@ {} ] ], + "svg/types/scripted/SVGAnimatedInteger.html": [ + [ + "/svg/types/scripted/SVGAnimatedInteger.html", + {} + ] + ], + "svg/types/scripted/SVGAnimatedLength.html": [ + [ + "/svg/types/scripted/SVGAnimatedLength.html", + {} + ] + ], + "svg/types/scripted/SVGAnimatedLengthList.html": [ + [ + "/svg/types/scripted/SVGAnimatedLengthList.html", + {} + ] + ], + "svg/types/scripted/SVGAnimatedNumber.html": [ + [ + "/svg/types/scripted/SVGAnimatedNumber.html", + {} + ] + ], + "svg/types/scripted/SVGAnimatedNumberList.html": [ + [ + "/svg/types/scripted/SVGAnimatedNumberList.html", + {} + ] + ], + "svg/types/scripted/SVGAnimatedPreserveAspectRatio.html": [ + [ + "/svg/types/scripted/SVGAnimatedPreserveAspectRatio.html", + {} + ] + ], + "svg/types/scripted/SVGAnimatedRect.html": [ + [ + "/svg/types/scripted/SVGAnimatedRect.html", + {} + ] + ], "svg/types/scripted/SVGLength-px-with-context.html": [ [ "/svg/types/scripted/SVGLength-px-with-context.html", @@ -356207,27 +358577,39 @@ {} ] ], + "webauthn/createcredential-badargs-rp.https.html": [ + [ + "/webauthn/createcredential-badargs-rp.https.html", + {} + ] + ], + "webauthn/createcredential-passing.https.html": [ + [ + "/webauthn/createcredential-passing.https.html", + {} + ] + ], + "webauthn/getcredential-passing.https.html": [ + [ + "/webauthn/getcredential-passing.https.html", + {} + ] + ], "webauthn/interfaces.https.html": [ [ "/webauthn/interfaces.https.html", {} ] ], - "webauthn/makecredential-badargs-accountinformation.https.html": [ + "webauthn/securecontext.http.html": [ [ - "/webauthn/makecredential-badargs-accountinformation.https.html", + "/webauthn/securecontext.http.html", {} ] ], - "webauthn/makecredential-badargs-attestationchallenge.https.html": [ + "webauthn/securecontext.https.html": [ [ - "/webauthn/makecredential-badargs-attestationchallenge.https.html", - {} - ] - ], - "webauthn/makecredential-badargs-cryptoparameters.https.html": [ - [ - "/webauthn/makecredential-badargs-cryptoparameters.https.html", + "/webauthn/securecontext.https.html", {} ] ], @@ -382003,6 +384385,12 @@ {} ] ], + "webdriver/tests/element_send_keys/form_controls.py": [ + [ + "/webdriver/tests/element_send_keys/form_controls.py", + {} + ] + ], "webdriver/tests/element_send_keys/interactability.py": [ [ "/webdriver/tests/element_send_keys/interactability.py", @@ -382050,7 +384438,9 @@ "webdriver/tests/interaction/element_clear.py": [ [ "/webdriver/tests/interaction/element_clear.py", - {} + { + "timeout": "long" + } ] ], "webdriver/tests/interaction/send_keys_content_editable.py": [ @@ -382148,25 +384538,33 @@ "webdriver/tests/state/get_element_attribute.py": [ [ "/webdriver/tests/state/get_element_attribute.py", - {} + { + "timeout": "long" + } ] ], "webdriver/tests/state/get_element_property.py": [ [ "/webdriver/tests/state/get_element_property.py", - {} + { + "timeout": "long" + } ] ], "webdriver/tests/state/get_element_tag_name.py": [ [ "/webdriver/tests/state/get_element_tag_name.py", - {} + { + "timeout": "long" + } ] ], "webdriver/tests/state/is_element_selected.py": [ [ "/webdriver/tests/state/is_element_selected.py", - {} + { + "timeout": "long" + } ] ], "webdriver/tests/state/text/get_text.py": [ @@ -382249,7 +384647,7 @@ "support" ], "./lint.whitelist": [ - "c55f23203c2e4b158dc13d25617031fcbb791744", + "fc1e09fcc92c3f54ed75fe93681c5ff0a53d25a4", "support" ], "./serve.py": [ @@ -384740,16 +387138,20 @@ "a50b997a4c738f68360f4aa450e1ea7f12687770", "testharness" ], - "2dcontext/imagebitmap/common.js": [ - "c20732ce1e92624a3d3982154d5aba92eba7adc1", + "2dcontext/imagebitmap/common.sub.js": [ + "46df9fcac72992d9d47385bfd11854131bcff172", "support" ], "2dcontext/imagebitmap/createImageBitmap-drawImage.html": [ - "ac183f2abd04f0561433083040190cdadb8ac86a", + "66c294061acec34452fa4d1e9d6743f8f6b2fdf9", "testharness" ], "2dcontext/imagebitmap/createImageBitmap-invalid-args.html": [ - "05ccfd7c45806ee919ccef8bb45c76c147bded63", + "ea323d1c0adfa41e6f5c56be2006a4cd178c470d", + "testharness" + ], + "2dcontext/imagebitmap/createImageBitmap-origin.sub.html": [ + "ebd2cd88858411c9dbbcdad0ece647b39b25b368", "testharness" ], "2dcontext/imagebitmap/createImageBitmap-sizeOverflow.html": [ @@ -389168,6 +391570,10 @@ "2c51b95bd2032c76dcc7a1c54e197756159a7e4b", "support" ], + "acid/acid3/numbered-tests.html": [ + "b715328b9b59f27f51c070011528d29103783f42", + "testharness" + ], "acid/acid3/reference.png": [ "2bd47f247ce1328013d2ade5c7e4b5b03f5a0eda", "support" @@ -389197,7 +391603,7 @@ "support" ], "acid/acid3/test.html": [ - "67435e96f4240675943bad5ca296a1020cf04fe5", + "bfdaa543bf78a008096ed8b17decd4797060ba02", "reftest" ], "acid/acid3/xhtml.1": [ @@ -391441,7 +393847,7 @@ "testharness" ], "beacon/beacon-error.window.js": [ - "3e78d3aba0964c79965c83727bb2a73381382a2e", + "6a1cfcd3d9086bb6e9ec2c6024e1b36a41b0bc1d", "testharness" ], "beacon/beacon-navigate.html": [ @@ -391513,7 +393919,7 @@ "support" ], "bluetooth/README.md": [ - "2406b51635145355309f8e8778a5669ff561813d", + "444c97b1166ed27a2180c97c29b3568c73c693be", "support" ], "bluetooth/characteristic/characteristicProperties.https.html": [ @@ -391620,12 +394026,140 @@ "50eaac3e0c94933fa995c102d53b6b00b3087ea6", "testharness" ], + "bluetooth/requestDevice/blocklisted-service-in-filter.https.html": [ + "7046c3d32539807824c3abdc95071e8495c619df", + "testharness" + ], + "bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html": [ + "c3fbd786e7cf05f72eb0afadba8924c43f2fdc11", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.html": [ + "238bfa4cae4a577d6725071585d3f4fb17211926", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.html": [ + "dae6caddeebd483e59878e86ca0452dc90bf15ef", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.html": [ + "1d3eddd98c230893f6a5f01c4af71145e89d3f9a", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.html": [ + "c12927b93a1e99ff1f64730f355f832136182d53", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.html": [ + "9830afe0985081f12c74bdd3f6bb4ab3dacf64d6", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.html": [ + "a640294f0ef02f113a2d6923c357d173dde13c8d", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.html": [ + "9c48f80d91ebcd2fb30656d2db2d134ea52b1b84", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.html": [ + "aff336b8d2e7f37a86afbf8dddc226a05b89c7ac", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.html": [ + "cdd53f12480cdc6d04e6d6a60b9a638d28331757", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.html": [ + "e891ad094e4ce751bfdbb594432f1e050b8bb678", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.html": [ + "e6235150373eda2b417fb5e44a9fb0250f79e10b", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.html": [ + "f665d5b53ac10adf947b0fa776fb4acf88ec157c", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.html": [ + "577824e52873a8b056438563c993a157febc27d7", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.html": [ + "ecd4a495dd13d01cc59119493022aecedb5e04f6", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.html": [ + "b070a7357a626cee31f66938561a1a62576be086", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.html": [ + "9d5c26e54b12ed4600690c78c17e2d92b33f99b9", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.html": [ + "8370c2c6f65767144257fcba7032eef4410ef994", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.html": [ + "4e8728f88844525f7fb95680499fc2024f74482c", + "testharness" + ], + "bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.html": [ + "084ec334261ed7c584a0888ff3dfdec0f3538bad", + "testharness" + ], + "bluetooth/requestDevice/consumes-user-gesture.https.html": [ + "c76d7e37417a7db3043b761989eebbfded6e6804", + "testharness" + ], + "bluetooth/requestDevice/discovery-succeeds.https.html": [ + "da1be25f068cdb9602d6207b6af0170e232e68cd", + "testharness" + ], + "bluetooth/requestDevice/filter-matches.https.html": [ + "22ea4176f1f5cdd67a730cce43e3fbf08d1fcfdb", + "testharness" + ], + "bluetooth/requestDevice/le-not-supported.https.html": [ + "9870420cf924559cb02144ecd5da02d39f386f30", + "testharness" + ], + "bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.html": [ + "93143b0311d74ad763d26db3cbfc55d4e989b1dd", + "testharness" + ], + "bluetooth/requestDevice/not-processing-user-gesture.https.html": [ + "c4aa433b370a8dbecf4fe4167edfd1eb01febfc0", + "testharness" + ], + "bluetooth/requestDevice/radio-not-present.https.html": [ + "47b28ec24e902fe0e9593d002f6c7ed88e379b00", + "testharness" + ], + "bluetooth/requestDevice/request-from-iframe.https.html": [ + "4af485c1bb00aacd11225001ed494628063b2684", + "testharness" + ], + "bluetooth/requestDevice/request-from-sandboxed-iframe.https.html": [ + "917a1be9111f04e67231c92921b1f856685deb55", + "testharness" + ], + "bluetooth/requestDevice/same-device.https.html": [ + "2bf20db77582e6df2674dd0a5cf444d630b3b999", + "testharness" + ], + "bluetooth/requestDevice/single-filter-single-service.https.html": [ + "f147182b894cbb0f338111b146dfa16193610265", + "testharness" + ], "bluetooth/resources/bluetooth-helpers.js": [ - "bb8e5f352bdaff51bf56c366f30f99c9f1672925", + "1944dc57df774ad737179dd22fb3cc9de842bc21", "support" ], "bluetooth/resources/health-thermometer-iframe.html": [ - "d42691b2621c13a28c3cfd675de4d95c8a585902", + "f175a62907e65c03e326832449b0b8e3276387d8", "support" ], "bluetooth/script-tests/base_test_html.template": [ @@ -391704,6 +394238,30 @@ "b18022b48d354825fa747abda81bc870142d9c59", "support" ], + "bluetooth/script-tests/service/blocklisted-characteristic.js": [ + "cdc9a9e30e319c3eb1532ef24436d5fc454d2a5e", + "support" + ], + "bluetooth/script-tests/service/characteristic-not-found.js": [ + "f010c39bfc9e08f1ee68fe9c6e1ca6054d97074b", + "support" + ], + "bluetooth/script-tests/service/garbage-collection-ran-during-error.js": [ + "f851c238adc404f49b9f9bb1fb8d10cc2f4d9b38", + "support" + ], + "bluetooth/script-tests/service/get-same-object.js": [ + "9ffba72c471c6ee4ba23c61aaa991dbe5e50ad9f", + "support" + ], + "bluetooth/script-tests/service/invalid-characteristic-name.js": [ + "7c16b4edc418b3e6635d0a27dcced11c332cc2e2", + "support" + ], + "bluetooth/script-tests/service/reconnect-during.js": [ + "fc89c44348fa1bb141d9d6d16b487cd3ea1e1d5d", + "support" + ], "bluetooth/server/connect/connection-succeeds.https.html": [ "167880b07f855325a35a81a8ea833b0d006c7957", "testharness" @@ -391800,6 +394358,26 @@ "9169ed84f3502d5e3e675d5e0e317d0d895b4ca7", "testharness" ], + "bluetooth/server/getPrimaryService/service-found.https.html": [ + "ec29d8be9640efcbbfb0a33ae981a561c3a3dc86", + "testharness" + ], + "bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.html": [ + "5a8304882e2ef286eb43e4f1710df3747f8943f4", + "testharness" + ], + "bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html": [ + "a58240662db7a01866c144e95d828cbeb6340a49", + "testharness" + ], + "bluetooth/server/getPrimaryServices/blocklisted-services.https.html": [ + "06ca92a6e6d5145762c9d5ae9df78fcc86f2226c", + "testharness" + ], + "bluetooth/server/getPrimaryServices/correct-services.https.html": [ + "255055f835025d77c0a993de042a13d0d2c635cd", + "testharness" + ], "bluetooth/server/getPrimaryServices/gen-disconnect-called-before-with-uuid.https.html": [ "ff1af939fa2b5b77523712a4281839349f00e43b", "testharness" @@ -391904,10 +394482,46 @@ "e9b4e0205d5d30589356aea481e469a746ee419a", "testharness" ], + "bluetooth/server/getPrimaryServices/services-found-with-uuid.https.html": [ + "9106025a145b9c4013600dd15190bf35fcf10f2e", + "testharness" + ], + "bluetooth/server/getPrimaryServices/services-found.https.html": [ + "b4c28ddf199e8cafe5252fd32c10b69395b86436", + "testharness" + ], + "bluetooth/server/getPrimaryServices/services-not-found.https.html": [ + "60b7203a67f69acfd884f0b256dd7357fe717392", + "testharness" + ], "bluetooth/service/getCharacteristic/characteristic-found.https.html": [ "53479f342ef4aab9a24aaaa4580a63b5e6bcd30b", "testharness" ], + "bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.html": [ + "bbc9e9fbf1a84d26e60064703ad1f510d1f0d23d", + "testharness" + ], + "bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.html": [ + "e56889ff833346000ece4dd161dba42603ab4722", + "testharness" + ], + "bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.html": [ + "ff07bf6e5c97eb527cf31cb785b3eaf6e61e3418", + "testharness" + ], + "bluetooth/service/getCharacteristic/gen-get-same-object.https.html": [ + "011f75d88736c0fad0904442dbffdd24a05837a3", + "testharness" + ], + "bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.html": [ + "9d500137650d30e6ecdd2fdaa7ea0957030343ea", + "testharness" + ], + "bluetooth/service/getCharacteristic/gen-reconnect-during.https.html": [ + "2c155e835979269072d21a473010eded488ac185", + "testharness" + ], "bluetooth/service/getCharacteristics/blocklisted-characteristics.https.html": [ "cb0ff8a9913b54ef624a38d367d84b1656b2a536", "testharness" @@ -391924,6 +394538,42 @@ "694b69270065eb15a7129f9359a2b71d90ed9226", "testharness" ], + "bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.html": [ + "f11a67323cbb8948074a7ed9357d0d3c3bb420b3", + "testharness" + ], + "bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.html": [ + "a5e9744319ef73205a5cbc06993802ec4fe40ee0", + "testharness" + ], + "bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.html": [ + "d10095452cb2c997fa37b972e05984689d531819", + "testharness" + ], + "bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.html": [ + "d6b88afffb6ed44f706720a2b477c4687e82caf4", + "testharness" + ], + "bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.html": [ + "45564351fa111f80c28eff14a6175f4594d4e2c9", + "testharness" + ], + "bluetooth/service/getCharacteristics/gen-get-same-object.https.html": [ + "78bcc807683b27a57b510ebd24ec2b5e33f67fb7", + "testharness" + ], + "bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.html": [ + "9f766bf08b1ad918bd0283cdf703fb3f030bf8a4", + "testharness" + ], + "bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.html": [ + "3b89e9e5a43f2a6791ac5a5e3b58552a696420f8", + "testharness" + ], + "bluetooth/service/getCharacteristics/gen-reconnect-during.https.html": [ + "bc66082c4b04df83449fcf883d0e8e96dc3d8b61", + "testharness" + ], "clear-site-data/navigation-insecure.html": [ "97c069cf7c938e1ebdba3f243ad48369a7fb5542", "testharness" @@ -392104,6 +394754,10 @@ "e3593850f8098d3f3ff82c042deab15f51c66a52", "support" ], + "common/namespaces.js": [ + "a8018fb9fb6f1f2212f5433581fc12e7795a638e", + "support" + ], "common/object-association.js": [ "c6955b7bbf00d73ec5959678391aa59d36da8321", "support" @@ -410109,7 +412763,7 @@ "testharness" ], "content-security-policy/embedded-enforcement/required_csp-header.html": [ - "9c06eea69babc70158e7bf25fad5d79a7367403e", + "b5c68072adf79a87b1371c34a9357a1507d6d981", "testharness" ], "content-security-policy/embedded-enforcement/subsumption_algorithm-general.html": [ @@ -410808,50 +413462,210 @@ "55c94363465c252a3c24622a56020a8981e01f8e", "testharness" ], - "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html": [ "7be3a72eb885841e8ccb674eeae3761f638adf2c", "testharness" ], - "content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers": [ - "ddf99f2d2ed8bdfa56f5efbf371b324924c1c286", + "content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers": [ + "955c2e5d0f798cee27b0fc6910cffc8c1d56940c", "support" ], - "content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html": [ "19e6a43463fb72a74a0a03e2515d564f2df49234", "testharness" ], - "content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers": [ - "588c5767e4d7290ea7fd27be8218dd8420982848", + "content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers": [ + "d7f83c9ca38ebd0a04aa431ba854b6f7afd48053", "support" ], - "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html": [ "08311936720a8ee3835d029f572e924dd4f45e6e", "testharness" ], - "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers": [ - "d0dddb85abb59ded83c36f71b4776881ce626e40", + "content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers": [ + "b0878feae3b549c0d1e8b7e350232b1420d23863", "support" ], - "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html": [ "41f777a06556d6cb4d8110d4d1fe70a6e58c2709", "testharness" ], - "content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers": [ - "1d58caea3b04f568e837678dbd27136fec73730c", + "content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers": [ + "87424ab61e238019c8d91612f8e91f58dc4c91dc", "support" ], - "content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html": [ + "content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html": [ "131b261ef9a6b79714eeacd4c9a525bdfafab21c", "testharness" ], - "content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers": [ - "966fcc13016f5980750ad1a4d5acf240762c2e0d", + "content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers": [ + "515b0d940eeb19ae13da605a95039442a5893239", "support" ], - "content-security-policy/reporting/securitypolicyviolation-idl.html": [ - "831948d2397790fa68e6d8bc96454dcb2f3e3280", + "content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html": [ + "1475964f0393ad3833c0024153236e5480ee33fd", "testharness" ], + "content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html.sub.headers": [ + "f48e0c655e1dcc688c1f66309cdd61ba5aaefb74", + "support" + ], + "content-security-policy/reporting/multiple-report-policies.html": [ + "f639d91d9603d3f69e76e0e674502c3377feac1e", + "testharness" + ], + "content-security-policy/reporting/multiple-report-policies.html.sub.headers": [ + "4b6be6be32411907eadd77377882dffa4f0835a7", + "support" + ], + "content-security-policy/reporting/report-and-enforce.html": [ + "fa98a53e5129156767dbe77851369c4b19798719", + "testharness" + ], + "content-security-policy/reporting/report-and-enforce.html.sub.headers": [ + "02bd8729b7c30afe738001d0ddec9c5eebe89b34", + "support" + ], + "content-security-policy/reporting/report-blocked-data-uri.html": [ + "82886510458eb1699cf026c3e97e138e9a587591", + "testharness" + ], + "content-security-policy/reporting/report-blocked-data-uri.html.sub.headers": [ + "08f2929f61e79c56506ee10ad5f87fa7e7fc0bfc", + "support" + ], + "content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html": [ + "8fcb9cc75de19ffe8814aab9bc35422e9cf885c0", + "testharness" + ], + "content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html.sub.headers": [ + "b616f81f7513c1adfdb3d6781480cc5fb259bd8e", + "support" + ], + "content-security-policy/reporting/report-blocked-uri.html": [ + "04edf0c89b559bbf64fabc3af7bcd0ca7ec72278", + "testharness" + ], + "content-security-policy/reporting/report-blocked-uri.html.sub.headers": [ + "f993d1f1f2d380fb011aaecf5a6320b6d91adcf7", + "support" + ], + "content-security-policy/reporting/report-cross-origin-no-cookies.sub.html": [ + "7de2fc82fd084a1b11940c5c72ce19c19f18b3dd", + "testharness" + ], + "content-security-policy/reporting/report-cross-origin-no-cookies.sub.html.sub.headers": [ + "cff5f3df3f586fda01c7a88d19356881f6a80904", + "support" + ], + "content-security-policy/reporting/report-multiple-violations-01.html": [ + "6600b2f194337f22c6913055cc52b5a825261c0f", + "testharness" + ], + "content-security-policy/reporting/report-multiple-violations-01.html.sub.headers": [ + "69f7be4dc6ca342df29bd10b9e7ebdd0f8b63c31", + "support" + ], + "content-security-policy/reporting/report-multiple-violations-02.html": [ + "6c132ba1a1e156e05fa645bc33fb0d33330dee36", + "testharness" + ], + "content-security-policy/reporting/report-multiple-violations-02.html.sub.headers": [ + "7c9611719553d30ad7ce3e500c7c9f36362c5c60", + "support" + ], + "content-security-policy/reporting/report-only-in-meta.sub.html": [ + "6b0fa99ff2a5bd73001da3240524b5ec917e838e", + "testharness" + ], + "content-security-policy/reporting/report-only-in-meta.sub.html.sub.headers": [ + "e2ec88b0925f53f92b68a29390dcc89479bc46d4", + "support" + ], + "content-security-policy/reporting/report-original-url.sub.html": [ + "bc2e6f11f3dda2c15845bb6e86f4ec40cc255e8f", + "testharness" + ], + "content-security-policy/reporting/report-original-url.sub.html.sub.headers": [ + "4d1876259b68c4f4763787e7b41df70e4929fe7c", + "support" + ], + "content-security-policy/reporting/report-same-origin-with-cookies.html": [ + "e0f05994f390b09927da2160a432c090dd405f80", + "testharness" + ], + "content-security-policy/reporting/report-same-origin-with-cookies.html.sub.headers": [ + "f9af65b4f8aa85fe384963606c14b043c80cec10", + "support" + ], + "content-security-policy/reporting/report-strips-fragment.html": [ + "f72d0664fa4415422076dcd569dfd03a7c682f04", + "testharness" + ], + "content-security-policy/reporting/report-uri-effective-directive.html": [ + "59c3dfee5583e739e49cac3740e2a3a218e3753a", + "testharness" + ], + "content-security-policy/reporting/report-uri-effective-directive.html.sub.headers": [ + "1e02bab0bd8ed64135e1633bd01ebbd53be8c7bf", + "support" + ], + "content-security-policy/reporting/report-uri-from-child-frame.html": [ + "c91cc258165682aeb7af0f9e4b5b576ad0384c6b", + "testharness" + ], + "content-security-policy/reporting/report-uri-from-inline-javascript.html": [ + "07ee4776bf34a9bd344fa9fa5cb58f9f83ae3a08", + "testharness" + ], + "content-security-policy/reporting/report-uri-from-inline-javascript.html.sub.headers": [ + "a3e08d0037b632a2a9f87dd62b4e79dc789e550b", + "support" + ], + "content-security-policy/reporting/report-uri-from-javascript.html": [ + "04ea5711199235d9d289b31aa6d1de72ee55a188", + "testharness" + ], + "content-security-policy/reporting/report-uri-from-javascript.html.sub.headers": [ + "093ee63506308937b01af5a1917d24271d3fabd8", + "support" + ], + "content-security-policy/reporting/report-uri-multiple-reversed.html": [ + "445997741b644125b3cb973fd7430bbfa7fd78e6", + "testharness" + ], + "content-security-policy/reporting/report-uri-multiple-reversed.html.sub.headers": [ + "e46af6610554b47e7a864b6ab5ea6deff13ba60a", + "support" + ], + "content-security-policy/reporting/report-uri-multiple.html": [ + "deb9b21e679e9eb9d51599f52632440819ab0f7e", + "testharness" + ], + "content-security-policy/reporting/report-uri-multiple.html.sub.headers": [ + "315325e87026ee03ec535108f15864185c5d4b1e", + "support" + ], + "content-security-policy/reporting/report-uri-scheme-relative.html": [ + "2ff52fe751eb0f760eb6e8de3d774ef58aabc20f", + "testharness" + ], + "content-security-policy/reporting/report-uri-scheme-relative.html.sub.headers": [ + "f089cb2271c837f3af17830f2f4e255e5be9259d", + "support" + ], + "content-security-policy/reporting/support/generate-csp-report.html": [ + "3084447e7fc1f504fe96df8ac49e5c03d4156ef4", + "support" + ], + "content-security-policy/reporting/support/generate-csp-report.html.sub.headers": [ + "abfdaa6f0fb659fd3c65074758d691b8e15eebf2", + "support" + ], + "content-security-policy/reporting/support/set-cookie.py": [ + "886b0a3fb9042c5331083a5c73d0ee6c7638437c", + "support" + ], "content-security-policy/sandbox/iframe-inside-csp.sub.html": [ "11e165b77d866a5b62539d5722b18885838448a7", "testharness" @@ -411585,7 +414399,7 @@ "support" ], "content-security-policy/support/inject-image.js": [ - "d3fb6499c3910cd966efb85888f4a116bf6738c7", + "0962d5adf6d2fd4b80db6b9cf87be841609bc64e", "support" ], "content-security-policy/support/inject-image.sub.js": [ @@ -411612,6 +414426,10 @@ "c06160c04726a02f1583caa0f380d632b6019179", "support" ], + "content-security-policy/support/pass2.png": [ + "c06160c04726a02f1583caa0f380d632b6019179", + "support" + ], "content-security-policy/support/ping.js": [ "071616b3c0e43fab0b7a214000389585dafc393d", "support" @@ -413184,6 +416002,10 @@ "3ce3b0a2eaa10928aec1f32c9e3bcbe2af5fafba", "testharness" ], + "credential-management/require_securecontext.html": [ + "4a266e0c663a12ace13f6f08a7899236b489f698", + "testharness" + ], "credential-management/support/echoing-nester.html": [ "408bf741f31a9f69a2a9a50d93877f6a999cd9d9", "support" @@ -429885,11 +432707,11 @@ "reftest" ], "css/CSS2/floats-clear/clear-applies-to-008-ref.xht": [ - "db9d3c111a4f01fd54c04de57aa592ee0a2babb1", + "6c2e5e15021e893db1a60ab205feaf08200d5295", "support" ], "css/CSS2/floats-clear/clear-applies-to-008.xht": [ - "4dea511a4f95e4b3084a224e992ffc87957a0d28", + "7c0e621739b7b88792efacf92e49b98061155c3e", "reftest" ], "css/CSS2/floats-clear/clear-applies-to-009-ref.xht": [ @@ -429905,7 +432727,7 @@ "visual" ], "css/CSS2/floats-clear/clear-applies-to-012.xht": [ - "1e8e5c96d43520b6cdbf20232009a706648414e8", + "d6fb4efccca1214e61d3145483b093f2b8c8c7ab", "reftest" ], "css/CSS2/floats-clear/clear-applies-to-013.xht": [ @@ -430121,11 +432943,11 @@ "reftest" ], "css/CSS2/floats-clear/float-applies-to-008-ref.xht": [ - "659238329fb18ea5614ed6334f37f30f1fed9d2f", + "a77222162ef2cc0a3065fca9918ce6bff8cd70c8", "support" ], "css/CSS2/floats-clear/float-applies-to-008.xht": [ - "7324b707a78a81f274a9c8f3cacc33f5126918ee", + "ea0589a743f79dae9b5f33df683c126bbfc4c5a5", "reftest" ], "css/CSS2/floats-clear/float-applies-to-008a.xht": [ @@ -430141,7 +432963,7 @@ "visual" ], "css/CSS2/floats-clear/float-applies-to-012.xht": [ - "fb1f1ca067f5c5d97c0ce468c66083fc086a7104", + "3703899da92098c3e2d36284e5789bf7467a794a", "reftest" ], "css/CSS2/floats-clear/float-applies-to-013.xht": [ @@ -430489,11 +433311,11 @@ "reftest" ], "css/CSS2/floats-clear/floats-028-ref.xht": [ - "48c364f5ffbd8426889479a03e530d602cd41b49", + "50b611939fb7cffa6fa5b4469056589a03e27012", "support" ], "css/CSS2/floats-clear/floats-028.xht": [ - "1f83cd725b3fdb0aca8d5fa4f660ceae14e48ef6", + "229392ae1aa78dd1ffebdaf72faf47bc1a1a0fd5", "reftest" ], "css/CSS2/floats-clear/floats-029-ref.xht": [ @@ -430521,11 +433343,11 @@ "reftest" ], "css/CSS2/floats-clear/floats-036-ref.xht": [ - "5c69b8814fd1285e78e18916f717f41dd19fcfd6", + "001a8147de3e6d6290b4581f6c5c4a01461e2324", "support" ], "css/CSS2/floats-clear/floats-036.xht": [ - "8cfcf886e5410936904b8494db5f7358b3322cab", + "cb85400e14a9c7908952cbee62b322d1c7a7b125", "reftest" ], "css/CSS2/floats-clear/floats-037.xht": [ @@ -443865,7 +446687,7 @@ "reftest" ], "css/CSS2/normal-flow/inline-table-002-ref.xht": [ - "f2d793d01506513aa4eb77060654848b08ba81ce", + "a72122a5cf0b18fb5ca1ed5bc21d4ffb5adbe9ff", "support" ], "css/CSS2/normal-flow/inline-table-002a.xht": [ @@ -443901,7 +446723,7 @@ "reftest" ], "css/CSS2/normal-flow/inline-table-valign-001-ref.xht": [ - "2dd458188be1b03d22ffd5ff5b50251f68236b88", + "e0dda44b942f3ab082d495d9c3ea7cdfb06f5672", "support" ], "css/CSS2/normal-flow/inline-table-valign-001.xht": [ @@ -446197,7 +449019,7 @@ "reftest" ], "css/CSS2/normal-flow/width-inherit-001.xht": [ - "e12ea1ffae7291ba97850bd8c9d26a363e8a3e8d", + "b44bc8b00c6a11155958abe91b5b1e77a137d74d", "reftest" ], "css/CSS2/normal-flow/width-non-replaced-inline-001-ref.xht": [ @@ -447609,15 +450431,15 @@ "visual" ], "css/CSS2/positioning/abspos-011-ref.xht": [ - "c235af55f1a48bf1537880675cc07fb540672238", + "e2759da948136a4af51259eff808b067e877b4da", "support" ], "css/CSS2/positioning/abspos-011.xht": [ - "7deaa3e6c992cbc2cdcc8aba918d3896bc21c396", + "3b5e6cb42b5b130e6dc63912a34f29a631578004", "reftest" ], "css/CSS2/positioning/abspos-012.xht": [ - "888c0e9b10f97a37f320f9d947650bd10d0f3126", + "e11cb76a18a4eb52554cddf5ea79c2085741f7c5", "reftest" ], "css/CSS2/positioning/abspos-013-ref.xht": [ @@ -447685,7 +450507,7 @@ "reftest" ], "css/CSS2/positioning/abspos-027.xht": [ - "4206e6ba1f6839097eeeedf836b959883bfb0f4b", + "92f26a5069fa65e26c24b5ff548757174b491b1b", "reftest" ], "css/CSS2/positioning/abspos-028-ref.xht": [ @@ -448833,11 +451655,11 @@ "reftest" ], "css/CSS2/positioning/position-relative-031-ref.xht": [ - "d8ab20871c04f15927a2421400fc0bd94751d801", + "713239d97e9516c8a650c35062a8ac381a977a87", "support" ], "css/CSS2/positioning/position-relative-031.xht": [ - "3e7ea161ba0c2ca703de599084a12f67841ce8cc", + "9ef83749003fb8881335bddbe8a1d4978709fc94", "reftest" ], "css/CSS2/positioning/position-relative-032-ref.xht": [ @@ -448905,11 +451727,11 @@ "reftest" ], "css/CSS2/positioning/positioning-float-001-ref.xht": [ - "6c2415a373b5eda24ddb8718d4d2483a2a2902a3", + "fe017fcbf93173ebaa9f320c735c15fa366c04b6", "support" ], "css/CSS2/positioning/positioning-float-001.xht": [ - "f09c12ed86ca1c628f5cd14af54e5815eef5b3b0", + "26a3c992262056846e4ae74695c0cadb4a4993f6", "reftest" ], "css/CSS2/positioning/positioning-float-002-ref.xht": [ @@ -465961,11 +468783,11 @@ "visual" ], "css/CSS2/values/color-000-ref.xht": [ - "c7bb8fe43bd64c29069544ad57eaf0b278e3986c", + "9d9f5220470b7ad806b0960431f1297d901bb279", "support" ], "css/CSS2/values/color-000.xht": [ - "34ee507a95cc9a67ea2d92f57baeb2e1b486e64f", + "84b046a78138c015092de76c5151ff545e9df001", "reftest" ], "css/CSS2/values/numbers-units-001.xht": [ @@ -471536,12 +474358,52 @@ "7390f245c6f208a1d1f1a6548d6f7f0185decedb", "visual" ], + "css/css-align/content-distribution/parse-align-content-001.html": [ + "5f85c7e0760de399e2bbff0d27bcbe48b52f6ab0", + "testharness" + ], + "css/css-align/content-distribution/parse-align-content-002.html": [ + "1b57303c27c9ca6a195f380db7c65c6953235189", + "testharness" + ], + "css/css-align/content-distribution/parse-align-content-003.html": [ + "35e87806d671d9688fcecb2971703496c7ecf279", + "testharness" + ], + "css/css-align/content-distribution/parse-align-content-004.html": [ + "38d4d969e140dad7914c7c36ff25fd7d8b8e47ed", + "testharness" + ], + "css/css-align/content-distribution/parse-align-content-005.html": [ + "473d879d7a0a7ccfc58f8ad319af98859acaaace", + "testharness" + ], + "css/css-align/content-distribution/parse-justify-content-001.html": [ + "ea7684f5dfb55def64657615b2cf584ac01f13a1", + "testharness" + ], + "css/css-align/content-distribution/parse-justify-content-002.html": [ + "eb16c39bcdbb30282778410636f7f8966bf1b3df", + "testharness" + ], + "css/css-align/content-distribution/parse-justify-content-003.html": [ + "156da9b59e01e743277a5bd86475c3c1046cab55", + "testharness" + ], + "css/css-align/content-distribution/parse-justify-content-004.html": [ + "8387baa705e2ae6863641e72f72b1469ff902df1", + "testharness" + ], + "css/css-align/content-distribution/parse-justify-content-005.html": [ + "349d5fbf2916bf93ad87c130afe04b7f2ad011e9", + "testharness" + ], "css/css-align/content-distribution/place-content-shorthand-001.html": [ - "c0d87c542bd637ff3ac5bd5c6dc33a4d5bef49ed", + "1f79fe2f2d0fc474c4a9376dde022042d5ff935c", "testharness" ], "css/css-align/content-distribution/place-content-shorthand-002.html": [ - "bb7956c56dafba251bcba74abf922d983b8bcffd", + "f5f4f2279506dc6106de38080a639979ad7e05d0", "testharness" ], "css/css-align/content-distribution/place-content-shorthand-003.html": [ @@ -471549,7 +474411,7 @@ "testharness" ], "css/css-align/content-distribution/place-content-shorthand-004.html": [ - "f6927e1d464df4fe22cd01bb4779eb64cf790ab4", + "5aa5cda5b2b0204bd2deb5c813532f394644b31f", "testharness" ], "css/css-align/content-distribution/place-content-shorthand-005.html": [ @@ -471557,19 +474419,71 @@ "testharness" ], "css/css-align/content-distribution/place-content-shorthand-006.html": [ - "016c2ff7902fc01d8368645b7177e3932aa64d42", + "a40c054505716dda72b642ada40d8796a5d68795", "testharness" ], + "css/css-align/content-distribution/place-content-shorthand-007-ref.html": [ + "6008fc2ca235c4b4c171ace405fd312647be3313", + "support" + ], + "css/css-align/content-distribution/place-content-shorthand-007.html": [ + "5268627f55928b969e022a626961958ac8f92e05", + "reftest" + ], "css/css-align/default-alignment/justify-items-legacy-001.html": [ "bcf17f709a9b87ef728262b658d1dfa65afc93bb", "testharness" ], + "css/css-align/default-alignment/parse-align-items-001.html": [ + "4480541c8c693f479948c408e99ea3ce1d13f6cd", + "testharness" + ], + "css/css-align/default-alignment/parse-align-items-002.html": [ + "eb9d656eb94d7bb2ef11286b28ceb90a71ef9774", + "testharness" + ], + "css/css-align/default-alignment/parse-align-items-003.html": [ + "9db68647a490da7f2d3513c28359392d24bb3257", + "testharness" + ], + "css/css-align/default-alignment/parse-align-items-004.html": [ + "e2c96ca7f861965ffe525fa8de7132c041230dac", + "testharness" + ], + "css/css-align/default-alignment/parse-align-items-005.html": [ + "e5b9aed617b086152a25ffb4b3a39a8898a3622e", + "testharness" + ], + "css/css-align/default-alignment/parse-justify-items-001.html": [ + "a60f7ed4a16ad9e6c12c8004b90bb1f88083af31", + "testharness" + ], + "css/css-align/default-alignment/parse-justify-items-002.html": [ + "b74652a3770f5bf8b7184748d62a21625f9121b3", + "testharness" + ], + "css/css-align/default-alignment/parse-justify-items-003.html": [ + "3a66f7c4d618f0ea0ff112ac7dce8e5d6257084a", + "testharness" + ], + "css/css-align/default-alignment/parse-justify-items-004.html": [ + "e2e61304ecccb8f0892eebb0eda6b510287174a6", + "testharness" + ], + "css/css-align/default-alignment/parse-justify-items-005.html": [ + "2d7d4871ff887570ea0d6292d389080ac8bc9932", + "testharness" + ], + "css/css-align/default-alignment/parse-justify-items-006.html": [ + "e37a66d4363c4df6c04eef3b6fbfe26208369cb1", + "testharness" + ], "css/css-align/default-alignment/place-items-shorthand-001.html": [ - "cc69bbbee852e6cd203d3f39dac2a1e05a428361", + "d3905233affe9d6e138ef96d0f025fc23585fc44", "testharness" ], "css/css-align/default-alignment/place-items-shorthand-002.html": [ - "77bb21f97a9448b03da8b97adc3accf1308eb647", + "a087659c5fa60012fa11b685701b64a14fdda4ea", "testharness" ], "css/css-align/default-alignment/place-items-shorthand-003.html": [ @@ -471577,7 +474491,7 @@ "testharness" ], "css/css-align/default-alignment/place-items-shorthand-004.html": [ - "17f58a8c43e114540e5fe5a63ec4502a50231e10", + "d4b6346f68b085a297ba5b15a5803258cbf661da", "testharness" ], "css/css-align/default-alignment/place-items-shorthand-005.html": [ @@ -471585,7 +474499,7 @@ "testharness" ], "css/css-align/default-alignment/place-items-shorthand-006.html": [ - "3de2cbe0f38c6efd2cf830fadc858988600b7900", + "b7106d0ee863673c0d9a6160d035706edb3c67a8", "testharness" ], "css/css-align/distribution-values/space-evenly-001.html": [ @@ -471597,15 +474511,55 @@ "support" ], "css/css-align/resources/alignment-parsing-utils.js": [ - "0340f801692801d985e8b75be0bb27b6ddff734f", + "8dcde745c0e5b0832ff748c117bbbf1af3d6a829", "support" ], + "css/css-align/self-alignment/parse-align-self-001.html": [ + "aae57067e0e86c9e8d6e81b31667218184567658", + "testharness" + ], + "css/css-align/self-alignment/parse-align-self-002.html": [ + "25d0f676cb296c9fa7de67cee5ac988733ccbd13", + "testharness" + ], + "css/css-align/self-alignment/parse-align-self-003.html": [ + "8137de4c4afb4c27d2923aa4054ea9398aca865d", + "testharness" + ], + "css/css-align/self-alignment/parse-align-self-004.html": [ + "48d48c3e5c3eff5143644cc7550c6c6b7b92bea7", + "testharness" + ], + "css/css-align/self-alignment/parse-align-self-005.html": [ + "190a7d276072604ce21a7dc00676ff32d2dba57d", + "testharness" + ], + "css/css-align/self-alignment/parse-justify-self-001.html": [ + "de04cd16ef97ad1e7fdba547caee6dab891366aa", + "testharness" + ], + "css/css-align/self-alignment/parse-justify-self-002.html": [ + "ef524eeed0dd9b2c41eab613aa08b3fd512c2903", + "testharness" + ], + "css/css-align/self-alignment/parse-justify-self-003.html": [ + "30f17571f35b0d79da012f4e39f38dbe85bbe888", + "testharness" + ], + "css/css-align/self-alignment/parse-justify-self-004.html": [ + "9b4d1453941411fc09f676e00b0bd0e5a9ddf7e7", + "testharness" + ], + "css/css-align/self-alignment/parse-justify-self-005.html": [ + "e40d7137c71d3d11a434a17861450d2380138a2e", + "testharness" + ], "css/css-align/self-alignment/place-self-shorthand-001.html": [ - "62d9c6a64f6f97ed2ecef74d885397c648de3c14", + "54de5a9e58b94bce85c58f25ffeee754acd32f36", "testharness" ], "css/css-align/self-alignment/place-self-shorthand-002.html": [ - "8e39715c6208aeaf483e2d7e9abb50870beffbc4", + "a266e09207859b058f445acb7c472156e525dd21", "testharness" ], "css/css-align/self-alignment/place-self-shorthand-003.html": [ @@ -471613,7 +474567,7 @@ "testharness" ], "css/css-align/self-alignment/place-self-shorthand-004.html": [ - "006d63717f5d18bc09428a56b3a4d811ba11af9a", + "4f153c62e5d1eecf9eb4678036123d0460d7ecf1", "testharness" ], "css/css-align/self-alignment/place-self-shorthand-005.html": [ @@ -471621,7 +474575,7 @@ "testharness" ], "css/css-align/self-alignment/place-self-shorthand-006.html": [ - "5b394c37527b7a9fdc0d32ea14caddf36a72fe30", + "d355eac038a7307e7a969632bc745ad25d8d6f43", "testharness" ], "css/css-align/ttwf-reftest-alignContent.html": [ @@ -475473,7 +478427,7 @@ "reftest" ], "css/css-color/rgb-002.html": [ - "548c72f849f22c8fb0997e6175fefb10c5581bba", + "87efdbc3c1d3e09b7699a98125a2b044c5ca799b", "reftest" ], "css/css-color/rgb-003.html": [ @@ -475481,7 +478435,7 @@ "reftest" ], "css/css-color/rgb-004.html": [ - "dd6f8c7fcf7469e4f3ebae08e6e5463cc5b5e3da", + "324e16dce720b0f7f4f74482bda847a06855bc65", "reftest" ], "css/css-color/rgb-005.html": [ @@ -475489,7 +478443,7 @@ "reftest" ], "css/css-color/rgb-006.html": [ - "1768035ede3163a8836c758bb8a05485224fca41", + "e7b974f05d72e904c7dcc89a27a58f3d2919652a", "reftest" ], "css/css-color/rgb-007.html": [ @@ -475497,15 +478451,19 @@ "reftest" ], "css/css-color/rgb-008.html": [ - "3acb8eb7623bf98938d53de83715dc0eeeda52fa", + "d5738a04d24bdd87d6e9a5c070b2bc566b545ace", "reftest" ], + "css/css-color/rgb-rounding-001.html": [ + "045dccb0add6afdc063260628ed0c7260ce751e2", + "testharness" + ], "css/css-color/rgba-001.html": [ "671f70a6afe6be200987a15814e550305d85bf20", "reftest" ], "css/css-color/rgba-002.html": [ - "75872ed9c97639741fdad767ce6d65d77c72f36a", + "fd92aa5522f1d2fdb85c7dd2217960cbb9ea3a15", "reftest" ], "css/css-color/rgba-003.html": [ @@ -475513,7 +478471,7 @@ "reftest" ], "css/css-color/rgba-004.html": [ - "b7fc0f8caa2993dc8be746a9fc539fd93b51e9ee", + "7723082ac6d7f139a49e43b880424d2a2a0c8086", "reftest" ], "css/css-color/rgba-005.html": [ @@ -475521,7 +478479,7 @@ "reftest" ], "css/css-color/rgba-006.html": [ - "59387e3f2c3927d96ce693897bd3cbb98d2e4e3c", + "94d68d4489fbf05fce63ce8da4c3034d9dbcef2e", "reftest" ], "css/css-color/rgba-007.html": [ @@ -475529,7 +478487,7 @@ "reftest" ], "css/css-color/rgba-008.html": [ - "b4ca26e380502585ba202c4b129581f3b38a6482", + "9ab9ae45413993ead7c3beaaf34a71474ee948dd", "reftest" ], "css/css-color/t31-color-currentColor-b-ref.html": [ @@ -477000,6 +479958,14 @@ "c874f59947d37659e640d4e0abb8a0dc0f03927d", "reftest" ], + "css/css-display/display-contents-fieldset-nested-legend-ref.html": [ + "89fbd146ffbd862ba3d0f058d8d8c9d8024da0fa", + "support" + ], + "css/css-display/display-contents-fieldset-nested-legend.html": [ + "45be585ab1523c180b3ba159d25d0dadd80456ac", + "reftest" + ], "css/css-display/display-contents-fieldset.html": [ "353abc0ce5abe98a1678fbd5832bf16a0d8b5094", "reftest" @@ -478228,6 +481194,14 @@ "cfaff82945bd52baafb8c4c16eb38c9dbee14da6", "testharness" ], + "css/css-fill-stroke/paint-order-001.tentative.html": [ + "46e784929d8a661eb432fa04cc79e0612bd5d194", + "reftest" + ], + "css/css-fill-stroke/reference/paint-order-001-ref.tentative.html": [ + "35eb3b4cfe4505a5c9761dcecc047a8cd09f8fb9", + "support" + ], "css/css-flexbox/Flexible-order.html": [ "ff6b01d6069b9106c60e3f86ac29bffb7c94f916", "reftest" @@ -481017,7 +483991,7 @@ "support" ], "css/css-flexbox/support/100x100-green.png": [ - "e5142090341e9557fa0fa8bb44ba2f5114796484", + "237282657ba1c809361506de0f7a7185cc7457c4", "support" ], "css/css-flexbox/support/1x1-green.png": [ @@ -481540,6 +484514,10 @@ "6a46776acc325ad42993555d516c6a057d801df8", "support" ], + "css/css-fonts/font-feature-settings-serialization-001.html": [ + "51a64b41a9a6bc085804710cf3ab80d860964c71", + "testharness" + ], "css/css-fonts/font-features-across-space-1-ref.html": [ "634ece1e252f1330479bafed49eb8aa2ecc99d94", "support" @@ -481825,7 +484803,7 @@ "support" ], "css/css-fonts/font-variant-alternates-07.html": [ - "caf337f548657c4e188aa477ccec4b8149d092bf", + "2789bde5b3274fe52484de0eb69d4c4e68f99da6", "reftest" ], "css/css-fonts/font-variant-alternates-08-ref.html": [ @@ -481833,7 +484811,7 @@ "support" ], "css/css-fonts/font-variant-alternates-08.html": [ - "f9fc6c2252064c94ba3e6120b3646faa0bb590f7", + "9c43206b0f1df015aec881da4517576f154c9ead", "reftest" ], "css/css-fonts/font-variant-alternates-09-ref.html": [ @@ -481841,7 +484819,7 @@ "support" ], "css/css-fonts/font-variant-alternates-09.html": [ - "75768372f5747e12bf569e40c1474f3341479552", + "f2ad17a464d0ff1afb1e971face18d0b70b0df81", "reftest" ], "css/css-fonts/font-variant-alternates-10-ref.html": [ @@ -481849,7 +484827,7 @@ "support" ], "css/css-fonts/font-variant-alternates-10.html": [ - "36ec29992f8a3de6a3679c8b89410c7c4fef6e41", + "07a02a19a3a4c34788408814668141fdcabeb5c3", "reftest" ], "css/css-fonts/font-variant-alternates-11-ref.html": [ @@ -481857,7 +484835,7 @@ "support" ], "css/css-fonts/font-variant-alternates-11.html": [ - "70b0db84986c8f982d0cc5fe08d997f7757924bc", + "74b5613071a8e5f2e46363fe9dbe2fff093060f3", "reftest" ], "css/css-fonts/font-variant-alternates-12-ref.html": [ @@ -481865,7 +484843,7 @@ "support" ], "css/css-fonts/font-variant-alternates-12.html": [ - "c173b400c5c247aa13d400efe7a0b7d0440a498c", + "ce637ee75a42b8cb4542c6d9fd888aeded9315af", "reftest" ], "css/css-fonts/font-variant-alternates-13-ref.html": [ @@ -481873,7 +484851,7 @@ "support" ], "css/css-fonts/font-variant-alternates-13.html": [ - "47ed224bd5c03bd2610521defe634776d25ae27f", + "08ebbe94136c784d32b9012cfbe5309641f34963", "reftest" ], "css/css-fonts/font-variant-alternates-14-ref.html": [ @@ -481881,7 +484859,7 @@ "support" ], "css/css-fonts/font-variant-alternates-14.html": [ - "e5d952170c8e4e4ee507550f20e06f4f02358aa7", + "21021ed09cba33880d09e09c8c4149fee09ab14a", "reftest" ], "css/css-fonts/font-variant-alternates-15-ref.html": [ @@ -481889,7 +484867,7 @@ "support" ], "css/css-fonts/font-variant-alternates-15.html": [ - "9ff98fb9ba0a0d8f7dd7eeba46f9fff0cded50d5", + "28b9783fb266c2706a3b1bb803d3f673e8a54961", "reftest" ], "css/css-fonts/font-variant-alternates-16-ref.html": [ @@ -481897,7 +484875,7 @@ "support" ], "css/css-fonts/font-variant-alternates-16.html": [ - "438440aa6dcc401f66d6c9f271221b377e08f12f", + "7ff9e41f619a1049160e6b44757fb3df76027fc1", "reftest" ], "css/css-fonts/font-variant-alternates-17-ref.html": [ @@ -481905,7 +484883,7 @@ "support" ], "css/css-fonts/font-variant-alternates-17.html": [ - "9c7b3567045c4bce12d693df687120534e066c56", + "190ed6df571bb4c3524830312bab44762b8f7caf", "reftest" ], "css/css-fonts/font-variant-alternates-18-ref.html": [ @@ -481913,11 +484891,11 @@ "support" ], "css/css-fonts/font-variant-alternates-18.html": [ - "b85b14eaf76f9c1b89a015b8a5aea9382f61e332", + "099642fe6884b4501cbdb7182910ef296fd7c93f", "reftest" ], "css/css-fonts/font-variant-alternates-parsing.html": [ - "5a15ca070dbddff6e28995c13db825244080fc25", + "521ef26ea50ce2980f5a9026e047a05d54bb7556", "testharness" ], "css/css-fonts/font-variant-caps-01-ref.html": [ @@ -488673,11 +491651,11 @@ "reftest" ], "css/css-grid/abspos/grid-positioned-items-content-alignment-001.html": [ - "cb977a8f3e05d48e92ffecad0031834087a2ef97", + "d9f5abb41f8fb479c37f0d364b9cd73cb9008829", "testharness" ], "css/css-grid/abspos/grid-positioned-items-content-alignment-rtl-001.html": [ - "6c8ff0ddb3895d6a13d8b1354dea5ef4324c9b03", + "81cd5622a02ae3bdccd609d6e409241b9ba92117", "testharness" ], "css/css-grid/abspos/grid-positioned-items-gaps-001.html": [ @@ -489009,35 +491987,35 @@ "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-011.html": [ - "e1befaf27f4defef626b8c423f3a82f661160655", + "77ae9907a7eddd78821890b70bce2c0543a978f5", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-012.html": [ - "84eb6de9bb892de373129df60f10bdf0cf9b59d8", + "aa3823158eb43bb1fa623a1686402bc965c7f4a6", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-013.html": [ - "f527bc3b0669b048268a8c59274150f3adeabd01", + "c0c5447dd16a89783d5c6b46ab1a6d17bdb719f3", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-014.html": [ - "eee651407a75b74ba32d60312a347bef95a6501f", + "52aa385eb6a0defe54f2b7ea5ef272da4ad37709", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-015.html": [ - "cccb3afaab2bb61b26229a5bb5713348c9d4a519", + "76feb090c78632d8e09767b89e7245970015b007", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-016.html": [ - "661f7bbd9c211bb29f14bf9124676e40e44d21cd", + "c8f7ba2331a80b123206cae0a11dbd76f0f8a235", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-017.html": [ - "c5aeba430655c90997b790b922ba7aaed087211b", + "e25652288f94377e3b5082c7d7244f706903905f", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-018.html": [ - "89abc2805c57b1c79b65288efbf82fb9f98fc31a", + "a1236f5cf353218bcf5565c42df0f44564690ffd", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-019.html": [ @@ -489081,35 +492059,35 @@ "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-029.html": [ - "2c99765c101af32aff4ef16b615930a650db52f2", + "633de23d59e98b4380c7aa36c11c3e25e939f417", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-030.html": [ - "6c3e1b09a0a8e1268a3e2c513b7959972fee1632", + "83c7eb2b3ce96edf1d86b18bb59fd518fccad2a4", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-031.html": [ - "627a1e421cbcc93dbf5b5beb028482495aa96ea9", + "1c81a3ecfbbbd52f058b6968d629571e335dd15f", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-032.html": [ - "a3b9af60a41c8baa60f5ec891a56d3c2e075d6c1", + "23a4f14974e70b29a9d618d2c627bc121558ffd1", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-033.html": [ - "ab9eda7db315fdd67240c93d5544fe3230101509", + "319d6241cb92af28d38eb82830f14dd5e3ff1d1a", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-034.html": [ - "1f506f17eeaf10ca4728c0b3b40ec825e85a4438", + "a1527212bd8be336ad27bba260ec350fc1cdef98", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-035.html": [ - "2bfd66cdd546bf0151c1aaa800903bf974a10b75", + "805bbc917117c9df0831c3dcd3c9b6ae951a60c8", "testharness" ], "css/css-grid/alignment/grid-alignment-implies-size-change-036.html": [ - "d9ab0bc1deb8a9a8b29c80b446ee9f7cb720d214", + "e209b20fc006be859a18de232223a5f9bf1d7a8f", "testharness" ], "css/css-grid/alignment/grid-column-axis-alignment-positioned-items-001.html": [ @@ -489840,6 +492818,10 @@ "dc9d15b18538afb38790de51e31095ce9f93e0a9", "reftest" ], + "css/css-grid/alignment/support/100x100-green.png": [ + "237282657ba1c809361506de0f7a7185cc7457c4", + "support" + ], "css/css-grid/alignment/support/style-change.js": [ "021db5d6c4e974ab0c8d7e59666a785db03942c4", "support" @@ -490277,7 +493259,7 @@ "support" ], "css/css-grid/grid-items/support/100x100-green.png": [ - "ff6fda3a436fa54df17a321e2458204fd963dfb2", + "237282657ba1c809361506de0f7a7185cc7457c4", "support" ], "css/css-grid/grid-items/support/200x200-green.png": [ @@ -490444,6 +493426,14 @@ "909c91b995daafc31a6fa9f6989dc78c892840e3", "reftest" ], + "css/css-grid/layout-algorithm/grid-find-fr-size-gutters-001.html": [ + "8f25b5a976f6f113a539fa22c8ab7f4d7cf3b2fd", + "testharness" + ], + "css/css-grid/layout-algorithm/grid-find-fr-size-gutters-002.html": [ + "d1cf60290fb927f91dc132fd801b92b84262e003", + "testharness" + ], "css/css-grid/layout-algorithm/grid-layout-free-space-unit.html": [ "5873efcda9c17e48a8437a62bf6871cbf96bdc46", "reftest" @@ -490544,10 +493534,6 @@ "feb53485e24aeaf9a5f27be5e42cc4a6fc5b8df0", "support" ], - "css/css-grid/support/grid-alignment.css": [ - "b45aee51245613ceddf8eda70d995a26027671bd", - "support" - ], "css/css-grid/support/grid.css": [ "6bb300b8baebf700481ea162fb7b41913fcca29c", "support" @@ -490860,6 +493846,26 @@ "4b4b4756c2f605ab4dca092775cc39b0705efda9", "reftest" ], + "css/css-layout-api/OWNERS": [ + "516917174b3c605bb6914a7aa710ce8948524ed7", + "support" + ], + "css/css-layout-api/at-supports-rule.https.html": [ + "7e8b0c3a12b9d5e4d2409da06e7d7441d76d8e23", + "testharness" + ], + "css/css-layout-api/computed-style-layout-function.https.html": [ + "a999a2a7ad8981879cdc984bf602939a23a60ea6", + "testharness" + ], + "css/css-layout-api/inline-style-layout-function.https.html": [ + "f421a9c0fb4c930922281a88eeaa45ae69adab51", + "testharness" + ], + "css/css-layout-api/supports.https.html": [ + "be6b57f5a85f99a64e755da22411ace3fba2992f", + "testharness" + ], "css/css-lists/OWNERS": [ "d9c8054b356c9273a054a83abeb9be0626c23921", "support" @@ -492116,6 +495122,10 @@ "9294744a72ec5b0fe7622c4a68284daefa9372d9", "reftest" ], + "css/css-multicol/multicol-gap-percentage-001.html": [ + "e13f8ae08605871e1ae175eed0a83dafae77de31", + "testharness" + ], "css/css-multicol/multicol-height-001-ref.xht": [ "028a0a0f0137840368c556b59f58deacccd5a063", "support" @@ -493337,11 +496347,11 @@ "reftest" ], "css/css-paint-api/invalid-image-constructor-error-ref.html": [ - "b0c34ee1480fe1108fe8dc53f2bbb2f3ffa1c408", + "9ae74dc1b6bc4a2f346d072eca0020e7fd1b39ec", "support" ], "css/css-paint-api/invalid-image-constructor-error.https.html": [ - "6e73e10076d29e69dad68deca551ad9cb84f82f9", + "3fb935202b776ac0669804e7484a6a56667db64a", "reftest" ], "css/css-paint-api/invalid-image-paint-error-ref.html": [ @@ -493349,7 +496359,7 @@ "support" ], "css/css-paint-api/invalid-image-paint-error.https.html": [ - "53ea8b4f95f9afafd145c04c5f5961af19a9eae4", + "14d684741bcea0c95b1f50881f489e29abff080c", "reftest" ], "css/css-paint-api/invalid-image-pending-script-ref.html": [ @@ -493357,7 +496367,7 @@ "support" ], "css/css-paint-api/invalid-image-pending-script.https.html": [ - "40cd95de01fb371990dac73777e75bd306d28be9", + "780d368f790ae61cd3d9a575213dd8c9cce9a3a6", "reftest" ], "css/css-paint-api/overdraw-ref.html": [ @@ -493489,7 +496499,7 @@ "reftest" ], "css/css-paint-api/parse-input-arguments-011.https.html": [ - "15edc8fc44d339514911566fe7cf07ec899cf04a", + "b464f59c89fd6b515cdb2e027240b953bcf229d8", "reftest" ], "css/css-paint-api/parse-input-arguments-012.https.html": [ @@ -493517,11 +496527,11 @@ "reftest" ], "css/css-paint-api/parse-input-arguments-018-ref.html": [ - "7dd468373f6efa2b5a3a8d16c91c0d4dec87c143", + "a831ef2690027b266f499d652b25ed8684e0fbaf", "support" ], "css/css-paint-api/parse-input-arguments-018.https.html": [ - "b606bfff93300f114ea4efab85e489727e9821c7", + "2ae9cf7d13fa40e568d2324d060885a68ea3dbbd", "reftest" ], "css/css-paint-api/parse-input-arguments-019.https.html": [ @@ -493557,7 +496567,7 @@ "support" ], "css/css-paint-api/style-background-image.https.html": [ - "54f213635749ffeae4d21a5e3d4391901fbfe984", + "4288eba641144a33ba79390102d141693a2c14d6", "reftest" ], "css/css-paint-api/style-before-pseudo-ref.html": [ @@ -493565,7 +496575,7 @@ "support" ], "css/css-paint-api/style-before-pseudo.https.html": [ - "7e8263880905e254e7c27274d6314ba23bd1cb04", + "e491dcde66880750f3b277d520f5288e0508d13a", "reftest" ], "css/css-paint-api/style-first-letter-pseudo-ref.html": [ @@ -493676,13 +496686,9 @@ "873882f22e341bba957eb142ba90fc54c1ceae2f", "reftest" ], - "css/css-position/position-sticky-bottom-ref.html": [ - "726d6e927d84669e9355701ccd948349d377e6fd", - "support" - ], "css/css-position/position-sticky-bottom.html": [ - "2a908e60a635dbf765987c0f93d0f33c8ea85de6", - "reftest" + "b6e687068b26e8660397dfd0d6a501b76739200b", + "testharness" ], "css/css-position/position-sticky-flexbox-ref.html": [ "f8dedb4a637ea3f4bf79eb621f52a8c4622f8c75", @@ -493724,13 +496730,9 @@ "6580451dddfd6f8865925326c170f630f343fbcd", "testharness" ], - "css/css-position/position-sticky-left-ref.html": [ - "9de7a8ba6019395d729b32e514cc3bd9fee25d2b", - "support" - ], "css/css-position/position-sticky-left.html": [ - "5151bca08dff652ea728cb8bccbb6b7c6d364dd8", - "reftest" + "2a04672cdac818a6887eac7d6824ea85d3d0559d", + "testharness" ], "css/css-position/position-sticky-margins-ref.html": [ "0cdb788c913f47a121114ac5b8e6a140bb08c1ff", @@ -493808,14 +496810,18 @@ "224bc984bc6eb4a55931461cf7e51f7b04d219f4", "testharness" ], - "css/css-position/position-sticky-right-ref.html": [ - "9a4a11b22cb0ea13f38a7dded8469f4848550ed4", + "css/css-position/position-sticky-rendering-ref.html": [ + "589f876752911544957aaa600c5c1559efbf1357", "support" ], - "css/css-position/position-sticky-right.html": [ - "f79c0e3e99085e483652950b141fe15c3c4d01d8", + "css/css-position/position-sticky-rendering.html": [ + "7b85b2f81d9748bf87f6e21fec60b6159d36b020", "reftest" ], + "css/css-position/position-sticky-right.html": [ + "80caf6fb1e6c84dbf3e371a11166ac5b71bba687", + "testharness" + ], "css/css-position/position-sticky-root-scroller-ref.html": [ "b66947a9f1b39c6c489267477d0122eeaeac7341", "support" @@ -493904,13 +496910,9 @@ "7a030d17358067b78c879bf17171b60d1dc3acd9", "reftest" ], - "css/css-position/position-sticky-top-ref.html": [ - "e5a05c21494a2e2923d1ed37050ec75db7ab55cd", - "support" - ], "css/css-position/position-sticky-top.html": [ - "30c0c00c6313a747b51c8b6d4f1301056af56560", - "reftest" + "bfd49209889fc14cae5af8d7c5e7990fbde451ec", + "testharness" ], "css/css-position/position-sticky-transforms-ref.html": [ "b01ae263ac6b712912ba2af06edbaeaf75ba0215", @@ -493936,6 +496938,10 @@ "b6d16a38b73d4c107e587194818a542fee9d0716", "reftest" ], + "css/css-position/resources/sticky-util.js": [ + "c7b441a3a07276cad9528dd3ef7d82844d06e2d8", + "support" + ], "css/css-pseudo/OWNERS": [ "e196548942a4d77448f734235b3456e2a830a5a7", "support" @@ -496252,10 +499258,18 @@ "46913ea7e47811b11be898de5c3bd0a330ea6637", "testharness" ], + "css/css-scoping/slotted-invalidation.html": [ + "c500e1ceba1b293d45df5f66fd89d4a5d9ceb952", + "testharness" + ], "css/css-scoping/slotted-parsing.html": [ "6bac5b15011d7177a40f7ca3e3c5f7e410643920", "testharness" ], + "css/css-scoping/slotted-slot.html": [ + "263bcbe53e7703a2ea0a7ffae8f9ec4fcb10c7d2", + "testharness" + ], "css/css-scoping/slotted-with-pseudo-element-ref.html": [ "48561a3dff973b7ad1bfa9702461e50fd4a67c2d", "support" @@ -498584,6 +501598,38 @@ "a9db9c3323d29904f9e631e48ddcd6c722e097a3", "support" ], + "css/css-text/astral-bidi/adlam-anti-ref.html": [ + "d288d3c927c1873f69c81886087e581de111f75d", + "reftest" + ], + "css/css-text/astral-bidi/adlam-ref.html": [ + "4cc3199ae52983d1bbbf07ba63dacdf1505f747c", + "support" + ], + "css/css-text/astral-bidi/adlam.html": [ + "72e9c9cc666f8fc1762a6621c0f05937ad413f33", + "reftest_node" + ], + "css/css-text/astral-bidi/cypriot-anti-ref.html": [ + "04d9e80edb3faeeafea19a7ee122fc61c09acca4", + "reftest" + ], + "css/css-text/astral-bidi/cypriot-ref.html": [ + "952516be0a292d4560fcc667f48f96a8c4e4d356", + "support" + ], + "css/css-text/astral-bidi/cypriot.html": [ + "b33812e2fd3e87fca52c430471ef12bc90539ad4", + "reftest_node" + ], + "css/css-text/astral-bidi/support/adlam.css": [ + "83d24d6c948fe4a68423b2892ff1e75c765ec98a", + "support" + ], + "css/css-text/astral-bidi/support/cypriot.css": [ + "0e32370ffc7e03a76dd32301ec9e25ee53e8bd51", + "support" + ], "css/css-text/hanging-punctuation/hanging-punctuation-allow-end-001.xht": [ "4f0a720f0b4d91d920ce2fb34ad97810cdd92ccd", "manual" @@ -505752,8 +508798,16 @@ "b7f8e44c24d152196d929ace4549ac5e56e7c23f", "reftest" ], + "css/css-transforms/parsing/perspective-origin-parsing-invalid.html": [ + "f12960646ce37cbce073602129d93d72bcc68cbf", + "testharness" + ], + "css/css-transforms/parsing/perspective-origin-parsing-valid.html": [ + "4849602a7ede7e6a9390092525dfcaec42ef9c7f", + "testharness" + ], "css/css-transforms/parsing/resources/parsing-testcommon.js": [ - "bb1376de12185a14f77fd28be757cc8db2a9929d", + "b5cc6f7c0c7729328bbbc45ec2a8147dae8d8668", "support" ], "css/css-transforms/parsing/rotate-parsing-invalid.html": [ @@ -505777,7 +508831,7 @@ "testharness" ], "css/css-transforms/parsing/translate-parsing-valid.html": [ - "5fae7004fc23d69a0d21853254974ce94889f68b", + "f1da23d979a48dd71fab4feb3bc6c9abdc6a9111", "testharness" ], "css/css-transforms/patternTransform/reference/svg-patternTransform-combination-ref.html": [ @@ -508580,6 +511634,62 @@ "f1d2858aa9cea8218cfbc305890c025ccccac5a8", "reftest" ], + "css/css-transforms/transform-transformed-caption-contains-fixed-position-ref.html": [ + "ce5ab6d5d3b83c27f8cd66fdc8e85812725bbd76", + "support" + ], + "css/css-transforms/transform-transformed-caption-contains-fixed-position.html": [ + "30c63d6574b9f00e37fdce36c1e97a80dbbe924f", + "reftest" + ], + "css/css-transforms/transform-transformed-tbody-contains-fixed-position-ref.html": [ + "567ae4674617642d23f0eac59ada4b93107903f6", + "support" + ], + "css/css-transforms/transform-transformed-tbody-contains-fixed-position.html": [ + "244614107958cdca65167ba3832f567843cc4afd", + "reftest" + ], + "css/css-transforms/transform-transformed-td-contains-fixed-position-ref.html": [ + "1e4095bbadfbc9a3879039978c04e669685db48a", + "support" + ], + "css/css-transforms/transform-transformed-td-contains-fixed-position.html": [ + "19b1e18fd2d5130dda71cbbdaeb2b635885f2d20", + "reftest" + ], + "css/css-transforms/transform-transformed-tfoot-contains-fixed-position-ref.html": [ + "19a31f7e72f5ecf84e084f3099bfe5236aa91250", + "support" + ], + "css/css-transforms/transform-transformed-tfoot-contains-fixed-position.html": [ + "c70ff55205792ed3c30aac4ad0d8740767dd36e7", + "reftest" + ], + "css/css-transforms/transform-transformed-th-contains-fixed-position-ref.html": [ + "5cca6be38b37bf8ed975481cf94554a393878114", + "support" + ], + "css/css-transforms/transform-transformed-th-contains-fixed-position.html": [ + "a3fd389df79f592888aef277595674b7f36acbaf", + "reftest" + ], + "css/css-transforms/transform-transformed-thead-contains-fixed-position-ref.html": [ + "a75603cfa4f4376a1f6d17e034a4a511ecd47016", + "support" + ], + "css/css-transforms/transform-transformed-thead-contains-fixed-position.html": [ + "e04fa6c34aae262fe477f0ab632ee7a7dd063de7", + "reftest" + ], + "css/css-transforms/transform-transformed-tr-contains-fixed-position-ref.html": [ + "9612a07b7d2171bbe7a55948a17a2f4054c2a481", + "support" + ], + "css/css-transforms/transform-transformed-tr-contains-fixed-position.html": [ + "7d8d62227d3ee736db2c7477a96ea1e5056ea405", + "reftest" + ], "css/css-transforms/transform-translate-001.html": [ "f7f3a85ab0cd4a84b5cd7e31a60a22845941fab1", "reftest" @@ -510524,6 +513634,10 @@ "f6056e2480829c7aa9885673d332496faf7777b5", "testharness" ], + "css/css-typed-om/OWNERS": [ + "f5f0861ac3382b3b12008133c1334f812a5a2caa", + "support" + ], "css/css-typed-om/declared-styleMap-accepts-inherit.html": [ "fb0b546c9509db2d07b3e5a8e847cf23bf88dff4", "testharness" @@ -510545,7 +513659,7 @@ "support" ], "css/css-typed-om/resources/testhelper.js": [ - "08f2394f7dfa11460d1e67b8d0c6e556620bf65a", + "62fc510703d52cd0894359c29d975920e26b594f", "support" ], "css/css-typed-om/styleMap-update-function.html": [ @@ -510573,7 +513687,7 @@ "testharness" ], "css/css-typed-om/stylevalue-normalization/transformvalue-normalization.tentative.html": [ - "3a5ea9eef361accde1e0166d9defa186bae5c602", + "1b1af8a14ed0a1751ef3899e574e263c842440fd", "testharness" ], "css/css-typed-om/stylevalue-objects/interface.html": [ @@ -510601,7 +513715,7 @@ "testharness" ], "css/css-typed-om/stylevalue-serialization/cssMathValue.tentative.html": [ - "9bcb4ff6461793d61925d173da7650230e3b4555", + "4c5bf7630548c90a1397b6f1f215bd3be76b6cf6", "testharness" ], "css/css-typed-om/stylevalue-serialization/cssPositionValue.html": [ @@ -510609,7 +513723,7 @@ "testharness" ], "css/css-typed-om/stylevalue-serialization/cssTransformValue.tentative.html": [ - "d255d5d406d5620d4ed1cdd2979c7dc720475399", + "fdc7e5f43de941a0d79b0c4c13ae515038e028d1", "testharness" ], "css/css-typed-om/stylevalue-serialization/cssUnitValue.tentative.html": [ @@ -510636,16 +513750,136 @@ "236520d8ac6199066d1e082b9860f2381ff61be6", "testharness" ], + "css/css-typed-om/stylevalue-subclasses/cssMatrixComponent.tentative.html": [ + "4de186a7eb54631bb95662c9d585ea7429bb9498", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssPerspective.tentative.html": [ + "95faef2381452acfdaa8b200fb91d0f4f70bfd92", + "testharness" + ], "css/css-typed-om/stylevalue-subclasses/cssPositionValue-interface.html": [ "dc32e826e1f840c99f3b4bad4f03bd0f9573ce4e", "testharness" ], + "css/css-typed-om/stylevalue-subclasses/cssPositionValue-invalid.html": [ + "799985863b303910386137217d3641cb5fa550a4", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssPositionValue.html": [ + "ae2b865d7c0d60437e6dda4f2e2bfd36677f95ae", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssRotate.tentative.html": [ + "c4762f3f138145cbcc8af32d70c08088d0c0cfc2", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssScale.tentative.html": [ + "779c99a24057f5a2c33fcda77f5897c142659518", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssSkew.tentative.html": [ + "91ff825d12373156b3c3b23d23bf866220ef1386", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssTransformValue.tentative.html": [ + "c1ee0153bd654f64b64f74bf00b6b0709c7cb9ed", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssTranslate.tentative.html": [ + "700fae462f258404f3d0b8fad290613fc1929e1d", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssUnparsedValue-interface.html": [ + "aeab5e92558f5b61ab99cab0ed1537e7fcb1092b", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssUnparsedValue.html": [ + "cf1e8d553a9ebc111a1a81de48a821f7f7ad0bf1", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssUrlImageValue.tentative.html": [ + "292ae5c272bbe9eee02ab7da2a465c7e941ab562", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue-interface.html": [ + "0dbf7bb1047b3be816ae6773218788cdf27529cb", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue-invalid.html": [ + "ba012ace40e63718694a8cd91ba74039787ff666", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/cssVariableReferenceValue.html": [ + "69014384152e249f0f0ac15aec00ad41b82dbbf4", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/add-two-types.tentative.html": [ + "46432efb6b1ed44b87e27b66332ef78d68748c89", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/arithmetic.tentative.html": [ + "3d527c8633229d53635adff6e425a8af2b56302e", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/create-a-type.tentative.html": [ + "49abeb1e69973ec08fdb0309f78720628c604a57", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathInvert-type.html": [ + "55be5e939b85f8aa5f00dcd914bd887eb906c293", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathNegate-type.html": [ + "98d69118f7b5c26031ec55e66112cd1424f74d4f", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssMathValue.tentative.html": [ + "e19ec7ede86d52ecf29a142607de481facabcfb2", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssUnitValue.tentative.html": [ + "a46c2ff1bf221cd52b4546f7c07af90849d3096f", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/cssnumericvalue-multiply-two-types.tentative.html": [ + "1b5a65d6cbc52cc263cfdb2c896e1d9591ac322f", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/equals.tentative.html": [ + "466d97791b5fbec3dd52406bd8da3d277ae5ccdc", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/numeric-factory.tentative.html": [ + "5f478898d6923264f94b26be23bda160b8e119eb", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/parse.tentative.html": [ + "a17c4fdc29c474edb1ef3f94d5282d2603dd7227", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/resources/testhelper.js": [ + "6ad63efdd0a6650a1aae6eded3426c25b01a74a6", + "support" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/to.tentative.html": [ + "9216fee77d3666464ed55992fc7df739d85d5667", + "testharness" + ], + "css/css-typed-om/stylevalue-subclasses/numeric-objects/toSum.tentative.html": [ + "6240dbd450965b33ed5da87f554acc54a32b6ad4", + "testharness" + ], "css/css-typed-om/the-stylepropertymap/computed/computed.tentative.html": [ "f217ed58d7f56ea588aa942fddfec0322d557283", "testharness" ], - "css/css-typed-om/the-stylepropertymap/computed/get.tentative.html": [ - "caf3a345b03a2b929af25a8b360d5da9bb59fb5a", + "css/css-typed-om/the-stylepropertymap/computed/get-invalid.html": [ + "429ff102428a84ca0a1903de1752a56c3ff5bd29", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/computed/get.html": [ + "39d85ac0274ffcbc060654df3e53ae0984dce9d3", "testharness" ], "css/css-typed-om/the-stylepropertymap/computed/getAll.tentative.html": [ @@ -510669,11 +513903,23 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/declared/declared.tentative.html": [ - "0a2097381fd03a532db7e2b1fb85dd7a901fb011", + "a879640d94c42f82bf81f80942f1ed7d181ee642", "testharness" ], - "css/css-typed-om/the-stylepropertymap/declared/get.tentative.html": [ - "944052a99d1b5cc1a574c07339c33fdb6b1423d4", + "css/css-typed-om/the-stylepropertymap/declared/delete-invalid.html": [ + "fe2d4e5f02b1c931e479253d523f7ec2f59c67a7", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/delete.html": [ + "5e2a8ca9f0246aaba3e7d7d038cad125194c5f14", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/get-invalid.html": [ + "649ab2a64f0b0959e06bdc7968fc28247841bb25", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/declared/get.html": [ + "45032bb362cf1c6faed623e0538779db6a6dea3a", "testharness" ], "css/css-typed-om/the-stylepropertymap/declared/getAll.tentative.html": [ @@ -510696,10 +513942,6 @@ "2e8b919993a68f96008f17a0e95c08d05434e6a6", "testharness" ], - "css/css-typed-om/the-stylepropertymap/declared/test.tentative.html": [ - "eca38801c677a07ebc5e15ec7d11a3338bf0ecc6", - "testharness" - ], "css/css-typed-om/the-stylepropertymap/declared/update.tentative.html": [ "02eff9d89e280182fd065b63d71167041c6a8394", "testharness" @@ -510708,12 +513950,20 @@ "df640de5b24c8276459a1a7fbc8a02cc97db6223", "testharness" ], - "css/css-typed-om/the-stylepropertymap/inline/delete.tentative.html": [ - "352917486fa593e0d3f6f645c9c67846aa303ed8", + "css/css-typed-om/the-stylepropertymap/inline/delete-invalid.html": [ + "df4903a2c18099bb5291a307f50778ee757824ed", "testharness" ], - "css/css-typed-om/the-stylepropertymap/inline/get.tentative.html": [ - "28c506dae933e33e536f02e17b110cced9ea0278", + "css/css-typed-om/the-stylepropertymap/inline/delete.html": [ + "922297b80497c164d4217559658a9043a99ebbf8", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/get-invalid.html": [ + "1494cfe202fb93881fc60a3ed2a372a7a8b25b37", + "testharness" + ], + "css/css-typed-om/the-stylepropertymap/inline/get.html": [ + "ffed62a6ddbeb7bfe7cb71e76f4d4c5d7e9039e7", "testharness" ], "css/css-typed-om/the-stylepropertymap/inline/getAll.tentative.html": [ @@ -510741,7 +513991,7 @@ "testharness" ], "css/css-typed-om/the-stylepropertymap/interface.html": [ - "73aac61c85d142f38b871ef21c8ce75bd468cf40", + "b4561da47301cde30c37e4f77ff6870b4b6d10b4", "testharness" ], "css/css-ui/OWNERS": [ @@ -513012,6 +516262,30 @@ "4fd38a517e41851216d12db8c6b732d96f76e325", "testharness" ], + "css/css-ui/text-overflow-024-ref.html": [ + "c43715bf1ea3dd118f7b71479bd5239e01bbb314", + "support" + ], + "css/css-ui/text-overflow-024.html": [ + "7c18a786a3bfc9d1a8e9cc108ae228b979cacb6e", + "reftest" + ], + "css/css-ui/text-overflow-025-ref.html": [ + "13056acc82d5e59310d10af30da8e46f73929e5f", + "support" + ], + "css/css-ui/text-overflow-025.html": [ + "b4a2e0d1b86fd8893421de4335c9b6f36df1fc4d", + "reftest" + ], + "css/css-ui/text-overflow-026-ref.html": [ + "03c0337af58ba7bada64ab36721d9f1fe2f9a2f3", + "support" + ], + "css/css-ui/text-overflow-026.html": [ + "5087fe90cb3ef8e340be316f1534cb6dba3e0d17", + "reftest" + ], "css/css-ui/text-overflow-ref.html": [ "db55b0b95a7406e9c4f00081b3e2cbe6b07363f7", "support" @@ -513084,6 +516358,14 @@ "70627dbbfc5af5fb859fdf1362f0004b38c64e34", "reftest" ], + "css/css-values/calc-ch-ex-lang-ref.html": [ + "218e1cb6782b554de35aad70913cddb8e7d71da2", + "support" + ], + "css/css-values/calc-ch-ex-lang.html": [ + "d15f42e237b281793ac808e06af92217d4f9593e", + "reftest" + ], "css/css-values/calc-in-calc.html": [ "be08a1510714e8b4fbc4d35582db5708924d06b2", "reftest" @@ -513092,6 +516374,10 @@ "32a0face898f08b854ac392c75368282d718be32", "testharness" ], + "css/css-values/calc-in-font-feature-settings.html": [ + "0785a776a398483fab6b535b66210816ce5521af", + "testharness" + ], "css/css-values/calc-in-media-queries-001.html": [ "f8fdd8373eaca7a03d6a089b4faf71825c8bfaf2", "reftest" @@ -513108,6 +516394,14 @@ "080551c1bee3d7bf54dda2c3d5b7e5a9fbd8aed6", "reftest" ], + "css/css-values/calc-rem-lang-ref.html": [ + "08bbc95f3078421a489e1e93cc7a4f035af40d5b", + "support" + ], + "css/css-values/calc-rem-lang.html": [ + "6fa668d2bcaf01f5c4680e3e14a0e86160d1b5d5", + "reftest" + ], "css/css-values/calc-serialization.html": [ "d0bcbd402cb78e704dabc7f1665d40ba163e30eb", "testharness" @@ -514776,6 +518070,46 @@ "ee3dc6c4200c4d2127114a515b486b13f04e9bac", "reftest" ], + "css/css-writing-modes/available-size-001.html": [ + "7e04081c2b399a7647577b71da829ba71564a51f", + "reftest" + ], + "css/css-writing-modes/available-size-002.html": [ + "4df2fa9b43c546d6fcfbcc18c2004577b6ca7f88", + "reftest" + ], + "css/css-writing-modes/available-size-003.html": [ + "36b2113547c59e8653cbe596844105064733d981", + "reftest" + ], + "css/css-writing-modes/available-size-004.html": [ + "dc1c04d088049ad6bf277165eb8a48df261cd9cf", + "reftest" + ], + "css/css-writing-modes/available-size-005.html": [ + "a4ccf0846a049bf9ca582b0e4619f5ed1b8e90e7", + "reftest" + ], + "css/css-writing-modes/available-size-006.html": [ + "b02ac2c44c61fd7e5c746265eb95f0a6234ee9fd", + "reftest" + ], + "css/css-writing-modes/available-size-007.html": [ + "4f78ec7de367c78ebbad1a71745a7c92baa29131", + "reftest" + ], + "css/css-writing-modes/available-size-008.html": [ + "b422cebb5c5839abfa11a049395702cda52a1459", + "reftest" + ], + "css/css-writing-modes/available-size-009.html": [ + "0d10d0e6ef2133fee22f1cf3e0d46d3df87cdadd", + "reftest" + ], + "css/css-writing-modes/available-size-010.html": [ + "d0143fe32c956ab0be6e9573cae23f5c718161a1", + "reftest" + ], "css/css-writing-modes/background-position-vlr-003.xht": [ "c56c42d17b140be6868cc6f413f545dd6a5180e8", "manual" @@ -515640,6 +518974,38 @@ "220814b621001b3ac2d0b1437d84d2078321e0b9", "reftest" ], + "css/css-writing-modes/ch-units-vrl-001.html": [ + "1495c8627e20c07ac6ab888925d92f86d1f7aa29", + "reftest" + ], + "css/css-writing-modes/ch-units-vrl-002.html": [ + "534a0cb579d21d3991abbd6be99560c8ffe06120", + "reftest" + ], + "css/css-writing-modes/ch-units-vrl-003.html": [ + "fb04787ed593f053f57d5940ebed3dd7812f9e3d", + "reftest" + ], + "css/css-writing-modes/ch-units-vrl-004.html": [ + "e0957395e97e8aa8f40008531dbec6588edaef6c", + "reftest" + ], + "css/css-writing-modes/ch-units-vrl-005.html": [ + "4e950c9e21d61ec9aca9ca13a90ed02b6dd00d20", + "reftest" + ], + "css/css-writing-modes/ch-units-vrl-006.html": [ + "4141f62654e7c58756abba0c51a414eff199a6bf", + "reftest" + ], + "css/css-writing-modes/ch-units-vrl-007.html": [ + "d686d9af9cffbcf5ff97ee99174723da549d1150", + "reftest" + ], + "css/css-writing-modes/ch-units-vrl-008.html": [ + "9e0bcf67c5678aeee8845dfb53413ff3b6268ad1", + "reftest" + ], "css/css-writing-modes/clearance-calculations-vrl-002-ref.xht": [ "a81fc46fd680c66f2a4ff2d5b69ae7c85ff7802b", "support" @@ -516548,6 +519914,22 @@ "af9a1409c41728f261794835cdedbfa2078aa141", "reftest" ], + "css/css-writing-modes/logical-props-001.html": [ + "748107b578909bb444c7d6cad0a4e59881f69b82", + "reftest" + ], + "css/css-writing-modes/logical-props-002.html": [ + "6ee88b30d660a43e7cc47d0d610472ca403335e6", + "reftest" + ], + "css/css-writing-modes/logical-props-003.html": [ + "d1efd40838b83f293108935a755f7f3487700db4", + "reftest" + ], + "css/css-writing-modes/logical-props-004.html": [ + "96ad70537c9ed9e207ac656a1756e10fec90811a", + "reftest" + ], "css/css-writing-modes/margin-collapse-vlr-003.xht": [ "4d12a8cd3ec4cb21a30ae1c66facce5abd0a17b3", "reftest" @@ -516640,6 +520022,18 @@ "045dee441558b3bfd8c88a43d8045d86a9db2152", "reftest" ], + "css/css-writing-modes/mongolian-orientation-001.html": [ + "8aee94c83c70913ad59251b23a068e7a2d7e69b5", + "reftest" + ], + "css/css-writing-modes/mongolian-orientation-002.html": [ + "0620ecf2073ce457f139200193b6c5b789de69a6", + "reftest" + ], + "css/css-writing-modes/nested-orthogonal-001.html": [ + "6af28d8c40bbdf1bf37e02e7a053bfbdf27c14ff", + "reftest" + ], "css/css-writing-modes/normal-flow-overconstrained-vlr-003.xht": [ "a3143d84b7fe81aebe58aed32ab0706a7e838b21", "reftest" @@ -516960,6 +520354,14 @@ "98709c56c04f6ca8a006c09d3e25e2e46fd9aeb3", "reftest" ], + "css/css-writing-modes/reference/available-size-001-ref.html": [ + "0f6b3e3907f1898bae7b58b11bc4ee0b04a7e94d", + "support" + ], + "css/css-writing-modes/reference/available-size-002-ref.html": [ + "db010e663d44ba9cdd1dbf4036003cb88b460fe9", + "support" + ], "css/css-writing-modes/reference/bidi-embed-001.html": [ "6000e9bf08042d5e79b805132a64038875973008", "support" @@ -517344,6 +520746,14 @@ "d4b9c8e4f87051b0f49de03d0aca541a4314dea7", "support" ], + "css/css-writing-modes/reference/ch-units-vrl-001-ref.html": [ + "c7dba7049e0de1fc7140445c401a0020652d20e4", + "support" + ], + "css/css-writing-modes/reference/ch-units-vrl-005-ref.html": [ + "37e27d1ce7b86178edd901a7a3b6e49e9bfc4cb2", + "support" + ], "css/css-writing-modes/reference/full-width-001-horizontal-notref.html": [ "36494fa0d84f46a19b5181801884d63f83ed56e5", "support" @@ -517384,6 +520794,14 @@ "4f831069ddef79a30a28c1a456da041bae613d08", "support" ], + "css/css-writing-modes/reference/logical-props-001-ref.html": [ + "d1c50f9396298d44ba76acb7e068afe6644f2dc1", + "support" + ], + "css/css-writing-modes/reference/mongolian-orientation-001-ref.html": [ + "874c16042142d86bffda7489ac6f6b6f1a28ac73", + "support" + ], "css/css-writing-modes/reference/outline-inline-block-vrl-006.html": [ "ef64b57d2a9b3d2a2ee1538c64afd417d9cbadfd", "support" @@ -517404,6 +520822,14 @@ "82edfdbafded72202c8a7aa3610c42ea53884c96", "support" ], + "css/css-writing-modes/reference/svg-aliasing-001-ref.html": [ + "8156e1ec7df883cc2aef362a0d477dd3853f52d6", + "support" + ], + "css/css-writing-modes/reference/svg-aliasing-002-ref.html": [ + "cfce62c59f560e85be5438fd4668fbb92805c5be", + "support" + ], "css/css-writing-modes/reference/table-cell-001-ref.html": [ "50a1a2b101291a12d8adf890ea5b92908979b112", "support" @@ -518940,6 +522366,14 @@ "4efeb23cebb6f94719381adfc64c25dd9f39bdf3", "support" ], + "css/css-writing-modes/svg-aliasing-001.html": [ + "3b7ce1b494850551d430fa8f0ca40c343dfd2ad1", + "reftest" + ], + "css/css-writing-modes/svg-aliasing-002.html": [ + "229401305c755d8e8f8faa22b5bd9114f1037810", + "reftest" + ], "css/css-writing-modes/table-cell-001.html": [ "16d67b389404d9686f871a3664b37529ad585345", "reftest" @@ -520088,6 +523522,10 @@ "a689737bd60877e181a8a7ff27774ab383c3de0b", "testharness" ], + "css/cssom-view/elementFromPoint-dynamic-anon-box.html": [ + "6ee9a47112c9a5fe4f0c85f85ea577575790c5be", + "testharness" + ], "css/cssom-view/elementFromPoint-parameters.html": [ "0c31602268a831eae1bcd44b4a5e7b678a7ed7cb", "testharness" @@ -520177,7 +523615,7 @@ "testharness" ], "css/cssom-view/overscrollBehavior-manual.html": [ - "65cb71ca6b606dc8b0b527c58902566539e771b2", + "785f1d881e9482b84394ef9b3466e7fd9502498e", "manual" ], "css/cssom-view/resources/elementsFromPoint.js": [ @@ -520200,6 +523638,14 @@ "8f423a757bd716c9c22e82fd2f35007d05982c08", "testharness" ], + "css/cssom-view/scrollIntoView-scrollMargin.html": [ + "b8f09964bb93bc562992c454cf7779f8bfa3be62", + "testharness" + ], + "css/cssom-view/scrollIntoView-scrollPadding.html": [ + "cc6309f95e1d053aea7b1b5ac97fee219970f852", + "testharness" + ], "css/cssom-view/scrollIntoView-shadow.html": [ "3c4a18992105fd7bf19cbf29f0b6d80cb12ca98c", "testharness" @@ -520489,7 +523935,7 @@ "testharness" ], "css/cssom/MediaList.html": [ - "21d9e43514fb3a7fbf8933429242dc544224ef24", + "784bc428e8e65a0784dcf89c6e3e27305781cc72", "testharness" ], "css/cssom/MediaList2.xhtml": [ @@ -521664,6 +525110,30 @@ "6f3884860a84b9b6e7524c84626638e303a14660", "support" ], + "css/fonts/noto/NotoSansAdlam-hinted/LICENSE_OFL.txt": [ + "ec660b17dff69058c2bbf122ca85ab83b920fce7", + "support" + ], + "css/fonts/noto/NotoSansAdlam-hinted/NotoSansAdlam-Regular.ttf": [ + "dea38de8b3affb6060e50e4727682ab3eff7b0c6", + "support" + ], + "css/fonts/noto/NotoSansAdlam-hinted/README": [ + "837f8d36a2d38637c424b878c7b068930a07c377", + "support" + ], + "css/fonts/noto/NotoSansCypriot-hinted/LICENSE_OFL.txt": [ + "ec660b17dff69058c2bbf122ca85ab83b920fce7", + "support" + ], + "css/fonts/noto/NotoSansCypriot-hinted/NotoSansCypriot-Regular.ttf": [ + "12a8cdf3af7376abf50426eae30d490c8f83f13e", + "support" + ], + "css/fonts/noto/NotoSansCypriot-hinted/README": [ + "837f8d36a2d38637c424b878c7b068930a07c377", + "support" + ], "css/geometry/DOMMatrix-001.html": [ "a8cfa83e572a766b61e4eae5946e7efb62e9eab7", "testharness" @@ -521901,7 +525371,7 @@ "support" ], "css/mediaqueries/test_media_queries.html": [ - "7b0a2c7025dd0bd6aee14935760f88cd1f09c7dc", + "234627714b5f304ad7efbeaf2dea3455125f8cc4", "testharness" ], "css/motion/animation/offset-anchor-interpolation.html": [ @@ -523544,6 +527014,10 @@ "ce45f6b6f483ae52c241acff168573a0907ca031", "manual" ], + "css/selectors/hover-002-manual.html": [ + "589b8621fbe7e03d9254693eafd718cab6818bd6", + "manual" + ], "css/selectors/htaccess": [ "23f218e48d8fabcfdb4d0fba13066d2fa737fb99", "support" @@ -523744,6 +527218,22 @@ "de0d6f774f67362551ca7448d06ab6b264ecaa29", "testharness" ], + "css/selectors/invalidation/selectorText-dynamic-001.html": [ + "d9d0e67d49810d940aa5748294cd65498922a341", + "testharness" + ], + "css/selectors/invalidation/sheet-going-away-001.html": [ + "5e4ef2d6c9252874b73a54b308e86f8e50edf802", + "testharness" + ], + "css/selectors/invalidation/sheet-going-away-002-ref.html": [ + "5616ec15bb322f49c4b28761df2cfb40fdafc226", + "support" + ], + "css/selectors/invalidation/sheet-going-away-002.html": [ + "d23ac4f08cb0c70d06bfac4c4be121a8de8af48f", + "reftest" + ], "css/selectors/missing-right-token.html": [ "d961e801f7df57161cd8c7b5a4b26ae24013c3e9", "testharness" @@ -523828,6 +527318,14 @@ "601b8b8426c64717f82831e6258f8fe4188c797c", "reftest" ], + "css/selectors/selector-structural-pseudo-root-ref.html": [ + "891156fb1d86a3fb5a90ef08e276d82b9bbe15b6", + "support" + ], + "css/selectors/selector-structural-pseudo-root.html": [ + "698c4606188ada93f0262d0dbcaea21dc92fdaa3", + "reftest" + ], "css/selectors/selectors-attr-white-space-001-ref.html": [ "0b790e2cb7a6ca66c7e6c8f769b61e3197f372fb", "support" @@ -523944,6 +527442,10 @@ "a9716c222274ba868bfd06c05e28cb7762d93245", "support" ], + "css/support/alignment.css": [ + "0a5f57a816f56c3e16f992a4bbea8d50b3c6fad9", + "support" + ], "css/support/b-green.css": [ "eb78a4d12f35b4249051826ea000c53d04df80b7", "support" @@ -524293,195 +527795,195 @@ "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-001-ref.html": [ - "8b52ccf3dd5faf994d36c09ffe30ec004d9cb1c4", + "9713f6530859af812a14213c87f8edb89a698f2a", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-001.html": [ - "ec24d73cbf6cdba668189d8c2bd137c229dac6f8", + "899825bca706b46dd3c6eb1c52c6cba923498097", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-002-ref.html": [ - "1d074ed2340b54dddcb0bf143146b38b6a5867b0", + "98e0c480b8b618209b6735f6b1621a03d2b0fffb", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-002.html": [ - "54b7196f3485cee131b362cb6e50461b51ca7fa8", + "c2e3ace7a421abf380d40b1e8cd44fd664cc5cdc", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-003-ref.html": [ - "a0c9d671c38a911db1c737229bd0052c64c87c3b", + "88b26f2e01345c92a24880d7a9f7fbbcd9027ce2", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-003.html": [ - "3c49377348fcdd491da465b059bc7a1449594d48", + "ba532cbcdf4cc6f8d4193a7d5d9a23a161301345", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-004-ref.html": [ - "954e4e16c768f4e6511ea9f36db27cb0cfdcd279", + "94f80c88919bf51a7066925cb65becc1a48f37bb", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-004.html": [ - "4030e110002938fec059dbedaa2cae3733e92fb7", + "9bac0b29d2a597d60502d5a4107490b7b57b0f2b", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-005-ref.html": [ - "66be6e7b355a03c7b016d8cf1d9657f6614c96ed", + "c0bde28315c225de9d58cac61e174c8890d4d77f", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-005.html": [ - "48562937b313752c2b3a45884ff217c640025372", + "2c6f37ecfdfc69c91af0bd468261d4585dcc19b0", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-006-ref.html": [ - "27f369e3b13a2e3d8711360e48816f4c0de83b74", + "dab24a0344a5d725f6973e91c29a618c50e9be37", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-006.html": [ - "7fe77af6a0c97babf4b5caa1868326fc086046cb", + "01313c1c815b734c1fc7d3920da14618105147de", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-007-ref.html": [ - "3f5b82b530ca5b3485dc8f10cf1d826f4f4c40be", + "e3be4306bc3d159e28d20a647ba3872e37873b41", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-007.html": [ - "e6d3cec630fda70ee12b9370add7cb400fc08aad", + "7f54d98f88ddd507db62fa91e5629ad0af667444", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-008-ref.html": [ - "3684fe4ddf322273c7ef1dd4bf8ddcd6424f682b", + "01347c9dc9b4f41cca33fe6c6165abd2a2e0b8b2", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-008.html": [ - "ee38986377adee4101c5e38db121caceba130937", + "c69c04f61d0538787c5a580b0a284119c51a9f64", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-rtl-001-ref.html": [ - "a0c9d671c38a911db1c737229bd0052c64c87c3b", + "88b26f2e01345c92a24880d7a9f7fbbcd9027ce2", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-rtl-001.html": [ - "0d0790f3f6e86f9d609e66a197eef190b9625553", + "1511c4390406aaee1d475e0d42eacefdadbcc545", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-rtl-002-ref.html": [ - "ff51ca97910be8c22e360a1a0ec04958936f264c", + "4234acc4ab9864df5370718a63e3c9a652154577", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-rtl-002.html": [ - "c7df641cf92ebf3af535254176a48538a7ae5a16", + "69a909870b370655c00fe9c59a6ce3d9b0912aa7", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-vertWM-001-ref.html": [ - "7846f18c7f407527a5ea10809ace64f7da22bb7c", + "4234acc4ab9864df5370718a63e3c9a652154577", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-vertWM-001.html": [ - "85dddfee6f633856f45d9694545e93e4e14e62ec", + "3404e75e8ac495d71d30075f694cf6cbab024b56", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-vertWM-002-ref.html": [ - "0aab29903360d982a03b5a88e213053fe4d3e8de", + "88b26f2e01345c92a24880d7a9f7fbbcd9027ce2", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-vertWM-002.html": [ - "9d9889de375868a0ceaba807062d54bd06ee2bea", + "ff875738cd047091820839166ffe9d57b6196868", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-001-ref.html": [ - "c105c6a659debc68f60198be439b9de08bce6205", + "16497d629ae44cbe07b4912fbf4e7fdc43fe06f6", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-001.html": [ - "4f3256191b5ab5a5e5d503bb555a0dd55ba926d9", + "5599556b5c00c31a7bb29af37e3ff340b35f9497", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-002-ref.html": [ - "aae75439fcd25343219df77798a15073237c03cf", + "f4f3681d6e9276cf9b7f1d0d17cd83a6226a1260", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-002.html": [ - "8fe7a189919eb3eea5e4a454afc031637131b176", + "bf5b2bed0cc5437e7334f6402468010c3c286fa4", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-003-ref.html": [ - "c277a20815ea480b5b251fb9c7fbf61a56b6beb0", + "96e2a769b182ba0ef8f98c0aa838e9ff2926d9c3", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-003.html": [ - "7f542c0def2ce44a2a6b1852fecdc48cba96fc23", + "e513fc35db7e756bf3b4d9f59fdea127a2d83bce", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-004-ref.html": [ - "482a05fd478ca299dedbe55aab1054d06c4ccd8b", + "e156425b7eb36092988b23a496ffc0963f8d202d", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-004.html": [ - "49468bf033a80b3b703344c3ae86de85a1024a64", + "9cc68f88050bc6d961f247cc828cb4c2705599cf", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-005-ref.html": [ - "d5a16bde9c475fde1c981dd0b72d870ce51514d2", + "b5928da62f5ab6e91ffc4989d2c18a614ca132f1", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-005.html": [ - "490a5de29c954a9a2ae31522cd65cbcbf81cb59b", + "c6f014ea47d60e504d07e7cb42869a65274397be", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-006-ref.html": [ - "34c493815c1f61cfd8cfbc66f1c67cba5421d7aa", + "11db9b8f174845d9f4044322e343fd7dd2b5d880", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-006.html": [ - "5c4ada621f66b65ad5f2a642bfecdff3adaad1a1", + "a47e5927f3f1e50728f8bc6909073d807452fa1e", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-007-ref.html": [ - "4fe66c8392b451b81c4d0b5d409b2dffdc58d3ff", + "65795848c64b6c95f0fc90b97b2e6978f2d3faf2", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-007.html": [ - "85b0c1c877e1500b1bd13aae6f13551a4d1772fc", + "fbffd61652119f522b938c9008f68d789349b028", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-008-ref.html": [ - "be8c64ca86981da6068c2f7a53d9e7b3a136bcaa", + "5fad97f3276400c27430e267ca6db8bbd6f9599e", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-008.html": [ - "e48821f2ee77005e3037511f448d4760899c86bb", + "248b28589cbdfa81a09e999adca3c04b3d34a286", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-001-ref.html": [ - "25e532335077e76bf08d339707fe38da9c9583dd", + "919c483bc448b90371cb5a831fbc9b73585e05ff", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-001.html": [ - "c952fb3acd2c8ca2d488e0ec9fcd4e6cfac786ef", + "f3229796c1715b08d6fdd93277271841076a8dd0", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-002-ref.html": [ - "25e532335077e76bf08d339707fe38da9c9583dd", + "919c483bc448b90371cb5a831fbc9b73585e05ff", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-002.html": [ - "1116b93106728552b4cf6a1262927099464249b3", + "3820e15cb9f3cf0d47ec749a95b376257aecd99b", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-003-ref.html": [ - "d213e8429e90b18a10bb44ba7c28072ddb6342e8", + "77ed310332b1780c1790895719c34eea769aec54", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-003.html": [ - "dc9398ebe89f8032639d6b9dd588d9ddbe517070", + "ecb99352dd392798facfc79b045d574b3a2da2e5", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-004-ref.html": [ - "f59382aa47c09d092f45fe641c6e94d6c80ffa26", + "4337799472d5c48f3b059bca4a81da8906ced75a", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-004.html": [ - "3b9bc2cf2bfc0a17b7f9c2dd07f329e974ea2980", + "fb992917830986c5d69e2fd2a3577e7fb1f416b9", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-vertWM-001-ref.html": [ @@ -524501,131 +528003,131 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-vertWM-003-ref.html": [ - "6ea4cf296f552928cf1deab5cc6c55801f77d001", + "919c483bc448b90371cb5a831fbc9b73585e05ff", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-vertWM-003.html": [ - "f52c46c6ae11a0747ea276a096dabb3404a48eda", + "83ad035de537fc115b7ff49083c6a9b65f574a53", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-vertWM-004-ref.html": [ - "32b17b2deeaa78e4a39f83cf4ea660d261a12ed4", + "3938fff0596713355cb6d24113f8024c70b3f191", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-vertWM-004.html": [ - "6729650bdb872ecd35ff6403e78c00c5b0b8d838", + "9eda2e4ce737a9b252ba46934abf2df996d594f5", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-fallback-align-content-001-ref.html": [ - "7eca0097799a4d3bd26dc80c571d5cfae02cc274", + "edc1637e3d3b695f94340a8007e40898f9d0d203", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-fallback-align-content-001.html": [ - "9a39c1723564c1e6eaf4dc594d8636c689469cf8", + "69a806d6c25492430946cbe0ce31f27d89575398", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-fallback-justify-content-001-ref.html": [ - "108fa0d21d92ad91b74fa14546ad150a4e2cd26c", + "d67f5b0848d7895fc01c9e8b1ac0b0264309f4bb", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-fallback-justify-content-001.html": [ - "d97c3fa3aa541cdc2873f3bbcf12dcb329e6ffff", + "363aada8453fd216a544a6cc3a6bd8b2f8899833", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-001-ref.html": [ - "f2f0157c35512c77530d4c0db61fce7fa080549f", + "ce0e2c522c73a79607a3c137a32c61ad1451fd3a", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-001.html": [ - "d2be18b6a51cd1a37c2c67e811d5d59e26fb0230", + "189b48d46800ec01cd1fc7faf2f2729ec160e42f", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-002-ref.html": [ - "f2f0157c35512c77530d4c0db61fce7fa080549f", + "ce0e2c522c73a79607a3c137a32c61ad1451fd3a", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-002.html": [ - "7c8365cac7f65784256202082cdccccec167acd2", + "bda1553bac71b3dd5b52548d96c0da0010939920", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-003-ref.html": [ - "d35779aad17c0d30d73e883dc7f637ac66b50f0d", + "bd1d6327679db6de434bbecf1138bb78071900c2", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-003.html": [ - "77baa6782ce88946ffdebe5d553a33c89e5e9316", + "000b0afc3bae8b3bd87aef219fa89ec1798494a6", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-004-ref.html": [ - "d35779aad17c0d30d73e883dc7f637ac66b50f0d", + "bd1d6327679db6de434bbecf1138bb78071900c2", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-004.html": [ - "ccf462c5238ebb288d84ff1b9bf1f6fe7de59408", + "3b2631763e3f1e14e10551209770e5c3a631797c", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-005-ref.html": [ - "50f1e68c1cdf7f56d9de5aa9cd88ecb5f5a30c06", + "f80425579808bac0ff7a7ad4ccde3e20711ebed1", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-005.html": [ - "f5a57914912f021099f479e4546b7f19bb995a8c", + "14c2475483ff315589cd2195f2876cf29a7ff50f", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-006-ref.html": [ - "50f1e68c1cdf7f56d9de5aa9cd88ecb5f5a30c06", + "f80425579808bac0ff7a7ad4ccde3e20711ebed1", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-006.html": [ - "68c4c3a744573037e7e2000d97b7019df3a4267b", + "acba4aad860546da40ec84389f364e179d75d23f", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-007-ref.html": [ - "56059425b60c5f2ddb87021a6aec48bd69aae8ff", + "220971731c87cb83e2d5fe7e82de89674fd2e2c4", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-007.html": [ - "57037567931bfe11bd2a89e42b22b2cb70191ed1", + "98aa86b4ca3ae450dd2777260ac8972a7e3c3f17", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-008-ref.html": [ - "56059425b60c5f2ddb87021a6aec48bd69aae8ff", + "220971731c87cb83e2d5fe7e82de89674fd2e2c4", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-008.html": [ - "5690cf1a76170dc73301e50f8e85fc1fd42df6a4", + "e578f68d35c24d5f94baee33aadbbf4e12913ccd", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-rtl-001-ref.html": [ - "172884f877753a84aa35b7a9544e6ae569efee4d", + "223a3d0376d9102502efc8521f0efdf3402f8b6f", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-rtl-001.html": [ - "18ddd851c3d109ced126717003bf781891625e93", + "dfbf9f4177e5b2fe768826775156e6c7ab37c750", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-rtl-002-ref.html": [ - "8ab7c1c9349ae5ea82cefc706e286d6e7149ab52", + "3afeb370de5ae42433288ead4387cd10e9a01b27", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-rtl-002.html": [ - "40fda5105c2ad58d10584403ca1f816c5fea841b", + "3b7dee34e3a3413ecbea36d6eb3492ab675a1947", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-vertWM-001-ref.html": [ - "0f15f5462dd1b9f04ff9e4b8caf8c27926a52100", + "634cd8cf0c388c9ec996f0798040117c204435ea", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-vertWM-001.html": [ - "4a4379e46a02f6e5dac8487dafbf1cbcf51fc949", + "36514ad5abf2af1b5555a46b6e4be5942b48bae8", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-vertWM-002-ref.html": [ - "a5f2c054ca2e66e3020551f43e7a66e5fa5d88b5", + "84ecebda68be03517847e2241545371ba2940ff0", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-vertWM-002.html": [ - "0977fb588f2e1dd37c38bb7c00a5701a4892fa73", + "666e3f04868c516ed5a00fe37ef4c12106fa45e2", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-self-001-ref.html": [ @@ -524653,19 +528155,19 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-align-self-001-ref.html": [ - "981ae2a45c49f71346a4ae96c6c7592ee78d57f5", + "a13cf703442d74056b93ee4b6e21e4f8ea033fab", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-align-self-001.html": [ - "055c0fe1b05cb98cd113ccc49e2cff682a3813e3", + "214a5e6a67f2b3c1c649ff8c0ba0d326a0d7906f", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-align-self-002-ref.html": [ - "a8488a3598a1a16a33ed7d784a1595dfb0d6cd9c", + "af2a8433d7db25bda6acc643886e5d724faf123f", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-align-self-002.html": [ - "99cd4246f53bb55efac55306a5443ecc6b2d0cb1", + "e53550a5ff8c9a3df299222e6ed706d0c5586529", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-align-self-img-001-ref.html": [ @@ -524749,99 +528251,99 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-001-ref.html": [ - "ebc61b763e8ad3c809376aa7e436800e45cf4d4f", + "df4d7e713c84009826a38155db2e1feca17b87d5", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-001.html": [ - "3fe1e59ca39fa5624af76f607e756c6bac28d20a", + "24d9a60f895669b90d17ffd46874f34cf0e0a4bf", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-002-ref.html": [ - "010a452f17fcce2a5821e0b50ba2bdb62115af3b", + "3ff3c3fc34cb9b0b2f9ebf5ce50ff0561fc2caad", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-002.html": [ - "a011b5b839efdfbaf54a23eceafae3135f323ea7", + "bf34963d5516a632fceb9a0df203b41637734250", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-img-001-ref.html": [ - "35974e8e9e3606548d3fe84c64e6f28f30297c1f", + "671120ce75717e5d922aa5e50cd23bb0bb99440f", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-img-001.html": [ - "09cf8775eac24d4c01b33d8f0f9fc29a4f343b0c", + "8a7e029632f276be5672be8503a735cb93145ec1", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-img-002-ref.html": [ - "590adc398556a887cc05f3f37bff3557d195a81c", + "0d6b49d619c70c2c3812763c0515e281c68c1167", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-img-002.html": [ - "c2a0549ec642d8785e18c0d254b44824f0dc0bdc", + "258958b3a4ef48ccc7ff2ff727b9a7b103eaad79", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-rtl-001-ref.html": [ - "8c5574d316afff4c6763d5752861d30d870b4897", + "1676f2c62c37502b918a8f07574e29bb582bf434", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-rtl-001.html": [ - "67b0ca09d6550bfee48fced29085eaa2d74afea4", + "10264b8fd4f45e54d41f5529d2f2916c1e0e5d31", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-rtl-002-ref.html": [ - "4487634fc067804526dcc8c80840db66f8510843", + "f98979fb7f26d6d5c5e52db6b3777f0dd520cac8", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-rtl-002.html": [ - "1eace13a5914ab6e0a295150e0c176108af837f4", + "afce74c97255827757f29b4d19fd987248653a13", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-rtl-003-ref.html": [ - "7a6a10cc35ad9d6d0f69d2970456700d20a0f8b8", + "8817d61abda7c77afc608798aa1ae628638cec29", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-rtl-003.html": [ - "1badba0c31003af31a4f949c73163e9ef08d670c", + "0d9e70415f27a4d4f1447a2d6af9544cad92c024", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-rtl-004-ref.html": [ - "60140d2dad0b5084903d37415bc95854e60b9adf", + "151e078eb255e7c77822701f5c79804b2afcbebf", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-rtl-004.html": [ - "453fcaff8730433686a71aeac0268eeecaadabb8", + "9637f0d340d72ee5edea76e2bed4e6182cbb0c53", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-vertWM-001-ref.html": [ - "d7ad2e115df3e1f89ff603c6e015bc66dff0140f", + "8ef906b99dfab87396ea783505dd774f961cd14d", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-vertWM-001.html": [ - "c7fe198018916bf65e3aa552af24b2f31b55374c", + "60c2ed16e28326f3e3f1b39b092b931c12ef93b0", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-vertWM-002-ref.html": [ - "d7ad2e115df3e1f89ff603c6e015bc66dff0140f", + "8ef906b99dfab87396ea783505dd774f961cd14d", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-vertWM-002.html": [ - "f05e0fe981e1973c70ee7eee943b9e5bf756d59e", + "56533e4323a6326e300e432afddbd4afc790d754", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-vertWM-003-ref.html": [ - "e0c0d19423366fc808a21af30928f5647c5715e6", + "32036492ab25b6deb98775c58491ae492be57179", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-vertWM-003.html": [ - "6fcbb2f5218c8b1dd2c2835482d36e25f4403a7b", + "6f5954ff299e9faa9bd80753741946e46e52da72", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-vertWM-004-ref.html": [ - "e0c0d19423366fc808a21af30928f5647c5715e6", + "32036492ab25b6deb98775c58491ae492be57179", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/grid-abspos-staticpos-justify-self-vertWM-004.html": [ - "6e33ad8a2bd85ad27e3d4ac0ac18c4f2490417a8", + "f486a79118363126e2b1d65434b2de0ee59bbfc5", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/align3/reftest.list": [ @@ -525857,27 +529359,27 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-horiz-001-ref.xhtml": [ - "c97203afc41105153190525ab7cfdc20a2af1c2e", + "812712adfc932b89afaae066b464562f4bddf7a9", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-horiz-001a.xhtml": [ - "9fe60aa20e99072abe9144075f65d73d38be8947", + "4d8ab12dac9a3c051599ec4ea7116171e401a9e6", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-horiz-001b.xhtml": [ - "b0c455ebd9512f7a241a1a6521e75663c301c75b", + "f260463a6f544434023d5a8a64c220df985a9dba", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-vert-001-ref.xhtml": [ - "d8fcb4f972f7a7d9d0de000fe94dc112a7b552b5", + "d5556cdd75a8778735165fbb6eca5b566e5a66ce", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-vert-001a.xhtml": [ - "8fd364088f61e3002fb158d04fe9c5de2baca50a", + "e069306468a1fe14c140a74d1b84afd5e362e3f1", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-content-vert-001b.xhtml": [ - "2010263599e331bcfccb4a1e2a2fe9adbd0680d3", + "099d697f926babb60493aa1cdeba479a956747a1", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-items-center-nested-001-ref.html": [ @@ -525949,15 +529451,15 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-block.xhtml": [ - "6fe8269816908878766c10a19192f78bd765badf", + "1b83848390c39cafbe4615b542cbbb80d9e514fa", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-ref.xhtml": [ - "0e3471d7a71402fc36d677ca37fb6818e437f3b0", + "2525504b7777a4dd5913bcf33c2426e29f1aad09", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-001-table.xhtml": [ - "af0587ba40578f0dc683a2a583cef77d3dee9b89", + "5b8fbed4af2464d58c8c7edfdefc4573df7bc417", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-horiz-002-ref.xhtml": [ @@ -526009,11 +529511,11 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-vert-001-ref.xhtml": [ - "de5df5cec5d32d6ed4fb7a2147febe552a31783d", + "292613649b06e82fbab28b37bd307dcdd2b83a54", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-vert-001.xhtml": [ - "d0fa07b6d6e9ecabac29b0da23feecc1a7d89e4f", + "9e136582396f0ccf961da19e46dd097c8b167e92", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-vert-002-ref.xhtml": [ @@ -526041,11 +529543,11 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-vert-rtl-001-ref.xhtml": [ - "97089c8f2dbf0f6f3046f4c4817671ac948d3510", + "f81bf68ea31bef16d00c46ac0550d2b9d66154bb", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-vert-rtl-001.xhtml": [ - "76077b866854bedc49881688bd01328c2f0f86f8", + "1688f321b6a2a3fad4a9396126768fda65f8c375", "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-align-self-vert-rtl-002-ref.xhtml": [ @@ -526840,6 +530342,14 @@ "6092f9269a40b5d763b3e71cb235d917c418ed38", "reftest" ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-003-ref.html": [ + "8ce06ed245c0bb9d391c751ad73a8bdc9c6934ab", + "support" + ], + "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-paint-ordering-003.html": [ + "3f3c416f2f966ea2208f89a0e90b26385ee35694", + "reftest" + ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-root-node-001-ref.html": [ "b06b801d20ebf9776648cb522ec427a1676e7490", "support" @@ -527049,7 +530559,7 @@ "reftest" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/reftest.list": [ - "a0d4a43edbe193d5e2cf2dc949b3e3ccf5726263", + "911d2c2dddc66574c36cb7ca58ed31af20618290", "support" ], "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/support/Ahem.ttf": [ @@ -532304,8 +535814,16 @@ "d1661ab1734f7d1a252030aeac7e9842a7a4cb3b", "testharness" ], + "custom-elements/Document-createElement-svg.svg": [ + "9af8f2dc7778feeea4fa8e557d7885b10d325dea", + "testharness" + ], "custom-elements/Document-createElement.html": [ - "074c9f703cc7feb1dfc3d07aedd08460bd591d42", + "14960ee9498f6ff23c1c94d3351a8ef383e60067", + "testharness" + ], + "custom-elements/Document-createElementNS.html": [ + "04cd97839e98c6082f67740dbcfc7588e2b251b9", "testharness" ], "custom-elements/HTMLElement-constructor.html": [ @@ -532321,7 +535839,11 @@ "testharness" ], "custom-elements/attribute-changed-callback.html": [ - "1ad26231aa638a0e0f9b76d77bdd93a3712dda98", + "320fb2bb26e7495d0829c39c113df3ea7ec1f4ef", + "testharness" + ], + "custom-elements/builtin-coverage.html": [ + "9163c06e2bf06b67e5ddf16a6b6d95ca7d64fb4d", "testharness" ], "custom-elements/connected-callbacks.html": [ @@ -532364,6 +535886,10 @@ "dc0ca4a066d9a05362a81b263594965763919e46", "testharness" ], + "custom-elements/parser/parser-constructs-custom-elements-with-is.html": [ + "17145d44113ea88688060c6cfd10d162cd97e28b", + "testharness" + ], "custom-elements/parser/parser-constructs-custom-elements.html": [ "228d4a90d57dc942692becc6f126ec9130b3a4e0", "testharness" @@ -532373,7 +535899,7 @@ "testharness" ], "custom-elements/parser/parser-sets-attributes-and-children.html": [ - "422bd43f10b48f0450b20fd4b0de046d465bec38", + "8049449173e4082b2f4ccadfe552abadadc0834a", "testharness" ], "custom-elements/parser/parser-uses-constructed-element.html": [ @@ -532513,7 +536039,7 @@ "testharness" ], "custom-elements/upgrading/Node-cloneNode.html": [ - "cc121ea56de1b8e1074062b5dda69f57e2add665", + "264a2631a79370bce8392657ba52c8b0c949b7e1", "testharness" ], "custom-elements/upgrading/upgrading-enqueue-reactions.html": [ @@ -532524,6 +536050,10 @@ "2ec52a6baa7490478ec61e72bf89b2ec09d453b5", "testharness" ], + "device-memory/device-memory.https.any.js": [ + "4e746987c6580c6ff388f1512a02cc6fe33393ea", + "testharness" + ], "docs/.gitignore": [ "e74984773578df84decce0bfd0db831220a2b008", "support" @@ -534693,7 +538223,7 @@ "support" ], "editing/data/insertparagraph.js": [ - "7e5061611c18e53d67329ebd32bc078bcce4c73d", + "b6e1c396986b88bb51befc9ea46eb511e25e8c71", "support" ], "editing/data/inserttext.js": [ @@ -537288,6 +540818,34 @@ "4239ec4ef240e199f15a38145d478d2c0aa43ad2", "support" ], + "feature-policy/experimental-features/resources/feature-policy-image.html": [ + "7ac7a5803b60a4f95b454aa44e0a79f363cffade", + "support" + ], + "feature-policy/experimental-features/resources/image.jpg": [ + "8edf07742134d02b486ee8bdb5fa8e9043875183", + "support" + ], + "feature-policy/experimental-features/resources/image.png": [ + "a2f7334bd0884f51ce49f529a745a343bdb44a1d", + "support" + ], + "feature-policy/experimental-features/resources/image.svg": [ + "39f716f4bc22283fc444ea0b3a807ae426e2aadf", + "support" + ], + "feature-policy/experimental-features/resources/video.ogv": [ + "7c6d80135c0688eb5ef5e79351c8ebbd24cb7d77", + "support" + ], + "feature-policy/experimental-features/unsized-image.tentative.https.sub.html": [ + "ac063a3e3084a9416a272bbac413016124e5289f", + "testharness" + ], + "feature-policy/experimental-features/unsized-image.tentative.https.sub.html.headers": [ + "2ae1da8e026e63625a6168b842303cc156963ced", + "support" + ], "feature-policy/payment-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [ "22d155755cd7aaff8a1c40c597468066f01eb13b", "testharness" @@ -538197,7 +541755,7 @@ "testharness" ], "fetch/api/response/response-init-002.html": [ - "9806050696657f48e609bbc943ba15a78d6464d1", + "5b87fa0d008f633d73bd87ab1755eee719b104cc", "testharness" ], "fetch/api/response/response-static-error.html": [ @@ -538236,6 +541794,26 @@ "aba9a9168c083a18a85336948c1ba72ca827562f", "testharness" ], + "fetch/data-urls/README.md": [ + "83d54a0532dd87ab1fa9f5f9b7e01d9a43d91eae", + "support" + ], + "fetch/data-urls/base64.any.js": [ + "ba4acd05372765d0fb03e89f13186e73467db58c", + "testharness" + ], + "fetch/data-urls/processing.any.js": [ + "7ba48c1ab609fd739e5fcd594a93d237e4fc326b", + "testharness" + ], + "fetch/data-urls/resources/base64.json": [ + "8079b52c59420f924df9dfb7d99d1ac49265a315", + "support" + ], + "fetch/data-urls/resources/data-urls.json": [ + "8f2ea63fb10ffe403125fb01b0afb848ed7ccb28", + "support" + ], "fetch/http-cache/304-update.html": [ "2571df43eb57ecbd29f55c2fc57b16f227001787", "testharness" @@ -538913,7 +542491,7 @@ "support" ], "generic-sensor/generic-sensor-tests.js": [ - "22c64a2145caa9eeaf4e53243dc971d832a478e0", + "0f1cea2c0d3f38220cbfdbe4f47d713214987cbd", "support" ], "generic-sensor/idlharness.https.html": [ @@ -539032,6 +542610,34 @@ "ea9edf12752af0a97cd9fe825ae927bd07090a56", "testharness" ], + "graphics-aam/OWNERS": [ + "3a6002295ea2893ba74763e46965bd2d1291d55b", + "support" + ], + "graphics-aam/graphics-document_on_html_element-manual.html": [ + "933fcb47c29bb5e119326147266457231dabf810", + "manual" + ], + "graphics-aam/graphics-document_on_svg_element-manual.html": [ + "126688d4b899c2b718914a9e7454f4ff14e21ae3", + "manual" + ], + "graphics-aam/graphics-object_on_html_element-manual.html": [ + "5fef647bd9e1cfed38467ca790b8796ef9d58bbe", + "manual" + ], + "graphics-aam/graphics-object_on_svg_element-manual.html": [ + "ae94b8f962584ba8afa6ccb40c992a597bb9d9af", + "manual" + ], + "graphics-aam/graphics-symbol_on_html_element-manual.html": [ + "be301a3a71514708c547fa033eab0271367a3fb9", + "manual" + ], + "graphics-aam/graphics-symbol_on_svg_element-manual.html": [ + "52b2e48333492373708b86cf558e578b04ac5977", + "manual" + ], "gyroscope/Gyroscope-disabled-by-feature-policy.https.html": [ "bc6f85cb3506d3e3e062eef43dca88bf3a4ebe89", "testharness" @@ -539820,6 +543426,10 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], + "html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html": [ + "ccf7d69d5d7fe04242eb63db86a04458cb979b87", + "testharness" + ], "html/browsers/browsing-the-web/read-media/pageload-image.html": [ "b6710a9c29c09b52db31c9379e933649982dfe09", "testharness" @@ -539865,7 +543475,7 @@ "testharness" ], "html/browsers/browsing-the-web/scroll-to-fragid/003.html": [ - "5c21b741294792396c0bde318ed7fcbe9a917fde", + "0d1a543f6c7a321f3037a7a9b9f9aea2c7293167", "testharness" ], "html/browsers/browsing-the-web/scroll-to-fragid/004.html": [ @@ -539901,7 +543511,7 @@ "testharness" ], "html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html": [ - "8de758988400b4b1acad6bb4c94069b4d0167c20", + "9bc91bc9bb368e8bf42810ed8aed936a6c9d581a", "testharness" ], "html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-id-top.html": [ @@ -541961,7 +545571,7 @@ "support" ], "html/dom/documents/dom-tree-accessors/Document.body.html": [ - "a9c8feb21f69d7a1c4824fa3dab73a7ae45dfd8f", + "4bb3bceaa3d70b19ee60624ee19251a4f36924d7", "testharness" ], "html/dom/documents/dom-tree-accessors/Document.currentScript.html": [ @@ -543625,7 +547235,7 @@ "testharness" ], "html/dom/usvstring-reflection.html": [ - "a48e32b268a8117ed803c8ede806a879e1556d76", + "33a8ab2735650368c7cdc38226cb84be2dbbee85", "testharness" ], "html/editing/.gitkeep": [ @@ -547496,6 +551106,10 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], + "html/editing/editing-0/autocapitalization/autocapitalize.html": [ + "95e7ddabc1f76b7a1577591c285f28b06da441c9", + "testharness" + ], "html/editing/editing-0/best-practices-for-in-page-editors/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -550237,7 +553851,7 @@ "testharness" ], "html/semantics/embedded-content/media-elements/mime-types/canPlayType.html": [ - "960d7daccac83f48f553edb4d32f1b5919f67dcc", + "06c4d54aa102c108a7e51e425933eb2cfb97b920", "testharness" ], "html/semantics/embedded-content/media-elements/networkState_during_loadstart.html": [ @@ -550904,6 +554518,22 @@ "eeab6b02e728aea21878cf72664929766be057b7", "testharness" ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added-ref.html": [ + "93575c87d29ce6637a976f01d81edf15051d7c79", + "support" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added.html": [ + "063fae44970221248485c887a861dd695dad9ae5", + "reftest" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed-ref.html": [ + "eac59788fa5c75d30cdc6a2bb6196ee3b13c11d3", + "support" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html": [ + "bd59e65de7e465c469e00d81cfb9e568da72e9c1", + "reftest" + ], "html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-empty-cue.html": [ "688c592e8fc4b4dbc2d7d6ea16e17380c13f440a", "testharness" @@ -551144,6 +554774,14 @@ "baa44683fe0d00e691f536309a7772347301d57a", "testharness" ], + "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines-ref.html": [ + "229912bc6439e9a83adb0793d2c7e97b67ef2e5f", + "support" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines.html": [ + "f7befc87f84534b206e72ecca9c2f35c27833786", + "reftest" + ], "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-positioning.html": [ "852584f301e1ab52359e3344120149d65a35d5f7", "testharness" @@ -551168,6 +554806,14 @@ "c42b3e45318e167bf00edf77528d56e2d107d5e8", "testharness" ], + "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end-ref.html": [ + "2c37fbbd1a8f2b28de5f10363565d122a6c36916", + "support" + ], + "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end.html": [ + "099a220edda883f720e874c4b06714cdb70d34cd", + "reftest" + ], "html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-unsupported-markup.html": [ "c43ab0c10e1de3af01f6137c044c73cfcbc6d339", "testharness" @@ -554196,6 +557842,10 @@ "6426b10821b4af9a794c52940a08afd144ff1730", "support" ], + "html/semantics/rellist-feature-detection.html": [ + "382371297d71a43de804453a6f40b9d63e08ee3f", + "testharness" + ], "html/semantics/scripting-1/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -555440,6 +559090,10 @@ "15b0b32d86bc6411b29c5d978db71053c00a1d65", "testharness" ], + "html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html": [ + "790fc3e9e9b9661da1e88d536e50f540792ee729", + "testharness" + ], "html/semantics/scripting-1/the-script-element/module/instantiation-error-1.html": [ "b48335aa61dc13c34d2a77806f20663e2156bc6f", "testharness" @@ -555581,7 +559235,7 @@ "testharness" ], "html/semantics/scripting-1/the-script-element/module/load-error-events-inline.html": [ - "9b35d8d7ba6bb4826274c9570056cc962660d715", + "bbdfd11cfc7e52748f07d09ebe7cf6782ad5e782", "testharness" ], "html/semantics/scripting-1/the-script-element/module/load-error-events.html": [ @@ -555597,7 +559251,7 @@ "support" ], "html/semantics/scripting-1/the-script-element/module/module-in-xhtml.xhtml": [ - "32a4a4db2a5325b909078c73f76ab51085e66c5a", + "4b41e3e07ff72b0f181b0dd3a6c1aab40a01da0c", "testharness" ], "html/semantics/scripting-1/the-script-element/module/module-vs-script-1.html": [ @@ -555656,6 +559310,10 @@ "f09db3d2acdf3aba3fc8c67b2f089a0ba506c799", "support" ], + "html/semantics/scripting-1/the-script-element/module/resources/fast-module.js": [ + "218ea0b166fa79df83ee7ac7aff3bca8437b44aa", + "support" + ], "html/semantics/scripting-1/the-script-element/module/resources/import-non-utf8-with-charset-header.js": [ "5ff227dc83335d8a3e8da0161993c1de239ee7f8", "support" @@ -555700,6 +559358,10 @@ "a148d34314c2734fd49bf69d201006618fdac78f", "support" ], + "html/semantics/scripting-1/the-script-element/module/resources/slow-module.js": [ + "6a68189c41bb8a69fc0468bb048a50f8b8961101", + "support" + ], "html/semantics/scripting-1/the-script-element/module/script-for-event.html": [ "c225684e0c7d09f9628aab589c8673b140994243", "testharness" @@ -556520,10 +560182,6 @@ "d6cf92ac34d83cdd6357d516daeb87108933f8ed", "testharness" ], - "html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html": [ - "aff1352988cb70e52cff99e1fde379a807dd6984", - "testharness" - ], "html/semantics/text-level-semantics/the-a-element/resources/a-download-404.html": [ "f703d9a7ce1e09e0c9ef9ea2bd2cd2b318613f6d", "support" @@ -556536,10 +560194,6 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], - "html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html": [ - "d51356778b9a9e87e79c33b64ea9cf31a091cb07", - "testharness" - ], "html/semantics/text-level-semantics/the-b-element/.gitkeep": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -557549,7 +561203,7 @@ "support" ], "html/webappapis/atob/base64.html": [ - "5ee9005c14491a0c33f3fdba4771a8a491f43d8c", + "d720c251750e32d5ba6a76897439128a0eaa8479", "testharness" ], "html/webappapis/dynamic-markup-insertion/opening-the-input-stream/origin-check-in-document-open-basic.html": [ @@ -558133,9 +561787,13 @@ "testharness" ], "http/resources/securedimage.py": [ - "b03f45c4dad3a9cd0f0fb67a99a79be3ba64b199", + "d5aa250e8cba8384f47fca2c559aa6a310dff457", "support" ], + "http/tests/bluetooth/https/requestDevice/cross-origin-iframe.sub.https.html": [ + "dc9df7886d4a020b1853d7a54d67a8b1249c56c7", + "testharness" + ], "imagebitmap-renderingcontext/bitmaprenderer-as-imagesource.html": [ "f80d1496329c64643d2b40e478779929de20c499", "testharness" @@ -558268,6 +561926,10 @@ "c0edf6205f84cd5d03ef85ad6db7824d7f70b345", "support" ], + "images/pattern.svg": [ + "a904f9f7aec35cda20b738ba665c7cf4f38fd339", + "support" + ], "images/red-16x16.png": [ "0d6c6847bafe93c1e1d617a64bd1b432700f7f3f", "support" @@ -558517,7 +562179,7 @@ "support" ], "interfaces/html.idl": [ - "5eead97f7b1cc2e511f268cb5a40011a33519bf0", + "84ed07588763a87bffbe191bf440e820f9d130ec", "support" ], "interfaces/magnetometer.idl": [ @@ -558548,6 +562210,10 @@ "fc724b70bc1e1d30e538ee5154a99d4871414302", "support" ], + "interfaces/screen-orientation.idl": [ + "b280c2a72795d4abd55a361a0afd8adce70562dc", + "support" + ], "interfaces/touchevents.idl": [ "6ce4f601cda6cd3b99a300e0b28d2886647f06d3", "support" @@ -559429,7 +563095,7 @@ "testharness" ], "media-source/mediasource-addsourcebuffer.html": [ - "c65d474f5279b3238dccf50415b5995b9d6b80ca", + "34ba3bf54e410c5e5396ef69f256c1e3853dfe17", "testharness" ], "media-source/mediasource-append-buffer.html": [ @@ -559549,7 +563215,7 @@ "testharness" ], "media-source/mediasource-is-type-supported.html": [ - "3c22e7a06768ab1a942349f24b2e2f3240ce560b", + "84265f4f1db7429bf7ff0807c5ebddddc25d370c", "testharness" ], "media-source/mediasource-liveseekable.html": [ @@ -559965,7 +563631,7 @@ "testharness" ], "mediacapture-streams/MediaDevices-IDL-enumerateDevices.html": [ - "0bebfb5c5a6204257f30d03fb16e4a35b8943814", + "6f35e6cfb8409803c64ed7511f9f1dd5c1c538ac", "testharness" ], "mediacapture-streams/MediaDevices-enumerateDevices.https.html": [ @@ -561696,10 +565362,6 @@ "b9d933d6a33eabc0b9c9f856c91b802677fa1094", "testharness" ], - "navigator/device-memory.https.any.js": [ - "4e746987c6580c6ff388f1512a02cc6fe33393ea", - "testharness" - ], "netinfo/netinfo-basics.html": [ "972b4048bbb74e1489329ae48759b587b9ad3800", "testharness" @@ -568089,7 +571751,7 @@ "support" ], "payment-request/OWNERS": [ - "a2937112040fe45b12ba87b6fb75bd9be6aab6ad", + "a13f63124c56c014a0d88d299cbaabe565c567cf", "support" ], "payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html": [ @@ -568213,7 +571875,7 @@ "testharness" ], "payment-request/payment-request-id-attribute.https.html": [ - "9a8a1ffc3cd7ba3c29380c4a9962bd17f35087c3", + "34dd889e8bc906eb9a99c192e547fab831099f7c", "testharness" ], "payment-request/payment-request-not-exposed.https.worker.js": [ @@ -568317,7 +571979,7 @@ "testharness" ], "performance-timeline/idlharness.html": [ - "30e6893af2cda301efb45fa7cfe16cec04701445", + "d6ce8e5c21b42843caea8e61c1637d75c2e51d64", "testharness" ], "performance-timeline/performanceentry-tojson.html": [ @@ -569133,7 +572795,7 @@ "manual" ], "presentation-api/receiving-ua/PresentationReceiver_create-manual.https.html": [ - "1830e4420c668b77dbd835912f518920743c5592", + "a1ca78e036505bae01d207a0810e84c465586bd2", "manual" ], "presentation-api/receiving-ua/cache.txt": [ @@ -569173,11 +572835,11 @@ "support" ], "presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua.html": [ - "84f37932fc911d5dbf692b42569b564ebf9b8e7d", + "68f0a929fa97a9dce8566237e538f769860c14fe", "support" ], "presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua_child.html": [ - "9320e6d42c5b2856934ff1d80d89276a010b48f1", + "d0a87a3ca4dbb9bb706133ee3ca638be929e56d4", "support" ], "presentation-api/receiving-ua/support/PresentationReceiver_unreached_receiving-ua.html": [ @@ -569204,30 +572866,30 @@ "f64f2ab5d0afa93e5adfa327e478936c0e295823", "support" ], - "proximity/DeviceProximityEvent_tests.html": [ - "95de85f7e9e74e9bdcc0f0dceefa5f099dd48191", - "testharness" - ], - "proximity/DeviceProximityEvent_tests.js": [ - "4f598faf998653343ae1929fdb1c2a13fa82422d", - "support" - ], "proximity/OWNERS": [ "8de2a4a7f850b2d52ab3102b585fe38828b6d08d", "support" ], - "proximity/UserProximityEvent_tests.html": [ - "13008fe761a4569792af6bbe4a29ce2fa98fae0d", + "proximity/ProximitySensor.https.html": [ + "6920751273c1220f40b5046be7ce7254a01ce72e", "testharness" ], - "proximity/UserProximityEvent_tests.js": [ - "ba9b710aa4213f10edc7131a3879821f38f2ef19", - "support" + "proximity/ProximitySensor_insecure_context.html": [ + "00b6ec75ae65d4ee7144e9362ccc89a3b3adb856", + "testharness" + ], + "proximity/ProximitySensor_onerror-manual.https.html": [ + "522cdac324519313d77aa2dd417d486f15b2511f", + "manual" ], "proximity/idlharness.https.html": [ "25c63ad4caa047d13ef9be748d6c880df4193b0d", "testharness" ], + "quirks/OWNERS": [ + "3a52efa37cb05c353bb8ce78146c42db6a238b74", + "support" + ], "quirks/active-and-hover-manual.html": [ "b82c3af04387a133935d1eed50be37fdc34474b2", "manual" @@ -576933,7 +580595,7 @@ "testharness" ], "resource-timing/resource_initiator_types.html": [ - "b04269a158aadf5a178decc306481c15f2c310b0", + "70ab5e0b5d8d684fc420e9242a273e948edbb1ba", "testharness" ], "resource-timing/resource_memory_cached.sub.html": [ @@ -576956,6 +580618,10 @@ "072eb2cd05a0711abc498f4180738aef7d1bf282", "testharness" ], + "resource-timing/resource_timing.worker.js": [ + "352213c5bc7533afa10003da93dfb399a101c224", + "testharness" + ], "resource-timing/resources/TAOResponse.py": [ "9e8051a2ff8fff72b36ed1cecb61f9e7bba29071", "support" @@ -576972,6 +580638,10 @@ "99949c515749e66f471c3589ee7a0ef518aaccb5", "support" ], + "resource-timing/resources/empty.js": [ + "51e0050cf1bdeb051d0d7ab6f23a7a2173cb40db", + "support" + ], "resource-timing/resources/empty_script.js": [ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" @@ -577092,6 +580762,10 @@ "516c041687b10ee09daae6695437013dd622c1a6", "support" ], + "screen-orientation/interfaces.html": [ + "d54475008731fafd00c3cae73f11eac94dba0883", + "testharness" + ], "screen-orientation/lock-bad-argument.html": [ "4d06c44e347ae7326e928ed0fd09b8ae3991e11b", "testharness" @@ -577112,10 +580786,6 @@ "b2c9679f11ebae5968c063bfb2449edfae46fc08", "testharness" ], - "screen-orientation/orientation-api.html": [ - "44225c2493c6ac472a9f2d4b871ee17368cf02be", - "testharness" - ], "screen-orientation/orientation-reading.html": [ "863ce2783be30b5482733cb8cc31201d7f272128", "testharness" @@ -577129,7 +580799,7 @@ "support" ], "screen-orientation/resources/sandboxed-iframe-locking.html": [ - "a900654e798241fb52ea214e90d25c272494e058", + "27c3eb23f9931697d65c64a2c7a46be77f8961ee", "support" ], "secure-contexts/basic-dedicated-worker.html": [ @@ -577380,6 +581050,10 @@ "01ae6e757d428800555012783e290ebba575bcab", "testharness" ], + "server-timing/cross_origin.html": [ + "74333db517babacbb84bb20c91ccfc8b2627b934", + "testharness" + ], "server-timing/resources/blue.png": [ "7de5cdb5ad04ac365430b3b5f5ba01d2ba57ea23", "support" @@ -578081,7 +581755,7 @@ "support" ], "service-workers/OWNERS": [ - "84acd30c6a2c1cea23afd9f046ee5c34ae885828", + "153554b1fb793acd7a005c50b12678305e02014a", "support" ], "service-workers/cache-storage/OWNERS": [ @@ -578377,7 +582051,7 @@ "testharness" ], "service-workers/service-worker/about-blank-replacement.https.html": [ - "345259908d040e4f5d810ae7089dab8a8c909b0a", + "d2cc0fc99820308096d549d892962fe10b19f0ae", "testharness" ], "service-workers/service-worker/activate-event-after-install-state-change.https.html": [ @@ -578496,12 +582170,20 @@ "401235c18e1594c7248b22eb6881d54801de9809", "testharness" ], - "service-workers/service-worker/fetch-canvas-tainting-cache.https.html": [ - "b3f8375bc412c99099ac886673fd80f6cb0a312b", + "service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html": [ + "a9a3c252cb40c38f3e53f577d35486f597c3f73c", "testharness" ], - "service-workers/service-worker/fetch-canvas-tainting.https.html": [ - "9c2e160f95d2915a961bd7da840ac53779c9387d", + "service-workers/service-worker/fetch-canvas-tainting-image.https.html": [ + "189e24f1aa5768d2bb75453900826843e0ab306b", + "testharness" + ], + "service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html": [ + "68deaada4bc6996777980c0b0b69bf9da4689eb4", + "testharness" + ], + "service-workers/service-worker/fetch-canvas-tainting-video.https.html": [ + "54838009a0f9d724f0088adab56173526597385b", "testharness" ], "service-workers/service-worker/fetch-cors-exposed-header-names.https.html": [ @@ -578573,7 +582255,7 @@ "testharness" ], "service-workers/service-worker/fetch-event.https.html": [ - "98712ceed8cd6ea7514bf3b2a5e51a3670cd0a4d", + "9d365e1960c873a48cf5378cda7615cbef49f5cd", "testharness" ], "service-workers/service-worker/fetch-frame-resource.https.html": [ @@ -578633,7 +582315,7 @@ "testharness" ], "service-workers/service-worker/fetch-response-taint.https.html": [ - "217383b4dddcc6f984c4cc7cd5f99e1f9b86cdd1", + "154a52255d0aae9a99879389afba6214b803b08d", "testharness" ], "service-workers/service-worker/fetch-response-xhr.https.html": [ @@ -578704,6 +582386,10 @@ "3c75caa66d3906602d10b07ff22e7d0f210cfee9", "testharness" ], + "service-workers/service-worker/local-url-inherit-controller.https.html": [ + "e2e8258f24860cb93b71b4bb27f618b7740756bd", + "testharness" + ], "service-workers/service-worker/mime-sniffing.https.html": [ "d61a859a111dea758efb91480817fa1a029c152b", "testharness" @@ -578984,6 +582670,14 @@ "567d0a7de3ef54adaa8339bb04632a2ecfcc57a5", "support" ], + "service-workers/service-worker/resources/about-blank-replacement-blank-dynamic-nested-frame.html": [ + "bfd2c8e7acb010cd7b5a0076a9138d8584e5efab", + "support" + ], + "service-workers/service-worker/resources/about-blank-replacement-blank-nested-frame.html": [ + "79cb319dbdbae7efb9abf3405c2bc76ad9f0bc0f", + "support" + ], "service-workers/service-worker/resources/about-blank-replacement-frame.py": [ "2f22a4c92cfb7c7e8cfbe6f168872c2f5875867d", "support" @@ -578996,6 +582690,10 @@ "498a08b652ec0d867e8d2e173be954f69354a208", "support" ], + "service-workers/service-worker/resources/about-blank-replacement-srcdoc-nested-frame.html": [ + "6a0d88da977057eb365dfc8bfb531558d7a1bd4a", + "support" + ], "service-workers/service-worker/resources/about-blank-replacement-uncontrolled-nested-frame.html": [ "ab2ce3693bbc40943b7390c8d76f3601f52410ca", "support" @@ -579101,7 +582799,7 @@ "support" ], "service-workers/service-worker/resources/clients-get-worker.js": [ - "bc72471e16df1507a2cebd4c32f7f995299ebd4e", + "06ab101997ce13da6d81645661b4a0b5281c5c1d", "support" ], "service-workers/service-worker/resources/clients-matchall-client-types-dedicated-worker.js": [ @@ -579144,6 +582842,10 @@ "33ab5639bfd8e7b95eb1d8d0b87781d4ffea4d5d", "support" ], + "service-workers/service-worker/resources/echo-content.py": [ + "d22a9fe2b426436a8e4901d82ca68833eeb905b3", + "support" + ], "service-workers/service-worker/resources/echo-message-to-source-worker.js": [ "760b04aa2e36f55cfdbea0871a7424f787734a6e", "support" @@ -579189,11 +582891,15 @@ "support" ], "service-workers/service-worker/resources/fetch-access-control.py": [ - "e612c0f7457c8d15ff7d0e2515d8e967a8bb81b5", + "be1cb7ce3d6346a98d35a6c19d7a3bf656f9373b", "support" ], "service-workers/service-worker/resources/fetch-canvas-tainting-iframe.html": [ - "aee62d5b6ee22664c493036c879ed8d530b5ba1d", + "9fc63a38bee0e0368bec3c7c6d1185d72c3bc752", + "support" + ], + "service-workers/service-worker/resources/fetch-canvas-tainting-tests.js": [ + "2119442a255d9544a2642be58f16a1b404c41c40", "support" ], "service-workers/service-worker/resources/fetch-cors-exposed-header-names-worker.js": [ @@ -579397,7 +583103,7 @@ "support" ], "service-workers/service-worker/resources/fetch-rewrite-worker.js": [ - "e390cdc4fa2324db03069193e2b049dde82fbc2d", + "27390f173dd2ac0720b58184484c667122944529", "support" ], "service-workers/service-worker/resources/fetch-waits-for-activate-worker.js": [ @@ -579500,6 +583206,14 @@ "7ef9421050590733bab9b7c1d0d1b8695b5cb920", "support" ], + "service-workers/service-worker/resources/local-url-inherit-controller-frame.html": [ + "12822899ad84cef80d4f67cb33475a93ca1d56ed", + "support" + ], + "service-workers/service-worker/resources/local-url-inherit-controller-worker.js": [ + "7a74ae709c072750cf0639f78bf9a0ac4f16f50b", + "support" + ], "service-workers/service-worker/resources/malformed-worker.py": [ "a9f19c8f8f6908c4a4732bbd0f6b2f3d19401909", "support" @@ -579937,7 +583651,7 @@ "testharness" ], "service-workers/service-worker/unregister-then-register-new-script.https.html": [ - "43964791edbb2b5cd3b3ed27b600e78412902240", + "ee8d7cd4e47cdb9bcf2b39c911593bc671df914d", "testharness" ], "service-workers/service-worker/unregister-then-register.https.html": [ @@ -579985,7 +583699,7 @@ "testharness" ], "service-workers/service-worker/worker-interception.https.html": [ - "2c5e8cb2b7be6d394aaa1400158d3f14895909f3", + "41f7e5e8da2c305370fddad83518cd0fa57547eb", "testharness" ], "service-workers/specgen.json": [ @@ -580208,6 +583922,10 @@ "857cfd26d985a763ac16dac4b86b1223e6792388", "testharness" ], + "shadow-dom/DocumentOrShadowRoot-prototype-elementFromPoint.html": [ + "e33e48a3eb754e961f07b7850caff67eee38fe69", + "testharness" + ], "shadow-dom/Element-interface-attachShadow.html": [ "e5b4dedaf8f78a6ce771af4509da8acb3aca3441", "testharness" @@ -580253,7 +583971,7 @@ "testharness" ], "shadow-dom/event-composed-path-with-related-target.html": [ - "6a5cbb21645faf8f18ed4b14799a6d01b326f998", + "a4c58227f937a943b3845ed3f672419b62a8caad", "testharness" ], "shadow-dom/event-composed-path.html": [ @@ -580360,10 +584078,6 @@ "4b18b29129666d399abcf949f2e977cbad5a5eeb", "testharness" ], - "shadow-dom/untriaged/elements-and-dom-objects/extensions-to-event-interface/event-path-001.html": [ - "32840cb9d6e7809d31113d8ec4b6acd929cb5b58", - "testharness" - ], "shadow-dom/untriaged/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/activeElement-confirm-return-null.html": [ "1b42c7c55978b8f6c2afc39e9ede4e9caee22c2c", "testharness" @@ -582013,7 +585727,7 @@ "support" ], "svg/OWNERS": [ - "09ddeebeb4f8ad8622d76143f276d90a1d9aebdc", + "553fcb48a960e9d5f1fe84fb19228366b33864de", "support" ], "svg/README.md": [ @@ -584484,6 +588198,14 @@ "08237002915323f41dd5590ce4226f95ae79f285", "testharness" ], + "svg/types/scripted/SVGAnimatedAngle.html": [ + "a3d0e532c846efdbcf0f51967b7c9531ed19768c", + "testharness" + ], + "svg/types/scripted/SVGAnimatedBoolean.html": [ + "1d9ed6c9b089bbd43c5dae5f34fa8faaafa9a8e5", + "testharness" + ], "svg/types/scripted/SVGAnimatedEnumeration-SVGClipPathElement.html": [ "0f81d16badaade09929ca0b35faf89cc420ef199", "testharness" @@ -584552,6 +588274,34 @@ "b2c5c52669b802412b085529a2babf0ec2ec3ee1", "testharness" ], + "svg/types/scripted/SVGAnimatedInteger.html": [ + "c4a838233710207e7eb5631a242a9f2f0db83488", + "testharness" + ], + "svg/types/scripted/SVGAnimatedLength.html": [ + "b60dfae30ec8af58d6a4f6b024b8a917e3d1f55c", + "testharness" + ], + "svg/types/scripted/SVGAnimatedLengthList.html": [ + "28b583d0d5e55379fdc69f182505d37d85929509", + "testharness" + ], + "svg/types/scripted/SVGAnimatedNumber.html": [ + "6085f272c222d53838f3c4e9d94dc8260dc846d7", + "testharness" + ], + "svg/types/scripted/SVGAnimatedNumberList.html": [ + "6a2920d16df72b0d890c3dff6c2350c65ba08010", + "testharness" + ], + "svg/types/scripted/SVGAnimatedPreserveAspectRatio.html": [ + "e2667461c918fceecc4aca58ff5713a98df347c0", + "testharness" + ], + "svg/types/scripted/SVGAnimatedRect.html": [ + "dfc7ec677df247b015ef360793c7e5f0c926e45f", + "testharness" + ], "svg/types/scripted/SVGLength-px-with-context.html": [ "a605dba2368aa00a3cd3343739c05cdbbd930205", "testharness" @@ -586461,7 +590211,7 @@ "support" ], "wai-aria/tools/make_tests.pl": [ - "8c51b77876da3ca0a00716caf4934ee9708a4d3a", + "54a8f59aa4bafab1987f6c1c5016fd6ee44e574a", "support" ], "wai-aria/tree_orientation_horizontal-manual.html": [ @@ -586665,7 +590415,7 @@ "support" ], "web-animations/README.md": [ - "6344565e53b2f9e8d6ee7658d1c5c5670e68fc98", + "9dfaf5979c3bf30bf075b3929ac3620954e83497", "support" ], "web-animations/animation-model/animation-types/accumulation-per-property.html": [ @@ -586685,7 +590435,7 @@ "testharness" ], "web-animations/animation-model/animation-types/property-list.js": [ - "7f20ed34cf9c72b53db3206639367eff69f0e226", + "a3a0b0e9232416125e385dcf4df0812a2fce39e2", "support" ], "web-animations/animation-model/animation-types/property-types.js": [ @@ -586777,7 +590527,7 @@ "testharness" ], "web-animations/interfaces/Animation/playbackRate.html": [ - "27d289f603953b3e39322287fb2a55f84dd8dc54", + "a298a65aaeb5a337fe894f0160493693f309c2a1", "testharness" ], "web-animations/interfaces/Animation/ready.html": [ @@ -586793,11 +590543,11 @@ "testharness" ], "web-animations/interfaces/AnimationEffectTiming/direction.html": [ - "11398d5ea40bb4137b4f5d4e6e6238af64caf3c5", + "642207ce454fb816cc47d14fbe29f65d92ddf6ed", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/duration.html": [ - "315810a1e73f9b4ef2cffea868fb766af5ee5c93", + "14abe09cb19080585a315115e387b85784c7d862", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/easing.html": [ @@ -586805,7 +590555,7 @@ "testharness" ], "web-animations/interfaces/AnimationEffectTiming/endDelay.html": [ - "b36d9c8a4e4082e6a75ac5d8f336cf474cd75aab", + "a8609f22672b092178c2391d7ba7ef804112bef4", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/fill.html": [ @@ -586821,11 +590571,11 @@ "testharness" ], "web-animations/interfaces/AnimationEffectTiming/iterationStart.html": [ - "734743adeec628da907ea2f6cc4ae3be3aab7329", + "393b37098ab470e75b1254b53875901e705d8d1b", "testharness" ], "web-animations/interfaces/AnimationEffectTiming/iterations.html": [ - "c8705eb209d8a4912b5d3fd94a05c763b7707eca", + "1e8bb46b5a1eef496edda32b16c856baa16e9b30", "testharness" ], "web-animations/interfaces/AnimationPlaybackEvent/constructor.html": [ @@ -586853,11 +590603,11 @@ "testharness" ], "web-animations/interfaces/KeyframeEffect/composite.html": [ - "7dd18327d8da81914adaf443086891ba3646d882", + "12fc2e8e7bcfb1eab6e162b68731ff6fcb767438", "testharness" ], "web-animations/interfaces/KeyframeEffect/constructor.html": [ - "4a80ea073da0a9c62dcb9587676445a2fba234e1", + "2f6449cbf2b47ae457efb23fb52b8fd1709837ac", "testharness" ], "web-animations/interfaces/KeyframeEffect/copy-constructor.html": [ @@ -586873,7 +590623,7 @@ "testharness" ], "web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-001.html": [ - "165b651cea12ab9e0825f4335e7f697ce1fc6247", + "f54c7c0da5728f88f37a067761af7ad815fea005", "testharness" ], "web-animations/interfaces/KeyframeEffect/processing-a-keyframes-argument-002.html": [ @@ -586897,7 +590647,7 @@ "support" ], "web-animations/resources/keyframe-tests.js": [ - "52ffc50c4ebf0326db8f4e1d0cc1234f6c860dc2", + "b31029042fdfa77ba8bf0e9370f63a423fbe0da9", "support" ], "web-animations/resources/keyframe-utils.js": [ @@ -586909,11 +590659,11 @@ "support" ], "web-animations/testcommon.js": [ - "94130b39fda8e95ca495d297f9d47eefa6430a04", + "de3f89d5ed07d00d453746df5d13387d15f05016", "support" ], "web-animations/timing-model/animation-effects/active-time.html": [ - "68ca985984ed6f868cebb539dfde6d7ddba6c824", + "f05ff3594dde7248c84db42f8a80a6d0136b5f54", "testharness" ], "web-animations/timing-model/animation-effects/current-iteration.html": [ @@ -586937,7 +590687,7 @@ "testharness" ], "web-animations/timing-model/animations/current-time.html": [ - "390e2ba8d6de9bfea5f26cd2e7a42ccdf73f1a35", + "52d23e752878c821754b2c2b752e7393882609e2", "testharness" ], "web-animations/timing-model/animations/finishing-an-animation.html": [ @@ -586953,7 +590703,7 @@ "testharness" ], "web-animations/timing-model/animations/playing-an-animation.html": [ - "6ee1b850154ce22fffafa686fc2fdfef9dded38b", + "1ae05a904e5b4fbcf1d904f02825f836da7b4c18", "testharness" ], "web-animations/timing-model/animations/reversing-an-animation.html": [ @@ -586961,7 +590711,7 @@ "testharness" ], "web-animations/timing-model/animations/set-the-animation-start-time.html": [ - "10fea7d0b0dbe046d72b4048607816c9ebe37f7f", + "fa26feebcde00a5b0b63f8f3587acc313a58f26a", "testharness" ], "web-animations/timing-model/animations/set-the-target-effect-of-an-animation.html": [ @@ -586969,7 +590719,7 @@ "testharness" ], "web-animations/timing-model/animations/set-the-timeline-of-an-animation.html": [ - "ef8ce243226296718453e10d89b4cfd68b2d765e", + "bd33cb8638aa373b17cda20906af5aea2f5a7503", "testharness" ], "web-animations/timing-model/animations/updating-the-finished-state.html": [ @@ -587393,11 +591143,23 @@ "testharness" ], "webauthn/OWNERS": [ - "b0d65c7428735c824eba977b053babdc4be5cdcf", + "368ab4153a7f6843ce65ce924a3b4af92f3488ee", "support" ], + "webauthn/createcredential-badargs-rp.https.html": [ + "941a9bda02e22b7d54855e3a4714a49d8392fa9d", + "testharness" + ], + "webauthn/createcredential-passing.https.html": [ + "32a6ac38f91ec6b887e9e57519eb1603b4abcdbb", + "testharness" + ], + "webauthn/getcredential-passing.https.html": [ + "6272128ea3af65ecb4fc40055b062a678bfbb2fd", + "testharness" + ], "webauthn/helpers.js": [ - "bc38559e447710f701bc5392b0d02704ae97e970", + "e6224e8e2be8657e2e312f4197cbe0225c819cea", "support" ], "webauthn/interfaces.https.html": [ @@ -587405,23 +591167,19 @@ "testharness" ], "webauthn/interfaces.idl": [ - "78cdd63fc1b0e3eff699976b67b72d46cf108ed2", + "77076f0828383c0f48f36131a81b25186622b3a3", "support" ], - "webauthn/makecredential-badargs-accountinformation.https.html": [ - "7f81446a152ab31223b79e3089eb29505a8b603d", + "webauthn/securecontext.http.html": [ + "afc1492723d140e34027a3bdbf0d1e09843ef5d6", "testharness" ], - "webauthn/makecredential-badargs-attestationchallenge.https.html": [ - "26fbc55b0c313be854ddd59469baf6dcdd5d21c6", - "testharness" - ], - "webauthn/makecredential-badargs-cryptoparameters.https.html": [ - "9e2cbb2a667cf57f979c3e67516fb63fedd18d46", + "webauthn/securecontext.https.html": [ + "7f7a7aba32b9e049c618203121fae0884936643a", "testharness" ], "webdriver/OWNERS": [ - "020bcd036daed8eb8928c2924ea1d04050cf1939", + "752d7099018be8b67e4ca16628bbecfa08da8e82", "support" ], "webdriver/README.md": [ @@ -587429,7 +591187,7 @@ "support" ], "webdriver/tests/__init__.py": [ - "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "b2ebe4b632b1a75e7334b97c3df7075f494dd5c6", "support" ], "webdriver/tests/actions/__init__.py": [ @@ -587453,11 +591211,11 @@ "wdspec" ], "webdriver/tests/actions/mouse.py": [ - "0af689cee458ed260b2b9cc6f3231c314a3a6638", + "708373af0d50f2a0a9776743848482c939f90ec8", "wdspec" ], "webdriver/tests/actions/mouse_dblclick.py": [ - "61bab159bf1ccc7d44e4034a3e67d60b13fc1607", + "154d595a3d4466a44c5217c54bb3c717d9a2b9ec", "wdspec" ], "webdriver/tests/actions/sequence.py": [ @@ -587477,7 +591235,7 @@ "support" ], "webdriver/tests/actions/support/mouse.py": [ - "0a6fca5e3fe20db114dbee1dd9d290ec343f6f9c", + "208a1c4fbc0d5c542d17de7f6474d477ce1feb45", "support" ], "webdriver/tests/actions/support/refine.py": [ @@ -587505,15 +591263,15 @@ "wdspec" ], "webdriver/tests/cookies/add_cookie.py": [ - "c58e50480aa3189bd4f1c52050cff6fcfcdf8d8b", + "27b567989053e411e409b08a01df38a867a020f4", "wdspec" ], "webdriver/tests/cookies/delete_cookie.py": [ - "451cef1c071f67bc2bc1666a906b4c289b700d22", + "dbb50588ba525f3ec27a7408eaa4c240614696d5", "wdspec" ], "webdriver/tests/cookies/get_named_cookie.py": [ - "12e1f83275fbfe6926380b267689fbfa55d6b93a", + "e6e265f417d17b4c9d349fbe9aa9fe3923dcfea0", "wdspec" ], "webdriver/tests/document_handling/page_source.py": [ @@ -587529,7 +591287,7 @@ "wdspec" ], "webdriver/tests/element_click/select.py": [ - "5ba51b660c7203bba3ada597c2f56fe094358e1f", + "bbce720456bd6bae72ad256b56b7743be85959f3", "wdspec" ], "webdriver/tests/element_click/stale.py": [ @@ -587564,18 +591322,30 @@ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "support" ], + "webdriver/tests/element_send_keys/form_controls.py": [ + "7c4a249f9575a69268b5f2970a5623fc1724e6e1", + "wdspec" + ], "webdriver/tests/element_send_keys/interactability.py": [ - "bd7cd6c009c86fe93c0e132c30fb9674413962d4", + "bd5d26173017dc3cbdc282809028639a7b4a214a", "wdspec" ], "webdriver/tests/element_send_keys/scroll_into_view.py": [ "fb192d5d1d93aa729b07cadcadfa630587bd0b39", "wdspec" ], + "webdriver/tests/execute_async_script/__init__.py": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], "webdriver/tests/execute_async_script/user_prompts.py": [ "e31edd4537f9b7479a348465154381f5b18f938c", "wdspec" ], + "webdriver/tests/execute_script/__init__.py": [ + "da39a3ee5e6b4b0d3255bfef95601890afd80709", + "support" + ], "webdriver/tests/execute_script/cyclic.py": [ "cbebfbd2413ea0b10f547ab66fcc7159898e684a", "wdspec" @@ -587593,7 +591363,7 @@ "wdspec" ], "webdriver/tests/interaction/element_clear.py": [ - "9b598e993e404275f1fe4bdb1967d8e1950e25cb", + "7d0a8199890afb97894c363af7ef342b5ed5cef3", "wdspec" ], "webdriver/tests/interaction/send_keys_content_editable.py": [ @@ -587645,7 +591415,7 @@ "wdspec" ], "webdriver/tests/sessions/new_session/response.py": [ - "973f5deb240dd01f6213252e6d9fc2f462b0e035", + "5eabb99858b9c3051efb351096d7ba8dca8dbfce", "wdspec" ], "webdriver/tests/sessions/new_session/support/__init__.py": [ @@ -587653,7 +591423,7 @@ "support" ], "webdriver/tests/sessions/new_session/support/create.py": [ - "2c79b22324aa0c318522ac3930e314b4f2b32a86", + "4bfb99fd4ba44ab5b4e70e9246cbb200c098ae89", "support" ], "webdriver/tests/sessions/status.py": [ @@ -587669,19 +591439,19 @@ "support" ], "webdriver/tests/state/get_element_attribute.py": [ - "75620b583be6495d9b7b5d65c57cbda217cd2e01", + "1fcd451313d40a0b0a84ced63596d032ffc97f2a", "wdspec" ], "webdriver/tests/state/get_element_property.py": [ - "042f184dd54153fe5ff46e886ddcf27ffe4bae6d", + "c0fdf271eebb7dcef16a37a897362ed48eec2df1", "wdspec" ], "webdriver/tests/state/get_element_tag_name.py": [ - "0887f71ceb4b4959989ee9f589707624f46e0ce3", + "ce749e286bd030083fcac15dd75c49caf032f990", "wdspec" ], "webdriver/tests/state/is_element_selected.py": [ - "fb7825918c186d97abe69c4ab06fea1ed62f5387", + "f52c565da22038a41db7344cbcfa2a6a101cc61d", "wdspec" ], "webdriver/tests/state/text/__init__.py": [ @@ -587697,7 +591467,7 @@ "support" ], "webdriver/tests/support/asserts.py": [ - "68bb420a9d85810c9fd8b6eaa569b855dfb83638", + "1b839404daaca1d059cba98377edb91691ef7e82", "support" ], "webdriver/tests/support/fixtures.py": [ @@ -587805,7 +591575,7 @@ "testharness" ], "webmessaging/MessageEvent.html": [ - "7debf220e539b7bdef752e98b280398f17e8603b", + "5146873a9545548655893eda08bbf66ec3287218", "testharness" ], "webmessaging/MessageEvent_onmessage_postMessage_infinite_loop.html": [ @@ -588525,7 +592295,7 @@ "testharness" ], "webrtc/RTCStats-helper.js": [ - "1c18bc44f5694a5a273807c06b7ab8f025dd1530", + "f640565a3a6fd6e7f80e8891638b88a1b9fec949", "support" ], "webrtc/RTCTrackEvent-constructor.html": [ @@ -592797,7 +596567,7 @@ "support" ], "webxr/resources/webxr_util.js": [ - "2e92835bb77e028fffc597767528a4a3548f27e8", + "df6490ff3370ea580015f6b02ef5ec7ef2bb1e2b", "support" ], "webxr/webxr_availability.http.sub.html": [ @@ -595157,7 +598927,7 @@ "testharness" ], "xhr/responsexml-document-properties.htm": [ - "9c3698d77cb49266cfcc33e89a74d7930b5b06cb", + "3171001d9f35e2524a575d02c581c2cbe813f973", "testharness" ], "xhr/responsexml-get-twice.htm": [ @@ -595541,7 +599311,7 @@ "testharness" ], "xhr/xmlhttprequest-sync-default-feature-policy.sub.html": [ - "f83a057d1874e5e633c4529d3fac91249de652b3", + "33c86511fb9047346a9d28546b89b64fe323fde6", "testharness" ], "xhr/xmlhttprequest-sync-not-hang-scriptloader-subframe.html": [ diff --git a/tests/wpt/metadata/css/CSS2/floats-clear/float-applies-to-008.xht.ini b/tests/wpt/metadata/css/CSS2/floats-clear/float-applies-to-008.xht.ini deleted file mode 100644 index 32431b94c61..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats-clear/float-applies-to-008.xht.ini +++ /dev/null @@ -1,4 +0,0 @@ -[float-applies-to-008.xht] - type: reftest - expected: - if os == "mac": FAIL diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/width-inherit-001.xht.ini b/tests/wpt/metadata/css/CSS2/normal-flow/width-inherit-001.xht.ini deleted file mode 100644 index ddbb1567a5c..00000000000 --- a/tests/wpt/metadata/css/CSS2/normal-flow/width-inherit-001.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[width-inherit-001.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/positioning/abspos-027.xht.ini b/tests/wpt/metadata/css/CSS2/positioning/abspos-027.xht.ini deleted file mode 100644 index b2c9231fa0a..00000000000 --- a/tests/wpt/metadata/css/CSS2/positioning/abspos-027.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[abspos-027.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/values/color-000.xht.ini b/tests/wpt/metadata/css/CSS2/values/color-000.xht.ini deleted file mode 100644 index 844d61938ae..00000000000 --- a/tests/wpt/metadata/css/CSS2/values/color-000.xht.ini +++ /dev/null @@ -1,3 +0,0 @@ -[color-000.xht] - type: reftest - expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/rgb-002.html.ini b/tests/wpt/metadata/css/css-color/rgb-002.html.ini deleted file mode 100644 index d5479c6f79e..00000000000 --- a/tests/wpt/metadata/css/css-color/rgb-002.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[rgb-002.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/rgb-004.html.ini b/tests/wpt/metadata/css/css-color/rgb-004.html.ini deleted file mode 100644 index 5f96c404862..00000000000 --- a/tests/wpt/metadata/css/css-color/rgb-004.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[rgb-004.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/rgb-006.html.ini b/tests/wpt/metadata/css/css-color/rgb-006.html.ini deleted file mode 100644 index 026a2381950..00000000000 --- a/tests/wpt/metadata/css/css-color/rgb-006.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[rgb-006.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/rgb-008.html.ini b/tests/wpt/metadata/css/css-color/rgb-008.html.ini deleted file mode 100644 index a7edbe809fa..00000000000 --- a/tests/wpt/metadata/css/css-color/rgb-008.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[rgb-008.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/rgba-002.html.ini b/tests/wpt/metadata/css/css-color/rgba-002.html.ini deleted file mode 100644 index fa615e84672..00000000000 --- a/tests/wpt/metadata/css/css-color/rgba-002.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[rgba-002.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/rgba-004.html.ini b/tests/wpt/metadata/css/css-color/rgba-004.html.ini deleted file mode 100644 index 119e9824653..00000000000 --- a/tests/wpt/metadata/css/css-color/rgba-004.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[rgba-004.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/rgba-006.html.ini b/tests/wpt/metadata/css/css-color/rgba-006.html.ini deleted file mode 100644 index 26285fda7db..00000000000 --- a/tests/wpt/metadata/css/css-color/rgba-006.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[rgba-006.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-color/rgba-008.html.ini b/tests/wpt/metadata/css/css-color/rgba-008.html.ini deleted file mode 100644 index e0cdff906ad..00000000000 --- a/tests/wpt/metadata/css/css-color/rgba-008.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[rgba-008.html] - expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/floats-clear/floats-028.xht.ini b/tests/wpt/metadata/css/css-text/astral-bidi/adlam-anti-ref.html.ini similarity index 52% rename from tests/wpt/metadata/css/CSS2/floats-clear/floats-028.xht.ini rename to tests/wpt/metadata/css/css-text/astral-bidi/adlam-anti-ref.html.ini index a878510023c..9b2cdade18e 100644 --- a/tests/wpt/metadata/css/CSS2/floats-clear/floats-028.xht.ini +++ b/tests/wpt/metadata/css/css-text/astral-bidi/adlam-anti-ref.html.ini @@ -1,4 +1,3 @@ -[floats-028.xht] - type: reftest +[adlam-anti-ref.html] expected: if os == "mac": FAIL diff --git a/tests/wpt/metadata/css/css-text/astral-bidi/cypriot-anti-ref.html.ini b/tests/wpt/metadata/css/css-text/astral-bidi/cypriot-anti-ref.html.ini new file mode 100644 index 00000000000..c9a7054423d --- /dev/null +++ b/tests/wpt/metadata/css/css-text/astral-bidi/cypriot-anti-ref.html.ini @@ -0,0 +1,3 @@ +[cypriot-anti-ref.html] + expected: + if os == "mac": FAIL diff --git a/tests/wpt/metadata/css/css-transforms/parsing/perspective-origin-parsing-invalid.html.ini b/tests/wpt/metadata/css/css-transforms/parsing/perspective-origin-parsing-invalid.html.ini new file mode 100644 index 00000000000..0dd0ca7f244 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/parsing/perspective-origin-parsing-invalid.html.ini @@ -0,0 +1,25 @@ +[perspective-origin-parsing-invalid.html] + [e.style['perspective-origin'\] = "center left 1px" should not set the property value] + expected: FAIL + + [e.style['perspective-origin'\] = "center top 2px" should not set the property value] + expected: FAIL + + [e.style['perspective-origin'\] = "right 3% center" should not set the property value] + expected: FAIL + + [e.style['perspective-origin'\] = "left 4px top" should not set the property value] + expected: FAIL + + [e.style['perspective-origin'\] = "right top 5px" should not set the property value] + expected: FAIL + + [e.style['perspective-origin'\] = "bottom 6% center" should not set the property value] + expected: FAIL + + [e.style['perspective-origin'\] = "bottom 7% left" should not set the property value] + expected: FAIL + + [e.style['perspective-origin'\] = "bottom right 8%" should not set the property value] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/parsing/translate-parsing-valid.html.ini b/tests/wpt/metadata/css/css-transforms/parsing/translate-parsing-valid.html.ini index 3d698e879cd..c0a7ed07667 100644 --- a/tests/wpt/metadata/css/css-transforms/parsing/translate-parsing-valid.html.ini +++ b/tests/wpt/metadata/css/css-transforms/parsing/translate-parsing-valid.html.ini @@ -5,3 +5,9 @@ [Serialization should round-trip after setting e.style['translate'\] = "1px 2px 0"] expected: FAIL + [e.style['translate'\] = "0" should set the property value] + expected: FAIL + + [e.style['translate'\] = "1px 2px 0" should set the property value] + expected: FAIL + diff --git a/tests/wpt/metadata/css/css-transforms/transform-transformed-caption-contains-fixed-position.html.ini b/tests/wpt/metadata/css/css-transforms/transform-transformed-caption-contains-fixed-position.html.ini new file mode 100644 index 00000000000..c3b7ac8e5de --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-transformed-caption-contains-fixed-position.html.ini @@ -0,0 +1,2 @@ +[transform-transformed-caption-contains-fixed-position.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-transformed-tbody-contains-fixed-position.html.ini b/tests/wpt/metadata/css/css-transforms/transform-transformed-tbody-contains-fixed-position.html.ini new file mode 100644 index 00000000000..9a5907e66b6 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-transformed-tbody-contains-fixed-position.html.ini @@ -0,0 +1,2 @@ +[transform-transformed-tbody-contains-fixed-position.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-transformed-td-contains-fixed-position.html.ini b/tests/wpt/metadata/css/css-transforms/transform-transformed-td-contains-fixed-position.html.ini new file mode 100644 index 00000000000..9fce6a3d73d --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-transformed-td-contains-fixed-position.html.ini @@ -0,0 +1,2 @@ +[transform-transformed-td-contains-fixed-position.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-transformed-tfoot-contains-fixed-position.html.ini b/tests/wpt/metadata/css/css-transforms/transform-transformed-tfoot-contains-fixed-position.html.ini new file mode 100644 index 00000000000..7d397b381e0 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-transformed-tfoot-contains-fixed-position.html.ini @@ -0,0 +1,2 @@ +[transform-transformed-tfoot-contains-fixed-position.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-transformed-th-contains-fixed-position.html.ini b/tests/wpt/metadata/css/css-transforms/transform-transformed-th-contains-fixed-position.html.ini new file mode 100644 index 00000000000..dd64b75e741 --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-transformed-th-contains-fixed-position.html.ini @@ -0,0 +1,2 @@ +[transform-transformed-th-contains-fixed-position.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-transformed-thead-contains-fixed-position.html.ini b/tests/wpt/metadata/css/css-transforms/transform-transformed-thead-contains-fixed-position.html.ini new file mode 100644 index 00000000000..af984ec334d --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-transformed-thead-contains-fixed-position.html.ini @@ -0,0 +1,2 @@ +[transform-transformed-thead-contains-fixed-position.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-transforms/transform-transformed-tr-contains-fixed-position.html.ini b/tests/wpt/metadata/css/css-transforms/transform-transformed-tr-contains-fixed-position.html.ini new file mode 100644 index 00000000000..5ecc5feccaf --- /dev/null +++ b/tests/wpt/metadata/css/css-transforms/transform-transformed-tr-contains-fixed-position.html.ini @@ -0,0 +1,2 @@ +[transform-transformed-tr-contains-fixed-position.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-ui/text-overflow-024.html.ini b/tests/wpt/metadata/css/css-ui/text-overflow-024.html.ini new file mode 100644 index 00000000000..3efcee3ee66 --- /dev/null +++ b/tests/wpt/metadata/css/css-ui/text-overflow-024.html.ini @@ -0,0 +1,2 @@ +[text-overflow-024.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-ui/text-overflow-025.html.ini b/tests/wpt/metadata/css/css-ui/text-overflow-025.html.ini new file mode 100644 index 00000000000..a7d356084b2 --- /dev/null +++ b/tests/wpt/metadata/css/css-ui/text-overflow-025.html.ini @@ -0,0 +1,2 @@ +[text-overflow-025.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-ui/text-overflow-026.html.ini b/tests/wpt/metadata/css/css-ui/text-overflow-026.html.ini new file mode 100644 index 00000000000..eed6b77be27 --- /dev/null +++ b/tests/wpt/metadata/css/css-ui/text-overflow-026.html.ini @@ -0,0 +1,2 @@ +[text-overflow-026.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-values/calc-in-font-feature-settings.html.ini b/tests/wpt/metadata/css/css-values/calc-in-font-feature-settings.html.ini new file mode 100644 index 00000000000..fdfd80f1494 --- /dev/null +++ b/tests/wpt/metadata/css/css-values/calc-in-font-feature-settings.html.ini @@ -0,0 +1,4 @@ +[calc-in-font-feature-settings.html] + [calc() in font-feature-settings] + 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 new file mode 100644 index 00000000000..26435e28b09 --- /dev/null +++ b/tests/wpt/metadata/css/css-values/vh_not_refreshing_on_chrome.html.ini @@ -0,0 +1,2 @@ +[vh_not_refreshing_on_chrome.html] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-scrollMargin.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-scrollMargin.html.ini new file mode 100644 index 00000000000..c07411bd5a1 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-scrollMargin.html.ini @@ -0,0 +1,10 @@ +[scrollIntoView-scrollMargin.html] + [scrollIntoView({block: "center", inline: "center"})] + expected: FAIL + + [scrollIntoView({block: "start", inline: "start"})] + expected: FAIL + + [scrollIntoView({block: "end", inline: "end"})] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom-view/scrollIntoView-scrollPadding.html.ini b/tests/wpt/metadata/css/cssom-view/scrollIntoView-scrollPadding.html.ini new file mode 100644 index 00000000000..2d9bda237b9 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/scrollIntoView-scrollPadding.html.ini @@ -0,0 +1,10 @@ +[scrollIntoView-scrollPadding.html] + [scrollIntoView({block: "center", inline: "center"})] + expected: FAIL + + [scrollIntoView({block: "start", inline: "start"})] + expected: FAIL + + [scrollIntoView({block: "end", inline: "end"})] + expected: FAIL + diff --git a/tests/wpt/metadata/css/cssom/MediaList.html.ini b/tests/wpt/metadata/css/cssom/MediaList.html.ini index a761ec382bf..f3ee37b050a 100644 --- a/tests/wpt/metadata/css/cssom/MediaList.html.ini +++ b/tests/wpt/metadata/css/cssom/MediaList.html.ini @@ -3,3 +3,6 @@ [MediaList] expected: FAIL + [CSSOM - MediaList interface] + expected: FAIL + diff --git a/tests/wpt/metadata/css/mediaqueries/test_media_queries.html.ini b/tests/wpt/metadata/css/mediaqueries/test_media_queries.html.ini index 63f757ce648..92789f0a78c 100644 --- a/tests/wpt/metadata/css/mediaqueries/test_media_queries.html.ini +++ b/tests/wpt/metadata/css/mediaqueries/test_media_queries.html.ini @@ -566,18 +566,9 @@ [subtest_335] expected: FAIL - [subtest_338] - expected: FAIL - [subtest_340] expected: FAIL - [subtest_346] - expected: FAIL - - [subtest_350] - expected: FAIL - [subtest_80] expected: FAIL @@ -764,24 +755,39 @@ [subtest_337] expected: FAIL - [subtest_349] - expected: FAIL - - [subtest_353] - expected: FAIL - - [subtest_354] - expected: FAIL - - [subtest_357] - expected: FAIL - - [subtest_358] - expected: FAIL - [subtest_359] expected: FAIL [subtest_360] expected: FAIL + [subtest_334] + expected: FAIL + + [subtest_339] + expected: FAIL + + [subtest_342] + expected: FAIL + + [subtest_348] + expected: FAIL + + [subtest_351] + expected: FAIL + + [subtest_352] + expected: FAIL + + [subtest_355] + expected: FAIL + + [subtest_356] + expected: FAIL + + [subtest_361] + expected: FAIL + + [subtest_362] + expected: FAIL + diff --git a/tests/wpt/metadata/css/selectors/invalidation/sheet-going-away-001.html.ini b/tests/wpt/metadata/css/selectors/invalidation/sheet-going-away-001.html.ini new file mode 100644 index 00000000000..76b222d254c --- /dev/null +++ b/tests/wpt/metadata/css/selectors/invalidation/sheet-going-away-001.html.ini @@ -0,0 +1,4 @@ +[sheet-going-away-001.html] + [Style should be recomputed correctly when the stylesheet it depends on goes away] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/Document-createElement-svg.svg.ini b/tests/wpt/metadata/custom-elements/Document-createElement-svg.svg.ini new file mode 100644 index 00000000000..9e4a4f96426 --- /dev/null +++ b/tests/wpt/metadata/custom-elements/Document-createElement-svg.svg.ini @@ -0,0 +1,2 @@ +[Document-createElement-svg.svg] + expected: TIMEOUT diff --git a/tests/wpt/metadata/custom-elements/builtin-coverage.html.ini b/tests/wpt/metadata/custom-elements/builtin-coverage.html.ini new file mode 100644 index 00000000000..3ce70c1cfcd --- /dev/null +++ b/tests/wpt/metadata/custom-elements/builtin-coverage.html.ini @@ -0,0 +1,4 @@ +[builtin-coverage.html] + [Untitled] + expected: FAIL + diff --git a/tests/wpt/metadata/custom-elements/parser/parser-sets-attributes-and-children.html.ini b/tests/wpt/metadata/custom-elements/parser/parser-sets-attributes-and-children.html.ini new file mode 100644 index 00000000000..598fd107344 --- /dev/null +++ b/tests/wpt/metadata/custom-elements/parser/parser-sets-attributes-and-children.html.ini @@ -0,0 +1,4 @@ +[parser-sets-attributes-and-children.html] + expected: + if os == "mac": CRASH + if os == "linux": TIMEOUT diff --git a/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini b/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini index 5d3edd80268..d5d77c14514 100644 --- a/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini +++ b/tests/wpt/metadata/fetch/api/response/response-init-002.html.ini @@ -6,3 +6,6 @@ [Testing empty Response Content-Type header] expected: FAIL + [Testing null Response body] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/data-urls/base64.any.js.ini b/tests/wpt/metadata/fetch/data-urls/base64.any.js.ini new file mode 100644 index 00000000000..2aa2f25c9a1 --- /dev/null +++ b/tests/wpt/metadata/fetch/data-urls/base64.any.js.ini @@ -0,0 +1,153 @@ +[base64.any.worker.html] + [data: URL base64 handling: ""] + expected: FAIL + + [data: URL base64 handling: "abcd"] + expected: FAIL + + [data: URL base64 handling: " abcd"] + expected: FAIL + + [data: URL base64 handling: "abcd "] + expected: FAIL + + [data: URL base64 handling: "ab"] + expected: FAIL + + [data: URL base64 handling: "abc"] + expected: FAIL + + [data: URL base64 handling: "ab="] + expected: FAIL + + [data: URL base64 handling: "ab=="] + expected: FAIL + + [data: URL base64 handling: "abc="] + expected: FAIL + + [data: URL base64 handling: "ab\\tcd"] + expected: FAIL + + [data: URL base64 handling: "ab\\ncd"] + expected: FAIL + + [data: URL base64 handling: "ab\\fcd"] + expected: FAIL + + [data: URL base64 handling: "ab\\rcd"] + expected: FAIL + + [data: URL base64 handling: "ab cd"] + expected: FAIL + + [data: URL base64 handling: "ab\\t\\n\\f\\r cd"] + expected: FAIL + + [data: URL base64 handling: " \\t\\n\\f\\r ab\\t\\n\\f\\r cd\\t\\n\\f\\r "] + expected: FAIL + + [data: URL base64 handling: "ab\\t\\n\\f\\r =\\t\\n\\f\\r =\\t\\n\\f\\r "] + expected: FAIL + + [data: URL base64 handling: "/A"] + expected: FAIL + + [data: URL base64 handling: "//A"] + expected: FAIL + + [data: URL base64 handling: "///A"] + expected: FAIL + + [data: URL base64 handling: "A/"] + expected: FAIL + + [data: URL base64 handling: "AA/"] + expected: FAIL + + [data: URL base64 handling: "AAA/"] + expected: FAIL + + [data: URL base64 handling: "YQ"] + expected: FAIL + + [data: URL base64 handling: "YR"] + expected: FAIL + + +[base64.any.html] + [data: URL base64 handling: ""] + expected: FAIL + + [data: URL base64 handling: "abcd"] + expected: FAIL + + [data: URL base64 handling: " abcd"] + expected: FAIL + + [data: URL base64 handling: "abcd "] + expected: FAIL + + [data: URL base64 handling: "ab"] + expected: FAIL + + [data: URL base64 handling: "abc"] + expected: FAIL + + [data: URL base64 handling: "ab="] + expected: FAIL + + [data: URL base64 handling: "ab=="] + expected: FAIL + + [data: URL base64 handling: "abc="] + expected: FAIL + + [data: URL base64 handling: "ab\\tcd"] + expected: FAIL + + [data: URL base64 handling: "ab\\ncd"] + expected: FAIL + + [data: URL base64 handling: "ab\\fcd"] + expected: FAIL + + [data: URL base64 handling: "ab\\rcd"] + expected: FAIL + + [data: URL base64 handling: "ab cd"] + expected: FAIL + + [data: URL base64 handling: "ab\\t\\n\\f\\r cd"] + expected: FAIL + + [data: URL base64 handling: " \\t\\n\\f\\r ab\\t\\n\\f\\r cd\\t\\n\\f\\r "] + expected: FAIL + + [data: URL base64 handling: "ab\\t\\n\\f\\r =\\t\\n\\f\\r =\\t\\n\\f\\r "] + expected: FAIL + + [data: URL base64 handling: "/A"] + expected: FAIL + + [data: URL base64 handling: "//A"] + expected: FAIL + + [data: URL base64 handling: "///A"] + expected: FAIL + + [data: URL base64 handling: "A/"] + expected: FAIL + + [data: URL base64 handling: "AA/"] + expected: FAIL + + [data: URL base64 handling: "AAA/"] + expected: FAIL + + [data: URL base64 handling: "YQ"] + expected: FAIL + + [data: URL base64 handling: "YR"] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/data-urls/processing.any.js.ini b/tests/wpt/metadata/fetch/data-urls/processing.any.js.ini new file mode 100644 index 00000000000..fce394e5e13 --- /dev/null +++ b/tests/wpt/metadata/fetch/data-urls/processing.any.js.ini @@ -0,0 +1,381 @@ +[processing.any.worker.html] + ["data://test/,X"] + expected: FAIL + + ["data:,X"] + expected: FAIL + + ["data:,"] + expected: FAIL + + ["data:,X#X"] + expected: FAIL + + ["data:,%FF"] + expected: FAIL + + ["data:text/plain,X"] + expected: FAIL + + ["data:text/plain ,X"] + expected: FAIL + + ["data:text/plain%20,X"] + expected: FAIL + + ["data:text/plain\\f,X"] + expected: FAIL + + ["data:text/plain%0C,X"] + expected: FAIL + + ["data:text/plain;,X"] + expected: FAIL + + ["data:;x=x;charset=x,X"] + expected: FAIL + + ["data:;x=x,X"] + expected: FAIL + + ["data:text/plain;charset=windows-1252,%C2%B1"] + expected: FAIL + + ["data:text/plain;Charset=UTF-8,%C2%B1"] + expected: FAIL + + ["data:image/gif,%C2%B1"] + expected: FAIL + + ["data:IMAGE/gif,%C2%B1"] + expected: FAIL + + ["data:IMAGE/gif;hi=x,%C2%B1"] + expected: FAIL + + ["data:IMAGE/gif;CHARSET=x,%C2%B1"] + expected: FAIL + + ["data: ,%FF"] + expected: FAIL + + ["data:%20,%FF"] + expected: FAIL + + ["data:\\f,%FF"] + expected: FAIL + + ["data:%1F,%FF"] + expected: FAIL + + ["data:\\0,%FF"] + expected: FAIL + + ["data:%00,%FF"] + expected: FAIL + + ["data:text/html ,X"] + expected: FAIL + + ["data:text / html,X"] + expected: FAIL + + ["data:†,X"] + expected: FAIL + + ["data:†/†,X"] + expected: FAIL + + ["data:X,X"] + expected: FAIL + + ["data:image/png,X X"] + expected: FAIL + + ["data:application/xml,X X"] + expected: FAIL + + ["data:unknown/unknown,X X"] + expected: FAIL + + ["data:text/plain;a=\\",\\",X"] + expected: FAIL + + ["data:text/plain;a=%2C,X"] + expected: FAIL + + ["data:;base64;base64,WA"] + expected: FAIL + + ["data:x/x;base64;base64,WA"] + expected: FAIL + + ["data:x/x;base64;charset=x,WA"] + expected: FAIL + + ["data:x/x;base64;charset=x;base64,WA"] + expected: FAIL + + ["data:x/x;base64;base64x,WA"] + expected: FAIL + + ["data:;base64,W%20A"] + expected: FAIL + + ["data:;base64,W%0CA"] + expected: FAIL + + ["data:x;base64x,WA"] + expected: FAIL + + ["data:x;base64;x,WA"] + expected: FAIL + + ["data:x;base64=x,WA"] + expected: FAIL + + ["data:; base64,WA"] + expected: FAIL + + ["data:; base64,WA"] + expected: FAIL + + ["data: ;charset=x ; base64,WA"] + expected: FAIL + + ["data:;base64;,WA"] + expected: FAIL + + ["data:;base64 ,WA"] + expected: FAIL + + ["data:;base64 ,WA"] + expected: FAIL + + ["data:;base 64,WA"] + expected: FAIL + + ["data:;BASe64,WA"] + expected: FAIL + + ["data:;%62ase64,WA"] + expected: FAIL + + ["data:%3Bbase64,WA"] + expected: FAIL + + ["data:;charset=x,X"] + expected: FAIL + + ["data:; charset=x,X"] + expected: FAIL + + ["data:;charset =x,X"] + expected: FAIL + + ["data:;charset= x,X"] + expected: FAIL + + ["data:;charset=,X"] + expected: FAIL + + ["data:;charset,X"] + expected: FAIL + + ["data:;charset=\\"x\\",X"] + expected: FAIL + + ["data:;CHARSET=\\"X\\",X"] + expected: FAIL + + +[processing.any.html] + ["data://test/,X"] + expected: FAIL + + ["data:,X"] + expected: FAIL + + ["data:,"] + expected: FAIL + + ["data:,X#X"] + expected: FAIL + + ["data:,%FF"] + expected: FAIL + + ["data:text/plain,X"] + expected: FAIL + + ["data:text/plain ,X"] + expected: FAIL + + ["data:text/plain%20,X"] + expected: FAIL + + ["data:text/plain\\f,X"] + expected: FAIL + + ["data:text/plain%0C,X"] + expected: FAIL + + ["data:text/plain;,X"] + expected: FAIL + + ["data:;x=x;charset=x,X"] + expected: FAIL + + ["data:;x=x,X"] + expected: FAIL + + ["data:text/plain;charset=windows-1252,%C2%B1"] + expected: FAIL + + ["data:text/plain;Charset=UTF-8,%C2%B1"] + expected: FAIL + + ["data:image/gif,%C2%B1"] + expected: FAIL + + ["data:IMAGE/gif,%C2%B1"] + expected: FAIL + + ["data:IMAGE/gif;hi=x,%C2%B1"] + expected: FAIL + + ["data:IMAGE/gif;CHARSET=x,%C2%B1"] + expected: FAIL + + ["data: ,%FF"] + expected: FAIL + + ["data:%20,%FF"] + expected: FAIL + + ["data:\\f,%FF"] + expected: FAIL + + ["data:%1F,%FF"] + expected: FAIL + + ["data:\\0,%FF"] + expected: FAIL + + ["data:%00,%FF"] + expected: FAIL + + ["data:text/html ,X"] + expected: FAIL + + ["data:text / html,X"] + expected: FAIL + + ["data:†,X"] + expected: FAIL + + ["data:†/†,X"] + expected: FAIL + + ["data:X,X"] + expected: FAIL + + ["data:image/png,X X"] + expected: FAIL + + ["data:application/xml,X X"] + expected: FAIL + + ["data:unknown/unknown,X X"] + expected: FAIL + + ["data:text/plain;a=\\",\\",X"] + expected: FAIL + + ["data:text/plain;a=%2C,X"] + expected: FAIL + + ["data:;base64;base64,WA"] + expected: FAIL + + ["data:x/x;base64;base64,WA"] + expected: FAIL + + ["data:x/x;base64;charset=x,WA"] + expected: FAIL + + ["data:x/x;base64;charset=x;base64,WA"] + expected: FAIL + + ["data:x/x;base64;base64x,WA"] + expected: FAIL + + ["data:;base64,W%20A"] + expected: FAIL + + ["data:;base64,W%0CA"] + expected: FAIL + + ["data:x;base64x,WA"] + expected: FAIL + + ["data:x;base64;x,WA"] + expected: FAIL + + ["data:x;base64=x,WA"] + expected: FAIL + + ["data:; base64,WA"] + expected: FAIL + + ["data:; base64,WA"] + expected: FAIL + + ["data: ;charset=x ; base64,WA"] + expected: FAIL + + ["data:;base64;,WA"] + expected: FAIL + + ["data:;base64 ,WA"] + expected: FAIL + + ["data:;base64 ,WA"] + expected: FAIL + + ["data:;base 64,WA"] + expected: FAIL + + ["data:;BASe64,WA"] + expected: FAIL + + ["data:;%62ase64,WA"] + expected: FAIL + + ["data:%3Bbase64,WA"] + expected: FAIL + + ["data:;charset=x,X"] + expected: FAIL + + ["data:; charset=x,X"] + expected: FAIL + + ["data:;charset =x,X"] + expected: FAIL + + ["data:;charset= x,X"] + expected: FAIL + + ["data:;charset=,X"] + expected: FAIL + + ["data:;charset,X"] + expected: FAIL + + ["data:;charset=\\"x\\",X"] + expected: FAIL + + ["data:;CHARSET=\\"X\\",X"] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini new file mode 100644 index 00000000000..d936073896a --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html.ini @@ -0,0 +1,5 @@ +[pageload-image-in-popup.html] + expected: ERROR + [The document for a standalone media file should have one child in the body.] + expected: NOTRUN + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html.ini new file mode 100644 index 00000000000..86882865455 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/scroll-to-fragid/scroll-to-anchor-name.html.ini @@ -0,0 +1,4 @@ +[scroll-to-anchor-name.html] + [Fragment Navigation: scroll to anchor name is lower priority than equal id] + expected: FAIL + diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index 10e41464e70..78284b0d68b 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -13908,3 +13908,6 @@ [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 + diff --git a/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini b/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini index 1e3ff756963..69f8f521e20 100644 --- a/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini +++ b/tests/wpt/metadata/html/dom/usvstring-reflection.html.ini @@ -23,3 +23,6 @@ [location.href : unpaired surrogate codepoint should be replaced with U+FFFD] expected: FAIL + [sendBeacon URL: unpaired surrogate codepoint should not make any exceptions.] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini index 91b6048e419..bcad0d56823 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html.ini @@ -123,3 +123,6 @@ [video/webm with and without codecs] expected: FAIL + [fictional formats and codecs not supported] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html.ini b/tests/wpt/metadata/html/semantics/rellist-feature-detection.html.ini similarity index 100% rename from tests/wpt/metadata/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html.ini rename to tests/wpt/metadata/html/semantics/rellist-feature-detection.html.ini diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html.ini new file mode 100644 index 00000000000..54dcc064e7e --- /dev/null +++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html.ini @@ -0,0 +1,4 @@ +[inline-async-execorder.html] + [Inline async module script execution order] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/tabular-data/processing-model-1/span-limits.html.ini b/tests/wpt/metadata/html/semantics/tabular-data/processing-model-1/span-limits.html.ini index ec05b7788e6..f477b391508 100644 --- a/tests/wpt/metadata/html/semantics/tabular-data/processing-model-1/span-limits.html.ini +++ b/tests/wpt/metadata/html/semantics/tabular-data/processing-model-1/span-limits.html.ini @@ -1,5 +1,6 @@ [span-limits.html] type: testharness + expected: TIMEOUT [colspan of 1001 must be treated as 1000] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html.ini b/tests/wpt/metadata/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html.ini deleted file mode 100644 index d2762c55d7b..00000000000 --- a/tests/wpt/metadata/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[rellist-feature-detection.html] - [Make sure that relList based feature detection is working] - expected: FAIL - diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index 5ae6f54c5e9..bac04108893 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1,2 +1,2 @@ -local: 1f6a864ab5372fe4f59b1a4c3db7cf8e7a79b06d -upstream: 08e864fd23048d707cc42bed8538e644d8dec950 +local: c88dc51d03a81e9e405688ccd2baae75d61ffffd +upstream: 9ca21c6c87ccec0ff7fdb0fc896d6e9918f3e331 diff --git a/tests/wpt/metadata/performance-timeline/idlharness.html.ini b/tests/wpt/metadata/performance-timeline/idlharness.html.ini index 66e1aae7c8e..173fc1c6a27 100644 --- a/tests/wpt/metadata/performance-timeline/idlharness.html.ini +++ b/tests/wpt/metadata/performance-timeline/idlharness.html.ini @@ -9,3 +9,6 @@ [PerformanceEntry interface: operation toJSON()] expected: FAIL + [PerformanceObserver interface: operation takeRecords()] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.js b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.sub.js similarity index 75% rename from tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.js rename to tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.sub.js index 4e5b9a88833..d76a42d5a1f 100644 --- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.js +++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/common.sub.js @@ -43,14 +43,29 @@ function makeVideo() { }); } -function makeImage() { - return new Promise(resolve => { - var img = new Image(); - img.onload = function() { - resolve(img); - }; - img.src = "/images/pattern.png"; - }); +function makeMakeHTMLImage(src) { + return function() { + return new Promise(resolve => { + var img = new Image(); + img.onload = function() { + resolve(img); + }; + img.src = src; + }); + } +} + +function makeMakeSVGImage(src) { + return function() { + return new Promise((resolve, reject) => { + var image = document.createElementNS(NAMESPACES.svg, "image"); + image.onload = () => resolve(image); + image.onerror = reject; + image.setAttribute("externalResourcesRequired", "true"); + image.setAttributeNS(NAMESPACES.xlink, 'xlink:href', src); + document.body.appendChild(image); + }); + } } function makeImageData() { @@ -100,7 +115,10 @@ function makeBlob() { var imageSourceTypes = [ { name: 'an HTMLCanvasElement', factory: makeCanvas }, { name: 'an HTMLVideoElement', factory: makeVideo }, - { name: 'an HTMLImageElement', factory: makeImage }, + { name: 'a bitmap HTMLImageElement', factory: makeMakeHTMLImage("/images/pattern.png") }, + { name: 'a vector HTMLImageElement', factory: makeMakeHTMLImage("/images/pattern.svg") }, + { name: 'a bitmap SVGImageElement', factory: makeMakeSVGImage("/images/pattern.png") }, + { name: 'a vector SVGImageElement', factory: makeMakeSVGImage("/images/pattern.svg") }, { name: 'an OffscreenCanvas', factory: makeOffscreenCanvas }, { name: 'an ImageData', factory: makeImageData }, { name: 'an ImageBitmap', factory: makeImageBitmap }, diff --git a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html index d527b4c2adb..4fe8a83d87e 100644 --- a/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html +++ b/tests/wpt/web-platform-tests/2dcontext/imagebitmap/createImageBitmap-drawImage.html @@ -5,7 +5,8 @@ - + + - + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/acid/acid3/numbered-tests.html b/tests/wpt/web-platform-tests/acid/acid3/numbered-tests.html new file mode 100644 index 00000000000..dfe7f3876f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/acid/acid3/numbered-tests.html @@ -0,0 +1,27 @@ + +Acid3 numbered tests + + + + diff --git a/tests/wpt/web-platform-tests/acid/acid3/test.html b/tests/wpt/web-platform-tests/acid/acid3/test.html index 1ac8da6838e..0c475309cf5 100644 --- a/tests/wpt/web-platform-tests/acid/acid3/test.html +++ b/tests/wpt/web-platform-tests/acid/acid3/test.html @@ -3419,6 +3419,7 @@ } ]; + window.parent.postMessage({num_tests: tests.length}, "*"); var log = ''; var delay = 10; var score = 0, index = 0, retry = 0, errors = 0; @@ -3456,6 +3457,7 @@ } else { fail("no error message"); } + window.parent.postMessage({test: index, result: "pass"}, "*"); } catch (e) { var s; if (e.message) @@ -3464,6 +3466,7 @@ s = e; errors += 1; log += "Test " + zeroPaddedIndex + " failed: " + s + "\n"; + window.parent.postMessage({test: index, result: "fail", message: s}, "*"); }; retry = 0; index += 1; diff --git a/tests/wpt/web-platform-tests/beacon/beacon-error.window.js b/tests/wpt/web-platform-tests/beacon/beacon-error.window.js index 9c037ba34f6..b53353abc1e 100644 --- a/tests/wpt/web-platform-tests/beacon/beacon-error.window.js +++ b/tests/wpt/web-platform-tests/beacon/beacon-error.window.js @@ -24,16 +24,25 @@ test(function() { }, "Verify calling 'navigator.sendBeacon()' with a URL that is not a http(s) scheme throws an exception."); // We'll validate that we can send one beacon that uses our entire Quota and then fail to send one that is just one char. -test(function () { - var destinationURL = "/fetch/api/resources/trickle.py?count=1&ms=1000"; - - var firstSuccess = navigator.sendBeacon(destinationURL, maxPayload); - assert_true(firstSuccess, "calling 'navigator.sendBeacon()' with our max payload size should succeed."); +promise_test(async () => { + function wait(ms) { + return new Promise(res => step_timeout(res, ms)); + } + const url = '/fetch/api/resources/trickle.py?count=1&ms=0'; + assert_true(navigator.sendBeacon(url, maxPayload), + "calling 'navigator.sendBeacon()' with our max payload size should succeed."); // Now we'll send just one character. - var secondSuccess = navigator.sendBeacon(destinationURL, "1"); - assert_false(secondSuccess, "calling 'navigator.sendBeacon()' with just one char should fail while our Quota is used up."); + assert_false(navigator.sendBeacon(url, '1'), + "calling 'navigator.sendBeacon()' with just one char should fail while our Quota is used up."); -}, "Verify calling 'navigator.sendBeacon()' with a small payload fails while Quota is completely utilized."); + for (let i = 0; i < 20; ++i) { + await wait(100); + if (navigator.sendBeacon(url, maxPayload)) { + return; + } + } + assert_unreached('The quota should recover after fetching.'); +}, "Verify the behavior after the quota is exhausted."); done(); diff --git a/tests/wpt/web-platform-tests/bluetooth/README.md b/tests/wpt/web-platform-tests/bluetooth/README.md index 869dd4af446..2d0e9ab7a9b 100644 --- a/tests/wpt/web-platform-tests/bluetooth/README.md +++ b/tests/wpt/web-platform-tests/bluetooth/README.md @@ -9,6 +9,19 @@ the API to be loaded as needed. The Chromium implementation is provided by `../resources/chromium/web-bluetooth-test.js`. +The Chromium implementation is not included in stable Chrome builds since it +would add too much to the binary size. On Chromium infrastructure, it is run +using the `content_shell` executable. + +In the future, Chromium `src/device/bluetooth` may be refactored into a Mojo +service. At this point, it would be possible to add the necessary testing hooks +into stable Chrome without substantially increasing the binary size, similar to +WebUSB. + +These bluetooth tests are upstreamed here because other browsers can reuse them +by implementing the [Web Bluetooth Testing API], even if only on their internal +infrastructure. + [Web Bluetooth Testing API]: https://docs.google.com/document/d/1Nhv_oVDCodd1pEH_jj9k8gF4rPGb_84VYaZ9IG8M_WY/ # Generated gen-* files from generator.py @@ -45,4 +58,4 @@ Usage: $ python generate.py ``` -More details documented in `generate.py`. \ No newline at end of file +More details documented in `generate.py`. diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-filter.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-filter.https.html new file mode 100644 index 00000000000..253e3119916 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-filter.https.html @@ -0,0 +1,25 @@ + + + + + + + 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 new file mode 100644 index 00000000000..d77486fcbc3 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/blocklisted-service-in-optionalServices.https.html @@ -0,0 +1,35 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.html new file mode 100644 index 00000000000..ba8a090309b --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/device-name-longer-than-29-bytes.https.html @@ -0,0 +1,19 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.html new file mode 100644 index 00000000000..eed7b870b38 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filter.https.html @@ -0,0 +1,16 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.html new file mode 100644 index 00000000000..fbbd6dacad9 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-filters-member.https.html @@ -0,0 +1,18 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.html new file mode 100644 index 00000000000..aa6c83089e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-namePrefix.https.html @@ -0,0 +1,44 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.html new file mode 100644 index 00000000000..6cb923a5ac0 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/empty-services-member.https.html @@ -0,0 +1,23 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.html new file mode 100644 index 00000000000..ab207329447 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/filters-xor-acceptAllDevices.https.html @@ -0,0 +1,33 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.html new file mode 100644 index 00000000000..2f2df741277 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name-unicode.https.html @@ -0,0 +1,23 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.html new file mode 100644 index 00000000000..dcb6c40d8fe --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-name.https.html @@ -0,0 +1,21 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.html new file mode 100644 index 00000000000..fe1f91927d2 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix-unicode.https.html @@ -0,0 +1,23 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.html new file mode 100644 index 00000000000..ab3a6bae3fb --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-exceeded-namePrefix.https.html @@ -0,0 +1,21 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.html new file mode 100644 index 00000000000..40df9d0de7f --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name-unicode.https.html @@ -0,0 +1,18 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.html new file mode 100644 index 00000000000..d1759d6efe0 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-name.https.html @@ -0,0 +1,16 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.html new file mode 100644 index 00000000000..8e86844473e --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix-unicode.https.html @@ -0,0 +1,20 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.html new file mode 100644 index 00000000000..01ed22e6366 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/max-length-namePrefix.https.html @@ -0,0 +1,18 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.html new file mode 100644 index 00000000000..e6337a543bc --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/no-arguments.https.html @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.html new file mode 100644 index 00000000000..08038b9de00 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-name.https.html @@ -0,0 +1,21 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.html new file mode 100644 index 00000000000..fc44482379d --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/unicode-valid-length-name-namePrefix.https.html @@ -0,0 +1,21 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.html new file mode 100644 index 00000000000..15cf902177d --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-optionalServices-member.https.html @@ -0,0 +1,44 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.html new file mode 100644 index 00000000000..5d9b245f953 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/canonicalizeFilter/wrong-service-in-services-member.https.html @@ -0,0 +1,22 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/consumes-user-gesture.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/consumes-user-gesture.https.html new file mode 100644 index 00000000000..12a062e2f59 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/consumes-user-gesture.https.html @@ -0,0 +1,27 @@ + + + + + + + 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 new file mode 100644 index 00000000000..2ac18485a1f --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/discovery-succeeds.https.html @@ -0,0 +1,28 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/filter-matches.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/filter-matches.https.html new file mode 100644 index 00000000000..3f62d39c7ac --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/filter-matches.https.html @@ -0,0 +1,67 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/le-not-supported.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/le-not-supported.https.html new file mode 100644 index 00000000000..4a3752501a3 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/le-not-supported.https.html @@ -0,0 +1,18 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.html new file mode 100644 index 00000000000..ee9b9125de2 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/name-empty-device-from-name-empty-filter.https.html @@ -0,0 +1,15 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.html new file mode 100644 index 00000000000..1781b7bd1b8 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/not-processing-user-gesture.https.html @@ -0,0 +1,19 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/radio-not-present.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/radio-not-present.https.html new file mode 100644 index 00000000000..a66bcf99c6e --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/radio-not-present.https.html @@ -0,0 +1,20 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-iframe.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-iframe.https.html new file mode 100644 index 00000000000..01590ea0fd9 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-iframe.https.html @@ -0,0 +1,43 @@ + + + + + + + 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 new file mode 100644 index 00000000000..62a917a70f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/request-from-sandboxed-iframe.https.html @@ -0,0 +1,39 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/same-device.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/same-device.https.html new file mode 100644 index 00000000000..a83cf705a73 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/same-device.https.html @@ -0,0 +1,30 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/requestDevice/single-filter-single-service.https.html b/tests/wpt/web-platform-tests/bluetooth/requestDevice/single-filter-single-service.https.html new file mode 100644 index 00000000000..8735eb3f872 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/requestDevice/single-filter-single-service.https.html @@ -0,0 +1,17 @@ + + + + + + + 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 0f378b2b8a7..56357043ba7 100644 --- a/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js +++ b/tests/wpt/web-platform-tests/bluetooth/resources/bluetooth-helpers.js @@ -218,22 +218,36 @@ var gatt_errors_tests = [{ 'NotSupportedError') }]; -function callWithTrustedClick(callback) { +// Waits until the document has finished loading. +function waitForDocumentReady() { return new Promise(resolve => { - let button = document.createElement('button'); - button.textContent = 'click to continue test'; - button.style.display = 'block'; - button.style.fontSize = '20px'; - button.style.padding = '10px'; - button.onclick = () => { - document.body.removeChild(button); - resolve(callback()); - }; - document.body.appendChild(button); - test_driver.click(button); + if (document.readyState === 'complete') { + resolve(); + } + + window.addEventListener('load', () => { + resolve(); + }, {once: true}); }); } +function callWithTrustedClick(callback) { + return waitForDocumentReady() + .then(() => new Promise(resolve => { + let button = document.createElement('button'); + button.textContent = 'click to continue test'; + button.style.display = 'block'; + button.style.fontSize = '20px'; + button.style.padding = '10px'; + button.onclick = () => { + document.body.removeChild(button); + resolve(callback()); + }; + document.body.appendChild(button); + test_driver.click(button); + })); +} + // Calls requestDevice() in a context that's 'allowed to show a popup'. function requestDeviceWithTrustedClick() { let args = arguments; diff --git a/tests/wpt/web-platform-tests/bluetooth/resources/health-thermometer-iframe.html b/tests/wpt/web-platform-tests/bluetooth/resources/health-thermometer-iframe.html index c94ba55bbfd..5e24f62a06e 100644 --- a/tests/wpt/web-platform-tests/bluetooth/resources/health-thermometer-iframe.html +++ b/tests/wpt/web-platform-tests/bluetooth/resources/health-thermometer-iframe.html @@ -1,17 +1,31 @@ diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/service/blocklisted-characteristic.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/blocklisted-characteristic.js new file mode 100644 index 00000000000..b26f039a706 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/blocklisted-characteristic.js @@ -0,0 +1,19 @@ +'use strict'; +const test_desc = 'Serial Number String characteristic is blocklisted. ' + + 'Should reject with SecurityError.'; +const expected = new DOMException( + 'getCharacteristic(s) called with blocklisted UUID. https://goo.gl/4NeimX', + 'SecurityError'); + +bluetooth_test(() => getHIDDevice({ + filters: [{services: ['device_information']}] +}) + .then(({device}) => device.gatt.getPrimaryService('device_information')) + .then(service => assert_promise_rejects_with_message( + service.CALLS([ + getCharacteristic('serial_number_string')| + getCharacteristics('serial_number_string')[UUID] + ]), + expected, + 'Serial Number String characteristic is blocklisted.')), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/service/characteristic-not-found.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/characteristic-not-found.js new file mode 100644 index 00000000000..366e046774b --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/characteristic-not-found.js @@ -0,0 +1,15 @@ +'use strict'; +const test_desc = 'Request for absent characteristics with UUID. ' + + 'Reject with NotFoundError.'; + +bluetooth_test(() => getEmptyHealthThermometerService() + .then(({service}) => assert_promise_rejects_with_message( + service.CALLS([ + getCharacteristic('battery_level')| + getCharacteristics('battery_level')[UUID] + ]), + new DOMException( + `No Characteristics matching UUID ${battery_level.uuid} found ` + + `in Service with UUID ${health_thermometer.uuid}.`, + 'NotFoundError'))), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/service/garbage-collection-ran-during-error.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/garbage-collection-ran-during-error.js new file mode 100644 index 00000000000..33c61096794 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/garbage-collection-ran-during-error.js @@ -0,0 +1,24 @@ +'use strict'; +const test_desc = 'Garbage Collection ran during FUNCTION_NAME ' + + 'call that fails. Should not crash'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve characteristics. ' + + '(Re)connect first with `device.gatt.connect`.', + 'NetworkError'); +let promise; + +bluetooth_test(() => getHealthThermometerService() + .then(({service}) => { + promise = assert_promise_rejects_with_message( + service.CALLS([ + getCharacteristic('measurement_interval')| + getCharacteristics()| + getCharacteristics('measurement_interval')[UUID] + ]), expected); + // Disconnect called to clear attributeInstanceMap and allow the object to + // get garbage collected. + service.device.gatt.disconnect(); + }) + .then(runGarbageCollection) + .then(() => promise), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/service/get-same-object.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/get-same-object.js new file mode 100644 index 00000000000..db9d740c83c --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/get-same-object.js @@ -0,0 +1,24 @@ +'use strict'; +const test_desc = 'Calls to FUNCTION_NAME should return the same object.'; + +bluetooth_test(() => getHealthThermometerService() + .then(({service}) => Promise.all([ + service.CALLS([ + getCharacteristic('measurement_interval')| + getCharacteristics()| + getCharacteristics('measurement_interval')[UUID]]), + service.PREVIOUS_CALL])) + .then(([characteristics_first_call, characteristics_second_call]) => { + // Convert to arrays if necessary. + characteristics_first_call = [].concat(characteristics_first_call); + characteristics_second_call = [].concat(characteristics_second_call); + + let first_call_set = new Set(characteristics_first_call); + assert_equals(characteristics_first_call.length, first_call_set.size); + let second_call_set = new Set(characteristics_second_call); + assert_equals(characteristics_second_call.length, second_call_set.size); + + characteristics_first_call.forEach(characteristic => { + assert_true(second_call_set.has(characteristic)); + }); + }), test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/service/invalid-characteristic-name.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/invalid-characteristic-name.js new file mode 100644 index 00000000000..74cba7ec431 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/invalid-characteristic-name.js @@ -0,0 +1,23 @@ +'use strict'; +const test_desc = 'Wrong Characteristic name. Reject with TypeError.'; +const expected = new DOMException( + "Failed to execute 'FUNCTION_NAME' on " + + "'BluetoothRemoteGATTService': Invalid Characteristic name: " + + "'wrong_name'. " + + "It must be a valid UUID alias (e.g. 0x1234), " + + "UUID (lowercase hex characters e.g. " + + "'00001234-0000-1000-8000-00805f9b34fb'), " + + "or recognized standard name from " + + "https://www.bluetooth.com/specifications/gatt/characteristics" + + " e.g. 'aerobic_heart_rate_lower_limit'.", + 'TypeError'); + +bluetooth_test(() => getHealthThermometerService() + .then(({service}) => assert_promise_rejects_with_message( + service.CALLS([ + getCharacteristic('wrong_name')| + getCharacteristics('wrong_name') + ]), + expected, + 'Wrong Characteristic name passed.')), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/script-tests/service/reconnect-during.js b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/reconnect-during.js new file mode 100644 index 00000000000..cc71547ac24 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/script-tests/service/reconnect-during.js @@ -0,0 +1,36 @@ +'use strict'; +const test_desc = 'disconnect() and connect() called during ' + + 'FUNCTION_NAME. Reject with NetworkError.'; +const expected = new DOMException( + 'GATT Server is disconnected. Cannot retrieve characteristics. ' + + '(Re)connect first with `device.gatt.connect`.', + 'NetworkError'); +let device; + +bluetooth_test(() => getHealthThermometerDeviceWithServicesDiscovered({ + filters: [{services: [health_thermometer.name]}], +}) + .then(_ => ({device} = _)) + .then(() => device.gatt.getPrimaryService(health_thermometer.name)) + .then(service => Promise.all([ + // 1. Make a call to service.FUNCTION_NAME, while the service is still + // valid. + assert_promise_rejects_with_message(service.CALLS([ + getCharacteristic(measurement_interval.name)| + getCharacteristics()| + getCharacteristics(measurement_interval.name)[UUID] + ]), expected), + + // 2. disconnect() and connect before the initial call completes. + // This is accomplished by making the calls without waiting for the + // earlier promises to resolve. + // connect() guarantees on OS-level connection, but disconnect() + // only disconnects the current instance. + // getHealthThermometerDeviceWithServicesDiscovered holds another + // connection in an iframe, so disconnect() and connect() are certain to + // reconnect. However, disconnect() will invalidate the service object so + // the subsequent calls made to it will fail, even after reconnecting. + device.gatt.disconnect(), + device.gatt.connect() + ])), + test_desc); diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/service-found.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/service-found.https.html new file mode 100644 index 00000000000..6fccff1813f --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/service-found.https.html @@ -0,0 +1,31 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.html new file mode 100644 index 00000000000..eb20225e4ba --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryService/two-iframes-from-same-origin.https.html @@ -0,0 +1,80 @@ + + + + + + + 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 new file mode 100644 index 00000000000..aa0b556c3fd --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services-with-uuid.https.html @@ -0,0 +1,23 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services.https.html new file mode 100644 index 00000000000..2a34e0bf50a --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/blocklisted-services.https.html @@ -0,0 +1,26 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/correct-services.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/correct-services.https.html new file mode 100644 index 00000000000..9fffbd5d00e --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/correct-services.https.html @@ -0,0 +1,36 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found-with-uuid.https.html new file mode 100644 index 00000000000..6face0acfae --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found-with-uuid.https.html @@ -0,0 +1,27 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found.https.html new file mode 100644 index 00000000000..6edb1118c2a --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-found.https.html @@ -0,0 +1,29 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-not-found.https.html b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-not-found.https.html new file mode 100644 index 00000000000..2632ec6e7fe --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/server/getPrimaryServices/services-not-found.https.html @@ -0,0 +1,19 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.html new file mode 100644 index 00000000000..9e42a469c67 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-blocklisted-characteristic.https.html @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.html new file mode 100644 index 00000000000..5fc3ec470ac --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-characteristic-not-found.https.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.html new file mode 100644 index 00000000000..0b81768d508 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-garbage-collection-ran-during-error.https.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-get-same-object.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-get-same-object.https.html new file mode 100644 index 00000000000..e8fc6542cce --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-get-same-object.https.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.html new file mode 100644 index 00000000000..08c1352155a --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-invalid-characteristic-name.https.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-reconnect-during.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-reconnect-during.https.html new file mode 100644 index 00000000000..2fe9cd06cf7 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristic/gen-reconnect-during.https.html @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.html new file mode 100644 index 00000000000..eeaa5b3da30 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-blocklisted-characteristic-with-uuid.https.html @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.html new file mode 100644 index 00000000000..7f32b30b303 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-characteristic-not-found-with-uuid.https.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.html new file mode 100644 index 00000000000..36ef29b6c5b --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error-with-uuid.https.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.html new file mode 100644 index 00000000000..5768ff42abc --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-garbage-collection-ran-during-error.https.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.html new file mode 100644 index 00000000000..917d84df4c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-get-same-object-with-uuid.https.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-get-same-object.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-get-same-object.https.html new file mode 100644 index 00000000000..ebdd803efa2 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-get-same-object.https.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.html new file mode 100644 index 00000000000..0bcb25cdf0c --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-invalid-characteristic-name.https.html @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.html new file mode 100644 index 00000000000..4226bcbbfa2 --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-reconnect-during-with-uuid.https.html @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-reconnect-during.https.html b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-reconnect-during.https.html new file mode 100644 index 00000000000..9157275640c --- /dev/null +++ b/tests/wpt/web-platform-tests/bluetooth/service/getCharacteristics/gen-reconnect-during.https.html @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/common/namespaces.js b/tests/wpt/web-platform-tests/common/namespaces.js new file mode 100644 index 00000000000..741bdc1d88a --- /dev/null +++ b/tests/wpt/web-platform-tests/common/namespaces.js @@ -0,0 +1,4 @@ +var NAMESPACES = { + "svg": "http://www.w3.org/2000/svg", + "xlink": "http://www.w3.org/1999/xlink", +}; diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/required_csp-header.html b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/required_csp-header.html index 3d8e337f2d4..9e7894b6b30 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/required_csp-header.html +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/required_csp-header.html @@ -50,7 +50,9 @@ { "name": "Wrong value of `csp` should not trigger sending Sec-Required-CSP Header - report-uri present", "csp": "script-src 'unsafe-inline'; report-uri resources/dummy-report.php", "expected": null }, - // TODO(andypaicu): when `report-to` is implemented, add tests here. + { "name": "Wrong value of `csp` should not trigger sending Sec-Required-CSP Header - report-to present", + "csp": "script-src 'unsafe-inline'; report-to resources/dummy-report.php", + "expected": null }, ]; tests.forEach(test => { diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html similarity index 100% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers similarity index 88% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers index 9a025812946..15a42ec23fb 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-doesnt-send-reports-without-violation.https.sub.html.sub.headers @@ -2,6 +2,6 @@ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache -Set-Cookie: reporting-api-doesnt-send-reports-without-violation={{$id:uuid()}}; Path=/content-security-policy/reporting +Set-Cookie: reporting-api-doesnt-send-reports-without-violation={{$id:uuid()}}; Path=/content-security-policy/reporting-api Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id}}", "group": "csp-group", "max-age": 10886400 } Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'self'; report-to csp-group diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html similarity index 100% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers similarity index 89% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers index 990cfafb090..e2810108a84 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-only-sends-reports-on-violation.https.sub.html.sub.headers @@ -2,6 +2,6 @@ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache -Set-Cookie: reporting-api-report-only-sends-reports-on-violation={{$id:uuid()}}; Path=/content-security-policy/reporting +Set-Cookie: reporting-api-report-only-sends-reports-on-violation={{$id:uuid()}}; Path=/content-security-policy/reporting-api Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id}}", "group": "csp-group", "max-age": 10886400 } Content-Security-Policy-Report-Only: script-src 'self' 'unsafe-inline'; img-src 'none'; report-to csp-group diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html similarity index 100% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers similarity index 91% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers index c696384f349..4ab90061d67 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-1.https.sub.html.sub.headers @@ -2,6 +2,6 @@ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache -Set-Cookie: reporting-api-report-to-overrides-report-uri-1={{$id:uuid()}}; Path=/content-security-policy/reporting +Set-Cookie: reporting-api-report-to-overrides-report-uri-1={{$id:uuid()}}; Path=/content-security-policy/reporting-api Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'none'; report-uri "/content-security-policy/support/report.py?op=put&reportID={{$id}}"; report-to csp-group Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id:uuid()}}", "group": "csp-group", "max-age": 10886400 } diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html similarity index 100% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers similarity index 91% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers index 2ac676bae5e..f2eaaa5fe7e 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-report-to-overrides-report-uri-2.https.sub.html.sub.headers @@ -2,6 +2,6 @@ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache -Set-Cookie: reporting-api-report-to-overrides-report-uri-2={{$id:uuid()}}; Path=/content-security-policy/reporting +Set-Cookie: reporting-api-report-to-overrides-report-uri-2={{$id:uuid()}}; Path=/content-security-policy/reporting-api Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'none'; report-to csp-group; report-uri "/content-security-policy/support/report.py?op=put&reportID={{$id}}" Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id:uuid()}}", "group": "csp-group", "max-age": 10886400 } diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html similarity index 100% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers similarity index 90% rename from tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers rename to tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers index ff4b9e6fb7d..f262b72327e 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/reporting/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-sends-reports-on-violation.https.sub.html.sub.headers @@ -2,6 +2,6 @@ Expires: Mon, 26 Jul 1997 05:00:00 GMT Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache -Set-Cookie: reporting-api-sends-reports-on-violation={{$id:uuid()}}; Path=/content-security-policy/reporting +Set-Cookie: reporting-api-sends-reports-on-violation={{$id:uuid()}}; Path=/content-security-policy/reporting-api Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id}}", "group": "csp-group", "max-age": 10886400 } Content-Security-Policy: script-src 'self' 'unsafe-inline'; img-src 'none'; report-to csp-group diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html new file mode 100644 index 00000000000..d633e3b30a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html @@ -0,0 +1,22 @@ + + + + Test that reports using the report-api service are sent when there's a violation + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html.sub.headers new file mode 100644 index 00000000000..8da5216c4a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting-api/reporting-api-works-on-frame-src.https.sub.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Pragma: no-cache +Set-Cookie: reporting-api-works-on-frame-src={{$id:uuid()}}; Path=/content-security-policy/reporting-api +Report-To: { "url": "https://{{host}}:{{ports[https][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id}}", "group": "csp-group", "max-age": 10886400 } +Content-Security-Policy: script-src 'self' 'unsafe-inline'; frame-src 'none'; report-to csp-group diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/multiple-report-policies.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/multiple-report-policies.html new file mode 100644 index 00000000000..204c1f32024 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/multiple-report-policies.html @@ -0,0 +1,19 @@ + + + + + + When multiple report-uri endpoints for multiple policies are specified, each gets a report + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/multiple-report-policies.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/multiple-report-policies.html.sub.headers new file mode 100644 index 00000000000..b7affbe7d41 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/multiple-report-policies.html.sub.headers @@ -0,0 +1,8 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: multiple-report-policies={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy-Report-Only: img-src http://* https://*; default-src 'self'; script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} +Set-Cookie: multiple-report-policies-2={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy-Report-Only: img-src http://*; default-src 'self'; script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-and-enforce.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-and-enforce.html new file mode 100644 index 00000000000..910df20a4c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-and-enforce.html @@ -0,0 +1,34 @@ + + + + + + Reporting and enforcing policies can be different + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-and-enforce.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-and-enforce.html.sub.headers new file mode 100644 index 00000000000..5d4c5dcc4f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-and-enforce.html.sub.headers @@ -0,0 +1,7 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-and-enforce={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy: img-src 'none'; style-src *; script-src 'self' 'unsafe-inline' +Content-Security-Policy-Report-Only: img-src *; style-src 'none'; script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-data-uri.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-data-uri.html new file mode 100644 index 00000000000..5a75ea1c0a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-data-uri.html @@ -0,0 +1,15 @@ + + + + + + Data-uri images are reported correctly + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-data-uri.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-data-uri.html.sub.headers new file mode 100644 index 00000000000..52e2f164415 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-data-uri.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-blocked-data-uri={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy: img-src 'none'; report-uri ../support/report.py?op=put&reportID={{$id}} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html new file mode 100644 index 00000000000..9d56cdbdd90 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html @@ -0,0 +1,16 @@ + + + + + + Cross-origin images are reported correctly + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html.sub.headers new file mode 100644 index 00000000000..ef5073b3863 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri-cross-origin.sub.html.sub.headers @@ -0,0 +1,7 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-blocked-uri-cross-origin={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy: script-src 'self' 'unsafe-inline' +Content-Security-Policy-Report-Only: img-src 'none'; script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri.html new file mode 100644 index 00000000000..5eb9f297496 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri.html @@ -0,0 +1,16 @@ + + + + + + Blocked relative images are reported correctly + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri.html.sub.headers new file mode 100644 index 00000000000..6f4b37ef836 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-blocked-uri.html.sub.headers @@ -0,0 +1,7 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-blocked-uri={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy: script-src 'self' 'unsafe-inline' +Content-Security-Policy-Report-Only: img-src 'none'; script-src 'self' 'unsafe-inline'; report-uri ../support/report.py?op=put&reportID={{$id}} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html new file mode 100644 index 00000000000..2922894832d --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html @@ -0,0 +1,30 @@ + + + + + + Cookies are not sent on cross origin violation reports + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html.sub.headers new file mode 100644 index 00000000000..cb1acfcd121 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-cross-origin-no-cookies.sub.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-cross-origin-no-cookies={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy: script-src 'unsafe-inline' 'self'; img-src 'none'; report-uri http://{{domains[www1]}}:{{ports[http][0]}}/content-security-policy/support/report.py?op=put&reportID={{$id}} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-01.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-01.html new file mode 100644 index 00000000000..7a92f1b9556 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-01.html @@ -0,0 +1,16 @@ + + + + + + Test multiple violations cause multiple reports + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-01.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-01.html.sub.headers new file mode 100644 index 00000000000..904e2c64aae --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-01.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-multiple-violations-01={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy-Report-Only: script-src 'unsafe-inline' 'self'; img-src 'none'; report-uri ../support/report.py?op=put&reportID={{$id}} \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02.html new file mode 100644 index 00000000000..f604e75cb89 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02.html @@ -0,0 +1,19 @@ + + + + + + This tests that multiple violations on a page trigger multiple reports + if and only if the violations are distinct. + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02.html.sub.headers new file mode 100644 index 00000000000..e7bf84b9448 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-multiple-violations-02.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-multiple-violations-02={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy-Report-Only: script-src 'unsafe-inline' 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html new file mode 100644 index 00000000000..d4e7b6fc4e7 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html @@ -0,0 +1,39 @@ + + + + + + Report-only policy not allowed in meta tag + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html.sub.headers new file mode 100644 index 00000000000..b56292b4703 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-only-in-meta.sub.html.sub.headers @@ -0,0 +1,5 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Content-Security-Policy: script-src 'unsafe-inline' 'self' diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-original-url.sub.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-original-url.sub.html new file mode 100644 index 00000000000..45c1aeb2de8 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-original-url.sub.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-original-url.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-original-url.sub.html.sub.headers new file mode 100644 index 00000000000..1031a7a00a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-original-url.sub.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-original-url={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy: img-src {{location[scheme]}}://{{domains[www1]}}:{{ports[http][0]}}; script-src 'unsafe-inline' 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies.html new file mode 100644 index 00000000000..515996c1dd3 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies.html @@ -0,0 +1,30 @@ + + + + + + Cookies are sent on same origin violation reports + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies.html.sub.headers new file mode 100644 index 00000000000..356439db435 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-same-origin-with-cookies.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-same-origin-with-cookies={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy: script-src 'unsafe-inline' 'self'; img-src 'none'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-strips-fragment.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-strips-fragment.html new file mode 100644 index 00000000000..4ecfa845ecb --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-strips-fragment.html @@ -0,0 +1,23 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-effective-directive.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-effective-directive.html new file mode 100644 index 00000000000..1d959fd4abc --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-effective-directive.html @@ -0,0 +1,18 @@ + + + + + + Violation report is sent if violation occurs. + + + + + + + diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-effective-directive.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-effective-directive.html.sub.headers new file mode 100644 index 00000000000..1fb9842c8aa --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-effective-directive.html.sub.headers @@ -0,0 +1,6 @@ +Expires: Mon, 26 Jul 1997 05:00:00 GMT +Cache-Control: no-store, no-cache, must-revalidate +Cache-Control: post-check=0, pre-check=0, false +Pragma: no-cache +Set-Cookie: report-uri-effective-directive={{$id:uuid()}}; Path=/content-security-policy/reporting/ +Content-Security-Policy: default-src 'self'; report-uri ../support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-from-child-frame.html b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-from-child-frame.html new file mode 100644 index 00000000000..92b1e1be543 --- /dev/null +++ b/tests/wpt/web-platform-tests/content-security-policy/reporting/report-uri-from-child-frame.html @@ -0,0 +1,27 @@ + + + + + + Reporting works in child iframes. + + + + + + + diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/unsized-image.tentative.https.sub.html.headers b/tests/wpt/web-platform-tests/feature-policy/experimental-features/unsized-image.tentative.https.sub.html.headers new file mode 100644 index 00000000000..db2dcbc1929 --- /dev/null +++ b/tests/wpt/web-platform-tests/feature-policy/experimental-features/unsized-image.tentative.https.sub.html.headers @@ -0,0 +1 @@ +Feature-Policy: unsized-media 'none' diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-init-002.html b/tests/wpt/web-platform-tests/fetch/api/response/response-init-002.html index 0bb2e8d0b3b..a48af833644 100644 --- a/tests/wpt/web-platform-tests/fetch/api/response/response-init-002.html +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-init-002.html @@ -65,6 +65,11 @@ }); }, "Testing empty Response Content-Type header"); + test(function() { + var response = new Response(null, {status: 204}); + assert_equals(response.body, null); + }, "Testing null Response body"); + diff --git a/tests/wpt/web-platform-tests/fetch/data-urls/README.md b/tests/wpt/web-platform-tests/fetch/data-urls/README.md new file mode 100644 index 00000000000..64c3d7e9521 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/data-urls/README.md @@ -0,0 +1,11 @@ +== data: URLs == + +`resources/data-urls.json` contains `data:` URL tests. The tests are encoded as a JSON array. Each value in the array is an array of two or three values. The first value describes the input, the second value describes the expected MIME type, null if the input is expected to fail somehow, or the empty string if the expected value is `text/plain;charset=US-ASCII`. The third value, if present, describes the expected body as an array of integers representing bytes. + +These tests are used for `data:` URLs in this directory (see `processing.any.js`). + +== Forgiving-base64 decode == + +`resources/base64.json` contains [forgiving-base64 decode](https://infra.spec.whatwg.org/#forgiving-base64-decode) tests. The tests are encoded as a JSON array. Each value in the array is an array of two values. The first value describes the input, the second value describes the output as an array of integers representing bytes or null if the input cannot be decoded. + +These tests are used for `data:` URLs in this directory (see `base64.any.js`) and `window.atob()` in `../../html/webappapis/atob/base64.html`. diff --git a/tests/wpt/web-platform-tests/fetch/data-urls/base64.any.js b/tests/wpt/web-platform-tests/fetch/data-urls/base64.any.js new file mode 100644 index 00000000000..48e4c530a86 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/data-urls/base64.any.js @@ -0,0 +1,16 @@ +promise_test(() => fetch("resources/base64.json").then(res => res.json()).then(runBase64Tests), "Setup."); +function runBase64Tests(tests) { + for(let i = 0; i < tests.length; i++) { + const input = tests[i][0], + output = tests[i][1], + dataURL = "data:;base64," + input; + promise_test(t => { + if(output === null) { + return promise_rejects(t, new TypeError(), fetch(dataURL)); + } + return fetch(dataURL).then(res => res.arrayBuffer()).then(body => { + assert_array_equals(new Uint8Array(body), output); + }); + }, "data: URL base64 handling: " + format_value(input)); + } +} diff --git a/tests/wpt/web-platform-tests/fetch/data-urls/processing.any.js b/tests/wpt/web-platform-tests/fetch/data-urls/processing.any.js new file mode 100644 index 00000000000..b66a874f45c --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/data-urls/processing.any.js @@ -0,0 +1,20 @@ +promise_test(() => fetch("resources/data-urls.json").then(res => res.json()).then(runDataURLTests), "Setup."); +function runDataURLTests(tests) { + for(let i = 0; i < tests.length; i++) { + const input = tests[i][0], + expectedMimeType = tests[i][1], + expectedBody = expectedMimeType !== null ? tests[i][2] : null; + promise_test(t => { + if(expectedMimeType === null) { + return promise_rejects(t, new TypeError(), fetch(input)); + } else { + return fetch(input).then(res => { + return res.arrayBuffer().then(body => { + assert_array_equals(new Uint8Array(body), expectedBody); + assert_equals(res.headers.get("content-type"), expectedMimeType); // We could assert this earlier, but this fails often + }); + }); + } + }, format_value(input)); + } +} 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 new file mode 100644 index 00000000000..7de20b28286 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/data-urls/resources/base64.json @@ -0,0 +1,79 @@ +[ + ["", []], + ["abcd", [105, 183, 29]], + [" abcd", [105, 183, 29]], + ["abcd ", [105, 183, 29]], + [" abcd===", null], + ["abcd=== ", null], + ["abcd ===", null], + ["a", null], + ["ab", [105]], + ["abc", [105, 183]], + ["abcde", null], + ["𐀀", null], + ["=", null], + ["==", null], + ["===", null], + ["====", null], + ["=====", null], + ["a=", null], + ["a==", null], + ["a===", null], + ["a====", null], + ["a=====", null], + ["ab=", null], + ["ab==", [105]], + ["ab===", null], + ["ab====", null], + ["ab=====", null], + ["abc=", [105, 183]], + ["abc==", null], + ["abc===", null], + ["abc====", null], + ["abc=====", null], + ["abcd=", null], + ["abcd==", null], + ["abcd===", null], + ["abcd====", null], + ["abcd=====", null], + ["abcde=", null], + ["abcde==", null], + ["abcde===", null], + ["abcde====", null], + ["abcde=====", null], + ["=a", null], + ["=a=", null], + ["a=b", null], + ["a=b=", null], + ["ab=c", null], + ["ab=c=", null], + ["abc=d", null], + ["abc=d=", null], + ["ab\tcd", [105, 183, 29]], + ["ab\ncd", [105, 183, 29]], + ["ab\fcd", [105, 183, 29]], + ["ab\rcd", [105, 183, 29]], + ["ab cd", [105, 183, 29]], + ["ab\u00a0cd", null], + ["ab\t\n\f\r cd", [105, 183, 29]], + [" \t\n\f\r ab\t\n\f\r cd\t\n\f\r ", [105, 183, 29]], + ["ab\t\n\f\r =\t\n\f\r =\t\n\f\r ", [105]], + ["A", null], + ["/A", [252]], + ["//A", [255, 240]], + ["///A", [255, 255, 192]], + ["////A", null], + ["/", null], + ["A/", [3]], + ["AA/", [0, 15]], + ["AAAA/", null], + ["AAA/", [0, 0, 63]], + ["\u0000nonsense", null], + ["abcd\u0000nonsense", null], + ["YQ", [97]], + ["YR", [97]], + ["~~", null], + ["..", null], + ["--", null], + ["__", null] +] diff --git a/tests/wpt/web-platform-tests/fetch/data-urls/resources/data-urls.json b/tests/wpt/web-platform-tests/fetch/data-urls/resources/data-urls.json new file mode 100644 index 00000000000..2265b970495 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/data-urls/resources/data-urls.json @@ -0,0 +1,199 @@ +[ + ["data://test/,X", + "text/plain;charset=US-ASCII", + [88]], + ["data://test:test/,X", + null], + ["data:,X", + "text/plain;charset=US-ASCII", + [88]], + ["data:", + null], + ["data:text/html", + null], + ["data:text/html ;charset=x ", + null], + ["data:,", + "text/plain;charset=US-ASCII", + []], + ["data:,X#X", + "text/plain;charset=US-ASCII", + [88]], + ["data:,%FF", + "text/plain;charset=US-ASCII", + [255]], + ["data:text/plain,X", + "text/plain", + [88]], + ["data:text/plain ,X", + "text/plain", + [88]], + ["data:text/plain%20,X", + "text/plain%20", + [88]], + ["data:text/plain\f,X", + "text/plain%0c", + [88]], + ["data:text/plain%0C,X", + "text/plain%0c", + [88]], + ["data:text/plain;,X", + "text/plain", + [88]], + ["data:;x=x;charset=x,X", + "text/plain;x=x;charset=x", + [88]], + ["data:;x=x,X", + "text/plain;x=x", + [88]], + ["data:text/plain;charset=windows-1252,%C2%B1", + "text/plain;charset=windows-1252", + [194, 177]], + ["data:text/plain;Charset=UTF-8,%C2%B1", + "text/plain;charset=UTF-8", + [194, 177]], + ["data:image/gif,%C2%B1", + "image/gif", + [194, 177]], + ["data:IMAGE/gif,%C2%B1", + "image/gif", + [194, 177]], + ["data:IMAGE/gif;hi=x,%C2%B1", + "image/gif;hi=x", + [194, 177]], + ["data:IMAGE/gif;CHARSET=x,%C2%B1", + "image/gif;charset=x", + [194, 177]], + ["data: ,%FF", + "text/plain;charset=US-ASCII", + [255]], + ["data:%20,%FF", + "text/plain;charset=US-ASCII", + [255]], + ["data:\f,%FF", + "text/plain;charset=US-ASCII", + [255]], + ["data:%1F,%FF", + "text/plain;charset=US-ASCII", + [255]], + ["data:\u0000,%FF", + "text/plain;charset=US-ASCII", + [255]], + ["data:%00,%FF", + "text/plain;charset=US-ASCII", + [255]], + ["data:text/html ,X", + "text/html", + [88]], + ["data:text / html,X", + "text/plain;charset=US-ASCII", + [88]], + ["data:†,X", + "text/plain;charset=US-ASCII", + [88]], + ["data:†/†,X", + "%e2%80%a0/%e2%80%a0", + [88]], + ["data:X,X", + "text/plain;charset=US-ASCII", + [88]], + ["data:image/png,X X", + "image/png", + [88, 32, 88]], + ["data:application/xml,X X", + "application/xml", + [88, 32, 88]], + ["data:unknown/unknown,X X", + "unknown/unknown", + [88, 32, 88]], + ["data:text/plain;a=\",\",X", + "text/plain", + [34, 44, 88]], + ["data:text/plain;a=%2C,X", + "text/plain;a=%2C", + [88]], + ["data:;base64;base64,WA", + "text/plain", + [88]], + ["data:x/x;base64;base64,WA", + "x/x", + [88]], + ["data:x/x;base64;charset=x,WA", + "x/x;charset=x", + [87, 65]], + ["data:x/x;base64;charset=x;base64,WA", + "x/x;charset=x", + [88]], + ["data:x/x;base64;base64x,WA", + "x/x", + [87, 65]], + ["data:;base64,W%20A", + "text/plain;charset=US-ASCII", + [88]], + ["data:;base64,W%0CA", + "text/plain;charset=US-ASCII", + [88]], + ["data:x;base64x,WA", + "text/plain;charset=US-ASCII", + [87, 65]], + ["data:x;base64;x,WA", + "text/plain;charset=US-ASCII", + [87, 65]], + ["data:x;base64=x,WA", + "text/plain;charset=US-ASCII", + [87, 65]], + ["data:; base64,WA", + "text/plain;charset=US-ASCII", + [88]], + ["data:; base64,WA", + "text/plain;charset=US-ASCII", + [88]], + ["data: ;charset=x ; base64,WA", + "text/plain;charset=x", + [88]], + ["data:;base64;,WA", + "text/plain", + [87, 65]], + ["data:;base64 ,WA", + "text/plain;charset=US-ASCII", + [88]], + ["data:;base64 ,WA", + "text/plain;charset=US-ASCII", + [88]], + ["data:;base 64,WA", + "text/plain", + [87, 65]], + ["data:;BASe64,WA", + "text/plain;charset=US-ASCII", + [88]], + ["data:;%62ase64,WA", + "text/plain", + [87, 65]], + ["data:%3Bbase64,WA", + "text/plain;charset=US-ASCII", + [87, 65]], + ["data:;charset=x,X", + "text/plain;charset=x", + [88]], + ["data:; charset=x,X", + "text/plain;charset=x", + [88]], + ["data:;charset =x,X", + "text/plain", + [88]], + ["data:;charset= x,X", + "text/plain;charset=\" x\"", + [88]], + ["data:;charset=,X", + "text/plain", + [88]], + ["data:;charset,X", + "text/plain", + [88]], + ["data:;charset=\"x\",X", + "text/plain;charset=x", + [88]], + ["data:;CHARSET=\"X\",X", + "text/plain;charset=X", + [88]] +] diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js index 59cb3e3f5b8..4be4841586d 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js +++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-tests.js @@ -10,7 +10,8 @@ const properties = { 'AbsoluteOrientationSensor' : ['timestamp', 'quaternion'], 'RelativeOrientationSensor' : ['timestamp', 'quaternion'], 'GeolocationSensor' : ['timestamp', 'latitude', 'longitude', 'altitude', - 'accuracy', 'altitudeAccuracy', 'heading', 'speed'] + 'accuracy', 'altitudeAccuracy', 'heading', 'speed'], + 'ProximitySensor' : ['timestamp', 'max'] }; function assert_reading_not_null(sensor) { @@ -257,6 +258,7 @@ function runGenericSensorOnerror(sensorType) { const event = await sensorWatcher.wait_for("error"); assert_false(sensor.activated); - assert_equals(event.error.name, 'NotReadableError'); + assert_true(event.error.name == 'NotReadableError' || + event.error.name == 'NotAllowedError'); }, `${sensorType.name}: 'onerror' event is fired when sensor is not supported`); } diff --git a/tests/wpt/web-platform-tests/graphics-aam/OWNERS b/tests/wpt/web-platform-tests/graphics-aam/OWNERS new file mode 100644 index 00000000000..2a4c47ed4df --- /dev/null +++ b/tests/wpt/web-platform-tests/graphics-aam/OWNERS @@ -0,0 +1,2 @@ +@halindrome +@joanmarie diff --git a/tests/wpt/web-platform-tests/graphics-aam/graphics-document_on_html_element-manual.html b/tests/wpt/web-platform-tests/graphics-aam/graphics-document_on_html_element-manual.html new file mode 100644 index 00000000000..293ad2ea842 --- /dev/null +++ b/tests/wpt/web-platform-tests/graphics-aam/graphics-document_on_html_element-manual.html @@ -0,0 +1,103 @@ + + + + graphics-document on HTML element + + + + + + + + + +

This test examines the ARIA properties for graphics-document on HTML element.

+
+
+
+ +
+
+
+ + diff --git a/tests/wpt/web-platform-tests/graphics-aam/graphics-document_on_svg_element-manual.html b/tests/wpt/web-platform-tests/graphics-aam/graphics-document_on_svg_element-manual.html new file mode 100644 index 00000000000..4984bc353eb --- /dev/null +++ b/tests/wpt/web-platform-tests/graphics-aam/graphics-document_on_svg_element-manual.html @@ -0,0 +1,106 @@ + + + + graphics-document on SVG element + + + + + + + + + +

This test examines the ARIA properties for graphics-document on SVG element.

+ + + + + + + +
+
+
+ + diff --git a/tests/wpt/web-platform-tests/graphics-aam/graphics-object_on_html_element-manual.html b/tests/wpt/web-platform-tests/graphics-aam/graphics-object_on_html_element-manual.html new file mode 100644 index 00000000000..19979b2f325 --- /dev/null +++ b/tests/wpt/web-platform-tests/graphics-aam/graphics-object_on_html_element-manual.html @@ -0,0 +1,97 @@ + + + + graphics-object on HTML element + + + + + + + + + +

This test examines the ARIA properties for graphics-object on HTML element.

+
+
+
+ +
+
+
+ + diff --git a/tests/wpt/web-platform-tests/graphics-aam/graphics-object_on_svg_element-manual.html b/tests/wpt/web-platform-tests/graphics-aam/graphics-object_on_svg_element-manual.html new file mode 100644 index 00000000000..5c2cf28e447 --- /dev/null +++ b/tests/wpt/web-platform-tests/graphics-aam/graphics-object_on_svg_element-manual.html @@ -0,0 +1,100 @@ + + + + graphics-object on SVG element + + + + + + + + + +

This test examines the ARIA properties for graphics-object on SVG element.

+ + + + + + + +
+
+
+ + diff --git a/tests/wpt/web-platform-tests/graphics-aam/graphics-symbol_on_html_element-manual.html b/tests/wpt/web-platform-tests/graphics-aam/graphics-symbol_on_html_element-manual.html new file mode 100644 index 00000000000..3b9c77fffdc --- /dev/null +++ b/tests/wpt/web-platform-tests/graphics-aam/graphics-symbol_on_html_element-manual.html @@ -0,0 +1,98 @@ + + + + graphics-symbol on HTML element + + + + + + + + + +

This test examines the ARIA properties for graphics-symbol on HTML element.

+
Spinach Salad with Strawberry & Almonds + 🌿 + 🌰 +
+ +
+
+
+ + diff --git a/tests/wpt/web-platform-tests/graphics-aam/graphics-symbol_on_svg_element-manual.html b/tests/wpt/web-platform-tests/graphics-aam/graphics-symbol_on_svg_element-manual.html new file mode 100644 index 00000000000..6663225f82c --- /dev/null +++ b/tests/wpt/web-platform-tests/graphics-aam/graphics-symbol_on_svg_element-manual.html @@ -0,0 +1,99 @@ + + + + graphics-symbol on SVG element + + + + + + + + + +

This test examines the ARIA properties for graphics-symbol on SVG element.

+ + + + + + +
+
+
+ + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html new file mode 100644 index 00000000000..4d811199b14 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/read-media/pageload-image-in-popup.html @@ -0,0 +1,43 @@ + + + + Media documents: image + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/003.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/003.html index 200a6dc3455..86d85b9ca6b 100644 --- a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/003.html +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/003.html @@ -10,14 +10,14 @@
scroll 2
diff --git a/tests/wpt/web-platform-tests/html/dom/usvstring-reflection.html b/tests/wpt/web-platform-tests/html/dom/usvstring-reflection.html index 7b408e08136..aaf6c0bee60 100644 --- a/tests/wpt/web-platform-tests/html/dom/usvstring-reflection.html +++ b/tests/wpt/web-platform-tests/html/dom/usvstring-reflection.html @@ -94,9 +94,19 @@ test(() => { assert_true(wsocket.url.endsWith('ws://www.example.com/socketserve%EF%BF%BD/')); }, "websocket url : unpaired surrogate codepoint should be replaced with U+FFFD") +test(() => { + try { + navigator.sendBeacon("resources/\uD800blank.txt"); + assert_true(true); + } catch (e) { + assert_true(false); + } +}, "sendBeacon URL: unpaired surrogate codepoint should not make any exceptions.") + test(() => { var w = window.open("about:blank#\uD800"); assert_equals(w.document.URL, 'about:blank#%EF%BF%BD'); assert_equals(w.document.documentURI, 'about:blank#%EF%BF%BD'); }, "Document URLs: unpaired surrogate codepoint should be replaced with U+FFFD") + diff --git a/tests/wpt/web-platform-tests/html/editing/editing-0/autocapitalization/autocapitalize.html b/tests/wpt/web-platform-tests/html/editing/editing-0/autocapitalization/autocapitalize.html new file mode 100644 index 00000000000..392ada47bec --- /dev/null +++ b/tests/wpt/web-platform-tests/html/editing/editing-0/autocapitalization/autocapitalize.html @@ -0,0 +1,688 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html index 4f94cddc708..56edf25aa8f 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/mime-types/canPlayType.html @@ -2,8 +2,13 @@ canPlayType + +
+Text track cue layout after controls are added (reference) + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added.html new file mode 100644 index 00000000000..23c27e418ec --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-added.html @@ -0,0 +1,37 @@ + + + + +Text track cue layout after controls are added + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed-ref.html new file mode 100644 index 00000000000..96afaef3463 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed-ref.html @@ -0,0 +1,29 @@ + + + +Text track cue layout after controls are removed (reference) + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html new file mode 100644 index 00000000000..76019c9b41e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-cue-rendering-after-controls-removed.html @@ -0,0 +1,34 @@ + + + + +Text track cue layout after controls are removed + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines-ref.html new file mode 100644 index 00000000000..92c1e9fedf9 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines-ref.html @@ -0,0 +1,29 @@ + + +Reference test for track-webvtt-non-snap-to-lines.html + + + +
+ + Bear is Coming!!!!! +
+ \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines.html new file mode 100644 index 00000000000..0da8c6f83d5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-non-snap-to-lines.html @@ -0,0 +1,24 @@ + + +Position is not adjusted for non snap-to-lines cues + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end-ref.html new file mode 100644 index 00000000000..c0415367cc1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end-ref.html @@ -0,0 +1,23 @@ + + +WebVTT two-cue layout after the first cue has ended (reference) + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end.html new file mode 100644 index 00000000000..c90313c887c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-webvtt-two-cue-layout-after-first-end.html @@ -0,0 +1,30 @@ + + +WebVTT two-cue layout after the first cue has ended + + + + + \ No newline at end of file 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 new file mode 100644 index 00000000000..92959134fd4 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/rellist-feature-detection.html @@ -0,0 +1,80 @@ + +Test relList attribute + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html new file mode 100644 index 00000000000..db03612e82b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/inline-async-execorder.html @@ -0,0 +1,29 @@ + + + Inline async module script execution order + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/load-error-events-inline.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/load-error-events-inline.html index c4dd0807f62..58397dd07d4 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/load-error-events-inline.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/load-error-events-inline.html @@ -59,4 +59,3 @@ document.head.appendChild(script4_dynamic_error); - diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/module-in-xhtml.xhtml b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/module-in-xhtml.xhtml index 724c9e75074..1655e61a7c5 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/module-in-xhtml.xhtml +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/module-in-xhtml.xhtml @@ -10,7 +10,11 @@ window.evaluated_module_script = true; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/fast-module.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/fast-module.js new file mode 100644 index 00000000000..3a76cf71f6c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/fast-module.js @@ -0,0 +1 @@ +loaded.push("fast"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/slow-module.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/slow-module.js new file mode 100644 index 00000000000..4623ef73604 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/resources/slow-module.js @@ -0,0 +1,3 @@ +// This module is imported with pipe=trickle(d2) to make it load more slowly +// than fast-module.js +loaded.push("slow"); diff --git a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html deleted file mode 100644 index 5af9a5e4c02..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-a-element/rellist-feature-detection.html +++ /dev/null @@ -1,57 +0,0 @@ - -HTMLAnchorElement relList - - - diff --git a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html b/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html deleted file mode 100644 index 1099819cd94..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/text-level-semantics/the-area-element/rellist-feature-detection.html +++ /dev/null @@ -1,57 +0,0 @@ - -HTMLAreaElement relList - - - diff --git a/tests/wpt/web-platform-tests/html/webappapis/atob/base64.html b/tests/wpt/web-platform-tests/html/webappapis/atob/base64.html index c33ab228f94..c522afdd56c 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/atob/base64.html +++ b/tests/wpt/web-platform-tests/html/webappapis/atob/base64.html @@ -70,124 +70,6 @@ function btoaLookup(idx) { // Throw INVALID_CHARACTER_ERR exception here -- won't be hit in the tests. } -/** - * Implementation of atob() according to the HTML spec, except that instead of - * throwing INVALID_CHARACTER_ERR we return null. - */ -function myatob(input) { - // WebIDL requires DOMStrings to just be converted using ECMAScript - // ToString, which in our case amounts to calling String(). - input = String(input); - - // "Remove all space characters from input." - input = input.replace(/[ \t\n\f\r]/g, ""); - - // "If the length of input divides by 4 leaving no remainder, then: if - // input ends with one or two U+003D EQUALS SIGN (=) characters, remove - // them from input." - if (input.length % 4 == 0 && /==?$/.test(input)) { - input = input.replace(/==?$/, ""); - } - - // "If the length of input divides by 4 leaving a remainder of 1, throw an - // INVALID_CHARACTER_ERR exception and abort these steps." - // - // "If input contains a character that is not in the following list of - // characters and character ranges, throw an INVALID_CHARACTER_ERR - // exception and abort these steps: - // - // U+002B PLUS SIGN (+) - // U+002F SOLIDUS (/) - // U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9) - // U+0041 LATIN CAPITAL LETTER A to U+005A LATIN CAPITAL LETTER Z - // U+0061 LATIN SMALL LETTER A to U+007A LATIN SMALL LETTER Z" - if (input.length % 4 == 1 - || !/^[+/0-9A-Za-z]*$/.test(input)) { - return null; - } - - // "Let output be a string, initially empty." - var output = ""; - - // "Let buffer be a buffer that can have bits appended to it, initially - // empty." - // - // We append bits via left-shift and or. accumulatedBits is used to track - // when we've gotten to 24 bits. - var buffer = 0; - var accumulatedBits = 0; - - // "While position does not point past the end of input, run these - // substeps:" - for (var i = 0; i < input.length; i++) { - // "Find the character pointed to by position in the first column of - // the following table. Let n be the number given in the second cell of - // the same row." - // - // "Append to buffer the six bits corresponding to number, most - // significant bit first." - // - // atobLookup() implements the table from the spec. - buffer <<= 6; - buffer |= atobLookup(input[i]); - - // "If buffer has accumulated 24 bits, interpret them as three 8-bit - // big-endian numbers. Append the three characters with code points - // equal to those numbers to output, in the same order, and then empty - // buffer." - accumulatedBits += 6; - if (accumulatedBits == 24) { - output += String.fromCharCode((buffer & 0xff0000) >> 16); - output += String.fromCharCode((buffer & 0xff00) >> 8); - output += String.fromCharCode(buffer & 0xff); - buffer = accumulatedBits = 0; - } - - // "Advance position by one character." - } - - // "If buffer is not empty, it contains either 12 or 18 bits. If it - // contains 12 bits, discard the last four and interpret the remaining - // eight as an 8-bit big-endian number. If it contains 18 bits, discard the - // last two and interpret the remaining 16 as two 8-bit big-endian numbers. - // Append the one or two characters with code points equal to those one or - // two numbers to output, in the same order." - if (accumulatedBits == 12) { - buffer >>= 4; - output += String.fromCharCode(buffer); - } else if (accumulatedBits == 18) { - buffer >>= 2; - output += String.fromCharCode((buffer & 0xff00) >> 8); - output += String.fromCharCode(buffer & 0xff); - } - - // "Return output." - return output; -} - -/** - * A lookup table for atob(), which converts an ASCII character to the - * corresponding six-bit number. - */ -function atobLookup(chr) { - if (/[A-Z]/.test(chr)) { - return chr.charCodeAt(0) - "A".charCodeAt(0); - } - if (/[a-z]/.test(chr)) { - return chr.charCodeAt(0) - "a".charCodeAt(0) + 26; - } - if (/[0-9]/.test(chr)) { - return chr.charCodeAt(0) - "0".charCodeAt(0) + 52; - } - if (chr == "+") { - return 62; - } - if (chr == "/") { - return 63; - } - // Throw exception; should not be hit in tests -} - function btoaException(input) { input = String(input); for (var i = 0; i < input.length; i++) { @@ -252,55 +134,40 @@ tests.push(["btoa(first 256 code points concatenated)", everything]); generate_tests(testBtoa, tests); -function testAtob(input) { - var expected = myatob(input); - if (expected === null) { - assert_throws("InvalidCharacterError", function() { atob(input) }); - return; - } +promise_test(() => fetch("../../../fetch/data-urls/resources/base64.json").then(res => res.json()).then(runAtobTests), "atob() setup."); - assert_equals(atob(input), expected); -} - -var tests = ["", "abcd", " abcd", "abcd ", " abcd===", "abcd=== ", - "abcd ===", "a", "ab", "abc", "abcde", String.fromCharCode(0xd800, 0xdc00), - "=", "==", "===", "====", "=====", - "a=", "a==", "a===", "a====", "a=====", - "ab=", "ab==", "ab===", "ab====", "ab=====", - "abc=", "abc==", "abc===", "abc====", "abc=====", - "abcd=", "abcd==", "abcd===", "abcd====", "abcd=====", - "abcde=", "abcde==", "abcde===", "abcde====", "abcde=====", - "=a", "=a=", "a=b", "a=b=", "ab=c", "ab=c=", "abc=d", "abc=d=", - // With whitespace - "ab\tcd", "ab\ncd", "ab\fcd", "ab\rcd", "ab cd", "ab\u00a0cd", - "ab\t\n\f\r cd", " \t\n\f\r ab\t\n\f\r cd\t\n\f\r ", - "ab\t\n\f\r =\t\n\f\r =\t\n\f\r ", - // Test if any bits are set at the end. These should all be fine, since - // they end with A, which becomes 0: - "A", "/A", "//A", "///A", "////A", - // These are all bad, since they end in / (= 63, all bits set) but their - // length isn't a multiple of four characters, so they can't be output by - // btoa(). Thus one might expect some UAs to throw exceptions or otherwise - // object, since they could never be output by btoa(), so they're good to - // test. - "/", "A/", "AA/", "AAAA/", - // But this one is possible: - "AAA/", - // Binary-safety tests - "\0nonsense", "abcd\0nonsense", - // WebIDL tests - undefined, null, 7, 12, 1.5, true, false, NaN, +Infinity, -Infinity, 0, -0, - {toString: function() { return "foo" }}, - {toString: function() { return "abcd" }}, +const idlTests = [ + [undefined, null], + [null, [158, 233, 101]], + [7, null], + [12, [215]], + [1.5, null], + [true, [182, 187]], + [false, null], + [NaN, [53, 163]], + [+Infinity, [34, 119, 226, 158, 43, 114]], + [-Infinity, null], + [0, null], + [-0, null], + [{toString: function() { return "foo" }}, [126, 138]], + [{toString: function() { return "abcd" }}, [105, 183, 29]] ]; -tests = tests.map( - function(elem) { - if (myatob(elem) === null) { - return ["atob(" + format_value(elem) + ") must raise InvalidCharacterError", elem]; - } - return ["atob(" + format_value(elem) + ") == " + format_value(myatob(elem)), elem]; - } -); -generate_tests(testAtob, tests); +function runAtobTests(tests) { + const allTests = tests.concat(idlTests); + for(let i = 0; i < allTests.length; i++) { + const input = allTests[i][0], + output = allTests[i][1]; + test(() => { + if(output === null) { + assert_throws("InvalidCharacterError", () => window.atob(input)); + } else { + const result = window.atob(input); + for(let ii = 0; ii < output.length; ii++) { + assert_equals(result.charCodeAt(ii), output[ii]); + } + } + }, "atob(" + format_value(input) + ")"); + } +} diff --git a/tests/wpt/web-platform-tests/http/resources/securedimage.py b/tests/wpt/web-platform-tests/http/resources/securedimage.py index 89cbd72b134..510ddca96e2 100644 --- a/tests/wpt/web-platform-tests/http/resources/securedimage.py +++ b/tests/wpt/web-platform-tests/http/resources/securedimage.py @@ -6,10 +6,12 @@ def main(request, response): if "authorization" not in request.headers: response.status = 401 response.headers.set("WWW-Authenticate", "Basic") + return else: auth = request.headers.get("Authorization") if auth != "Basic dGVzdHVzZXI6dGVzdHBhc3M=": response.set_error(403, "Invalid username or password - " + auth) + return response.status = 301 response.headers.set("Location", image_url) diff --git a/tests/wpt/web-platform-tests/http/tests/bluetooth/https/requestDevice/cross-origin-iframe.sub.https.html b/tests/wpt/web-platform-tests/http/tests/bluetooth/https/requestDevice/cross-origin-iframe.sub.https.html new file mode 100644 index 00000000000..858b73f5d57 --- /dev/null +++ b/tests/wpt/web-platform-tests/http/tests/bluetooth/https/requestDevice/cross-origin-iframe.sub.https.html @@ -0,0 +1,38 @@ + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/images/pattern.svg b/tests/wpt/web-platform-tests/images/pattern.svg new file mode 100644 index 00000000000..40c6ad3da69 --- /dev/null +++ b/tests/wpt/web-platform-tests/images/pattern.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/interfaces/html.idl b/tests/wpt/web-platform-tests/interfaces/html.idl index b2a1ec30d82..49348a723b3 100644 --- a/tests/wpt/web-platform-tests/interfaces/html.idl +++ b/tests/wpt/web-platform-tests/interfaces/html.idl @@ -1141,7 +1141,7 @@ interface HTMLCanvasElement : HTMLElement { [CEReactions] attribute unsigned long width; [CEReactions] attribute unsigned long height; - RenderingContext? getContext(DOMString contextId, any... arguments); + RenderingContext? getContext(DOMString contextId, optional any options = null); USVString toDataURL(optional DOMString type, optional any quality); void toBlob(BlobCallback _callback, optional DOMString type, optional any quality); @@ -1330,7 +1330,6 @@ interface mixin CanvasPath { void quadraticCurveTo(unrestricted double cpx, unrestricted double cpy, unrestricted double x, unrestricted double y); void bezierCurveTo(unrestricted double cp1x, unrestricted double cp1y, unrestricted double cp2x, unrestricted double cp2y, unrestricted double x, unrestricted double y); void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radius); - void arcTo(unrestricted double x1, unrestricted double y1, unrestricted double x2, unrestricted double y2, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation); void rect(unrestricted double x, unrestricted double y, unrestricted double w, unrestricted double h); void arc(unrestricted double x, unrestricted double y, unrestricted double radius, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); void ellipse(unrestricted double x, unrestricted double y, unrestricted double radiusX, unrestricted double radiusY, unrestricted double rotation, unrestricted double startAngle, unrestricted double endAngle, optional boolean anticlockwise = false); @@ -1377,10 +1376,7 @@ interface ImageData { readonly attribute Uint8ClampedArray data; }; -[Constructor, - Constructor(Path2D path), - Constructor(sequence paths, optional CanvasFillRule fillRule = "nonzero"), - Constructor(DOMString d), +[Constructor(optional (Path2D or DOMString) path), Exposed=(Window,Worker)] interface Path2D { void addPath(Path2D path, optional DOMMatrix2DInit transform); @@ -1405,14 +1401,14 @@ dictionary ImageEncodeOptions { unrestricted double quality = 1.0; }; -enum OffscreenRenderingContextType { "2d", "webgl" }; +enum OffscreenRenderingContextId { "2d", "webgl" }; [Constructor([EnforceRange] unsigned long long width, [EnforceRange] unsigned long long height), Exposed=(Window,Worker), Transferable] interface OffscreenCanvas : EventTarget { attribute unsigned long long width; attribute unsigned long long height; - OffscreenRenderingContext? getContext(OffscreenRenderingContextType contextType, any... arguments); + OffscreenRenderingContext? getContext(OffscreenRenderingContextId contextId, optional any options = null); ImageBitmap transferToImageBitmap(); Promise convertToBlob(optional ImageEncodeOptions options); }; diff --git a/tests/wpt/web-platform-tests/interfaces/screen-orientation.idl b/tests/wpt/web-platform-tests/interfaces/screen-orientation.idl new file mode 100644 index 00000000000..7db942ea955 --- /dev/null +++ b/tests/wpt/web-platform-tests/interfaces/screen-orientation.idl @@ -0,0 +1,28 @@ +partial interface Screen { + [SameObject] + readonly attribute ScreenOrientation orientation; +}; +[Exposed=Window] +interface ScreenOrientation : EventTarget { + Promise lock(OrientationLockType orientation); + void unlock(); + readonly attribute OrientationType type; + readonly attribute unsigned short angle; + attribute EventHandler onchange; +}; +enum OrientationType { + "portrait-primary", + "portrait-secondary", + "landscape-primary", + "landscape-secondary" +}; +enum OrientationLockType { + "any", + "natural", + "landscape", + "portrait", + "portrait-primary", + "portrait-secondary", + "landscape-primary", + "landscape-secondary" +}; diff --git a/tests/wpt/web-platform-tests/lint.whitelist b/tests/wpt/web-platform-tests/lint.whitelist index b8728fefc35..2f9b44d4701 100644 --- a/tests/wpt/web-platform-tests/lint.whitelist +++ b/tests/wpt/web-platform-tests/lint.whitelist @@ -585,8 +585,6 @@ CSS-COLLIDING-SUPPORT-NAME: css/*/.htaccess CSS-COLLIDING-SUPPORT-NAME: css/*/LOCK # These are all the current "merge mismatch" errors the build system produces -CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox/support/100x100-green.png -CSS-COLLIDING-SUPPORT-NAME: css/css-grid/grid-items/support/100x100-green.png CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox/support/200x200-green.png CSS-COLLIDING-SUPPORT-NAME: css/css-grid/grid-items/support/200x200-green.png CSS-COLLIDING-SUPPORT-NAME: css/css-regions/contentEditable/support/common.css diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-addsourcebuffer.html b/tests/wpt/web-platform-tests/media-source/mediasource-addsourcebuffer.html index 9fc94632410..7f6aa2ab697 100644 --- a/tests/wpt/web-platform-tests/media-source/mediasource-addsourcebuffer.html +++ b/tests/wpt/web-platform-tests/media-source/mediasource-addsourcebuffer.html @@ -21,7 +21,7 @@ mediasource_test(function(test, mediaElement, mediaSource) { - assert_throws(new TypeError(), + assert_throws({name: "TypeError"}, function() { mediaSource.addSourceBuffer(""); }, "addSourceBuffer() threw an exception when passed an empty string."); test.done(); @@ -43,7 +43,6 @@ test.done(); }, "Test addSourceBuffer() with unsupported type"); - mediasource_test(function(test, mediaElement, mediaSource) { var mimetype = 'video/webm;codecs="vp8,vorbis"'; @@ -83,7 +82,7 @@ var sourceBuffer = mediaSource.addSourceBuffer(mimetype); assert_true(sourceBuffer != null, "New SourceBuffer returned"); assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers"); - assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is in mediaSource.activeSourceBuffers"); + assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers"); test.done(); }, "Test addSourceBuffer() video only"); @@ -96,7 +95,7 @@ var sourceBuffer = mediaSource.addSourceBuffer(mimetype); assert_true(sourceBuffer != null, "New SourceBuffer returned"); assert_equals(mediaSource.sourceBuffers[0], sourceBuffer, "SourceBuffer is in mediaSource.sourceBuffers"); - assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is in mediaSource.activeSourceBuffers"); + assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBuffer is not in mediaSource.activeSourceBuffers"); test.done(); }, "Test addSourceBuffer() audio only"); @@ -129,26 +128,6 @@ assert_equals(mediaSource.activeSourceBuffers.length, 0, "SourceBufferB is not in mediaSource.activeSourceBuffers"); test.done(); }, "Test addSourceBuffer() with AAC and H.264 in separate SourceBuffers"); - - mediasource_test(function(test, mediaElement, mediaSource) - { - var reachedLimit = false; - - // The 20 here is an arbitrary upper limit to make sure the test terminates. This test - // assumes that implementations won't support more than 20 SourceBuffers simultaneously. - for (var i = 0; i < 20; ++i) { - try { - mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); - } catch(e) { - assert_equals(e.name, "QuotaExceededError"); - reachedLimit = true; - break; - } - } - assert_true(reachedLimit, "Reached SourceBuffer limit."); - test.done(); - }, "Test addSourceBuffer() QuotaExceededError."); - diff --git a/tests/wpt/web-platform-tests/media-source/mediasource-is-type-supported.html b/tests/wpt/web-platform-tests/media-source/mediasource-is-type-supported.html index 985e2062693..a364693298d 100644 --- a/tests/wpt/web-platform-tests/media-source/mediasource-is-type-supported.html +++ b/tests/wpt/web-platform-tests/media-source/mediasource-is-type-supported.html @@ -5,7 +5,6 @@ MediaSource.isTypeSupported() test cases. -
@@ -32,6 +31,7 @@ 'video/webm;codecs="', 'video/webm;codecs=""', 'video/webm;codecs=","', + 'unsupported_mediatype', '', null ], false, 'Test invalid MIME format'); @@ -45,15 +45,12 @@ test_type_support([ 'audio/webm;codecs="vp8"', 'audio/mp4;codecs="avc1.4d001e"', - ], false, 'Test invalid mismatch between major type and codec ID'); - - test_type_support([ 'audio/mp4;codecs="vorbis"', 'audio/webm;codecs="mp4a.40.2"', 'video/mp4;codecs="vp8"', - 'video/webm;codecs="mp4a.40.2"', 'video/mp4;codecs="vorbis"', - ], false, 'Test invalid mismatch between minor type and codec ID'); + 'video/webm;codecs="mp4a.40.2"', + ], false, 'Test invalid mismatch between MIME type and codec ID'); test_type_support([ 'audio/mp4;codecs="mp4a"', 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 4dc1c608d22..2d9c96ab9ba 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 @@ -23,6 +23,8 @@ function doIdlTest(idlText) { const MDI_idl = new IdlArray(); + MDI_idl.add_untested_idls("interface Event {};"); + MDI_idl.add_untested_idls("interface EventTarget {};"); MDI_idl.add_untested_idls("interface Navigator {};"); MDI_idl.add_idls(idlText); diff --git a/tests/wpt/web-platform-tests/payment-request/OWNERS b/tests/wpt/web-platform-tests/payment-request/OWNERS index 6aa9e2b2b50..e2bec50eaa0 100644 --- a/tests/wpt/web-platform-tests/payment-request/OWNERS +++ b/tests/wpt/web-platform-tests/payment-request/OWNERS @@ -1,6 +1,4 @@ -@edenchuang @marcoscaceres @rsolomakhin @domenic -@AmazingJaze @MSFTkihans diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-id-attribute.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-id-attribute.https.html index 9d77a88f4e9..455b65a7da3 100644 --- a/tests/wpt/web-platform-tests/payment-request/payment-request-id-attribute.https.html +++ b/tests/wpt/web-platform-tests/payment-request/payment-request-id-attribute.https.html @@ -2,24 +2,38 @@ Test for PaymentRequest id attribute + diff --git a/tests/wpt/web-platform-tests/performance-timeline/idlharness.html b/tests/wpt/web-platform-tests/performance-timeline/idlharness.html index 8185386476e..8cef4fb3fc9 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/idlharness.html +++ b/tests/wpt/web-platform-tests/performance-timeline/idlharness.html @@ -67,6 +67,7 @@ callback PerformanceObserverCallback = void (PerformanceObserverEntryList entrie interface PerformanceObserver { void observe(PerformanceObserverInit options); void disconnect(); + PerformanceEntryList takeRecords(); }; diff --git a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/PresentationReceiver_create-manual.https.html b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/PresentationReceiver_create-manual.https.html index 67b8c43d5a1..96fc6f345d1 100644 --- a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/PresentationReceiver_create-manual.https.html +++ b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/PresentationReceiver_create-manual.https.html @@ -25,8 +25,14 @@ } }); - let connection, db; + let connection; const presentBtn = document.getElementById('presentBtn'); + + const dbName = { + controller: 'db-presentation-api-controlling-ua', + receiver: 'db-presentation-api-receiving-ua' + }; + const main = () => { promise_test(t => { presentBtn.disabled = true; @@ -38,14 +44,14 @@ notice.parentNode.removeChild(notice); stash.stop(); - //history.back(); + // history.back(); document.cookie = 'PresentationApiTest=true; Expires=' + new Date().toUTCString(); sessionStorage.removeItem('presentation_api_test'); localStorage.removeItem('presentation_api_test'); - if (db) - db.close(); - indexedDB.deleteDatabase(dbName); + Object.values(dbName).forEach(name => { + indexedDB.deleteDatabase(name); + }); if (connection) { connection.onconnect = () => { connection.terminate(); }; @@ -75,28 +81,12 @@ sessionStorage.setItem(storageName, storageValue); localStorage.setItem(storageName, storageValue); - const dbName = 'db-presentation-api'; - const storeName = 'store-controlling-ua'; - const storeData = { - id: 'controller', - data: 'controlling user agent' - }; const openIndexedDB = () => { if ('indexedDB' in window) { - const dbReq = indexedDB.open(dbName, 1); - return new Promise((resolve, reject) => { - dbReq.onupgradeneeded = () => { - db = dbReq.result; - const store = db.createObjectStore(storeName, { keyPath: 'id' }); - store.add(storeData); - }; - dbReq.onsuccess = () => { - db = dbReq.result; - db.close(); - db = null; - resolve(); - }; - dbReq.onerror = reject; + const req = indexedDB.open(dbName.controller, 1); + const eventWatcher = new EventWatcher(t, req, 'upgradeneeded'); + return eventWatcher.wait_for('upgradeneeded').then(evt => { + evt.target.result.close(); }); } else @@ -115,6 +105,8 @@ }; reg.active.postMessage('', [channel.port2]); } + else + resolve([]); }); }); }; @@ -153,29 +145,19 @@ // Indexed Database const checkIndexedDB = t => { if ('indexedDB' in window) { - const message = 'Indexed Database is not shared with a receiving user agent.'; - let req = indexedDB.open(dbName, 1), store; - let eventWatcher = new EventWatcher(t, req, 'success'); - return eventWatcher.wait_for('success').then(() => { - db = req.result; - const transaction = db.transaction(storeName, 'readwrite'); - store = transaction.objectStore(storeName); - req = store.openCursor(); - eventWatcher = new EventWatcher(t, req, 'success'); - return eventWatcher.wait_for('success'); - }).then(() => { - assert_true(req.result instanceof IDBCursorWithValue, message); - const cursor = req.result; - const item = cursor.value; - assert_equals(item.id, storeData.id, message); - assert_equals(item.data, storeData.data, message); - cursor.continue(); - return eventWatcher.wait_for('success'); - }).then(() => { - assert_equals(req.result, null, message); - db.close(); - db = null; - }); + const req = indexedDB.open(dbName.receiver); + const upgradeneededWatcher = new EventWatcher(t, req, 'upgradeneeded'); + const successWatcher = new EventWatcher(t, req, 'success'); + return Promise.race([ + upgradeneededWatcher.wait_for('upgradeneeded').then(evt => { + evt.target.result.close(); + }), + successWatcher.wait_for('success').then(evt => { + evt.target.result.close(); + // This would fail if the database created by the receiving UA is visible to the controlling UA + assert_unreached('Indexed Database is not shared with a receiving user agent.'); + }) + ]); } else return Promise.resolve(); @@ -231,6 +213,7 @@ return request.start().then(c => { connection = c; enableTimeout(); + // This Promise.race will be rejected if a receiving side terminates/closes the connection when window.close() is invoked return Promise.race([ openIndexedDB() @@ -249,7 +232,7 @@ // Check accessibility to window clients before terminating a presentation return getClientUrls().then(urls => { assert_true(urls.length === clientUrls.length && urls.every((value, index) => { return clientUrls[index] === value}), - 'A window client in a receiving user agent is not accessible to a service worker on a controlling user agent.') + 'A window client in a receiving user agent is not accessible to a service worker on a controlling user agent.'); const eventWatcher = new EventWatcher(t, connection, 'terminate'); connection.terminate(); return eventWatcher.wait_for('terminate'); diff --git a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua.html b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua.html index 8edb88e1d78..53f76014423 100644 --- a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua.html +++ b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua.html @@ -37,6 +37,11 @@ child.addEventListener('load', () => { const notice = document.getElementById('notice'); const modal = document.getElementById('modal'); + const dbName = { + controller: 'db-presentation-api-controlling-ua', + receiver: 'db-presentation-api-receiving-ua' + }; + promise_test(t => { t.add_cleanup(() => { document.cookie = cookieName + '=False;Expires=' + new Date().toUTCString(); @@ -46,9 +51,10 @@ child.addEventListener('load', () => { sessionStorage.removeItem(storageNameChild); localStorage.removeItem(storageNameChild); - if (db) - db.close(); - indexedDB.deleteDatabase(dbName); + Object.values(dbName).forEach(name => { + indexedDB.deleteDatabase(name); + }); + if ('serviceWorker' in navigator) { navigator.serviceWorker.getRegistrations().then(registrations => { return Promise.all(registrations.map(reg => reg.unregister())); @@ -97,37 +103,27 @@ child.addEventListener('load', () => { assert_equals(document.cookie, '', 'A cookie store is set to an empty store.') // Indexed Database - const dbName = 'db-presentation-api'; - const storeName = 'store-controlling-ua'; - const storeData = { - parent: { id: 'parent', data: 'receiving user agent' }, - child: { id: 'child', data: 'nested browsing context' } - }; - let db; const checkIndexedDB = () => { if ('indexedDB' in window) { - let req = indexedDB.open(dbName, 1), store; - let eventWatcher = new EventWatcher(t, req, ['upgradeneeded', 'success']); - return eventWatcher.wait_for('upgradeneeded').then(() => { - db = req.result; - const store = db.createObjectStore(storeName, { keyPath: 'id' }); - return eventWatcher.wait_for('success'); - }).then(() => { - db = req.result; - const transaction = db.transaction(storeName, 'readwrite'); - store = transaction.objectStore(storeName); - req = store.openCursor(); - eventWatcher = new EventWatcher(t, req, 'success'); - return eventWatcher.wait_for('success'); - }).then(() => { - assert_equals(req.result, null, 'Indexed Database is set to an empty storage.'); - req = store.put(storeData.parent); - eventWatcher = new EventWatcher(t, req, 'success'); - return eventWatcher.wait_for('success'); - }).then(() => { - db.close(); - db = null; - }); + // The test would fail when the database is already created by the controlling UA + const req = indexedDB.open(dbName.controller); + const upgradeneededWatcher = new EventWatcher(t, req, 'upgradeneeded'); + const successWatcher = new EventWatcher(t, req, 'success'); + return Promise.race([ + upgradeneededWatcher.wait_for('upgradeneeded').then(evt => { + evt.target.result.close(); + const req = indexedDB.open(dbName.receiver, 2); + const eventWatcher = new EventWatcher(t, req, 'upgradeneeded'); + return eventWatcher.wait_for('upgradeneeded'); + }).then(evt => { + evt.target.result.close(); + }), + successWatcher.wait_for('success').then(evt => { + evt.target.result.close(); + // This would fail if the database created by the controlling UA is visible to the receiving UA + assert_unreached('Indexed Database is set to an empty storage.'); + }) + ]); } else return Promise.resolve(); @@ -253,33 +249,24 @@ child.addEventListener('load', () => { // Indexed Database const checkUpdatedIndexedDB = () => { if ('indexedDB' in window) { - let req = indexedDB.open(dbName, 1), store; - let eventWatcher = new EventWatcher(t, req, 'success'); message = 'Indexed Database is shared by top-level and nested browsing contexts.'; - const checkItem = event => { - assert_true(event.target.result instanceof IDBCursorWithValue, message); - const cursor = event.target.result; - const item = cursor.value; - assert_equals(storeData[item.id].data, item.data, message); - delete storeData[item.id] - cursor.continue(); - return eventWatcher.wait_for('success'); - }; - return eventWatcher.wait_for('success').then(() => { - db = req.result; - const transaction = db.transaction(storeName, 'readwrite'); - store = transaction.objectStore(storeName); - req = store.openCursor(); - eventWatcher = new EventWatcher(t, req, 'success'); - return eventWatcher.wait_for('success'); - }).then(checkItem) - .then(checkItem) - .then(event => { - assert_equals(event.target.result, null, message); - assert_equals(Object.keys(storeData).length, 0, message); - db.close(); - db = null; - }); + const req = indexedDB.open(dbName.receiver); + const upgradeneededWatcher = new EventWatcher(t, req, 'upgradeneeded'); + const successWatcher = new EventWatcher(t, req, 'success'); + return Promise.race([ + upgradeneededWatcher.wait_for('upgradeneeded').then(evt => { + evt.target.result.close(); + // Check if the version of the database is upgraded to 3 by the nested browsing context + assert_unreached(message); + }), + successWatcher.wait_for('success').then(evt => { + const db = evt.target.result; + const version = db.version; + db.close(); + // Check if the version of the database is upgraded to 3 by the nested browsing context + assert_equals(version, 3, message); + }) + ]); } else return Promise.resolve(); diff --git a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua_child.html b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua_child.html index aa0e191077d..2f67f7fac02 100644 --- a/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua_child.html +++ b/tests/wpt/web-platform-tests/presentation-api/receiving-ua/support/PresentationReceiver_create_receiving-ua_child.html @@ -44,7 +44,7 @@ window.addEventListener('message', event => { modal.textContent = 'confirm()'; confirm(message); modal.textContent = 'print()'; - //print(); + print(); modal.textContent = 'prompt()'; prompt(message); notice.style.display = 'none'; @@ -60,36 +60,36 @@ window.addEventListener('message', event => { assert_equals(document.cookie, 'PresentationApiTest=Receiving-UA', 'A cookie store is shared by top-level and nested browsing contexts.'); // Indexed Database - let db; + const dbName = 'db-presentation-api-receiving-ua'; const checkIndexedDB = () => { if ('indexedDB' in window) { message = 'Indexed Database is shared by top-level and nested browsing contexts.'; - let req = indexedDB.open('db-presentation-api', 1), store; - let eventWatcher = new EventWatcher(t, req, 'success'); - return eventWatcher.wait_for('success').then(() => { - db = req.result; - const transaction = db.transaction('store-controlling-ua', 'readwrite'); - store = transaction.objectStore('store-controlling-ua'); - req = store.openCursor(); - eventWatcher = new EventWatcher(t, req, 'success'); - return eventWatcher.wait_for('success'); - }).then(() => { - assert_true(req.result instanceof IDBCursorWithValue, message); - const cursor = req.result; - const item = cursor.value; - assert_equals(item.id, 'parent', message); - assert_equals(item.data, 'receiving user agent', message); - cursor.continue(); - return eventWatcher.wait_for('success'); - }).then(() => { - assert_equals(req.result, null, message); - req = store.put({ id: 'child', data: 'nested browsing context' }); - eventWatcher = new EventWatcher(t, req, 'success'); - return eventWatcher.wait_for('success'); - }).then(() => { - db.close(); - db = null; - }); + + const req = indexedDB.open(dbName); + const upgradeneededWatcher = new EventWatcher(t, req, 'upgradeneeded'); + const successWatcher = new EventWatcher(t, req, 'success'); + return Promise.race([ + upgradeneededWatcher.wait_for('upgradeneeded').then(evt => { + evt.target.result.close(); + // This would fail if the database is not created by the top-level browsing context + assert_unreached(message); + }), + successWatcher.wait_for('success').then(evt => { + evt.target.result.close(); + const db = evt.target.result; + const version = db.version; + db.close(); + // Check if the version of the database is 2 as specified by the top-level browsing context + assert_equals(version, 2, message); + + // Upgrade the version + const req = indexedDB.open(dbName, 3); + const eventWatcher = new EventWatcher(t, req, 'upgradeneeded'); + return eventWatcher.wait_for('upgradeneeded'); + }).then(evt => { + evt.target.result.close(); + }) + ]); } else return Promise.resolve(); diff --git a/tests/wpt/web-platform-tests/proximity/DeviceProximityEvent_tests.html b/tests/wpt/web-platform-tests/proximity/DeviceProximityEvent_tests.html deleted file mode 100644 index d4d08fda7f1..00000000000 --- a/tests/wpt/web-platform-tests/proximity/DeviceProximityEvent_tests.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -Proximity Events Test Suite -

Test Suite for Proximity Events

-
- - - - diff --git a/tests/wpt/web-platform-tests/proximity/DeviceProximityEvent_tests.js b/tests/wpt/web-platform-tests/proximity/DeviceProximityEvent_tests.js deleted file mode 100644 index f433482480b..00000000000 --- a/tests/wpt/web-platform-tests/proximity/DeviceProximityEvent_tests.js +++ /dev/null @@ -1,441 +0,0 @@ -(function() { - //inheritance tests - test(function() { - var event = new DeviceProximityEvent(''); - assert_true(event instanceof window.DeviceProximityEvent); - }, 'the event is an instance of DeviceProximityEvent'); - - test(function() { - var event = new DeviceProximityEvent(''); - assert_true(event instanceof window.Event); - }, 'the event inherits from Event'); - - //Type attribute tests - test(function() { - assert_throws(new TypeError(), function() { - new DeviceProximityEvent(); - }, 'First argument is required, so was expecting a TypeError.'); - }, 'Missing type argument'); - - test(function() { - var event = new DeviceProximityEvent(undefined); - assert_equals(event.type, 'undefined'); - }, 'Event type set to undefined'); - - test(function() { - var event = new DeviceProximityEvent(null); - assert_equals(event.type, 'null'); - }, 'type argument is null'); - - test(function() { - var event = new DeviceProximityEvent(123); - assert_equals(event.type, '123'); - }, 'type argument is number'); - - test(function() { - var event = new DeviceProximityEvent(new Number(123)); - assert_equals(event.type, '123'); - }, 'type argument is Number'); - - test(function() { - var event = new DeviceProximityEvent([]); - assert_equals(event.type, ''); - }, 'type argument is array'); - - test(function() { - var event = new DeviceProximityEvent(new Array()); - assert_equals(event.type, ''); - }, 'type argument is instance of Array'); - - test(function() { - var event = new DeviceProximityEvent(['t', ['e', ['s', ['t']]]]); - assert_equals(event.type, 't,e,s,t'); - }, 'type argument is nested array'); - - test(function() { - var event = new DeviceProximityEvent(Math); - assert_equals(event.type, '[object Math]'); - }, 'type argument is host object'); - - test(function() { - var event = new DeviceProximityEvent(true); - assert_equals(event.type, 'true'); - }, 'type argument is boolean (true)'); - - test(function() { - var event = new DeviceProximityEvent(new Boolean(true)); - assert_equals(event.type, 'true'); - }, 'type argument is instance of Boolean (true)'); - - test(function() { - var event = new DeviceProximityEvent(false); - assert_equals(event.type, 'false'); - }, 'type argument is boolean (false)'); - - test(function() { - var event = new DeviceProximityEvent(new Boolean(false)); - assert_equals(event.type, 'false'); - }, 'type argument is instance of Boolean (false)'); - - test(function() { - var event = new DeviceProximityEvent('test'); - assert_equals(event.type, 'test'); - }, 'type argument is string'); - - test(function() { - var event = new DeviceProximityEvent(new String('test')); - assert_equals(event.type, 'test'); - }, 'type argument is instance of String'); - - test(function() { - var event = new DeviceProximityEvent(function test() {}); - assert_regexp_match(event.type, /function test.+{\s?}/); - }, 'type argument is function'); - - test(function() { - var event = new DeviceProximityEvent({ - toString: function() { - return '123'; - } - }); - assert_equals(event.type, '123'); - }, 'type argument is complext object, with toString method'); - - test(function() { - assert_throws(new TypeError(), function() { - new DeviceProximityEvent({ - toString: function() { - return function() {} - } - }); - }); - }, 'toString is of type function'); - - //eventInitDict attribute tests - test(function() { - var event = new DeviceProximityEvent('test', undefined); - assert_equals(event.value, Infinity); - assert_equals(event.min, -Infinity); - assert_equals(event.max, Infinity); - }, 'eventInitDict argument sets to undefined'); - - test(function() { - var event = new DeviceProximityEvent('test', null); - assert_equals(event.value, Infinity); - assert_equals(event.min, -Infinity); - assert_equals(event.max, Infinity); - }, 'eventInitDict argument is null'); - - test(function() { - var date = new Date(); - var event = new DeviceProximityEvent('test', date); - assert_equals(event.value, Infinity); - assert_equals(event.min, -Infinity); - assert_equals(event.max, Infinity); - }, 'eventInitDict argument is Date object'); - - test(function() { - var regexp = /abc/; - var event = new DeviceProximityEvent('test', regexp); - assert_equals(event.value, Infinity); - assert_equals(event.min, -Infinity); - assert_equals(event.max, Infinity); - }, 'eventInitDict argument is RegExp object'); - - test(function() { - assert_throws(new TypeError(), function() { - new DeviceProximityEvent('test', false); - }); - }, 'eventInitDict argument is boolean'); - - test(function() { - assert_throws(new TypeError(), function() { - new DeviceProximityEvent('test', 123); - }); - }, 'eventInitDict argument is number'); - - test(function() { - assert_throws(new TypeError(), function() { - new DeviceProximityEvent('test', 'hello'); - }); - }, 'eventInitDict argument is string'); - - //test readonly attribute unrestricted double value; - test(function() { - var event = new DeviceProximityEvent('test'); - assert_idl_attribute(event, 'value', 'must have attribute value'); - }, 'value attribute exist'); - - test(function() { - var event = new DeviceProximityEvent('test'); - assert_readonly(event, 'value', 'readonly attribute value'); - }, 'value attribute is readonly'); - - test(function() { - var event = new DeviceProximityEvent('test'); - assert_equals(event.value, Infinity); - }, 'value initializes to positive Infinity'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: Infinity - }); - assert_equals(event.value, Infinity); - }, 'value set to positive Infinity'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: -Infinity - }); - assert_equals(event.value, -Infinity); - }, 'value set to negative Infinity'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: 0 - }); - assert_equals(event.value, 0); - }, 'value set to 0'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: 1 - }); - assert_equals(event.value, 1); - }, 'value set to 1'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: 0.5 - }); - assert_equals(event.value, 0.5); - }, 'value set to 0.5'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: false - }); - assert_equals(event.value, 0, 'value set to false, converts to 0.'); - }, 'value set to false'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: true - }); - assert_equals(event.value, 1, 'value set to true, converts to 1.'); - }, 'value set to true'); - - - test(function() { - var prop = { - value: undefined - }; - try { - var event = new DeviceProximityEvent('test', prop); - assert_true(isNaN(event.value)); - } catch(e) { - assert_unreached('error message: ' + e.message); - } - }, 'value of undefined resolves to NaN'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: null - }); - assert_equals(event.value, 0, 'value resolves to 0'); - }, 'value of null resolves to 0'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: '' - }); - assert_equals(event.value, 0, 'value must resolve to 0'); - }, 'value of empty string must resolve to 0'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: '\u0020' - }); - assert_equals(event.value, 0, 'value must resolve to 0'); - }, 'value of U+0020 must resolve to 0'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: '\u0020\u0020\u0020\u0020\u0020\u0020' - }); - assert_equals(event.value, 0, 'value must resolve to 0'); - }, 'value of multiple U+0020 must resolve to 0'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: '\u0020\u0020\u00201234\u0020\u0020\u0020' - }); - assert_equals(event.value, 1234, 'converts to 1234'); - }, 'value converts to 1234'); - - test(function() { - var event = new DeviceProximityEvent('test', { - value: [] - }); - assert_equals(event.value, 0, 'converts to 0'); - }, 'value converts to 0'); - - - test(function() { - var prop = { - value: {} - }; - try { - var event = new DeviceProximityEvent('test', prop); - assert_true(isNaN(event.value)); - } catch(e) { - assert_unreached('error message: ' + e.message); - } - }, 'value of {} resolves to NaN'); - - test(function() { - var prop = { - get value() { - return NaN; - } - }; - try { - var event = new DeviceProximityEvent('test', prop); - assert_true(isNaN(event.value)); - } catch(e) { - assert_unreached('error message: ' + e.message); - } - }, 'value resolves to NaN'); - - test(function() { - var prop = { - get value() { - return '123'; - } - }; - var event = new DeviceProximityEvent('test', prop); - assert_equals(event.value, 123, 'converts to 123'); - }, 'value resolves 123'); - - //test readonly attribute unrestricted double min - test(function() { - var event = new DeviceProximityEvent('test'); - assert_idl_attribute(event, 'min', 'must have attribute min'); - }, 'min attribute exist'); - - test(function() { - var event = new DeviceProximityEvent('test'); - assert_readonly(event, 'min', 'readonly attribute min'); - }, 'min attribute is readonly'); - - test(function() { - var event = new DeviceProximityEvent('test'); - assert_equals(event.min, -Infinity); - }, 'min initializes to negative Infinity'); - - //test readonly attribute unrestricted double max; - test(function() { - var event = new DeviceProximityEvent('test'); - assert_idl_attribute(event, 'max', 'must have attribute max'); - }, 'max attribute exist'); - - test(function() { - var event = new DeviceProximityEvent('test'); - assert_readonly(event, 'max', 'readonly attribute max'); - }, 'max attribute is readonly'); - - test(function() { - var event = new DeviceProximityEvent('test'); - assert_equals(event.max, Infinity); - }, 'max initializes to positive Infinity'); - - //test attribute EventHandler ondeviceproximity; - test(function() { - var desc = 'Expected to find ondeviceproximity attribute on window object'; - assert_idl_attribute(window, 'ondeviceproximity', desc); - }, 'ondeviceproximity exists'); - - test(function() { - var desc = 'window.ondeviceproximity must be null'; - assert_equals(window.ondeviceproximity, null, desc); - }, 'ondeviceproximity is null'); - - test(function() { - var desc = 'window.ondeviceproximity did not accept callable object', - func = function() {}, - descidl = 'Expected to find ondeviceproximity attribute on window object'; - assert_idl_attribute(window, 'ondeviceproximity', descidl); - window.ondeviceproximity = func; - assert_equals(window.ondeviceproximity, func, desc); - }, 'ondeviceproximity is set to function'); - - test(function() { - var desc = 'window.ondeviceproximity did not treat noncallable as null'; - window.ondeviceproximity = function() {}; - window.ondeviceproximity = {}; - assert_equals(window.ondeviceproximity, null, desc); - }, 'treat object as null'); - - test(function() { - var desc = 'window.ondeviceproximity did not treat noncallable as null'; - window.ondeviceproximity = function() {}; - window.ondeviceproximity = { - call: 'test' - }; - assert_equals(window.ondeviceproximity, null, desc); - }, 'treat object with non-callable call property as null'); - - test(function() { - var desc = 'window.ondeviceproximity did not treat noncallable (string) as null'; - window.ondeviceproximity = function() {}; - window.ondeviceproximity = 'string'; - assert_equals(window.ondeviceproximity, null, desc); - }, 'treat string as null'); - - test(function() { - var desc = 'window.ondeviceproximity did not treat noncallable (number) as null'; - window.ondeviceproximity = function() {}; - window.ondeviceproximity = 123; - assert_equals(window.ondeviceproximity, null, desc); - }, 'treat number as null'); - - test(function() { - var desc = 'window.ondeviceproximity did not treat noncallable (undefined) as null'; - window.ondeviceproximity = function() {}; - window.ondeviceproximity = undefined; - assert_equals(window.ondeviceproximity, null, desc); - }, 'treat undefined as null'); - - test(function() { - var desc = 'window.ondeviceproximity did not treat noncallable (array) as null'; - window.ondeviceproximity = function() {}; - window.ondeviceproximity = []; - assert_equals(window.ondeviceproximity, null, desc); - }, 'treat array as null'); - - test(function() { - var desc = 'window.ondeviceproximity did not treat noncallable host object as null'; - window.ondeviceproximity = function() {}; - window.ondeviceproximity = Node; - assert_equals(window.ondeviceproximity, null, desc); - }, 'treat non-callable host object as null'); - - //Async tests - var t = async_test('test if device proximity event received'); - window.addEventListener('deviceproximity', function(e) { - t.step(function() { - var msg = 'expected instance of DeviceProximityEvent: '; - assert_true(e instanceof window.DeviceProximityEvent, msg); - }); - t.done(); - }); - - var t2 = async_test('test if user proximity event received'); - window.ondeviceproximity = function(e) { - t2.step(function() { - var msg = 'expected instance of DeviceProximityEvent: '; - assert_true(e instanceof window.DeviceProximityEvent, msg); - }); - t2.done(); - }; -})(); diff --git a/tests/wpt/web-platform-tests/proximity/ProximitySensor.https.html b/tests/wpt/web-platform-tests/proximity/ProximitySensor.https.html new file mode 100644 index 00000000000..ee7f684e02a --- /dev/null +++ b/tests/wpt/web-platform-tests/proximity/ProximitySensor.https.html @@ -0,0 +1,14 @@ + + +ProximitySensor Test + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/proximity/ProximitySensor_insecure_context.html b/tests/wpt/web-platform-tests/proximity/ProximitySensor_insecure_context.html new file mode 100644 index 00000000000..b524cdc3214 --- /dev/null +++ b/tests/wpt/web-platform-tests/proximity/ProximitySensor_insecure_context.html @@ -0,0 +1,20 @@ + + +ProximitySensor Test: insecure context + + + + + +
+

Precondition

+
    +
  1. + Run test in an insecure context, e.g. http://example.com/. +
  2. +
+ diff --git a/tests/wpt/web-platform-tests/proximity/ProximitySensor_onerror-manual.https.html b/tests/wpt/web-platform-tests/proximity/ProximitySensor_onerror-manual.https.html new file mode 100644 index 00000000000..e1ee3804e37 --- /dev/null +++ b/tests/wpt/web-platform-tests/proximity/ProximitySensor_onerror-manual.https.html @@ -0,0 +1,20 @@ + + +ProximitySensor Test: onerror + + + + + +
+

Precondition

+
    +
  1. + Disable the Proximity Sensor or run test on a device without Proximity Sensor. +
  2. +
+ diff --git a/tests/wpt/web-platform-tests/proximity/UserProximityEvent_tests.html b/tests/wpt/web-platform-tests/proximity/UserProximityEvent_tests.html deleted file mode 100644 index f58550db0b7..00000000000 --- a/tests/wpt/web-platform-tests/proximity/UserProximityEvent_tests.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -Proximity Events Test Suite -

Test Suite for Proximity Events

-
- - - - diff --git a/tests/wpt/web-platform-tests/proximity/UserProximityEvent_tests.js b/tests/wpt/web-platform-tests/proximity/UserProximityEvent_tests.js deleted file mode 100644 index 36ef930fe67..00000000000 --- a/tests/wpt/web-platform-tests/proximity/UserProximityEvent_tests.js +++ /dev/null @@ -1,340 +0,0 @@ -(function() { - //inheritance tests - test(function() { - var event = new UserProximityEvent(''); - assert_true(event instanceof window.UserProximityEvent); - }, 'the event is an instance of UserProximityEvent'); - - test(function() { - var event = new UserProximityEvent(''); - assert_true(event instanceof window.Event); - }, 'the event inherits from Event'); - - //Type attribute tests - test(function() { - assert_throws(new TypeError(), function() { - new UserProximityEvent(); - }, 'First argument is required, so was expecting a TypeError.'); - }, 'Missing type argument'); - - test(function() { - var event = new UserProximityEvent(undefined); - assert_equals(event.type, 'undefined'); - }, 'Event type set to undefined'); - - test(function() { - var event = new UserProximityEvent(null); - assert_equals(event.type, 'null'); - }, 'type argument is null'); - - test(function() { - var event = new UserProximityEvent(123); - assert_equals(event.type, '123'); - }, 'type argument is number'); - - test(function() { - var event = new UserProximityEvent(new Number(123)); - assert_equals(event.type, '123'); - }, 'type argument is Number'); - - test(function() { - var event = new UserProximityEvent([]); - assert_equals(event.type, ''); - }, 'type argument is array'); - - test(function() { - var event = new UserProximityEvent(new Array()); - assert_equals(event.type, ''); - }, 'type argument is instance of Array'); - - test(function() { - var event = new UserProximityEvent(['t', ['e', ['s', ['t']]]]); - assert_equals(event.type, 't,e,s,t'); - }, 'type argument is nested array'); - - test(function() { - var event = new UserProximityEvent(Math); - assert_equals(event.type, '[object Math]'); - }, 'type argument is host object'); - - test(function() { - var event = new UserProximityEvent(true); - assert_equals(event.type, 'true'); - }, 'type argument is boolean (true)'); - - test(function() { - var event = new UserProximityEvent(new Boolean(true)); - assert_equals(event.type, 'true'); - }, 'type argument is instance of Boolean (true)'); - - test(function() { - var event = new UserProximityEvent(false); - assert_equals(event.type, 'false'); - }, 'type argument is boolean (false)'); - - test(function() { - var event = new UserProximityEvent(new Boolean(false)); - assert_equals(event.type, 'false'); - }, 'type argument is instance of Boolean (false)'); - - test(function() { - var event = new UserProximityEvent('test'); - assert_equals(event.type, 'test'); - }, 'type argument is string'); - - test(function() { - var event = new UserProximityEvent(new String('test')); - assert_equals(event.type, 'test'); - }, 'type argument is instance of String'); - - test(function() { - var event = new UserProximityEvent(function test() {}); - assert_regexp_match(event.type, /function test.+{\s?}/); - }, 'type argument is function'); - - test(function() { - var event = new UserProximityEvent({ - toString: function() { - return '123'; - } - }); - assert_equals(event.type, '123'); - }, 'type argument is complext object, with toString method'); - - test(function() { - assert_throws(new TypeError(), function() { - new UserProximityEvent({ - toString: function() { - return function() {} - } - }); - }); - }, 'toString is of type function'); - - //eventInitDict attribute tests - test(function() { - var event = new UserProximityEvent('test', undefined); - assert_false(event.near); - }, 'eventInitDict argument sets to undefined'); - - test(function() { - var event = new UserProximityEvent('test', null); - assert_false(event.near); - }, 'eventInitDict argument is null'); - - test(function() { - var date = new Date(); - var event = new UserProximityEvent('test', date); - assert_false(event.near); - }, 'eventInitDict argument is Date object'); - - test(function() { - var regexp = /abc/; - var event = new UserProximityEvent('test', regexp); - assert_false(event.near); - }, 'eventInitDict argument is RegExp object'); - - test(function() { - assert_throws(new TypeError(), function() { - new UserProximityEvent('test', false); - }); - }, 'eventInitDict argument is boolean'); - - test(function() { - assert_throws(new TypeError(), function() { - new UserProximityEvent('test', 123); - }); - }, 'eventInitDict argument is number'); - - test(function() { - assert_throws(new TypeError(), function() { - new UserProximityEvent('test', 'hello'); - }); - }, 'eventInitDict argument is string'); - - //test readonly attribute boolean near; - test(function() { - var event = new UserProximityEvent('test'); - assert_idl_attribute(event, 'near', 'must have attribute near'); - }, 'must have attribute near'); - - test(function() { - var event = new UserProximityEvent('test'); - assert_readonly(event, 'near', 'readonly attribute near'); - }, 'near is readonly'); - - test(function() { - var event = new UserProximityEvent('test'); - assert_false(event.near, 'near initializes to false'); - }, 'near initializes to false'); - - test(function() { - var event = new UserProximityEvent('test', { - near: false - }); - assert_false(event.near, 'near set to false'); - }, 'near set to false'); - - test(function() { - var event = new UserProximityEvent('test', { - near: true - }); - assert_true(event.near, 'near set to true'); - }, 'near set to true'); - - test(function() { - var event = new UserProximityEvent('test', { - near: undefined - }); - assert_false(event.near, 'argument is truthy'); - }, 'near set to undefined'); - - test(function() { - var event = new UserProximityEvent('test', { - near: null - }); - assert_false(event.near, 'argument is flasy'); - }, 'near set to null'); - - test(function() { - var event = new UserProximityEvent('test', { - near: 0 - }); - assert_false(event.near, 'argument is flasy'); - }, 'near set to 0'); - - test(function() { - var event = new UserProximityEvent('test', { - near: '' - }); - assert_false(event.near, 'argument is flasy'); - }, 'near set to empty string'); - - test(function() { - var event = new UserProximityEvent('test', { - near: '\u0020' - }); - assert_true(event.near, 'argument is truthy'); - }, 'near set to U+0020'); - - test(function() { - var event = new UserProximityEvent('test', { - near: 1 - }); - assert_true(event.near, 'argument is truthy'); - }, 'near set to 1'); - - test(function() { - var event = new UserProximityEvent('test', { - near: [] - }); - assert_true(event.near, 'argument is truthy'); - }, 'near set to []'); - - test(function() { - var event = new UserProximityEvent('test', { - near: {} - }); - assert_true(event.near, 'argument is truthy'); - }, 'near set to {}'); - - test(function() { - var dict = { - get test() { - return false; - } - }; - var event = new UserProximityEvent('test', { - near: dict.test - }); - assert_false(event.near, 'explict false'); - }, 'near set to object that resolves to false'); - - test(function() { - var desc = 'Expected to find onuserproximity attribute on window object'; - assert_idl_attribute(window, 'onuserproximity', desc); - }, 'onuserproximity exists'); - - test(function() { - var desc = 'window.onuserproximity must be null'; - assert_equals(window.onuserproximity, null, desc); - }, 'onuserproximity is null'); - - test(function() { - var desc = 'window.onuserproximity did not accept callable object', - func = function() {}, - descidl = 'onuserproximity does not exist'; - window.onuserproximity = func; - assert_equals(window.onuserproximity, func, descidl); - }, 'onuserproximity exists and can be set to a function'); - - test(function() { - var desc = 'window.onuserproximity did not treat noncallable as null'; - window.onuserproximity = function() {}; - window.onuserproximity = {}; - assert_equals(window.onuserproximity, null, desc); - }, 'treat object as null'); - - test(function() { - var desc = 'window.onuserproximity did not treat noncallable as null'; - window.onuserproximity = function() {}; - window.onuserproximity = { - call: 'test' - }; - assert_equals(window.onuserproximity, null, desc); - }, 'treat object with non-callable call property as null'); - - test(function() { - var desc = 'window.onuserproximity did not treat noncallable (string) as null'; - window.onuserproximity = function() {}; - window.onuserproximity = 'string'; - assert_equals(window.onuserproximity, null, desc); - }, 'treat string as null'); - - test(function() { - var desc = 'window.onuserproximity did not treat noncallable (number) as null'; - window.onuserproximity = function() {}; - window.onuserproximity = 123; - assert_equals(window.onuserproximity, null, desc); - }, 'treat number as null'); - - test(function() { - var desc = 'window.onuserproximity did not treat noncallable (undefined) as null'; - window.onuserproximity = function() {}; - window.onuserproximity = undefined; - assert_equals(window.onuserproximity, null, desc); - }, 'treat undefined as null'); - - test(function() { - var desc = 'window.onuserproximity did not treat noncallable (array) as null'; - window.onuserproximity = function() {}; - window.onuserproximity = []; - assert_equals(window.onuserproximity, null, desc); - }, 'treat array as null'); - - test(function() { - var desc = 'window.onuserproximity did not treat noncallable host object as null'; - window.onuserproximity = function() {}; - window.onuserproximity = Node; - assert_equals(window.onuserproximity, null, desc); - }, 'treat non-callable host object as null'); - - //Async tests - var t = async_test('test if user proximity event received'); - window.addEventListener('userproximity', function(e) { - t.step(function() { - var msg = 'expected instance of UserProximityEvent: '; - assert_true(e instanceof window.UserProximityEvent, msg); - }); - t.done(); - }); - - var t2 = async_test('test if user proximity event received (idl attribute)'); - window.onuserproximity = function(e) { - t2.step(function() { - var msg = 'expected instance of UserProximityEvent: '; - assert_true(e instanceof window.UserProximityEvent, msg); - }); - t2.done(); - }; -})(); diff --git a/tests/wpt/web-platform-tests/quirks/OWNERS b/tests/wpt/web-platform-tests/quirks/OWNERS new file mode 100644 index 00000000000..63851614695 --- /dev/null +++ b/tests/wpt/web-platform-tests/quirks/OWNERS @@ -0,0 +1 @@ +@zcorpan diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html b/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html index b7c4c8b257e..30f8c0c024e 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html +++ b/tests/wpt/web-platform-tests/resource-timing/resource_initiator_types.html @@ -17,6 +17,7 @@ let page_loaded = false; let ol_font_loaded = false; let ul_font_loaded = false; let xhr_loaded = false; +let tests_run = false; function check_finished() { if (!ul_font_loaded) { @@ -64,6 +65,10 @@ function onload_test() { } function perform_test() { + if (tests_run) { + return; + } + tests_run = true; const context = new PerformanceContext(document.getElementById('frameContext').contentWindow.performance); const entries = context.getEntriesByType('resource'); diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_timing.worker.js b/tests/wpt/web-platform-tests/resource-timing/resource_timing.worker.js new file mode 100644 index 00000000000..92687f0f7b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resource_timing.worker.js @@ -0,0 +1,64 @@ +importScripts("/resources/testharness.js"); + +function check(initiatorType, protocol) { + let entries = performance.getEntries(); + assert_equals(entries.length, 1); + + assert_true(entries[0] instanceof PerformanceEntry); + assert_equals(entries[0].entryType, "resource"); + assert_true(entries[0].startTime > 0); + assert_true(entries[0].duration > 0); + + assert_true(entries[0] instanceof PerformanceResourceTiming); + assert_equals(entries[0].initiatorType, initiatorType); + assert_equals(entries[0].nextHopProtocol, protocol); +} + +async_test(t => { + performance.clearResourceTimings(); + + // Fetch + fetch("resources/empty.js") + .then(r => r.blob()) + .then(blob => { + check("fetch", "http/1.1"); + }) + + // XMLHttpRequest + .then(() => { + return new Promise(resolve => { + performance.clearResourceTimings(); + let xhr = new XMLHttpRequest(); + xhr.onload = () => { + check("xmlhttprequest", "http/1.1"); + resolve(); + }; + xhr.open("GET", "resources/empty.js"); + xhr.send(); + }); + }) + + // Sync XMLHttpREquest + .then(() => { + performance.clearResourceTimings(); + let xhr = new XMLHttpRequest(); + xhr.open("GET", "resources/empty.js", false); + xhr.send(); + + check("xmlhttprequest", "http/1.1"); + }) + + // ImportScripts + .then(() => { + performance.clearResourceTimings(); + importScripts(["resources/empty.js"]); + check("other", "http/1.1"); + }) + + // All done. + .then(() => { + t.done(); + }); +}, "Performance Resouce Entries in workers"); + +done(); diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/empty.js b/tests/wpt/web-platform-tests/resource-timing/resources/empty.js new file mode 100644 index 00000000000..3b44754e301 --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/resources/empty.js @@ -0,0 +1 @@ +/* Nothing here */ 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 2751e14afe9..dd2d6533bc0 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 @@ -11,9 +11,6 @@ return; } mojo.internal.markMojomLoaded(mojomId); - - // TODO(yzshen): Define these aliases to minimize the differences between the - // old/new modes. Remove them when the old mode goes away. var bindings = mojo; var associatedBindings = mojo; var codec = mojo.internal; @@ -1252,6 +1249,137 @@ encoder.writeUint32(0); encoder.encodeStruct(codec.NullableString, val.serviceId); }; + function FakeCentral_RemoveFakeService_Params(values) { + this.initDefaults_(); + this.initFields_(values); + } + + + FakeCentral_RemoveFakeService_Params.prototype.initDefaults_ = function() { + this.identifier = null; + this.peripheralAddress = null; + }; + FakeCentral_RemoveFakeService_Params.prototype.initFields_ = function(fields) { + for(var field in fields) { + if (this.hasOwnProperty(field)) + this[field] = fields[field]; + } + }; + + FakeCentral_RemoveFakeService_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: 24} + ]; + err = messageValidator.validateStructVersion(offset, kVersionSizes); + if (err !== validator.validationError.NONE) + return err; + + + // validate FakeCentral_RemoveFakeService_Params.identifier + err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 0, false) + if (err !== validator.validationError.NONE) + return err; + + + // validate FakeCentral_RemoveFakeService_Params.peripheralAddress + err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 8, false) + if (err !== validator.validationError.NONE) + return err; + + return validator.validationError.NONE; + }; + + FakeCentral_RemoveFakeService_Params.encodedSize = codec.kStructHeaderSize + 16; + + FakeCentral_RemoveFakeService_Params.decode = function(decoder) { + var packed; + var val = new FakeCentral_RemoveFakeService_Params(); + var numberOfBytes = decoder.readUint32(); + var version = decoder.readUint32(); + val.identifier = decoder.decodeStruct(codec.String); + val.peripheralAddress = decoder.decodeStruct(codec.String); + return val; + }; + + FakeCentral_RemoveFakeService_Params.encode = function(encoder, val) { + var packed; + encoder.writeUint32(FakeCentral_RemoveFakeService_Params.encodedSize); + encoder.writeUint32(0); + encoder.encodeStruct(codec.String, val.identifier); + encoder.encodeStruct(codec.String, val.peripheralAddress); + }; + function FakeCentral_RemoveFakeService_ResponseParams(values) { + this.initDefaults_(); + this.initFields_(values); + } + + + FakeCentral_RemoveFakeService_ResponseParams.prototype.initDefaults_ = function() { + this.success = false; + }; + FakeCentral_RemoveFakeService_ResponseParams.prototype.initFields_ = function(fields) { + for(var field in fields) { + if (this.hasOwnProperty(field)) + this[field] = fields[field]; + } + }; + + FakeCentral_RemoveFakeService_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_RemoveFakeService_ResponseParams.encodedSize = codec.kStructHeaderSize + 8; + + FakeCentral_RemoveFakeService_ResponseParams.decode = function(decoder) { + var packed; + var val = new FakeCentral_RemoveFakeService_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_RemoveFakeService_ResponseParams.encode = function(encoder, val) { + var packed; + encoder.writeUint32(FakeCentral_RemoveFakeService_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_AddFakeCharacteristic_Params(values) { this.initDefaults_(); this.initFields_(values); @@ -2701,14 +2829,15 @@ var kFakeCentral_SimulateGATTDisconnection_Name = 3; var kFakeCentral_SimulateGATTServicesChanged_Name = 4; var kFakeCentral_AddFakeService_Name = 5; - var kFakeCentral_AddFakeCharacteristic_Name = 6; - var kFakeCentral_RemoveFakeCharacteristic_Name = 7; - var kFakeCentral_AddFakeDescriptor_Name = 8; - var kFakeCentral_SetNextReadCharacteristicResponse_Name = 9; - var kFakeCentral_SetNextWriteCharacteristicResponse_Name = 10; - var kFakeCentral_SetNextSubscribeToNotificationsResponse_Name = 11; - var kFakeCentral_GetLastWrittenValue_Name = 12; - var kFakeCentral_SetNextReadDescriptorResponse_Name = 13; + var kFakeCentral_RemoveFakeService_Name = 6; + var kFakeCentral_AddFakeCharacteristic_Name = 7; + var kFakeCentral_RemoveFakeCharacteristic_Name = 8; + var kFakeCentral_AddFakeDescriptor_Name = 9; + var kFakeCentral_SetNextReadCharacteristicResponse_Name = 10; + var kFakeCentral_SetNextWriteCharacteristicResponse_Name = 11; + var kFakeCentral_SetNextSubscribeToNotificationsResponse_Name = 12; + var kFakeCentral_GetLastWrittenValue_Name = 13; + var kFakeCentral_SetNextReadDescriptorResponse_Name = 14; function FakeCentralPtr(handleOrPtrInfo) { this.ptr = new bindings.InterfacePtrController(FakeCentral, @@ -2883,6 +3012,32 @@ }); }.bind(this)); }; + FakeCentralPtr.prototype.removeFakeService = function() { + return FakeCentralProxy.prototype.removeFakeService + .apply(this.ptr.getProxy(), arguments); + }; + + FakeCentralProxy.prototype.removeFakeService = function(identifier, peripheralAddress) { + var params = new FakeCentral_RemoveFakeService_Params(); + params.identifier = identifier; + params.peripheralAddress = peripheralAddress; + return new Promise(function(resolve, reject) { + var builder = new codec.MessageV1Builder( + kFakeCentral_RemoveFakeService_Name, + codec.align(FakeCentral_RemoveFakeService_Params.encodedSize), + codec.kMessageExpectsResponse, 0); + builder.encodeStruct(FakeCentral_RemoveFakeService_Params, params); + var message = builder.finish(); + this.receiver_.acceptAndExpectResponse(message).then(function(message) { + var reader = new codec.MessageReader(message); + var responseParams = + reader.decodeStruct(FakeCentral_RemoveFakeService_ResponseParams); + resolve(responseParams); + }).catch(function(result) { + reject(Error("Connection error: " + result)); + }); + }.bind(this)); + }; FakeCentralPtr.prototype.addFakeCharacteristic = function() { return FakeCentralProxy.prototype.addFakeCharacteristic .apply(this.ptr.getProxy(), arguments); @@ -3130,6 +3285,9 @@ FakeCentralStub.prototype.addFakeService = function(peripheralAddress, serviceUuid) { return this.delegate_ && this.delegate_.addFakeService && this.delegate_.addFakeService(peripheralAddress, serviceUuid); } + FakeCentralStub.prototype.removeFakeService = function(identifier, peripheralAddress) { + return this.delegate_ && this.delegate_.removeFakeService && this.delegate_.removeFakeService(identifier, peripheralAddress); + } FakeCentralStub.prototype.addFakeCharacteristic = function(characteristicUuid, properties, serviceId, peripheralAddress) { return this.delegate_ && this.delegate_.addFakeCharacteristic && this.delegate_.addFakeCharacteristic(characteristicUuid, properties, serviceId, peripheralAddress); } @@ -3262,6 +3420,22 @@ responder.accept(message); }); return true; + case kFakeCentral_RemoveFakeService_Name: + var params = reader.decodeStruct(FakeCentral_RemoveFakeService_Params); + this.removeFakeService(params.identifier, params.peripheralAddress).then(function(response) { + var responseParams = + new FakeCentral_RemoveFakeService_ResponseParams(); + responseParams.success = response.success; + var builder = new codec.MessageV1Builder( + kFakeCentral_RemoveFakeService_Name, + codec.align(FakeCentral_RemoveFakeService_ResponseParams.encodedSize), + codec.kMessageIsResponse, reader.requestID); + builder.encodeStruct(FakeCentral_RemoveFakeService_ResponseParams, + responseParams); + var message = builder.finish(); + responder.accept(message); + }); + return true; case kFakeCentral_AddFakeCharacteristic_Name: var params = reader.decodeStruct(FakeCentral_AddFakeCharacteristic_Params); this.addFakeCharacteristic(params.characteristicUuid, params.properties, params.serviceId, params.peripheralAddress).then(function(response) { @@ -3424,6 +3598,10 @@ if (message.expectsResponse()) paramsClass = FakeCentral_AddFakeService_Params; break; + case kFakeCentral_RemoveFakeService_Name: + if (message.expectsResponse()) + paramsClass = FakeCentral_RemoveFakeService_Params; + break; case kFakeCentral_AddFakeCharacteristic_Name: if (message.expectsResponse()) paramsClass = FakeCentral_AddFakeCharacteristic_Params; @@ -3490,6 +3668,10 @@ if (message.isResponse()) paramsClass = FakeCentral_AddFakeService_ResponseParams; break; + case kFakeCentral_RemoveFakeService_Name: + if (message.isResponse()) + paramsClass = FakeCentral_RemoveFakeService_ResponseParams; + break; case kFakeCentral_AddFakeCharacteristic_Name: if (message.isResponse()) paramsClass = FakeCentral_AddFakeCharacteristic_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 1658ff1a14f..dd3bbb6125b 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 @@ -236,6 +236,16 @@ class FakeRemoteGATTService { characteristic_id, this.service_id_, this.peripheral_address_, this.fake_central_ptr_); } + + // Removes the fake GATT service from its fake peripheral. + async remove() { + let {success} = + await this.fake_central_ptr_.removeFakeService( + this.service_id_, + this.peripheral_address_); + + if (!success) throw 'remove failed'; + } } class FakeRemoteGATTCharacteristic { @@ -367,4 +377,12 @@ class FakeRemoteGATTDescriptor { } } -navigator.bluetooth.test = new FakeBluetooth(); +// If this line fails, it means that current environment does not support the +// Web Bluetooth Test API. +try { + navigator.bluetooth.test = new FakeBluetooth(); +} catch { + throw 'Web Bluetooth Test API is not implemented on this ' + + 'environment. See the bluetooth README at ' + + 'https://github.com/w3c/web-platform-tests/blob/master/bluetooth/README.md#web-bluetooth-testing'; +} diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index a8d4150dbc4..47dd9fb3dea 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -2270,7 +2270,7 @@ IdlInterface.prototype.test_interface_of = function(desc, obj, exception, expect if (!exposed_in(exposure_set(member, this.exposureSet))) { test(function() { assert_false(member.name in obj); - }.bind(this), this.name + "interface: " + desc + 'must not have property "' + member.name + '"'); + }.bind(this), this.name + " interface: " + desc + ' must not have property "' + member.name + '"'); continue; } if (member.type == "attribute" && member.isUnforgeable) diff --git a/tests/wpt/web-platform-tests/screen-orientation/interfaces.html b/tests/wpt/web-platform-tests/screen-orientation/interfaces.html new file mode 100644 index 00000000000..26d46ae537b --- /dev/null +++ b/tests/wpt/web-platform-tests/screen-orientation/interfaces.html @@ -0,0 +1,28 @@ + + +Screen Orientation API IDL tests + + + + + + diff --git a/tests/wpt/web-platform-tests/screen-orientation/orientation-api.html b/tests/wpt/web-platform-tests/screen-orientation/orientation-api.html deleted file mode 100644 index 80910a3a0ff..00000000000 --- a/tests/wpt/web-platform-tests/screen-orientation/orientation-api.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/web-platform-tests/screen-orientation/resources/sandboxed-iframe-locking.html b/tests/wpt/web-platform-tests/screen-orientation/resources/sandboxed-iframe-locking.html index 74dac82a5b0..48f408b4ff4 100644 --- a/tests/wpt/web-platform-tests/screen-orientation/resources/sandboxed-iframe-locking.html +++ b/tests/wpt/web-platform-tests/screen-orientation/resources/sandboxed-iframe-locking.html @@ -6,13 +6,8 @@ msg = screen.orientation.type; }, function(error) { msg = error.name; - }); - - // FIXME: for the moment, tests gets notified when there is a failure but - // not a success, this hack should allow us to still have the test running. - // That should be removed as soon as we get a resolved promise in tests. - setTimeout(function() { + }).then(function() { parent.window.postMessage(msg, "*"); - }) + }); diff --git a/tests/wpt/web-platform-tests/server-timing/cross_origin.html b/tests/wpt/web-platform-tests/server-timing/cross_origin.html new file mode 100644 index 00000000000..80035888de4 --- /dev/null +++ b/tests/wpt/web-platform-tests/server-timing/cross_origin.html @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/OWNERS b/tests/wpt/web-platform-tests/service-workers/OWNERS index 62f69300dee..7870c50f314 100644 --- a/tests/wpt/web-platform-tests/service-workers/OWNERS +++ b/tests/wpt/web-platform-tests/service-workers/OWNERS @@ -1,4 +1,5 @@ +@asutherland @beidson -@ehsan @mkruisselbrink @mattto +@wanderview diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/about-blank-replacement.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/about-blank-replacement.https.html index 3acfe1b166a..e1fefaf290f 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/about-blank-replacement.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/about-blank-replacement.https.html @@ -58,7 +58,7 @@ function getClientIdByURL(worker, url) { }); } -async function doAsyncTest(t, scope, extraSearchParams) { +async function doAsyncTest(t, scope) { let reg = await service_worker_unregister_and_register(t, worker, scope); await wait_for_state(t, reg.installing, 'activated'); @@ -70,20 +70,30 @@ async function doAsyncTest(t, scope, extraSearchParams) { let initialResult = frame.contentWindow.nested().document.body.textContent; assert_false(initialResult.startsWith('failure:'), `result: ${initialResult}`); + assert_equals(frame.contentWindow.navigator.serviceWorker.controller.scriptURL, + frame.contentWindow.nested().navigator.serviceWorker.controller.scriptURL, + 'nested about:blank should have same controlling service worker'); + // Next, ask the service worker to find the final client ID for the fully // loaded nested frame. - let nestedURL = new URL(scope, window.location); - nestedURL.searchParams.set('nested', true); - extraSearchParams = extraSearchParams || {}; - for (let p in extraSearchParams) { - nestedURL.searchParams.set(p, extraSearchParams[p]); - } + let nestedURL = new URL(frame.contentWindow.nested().location); let finalResult = await getClientIdByURL(reg.active, nestedURL); assert_false(finalResult.startsWith('failure:'), `result: ${finalResult}`); - // The initial about:blank client and the final loaded client should have - // the same ID value. - assert_equals(initialResult, finalResult, 'client ID values should match'); + // If the nested frame doesn't have a URL to load, then there is no fetch + // event and the body should be empty. We can't verify the final client ID + // against anything. + if (nestedURL.href === 'about:blank' || + nestedURL.href === 'about:srcdoc') { + assert_equals('', initialResult, 'about:blank text content should be blank'); + } + + // If the nested URL is not about:blank, though, then the fetch event handler + // should have populated the body with the client id of the initial about:blank. + // Verify the final client id matches. + else { + assert_equals(initialResult, finalResult, 'client ID values should match'); + } frame.remove(); await service_worker_unregister_and_done(t, scope); @@ -101,8 +111,7 @@ promise_test(async function(t) { // worker can ping the client to verify its existence. This ping-pong // check is performed during the initial load and when verifying the // final loaded client. - await doAsyncTest(t, 'resources/about-blank-replacement-ping-frame.py', - { 'ping': true }); + await doAsyncTest(t, 'resources/about-blank-replacement-ping-frame.py'); }, 'Initial about:blank modified by parent is controlled, exposed to ' + 'clients.matchAll(), and matches final Client.'); @@ -142,5 +151,27 @@ promise_test(async function(t) { }, 'Initial about:blank is controlled, exposed to clients.matchAll(), and ' + 'final Client is not controlled by a service worker.'); +promise_test(async function(t) { + // Execute a test where the nested frame is an iframe without a src + // attribute. This simple nested about:blank should still inherit the + // controller and be visible to clients.matchAll(). + await doAsyncTest(t, 'resources/about-blank-replacement-blank-nested-frame.html'); +}, 'Simple about:blank is controlled and is exposed to clients.matchAll().'); + +promise_test(async function(t) { + // Execute a test where the nested frame is an iframe using a non-empty + // srcdoc containing only a tag pair so its textContent is still empty. + // This nested iframe should still inherit the controller and be visible + // to clients.matchAll(). + await doAsyncTest(t, 'resources/about-blank-replacement-srcdoc-nested-frame.html'); +}, 'Nested about:srcdoc is controlled and is exposed to clients.matchAll().'); + +promise_test(async function(t) { + // Execute a test where the nested frame is dynamically added without a src + // attribute. This simple nested about:blank should still inherit the + // controller and be visible to clients.matchAll(). + await doAsyncTest(t, 'resources/about-blank-replacement-blank-dynamic-nested-frame.html'); +}, 'Dynamic about:blank is controlled and is exposed to clients.matchAll().'); + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https.html deleted file mode 100644 index 74754935240..00000000000 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https.html +++ /dev/null @@ -1,38 +0,0 @@ - -Service Worker: canvas tainting of the fetched image using cached responses - - - - - - - diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html new file mode 100644 index 00000000000..21323811225 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image-cache.https.html @@ -0,0 +1,16 @@ + + +Service Worker: canvas tainting of the fetched image using cached responses + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image.https.html new file mode 100644 index 00000000000..57dc7d98caa --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-image.https.html @@ -0,0 +1,16 @@ + + +Service Worker: canvas tainting of the fetched image + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html new file mode 100644 index 00000000000..ef3d12bbe49 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video-cache.https.html @@ -0,0 +1,16 @@ + + +Service Worker: canvas tainting of the fetched video using cache responses + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video.https.html new file mode 100644 index 00000000000..577650881c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-video.https.html @@ -0,0 +1,16 @@ + + +Service Worker: canvas tainting of the fetched video + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https.html deleted file mode 100644 index 55faa9df7a9..00000000000 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https.html +++ /dev/null @@ -1,38 +0,0 @@ - -Service Worker: canvas tainting of the fetched image - - - - - - - diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html index 240219b082d..9fef304adba 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-event.https.html @@ -174,50 +174,78 @@ async_test(function(t) { .catch(unreached_rejection(t)); }, 'Service Worker fetches other file in fetch event'); -async_test(function(t) { - var scope = 'resources/simple.html?form-post'; - var frame_name = 'xhr-post-frame'; - service_worker_unregister_and_register(t, worker, scope) - .then(function(reg) { +// Creates a form and an iframe and does a form submission that navigates the +// frame to |action_url|. Returns the frame after navigation. +function submit_form(action_url) { + return new Promise(resolve => { + const frame = document.createElement('iframe'); + frame.name = 'post-frame'; + document.body.appendChild(frame); + const form = document.createElement('form'); + form.target = frame.name; + form.action = action_url; + form.method = 'post'; + const input1 = document.createElement('input'); + input1.type = 'text'; + input1.value = 'testValue1'; + input1.name = 'testName1' + form.appendChild(input1); + const input2 = document.createElement('input'); + input2.type = 'text'; + input2.value = 'testValue2'; + input2.name = 'testName2' + form.appendChild(input2); + document.body.appendChild(form); + frame.onload = function() { + form.remove(); + resolve(frame); + }; + form.submit(); + }); +} + +promise_test(t => { + const scope = 'resources/simple.html?form-post'; + let registration; + return service_worker_unregister_and_register(t, worker, scope) + .then(reg => { + registration = reg; + add_completion_callback(() => { reg.unregister(); }); return wait_for_state(t, reg.installing, 'activated'); }) - .then(function(sw) { - return new Promise(function(resolve) { - var frame = document.createElement('iframe'); - frame.name = frame_name; - document.body.appendChild(frame); - var form = document.createElement('form'); - form.target = frame_name; - form.action = scope; - form.method = 'post'; - var input1 = document.createElement('input'); - input1.type = 'text'; - input1.value = 'testValue1'; - input1.name = 'testName1' - form.appendChild(input1); - var input2 = document.createElement('input'); - input2.type = 'text'; - input2.value = 'testValue2'; - input2.name = 'testName2' - form.appendChild(input2); - document.body.appendChild(form); - frame.onload = function() { - document.body.removeChild(form); - resolve(frame); - }; - form.submit(); - }); + .then(() => { + return submit_form(scope); }) - .then(function(frame) { + .then(frame => { assert_equals(frame.contentDocument.body.textContent, 'POST:application/x-www-form-urlencoded:' + 'testName1=testValue1&testName2=testValue2'); frame.remove(); - return service_worker_unregister_and_done(t, scope); - }) - .catch(unreached_rejection(t)); + return registration.unregister(); + }); }, 'Service Worker responds to fetch event with POST form'); +promise_test(t => { + // Add '?ignore' to scope so the service worker falls back to network. + const scope = 'resources/echo-content.py?ignore'; + let registration; + return service_worker_unregister_and_register(t, worker, scope) + .then(reg => { + registration = reg; + add_completion_callback(() => { reg.unregister(); }); + return wait_for_state(t, reg.installing, 'activated'); + }) + .then(() => { + return submit_form(scope); + }) + .then(frame => { + assert_equals(frame.contentDocument.body.textContent, + 'testName1=testValue1&testName2=testValue2'); + frame.remove(); + return registration.unregister(); + }); + }, 'Service Worker falls back to network in fetch event with POST form'); + async_test(function(t) { var scope = 'resources/simple.html?multiple-respond-with'; service_worker_unregister_and_register(t, worker, scope) @@ -456,6 +484,43 @@ promise_test(t => { }); }, 'FetchEvent#body is a string'); +// Test that the request body is sent to network upon network fallback, +// for a string body. +promise_test(t => { + // Set scope to "?ignore" so the service worker falls back to network + // for the main resource request, and add a suffix to avoid colliding + // with other tests. + const scope = 'resources/?ignore-for-request-body-fallback-string'; + let frame; + + return service_worker_unregister_and_register(t, worker, scope) + .then(reg => { + add_completion_callback(() => { reg.unregister(); }); + return wait_for_state(t, reg.installing, 'activated'); + }) + .then(() => { + return with_iframe(scope); }) + .then(f => { + frame = f; + // Add "?ignore" so the service worker falls back to echo-content.py. + const echo_url = '/fetch/api/resources/echo-content.py?ignore'; + return frame.contentWindow.fetch(echo_url, { + method: 'POST', + body: 'i am the request body' + }); + }) + .then(response => { + return response.text(); + }) + .then(response_text => { + frame.remove(); + assert_equals( + response_text, + 'i am the request body', + 'the network fallback request should include the request body'); + }); + }, 'FetchEvent#body is a string and is passed to network fallback'); + // Test that the service worker can read FetchEvent#body when it is a blob. // It responds with request body it read. promise_test(t => { @@ -489,6 +554,44 @@ promise_test(t => { }); }, 'FetchEvent#body is a blob'); +// Test that the request body is sent to network upon network fallback, +// for a blob body. +promise_test(t => { + // Set scope to "?ignore" so the service worker falls back to network + // for the main resource request, and add a suffix to avoid colliding + // with other tests. + const scope = 'resources/simple.html?ignore-for-request-body-fallback-blob'; + let frame; + + return service_worker_unregister_and_register(t, worker, scope) + .then(reg => { + add_completion_callback(() => { reg.unregister(); }); + return wait_for_state(t, reg.installing, 'activated'); + }) + .then(() => { + return with_iframe(scope); }) + .then(f => { + frame = f; + const blob = new Blob(['it\'s me the blob', ' ', 'and more blob!']); + // Add "?ignore" so the service worker falls back to echo-content.py. + const echo_url = '/fetch/api/resources/echo-content.py?ignore'; + return frame.contentWindow.fetch(echo_url, { + method: 'POST', + body: blob + }); + }) + .then(response => { + return response.text(); + }) + .then(response_text => { + frame.remove(); + assert_equals( + response_text, + 'it\'s me the blob and more blob!', + 'the network fallback request should include the request body'); + }); + }, 'FetchEvent#body is a blob and is passed to network fallback'); + promise_test(async (t) => { const scope = 'resources/simple.html?keepalive'; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-response-taint.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-response-taint.https.html index a6e7f984ea2..8ebee0c0737 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-response-taint.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/fetch-response-taint.https.html @@ -193,6 +193,9 @@ for_each_origin_mode_credentials(function(origin, mode, credentials) { // Fetch to the other origin with same-origin mode should fail. if (origin == OTHER_ORIGIN && mode == 'same-origin') { ng_test(url, mode, credentials); + } else if (origin == BASE_ORIGIN && mode == 'same-origin') { + // Cors type response to a same-origin mode request should fail + ng_test(url, mode, credentials); } else { // The response from the SW should be cors. ok_test(url, mode, credentials, 'cors', 'undefined'); @@ -208,6 +211,9 @@ for_each_origin_mode_credentials(function(origin, mode, credentials) { // Fetch to the other origin with same-origin mode should fail. if (origin == OTHER_ORIGIN && mode == 'same-origin') { ng_test(url, mode, credentials); + } else if (origin == BASE_ORIGIN && mode == 'same-origin') { + // Cors type response to a same-origin mode request should fail + ng_test(url, mode, credentials); } else { // The response from the SW should be cors. ok_test(url, mode, credentials, 'cors', 'username1s'); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/local-url-inherit-controller.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/local-url-inherit-controller.https.html new file mode 100644 index 00000000000..df25051b257 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/local-url-inherit-controller.https.html @@ -0,0 +1,129 @@ + +Service Worker: local URL windows and workers inherit controller + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-blank-dynamic-nested-frame.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-blank-dynamic-nested-frame.html new file mode 100644 index 00000000000..1e0c6209bfc --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-blank-dynamic-nested-frame.html @@ -0,0 +1,21 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-blank-nested-frame.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-blank-nested-frame.html new file mode 100644 index 00000000000..99d07a48cda --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-blank-nested-frame.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-srcdoc-nested-frame.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-srcdoc-nested-frame.html new file mode 100644 index 00000000000..0122a00aa43 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-srcdoc-nested-frame.html @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js index 79a1ce7b757..87368ae7617 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/clients-get-worker.js @@ -4,13 +4,6 @@ // the `event` object. In the case of the `onmessage` handler, it provides the // Client instance attributes of the requested clients. self.onfetch = function(e) { - if (e.request.mode === 'navigate' && e.clientId !== "") { - e.respondWith(Response.error( - '`clientId` incorrectly set to non-empty string for request with mode `navigate`' - )); - return; - } - if (/\/clientId$/.test(e.request.url)) { e.respondWith(new Response(e.clientId)); return; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-content.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-content.py new file mode 100644 index 00000000000..45325382750 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-content.py @@ -0,0 +1,11 @@ +# This is a copy of fetch/api/resources/echo-content.py since it's more +# convenient in this directory due to service worker's path restriction. +def main(request, response): + + headers = [("X-Request-Method", request.method), + ("X-Request-Content-Length", request.headers.get("Content-Length", "NO")), + ("X-Request-Content-Type", request.headers.get("Content-Type", "NO"))] + + content = request.body + + return headers, content diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-access-control.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-access-control.py index 93ea0e0ad66..c82ffbe0930 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-access-control.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-access-control.py @@ -1,5 +1,7 @@ import base64 import json +import os +import sys def main(request, response): headers = [] @@ -31,6 +33,10 @@ def main(request, response): "jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=") return headers, body + if "VIDEO" in request.GET: + headers.append(("Content-Type", "video/webm")) + body = open(os.path.join(request.doc_root, "media", "movie_5.ogv"), "rb").read() + return headers, body username = request.auth.username if request.auth.username else "undefined" password = request.auth.password if request.auth.username else "undefined" diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-iframe.html index 9b068690993..a65d2501a85 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-iframe.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-iframe.html @@ -1,291 +1,69 @@ - - + +iframe for fetch canvas tainting test + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-tests.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-tests.js new file mode 100644 index 00000000000..2aada3669ef --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-canvas-tainting-tests.js @@ -0,0 +1,241 @@ +// This is the main driver of the canvas tainting tests. +const NOT_TAINTED = 'NOT_TAINTED'; +const TAINTED = 'TAINTED'; +const LOAD_ERROR = 'LOAD_ERROR'; + +let frame; + +// Creates a single promise_test. +function canvas_taint_test(url, cross_origin, expected_result) { + promise_test(t => { + return frame.contentWindow.create_test_case_promise(url, cross_origin) + .then(result => { + assert_equals(result, expected_result); + }); + }, 'url "' + url + '" with crossOrigin "' + cross_origin + '" should be ' + + expected_result); +} + + +// Runs all the tests. The given |params| has these properties: +// * |resource_path|: the relative path to the (image/video) resource to test. +// * |cache|: when true, the service worker bounces responses into +// Cache Storage and back out before responding with them. +function do_canvas_tainting_tests(params) { + const host_info = get_host_info(); + let resource_path = params.resource_path; + if (params.cache) + resource_path += "&cache=true"; + const resource_url = host_info['HTTPS_ORIGIN'] + resource_path; + const remote_resource_url = host_info['HTTPS_REMOTE_ORIGIN'] + resource_path; + + // Set up the service worker and the frame. + promise_test(function(t) { + const SCOPE = 'resources/fetch-canvas-tainting-iframe.html'; + const SCRIPT = 'resources/fetch-rewrite-worker.js'; + const host_info = get_host_info(); + + // login_https() is needed because some test cases use credentials. + return login_https(t) + .then(function() { + return service_worker_unregister_and_register(t, SCRIPT, SCOPE); + }) + .then(function(registration) { + promise_test(() => { + if (frame) + frame.remove(); + return registration.unregister(); + }, 'restore global state'); + + return wait_for_state(t, registration.installing, 'activated'); + }) + .then(function() { return with_iframe(SCOPE); }) + .then(f => { + frame = f; + }); + }, 'initialize global state'); + + // Reject tests. Add '&reject' so the service worker responds with a rejected promise. + // A load error is expected. + canvas_taint_test(resource_url + '&reject', '', LOAD_ERROR); + canvas_taint_test(resource_url + '&reject', 'anonymous', LOAD_ERROR); + canvas_taint_test(resource_url + '&reject', 'use-credentials', LOAD_ERROR); + + // Fallback tests. Add '&ignore' so the service worker does not respond to the fetch + // request, and we fall back to network. + canvas_taint_test(resource_url + '&ignore', '', NOT_TAINTED); + canvas_taint_test(remote_resource_url + '&ignore', '', TAINTED); + canvas_taint_test(remote_resource_url + '&ignore', 'anonymous', LOAD_ERROR); + canvas_taint_test( + remote_resource_url + '&ACAOrigin=' + host_info['HTTPS_ORIGIN'] + + '&ignore', + 'anonymous', + NOT_TAINTED); + canvas_taint_test(remote_resource_url + '&ignore', 'use-credentials', LOAD_ERROR); + canvas_taint_test( + remote_resource_url + '&ACAOrigin=' + host_info['HTTPS_ORIGIN'] + + '&ignore', + 'use-credentials', + LOAD_ERROR); + canvas_taint_test( + remote_resource_url + '&ACAOrigin=' + host_info['HTTPS_ORIGIN'] + + '&ACACredentials=true&ignore', + 'use-credentials', + NOT_TAINTED); + + // Credential tests (with fallback). Add '&Auth' so the server requires authentication. + // Furthermore, add '&ignore' so the service worker falls back to network. + canvas_taint_test(resource_url + '&Auth&ignore', '', NOT_TAINTED); + canvas_taint_test(remote_resource_url + '&Auth&ignore', '', TAINTED); + canvas_taint_test( + remote_resource_url + '&Auth&ignore', 'anonymous', LOAD_ERROR); + canvas_taint_test( + remote_resource_url + '&Auth&ignore', + 'use-credentials', + LOAD_ERROR); + canvas_taint_test( + remote_resource_url + '&Auth&ACAOrigin=' + host_info['HTTPS_ORIGIN'] + + '&ignore', + 'use-credentials', + LOAD_ERROR); + canvas_taint_test( + remote_resource_url + '&Auth&ACAOrigin=' + host_info['HTTPS_ORIGIN'] + + '&ACACredentials=true&ignore', + 'use-credentials', + NOT_TAINTED); + + // In the following tests, the service worker provides a response. + // Add '&url' so the service worker responds with fetch(url). + // Add '&mode' to configure the fetch request options. + + // Basic response tests. Set &url to the original url. + canvas_taint_test( + resource_url + '&mode=same-origin&url=' + encodeURIComponent(resource_url), + '', + NOT_TAINTED); + canvas_taint_test( + resource_url + '&mode=same-origin&url=' + encodeURIComponent(resource_url), + 'anonymous', + NOT_TAINTED); + canvas_taint_test( + resource_url + '&mode=same-origin&url=' + encodeURIComponent(resource_url), + 'use-credentials', + NOT_TAINTED); + canvas_taint_test( + remote_resource_url + '&mode=same-origin&url=' + + encodeURIComponent(resource_url), + '', + NOT_TAINTED); + canvas_taint_test( + remote_resource_url + '&mode=same-origin&url=' + + encodeURIComponent(resource_url), + 'anonymous', + NOT_TAINTED); + canvas_taint_test( + remote_resource_url + '&mode=same-origin&url=' + + encodeURIComponent(resource_url), + 'use-credentials', + NOT_TAINTED); + + // Opaque response tests. Set &url to the cross-origin URL, and &mode to + // 'no-cors' so we expect an opaque response. + canvas_taint_test( + resource_url + + '&mode=no-cors&url=' + encodeURIComponent(remote_resource_url), + '', + TAINTED); + canvas_taint_test( + resource_url + + '&mode=no-cors&url=' + encodeURIComponent(remote_resource_url), + 'anonymous', + LOAD_ERROR); + canvas_taint_test( + resource_url + + '&mode=no-cors&url=' + encodeURIComponent(remote_resource_url), + 'use-credentials', + LOAD_ERROR); + canvas_taint_test( + remote_resource_url + + '&mode=no-cors&url=' + encodeURIComponent(remote_resource_url), + '', + TAINTED); + canvas_taint_test( + remote_resource_url + + '&mode=no-cors&url=' + encodeURIComponent(remote_resource_url), + 'anonymous', + LOAD_ERROR); + canvas_taint_test( + remote_resource_url + + '&mode=no-cors&url=' + encodeURIComponent(remote_resource_url), + 'use-credentials', + LOAD_ERROR); + + // CORS response tests. Set &url to the cross-origin URL, and &mode + // to 'cors' to attempt a CORS request. + canvas_taint_test( + resource_url + '&mode=cors&url=' + + encodeURIComponent(remote_resource_url + + '&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + '', + LOAD_ERROR); // We expect LOAD_ERROR since the server doesn't respond + // with an Access-Control-Allow-Credentials header. + canvas_taint_test( + resource_url + '&mode=cors&credentials=same-origin&url=' + + encodeURIComponent(remote_resource_url + + '&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + '', + NOT_TAINTED); + canvas_taint_test( + resource_url + '&mode=cors&url=' + + encodeURIComponent(remote_resource_url + + '&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + 'anonymous', + NOT_TAINTED); + canvas_taint_test( + resource_url + '&mode=cors&url=' + + encodeURIComponent(remote_resource_url + + '&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + 'use-credentials', + LOAD_ERROR); // We expect LOAD_ERROR since the server doesn't respond + // with an Access-Control-Allow-Credentials header. + canvas_taint_test( + resource_url + '&mode=cors&url=' + + encodeURIComponent( + remote_resource_url + + '&ACACredentials=true&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + 'use-credentials', + NOT_TAINTED); + canvas_taint_test( + remote_resource_url + '&mode=cors&url=' + + encodeURIComponent(remote_resource_url + + '&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + '', + LOAD_ERROR); // We expect LOAD_ERROR since the server doesn't respond + // with an Access-Control-Allow-Credentials header. + canvas_taint_test( + remote_resource_url + '&mode=cors&credentials=same-origin&url=' + + encodeURIComponent(remote_resource_url + + '&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + '', + NOT_TAINTED); + canvas_taint_test( + remote_resource_url + '&mode=cors&url=' + + encodeURIComponent(remote_resource_url + + '&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + 'anonymous', + NOT_TAINTED); + canvas_taint_test( + remote_resource_url + '&mode=cors&url=' + + encodeURIComponent(remote_resource_url + + '&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + 'use-credentials', + LOAD_ERROR); // We expect LOAD_ERROR since the server doesn't respond + // with an Access-Control-Allow-Credentials header. + canvas_taint_test( + remote_resource_url + '&mode=cors&url=' + + encodeURIComponent( + remote_resource_url + + '&ACACredentials=true&ACAOrigin=' + host_info['HTTPS_ORIGIN']), + 'use-credentials', + NOT_TAINTED); +} diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-rewrite-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-rewrite-worker.js index 9806f2b5b6b..f2d49e2706a 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-rewrite-worker.js +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-rewrite-worker.js @@ -1,3 +1,11 @@ +// By default, this worker responds to fetch events with +// respondWith(fetch(request)). Additionally, if the request has a &url +// parameter, it fetches the provided URL instead. Because it forwards fetch +// events to this other URL, it is called the "fetch rewrite" worker. +// +// The worker also looks for other params on the request to do more custom +// behavior, like falling back to network or throwing an error. + function get_query_params(url) { var search = (new URL(url)).search; if (!search) { @@ -125,6 +133,7 @@ self.addEventListener('fetch', function(event) { } } + // |cache| means to bounce responses through Cache Storage and back. if (params['cache']) { var cacheName = "cached-fetches-" + performance.now() + "-" + event.request.url; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/local-url-inherit-controller-frame.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/local-url-inherit-controller-frame.html new file mode 100644 index 00000000000..d70e2141377 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/local-url-inherit-controller-frame.html @@ -0,0 +1,123 @@ + + + + diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/local-url-inherit-controller-worker.js b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/local-url-inherit-controller-worker.js new file mode 100644 index 00000000000..9d8955f111f --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/local-url-inherit-controller-worker.js @@ -0,0 +1,5 @@ +addEventListener('fetch', evt => { + if (evt.request.url.includes('dummy')) { + evt.respondWith(new Response('intercepted')); + } +}); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html index 385430c2d8e..582132a742f 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html @@ -90,9 +90,12 @@ async_test(function(t) { return registration.unregister(); }) .then(function() { + // Step 5.1 of Register clears the uninstall flag before fetching + // the script: + // + // https://w3c.github.io/ServiceWorker/#register-algorithm var promise = navigator.serviceWorker.register('this-will-404', { scope: scope }); - iframe.remove(); return promise; }) .then( @@ -100,17 +103,28 @@ async_test(function(t) { assert_unreached('register should reject the promise'); }, function() { + assert_equals(registration.installing, null, + 'registration.installing'); + assert_equals(registration.waiting, null, + 'registration.waiting'); + assert_equals(registration.active.scriptURL, normalizeURL(worker_url), + 'registration.active'); + iframe.remove(); return with_iframe(scope); }) .then(function(frame) { - assert_equals(frame.contentWindow.navigator.serviceWorker.controller, - null, - 'document should not load with a controller'); + assert_equals( + frame.contentWindow.navigator.serviceWorker.controller.scriptURL, + normalizeURL(worker_url), + 'the original worker should control a new document'); frame.remove(); + return registration.unregister(); + }) + .then(function() { t.done(); }) .catch(unreached_rejection(t)); -}, 'Registering a new script URL that 404s does not resurrect an ' + +}, 'Registering a new script URL that 404s does resurrect an ' + 'unregistered registration'); async_test(function(t) { @@ -131,9 +145,12 @@ async_test(function(t) { return registration.unregister(); }) .then(function() { + // Step 5.1 of Register clears the uninstall flag before firing + // the install event: + // + // https://w3c.github.io/ServiceWorker/#register-algorithm var promise = navigator.serviceWorker.register( 'resources/reject-install-worker.js', { scope: scope }); - iframe.remove(); return promise; }) .then(function(r) { @@ -141,12 +158,20 @@ async_test(function(t) { return wait_for_state(t, r.installing, 'redundant'); }) .then(function() { + assert_equals(registration.installing, null, + 'registration.installing'); + assert_equals(registration.waiting, null, + 'registration.waiting'); + assert_equals(registration.active.scriptURL, normalizeURL(worker_url), + 'registration.active'); + iframe.remove(); return with_iframe(scope); }) .then(function(frame) { - assert_equals(frame.contentWindow.navigator.serviceWorker.controller, - null, - 'document should not load with a controller'); + assert_equals( + frame.contentWindow.navigator.serviceWorker.controller.scriptURL, + normalizeURL(worker_url), + 'the original worker should control a new document'); frame.remove(); return registration.unregister(); }) @@ -154,6 +179,6 @@ async_test(function(t) { t.done(); }) .catch(unreached_rejection(t)); - }, 'Registering a new script URL that fails to install does not resurrect ' + + }, 'Registering a new script URL that fails to install does resurrect ' + 'an unregistered registration'); diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception.https.html index 3ec66a54b6e..4f14746d917 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/worker-interception.https.html @@ -81,10 +81,16 @@ promise_test(function(t) { }); }) .then(function(data) { - assert_equals(data, 'dummy-worker-script loaded'); + assert_unreached('intercepted cors response to a same-origin mode ' + + 'worker load should fail'); service_worker_unregister_and_done(t, scope); - }); - }, 'Verify worker script intercepted by cors response succeeds'); + }) + .catch(function(e) { + assert_true(true, 'intercepted cors response to a same-origin mode ' + + 'worker load should fail'); + service_worker_unregister_and_done(t, scope); + }); + }, 'Verify worker script intercepted by cors response fails'); promise_test(function(t) { var worker_url = 'resources/dummy-no-cors-worker.js'; diff --git a/tests/wpt/web-platform-tests/shadow-dom/DocumentOrShadowRoot-prototype-elementFromPoint.html b/tests/wpt/web-platform-tests/shadow-dom/DocumentOrShadowRoot-prototype-elementFromPoint.html new file mode 100644 index 00000000000..8cefa41ae35 --- /dev/null +++ b/tests/wpt/web-platform-tests/shadow-dom/DocumentOrShadowRoot-prototype-elementFromPoint.html @@ -0,0 +1,236 @@ + + + + Shadow DOM and CSSOM View: Document.prototype.elementFromPoint + + + + + + + + +
+ + + + + diff --git a/tests/wpt/web-platform-tests/shadow-dom/event-composed-path-with-related-target.html b/tests/wpt/web-platform-tests/shadow-dom/event-composed-path-with-related-target.html index 675a7d7b12f..f6dff13a93e 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/event-composed-path-with-related-target.html +++ b/tests/wpt/web-platform-tests/shadow-dom/event-composed-path-with-related-target.html @@ -131,14 +131,12 @@ test(() => { ['sr2', 'target', 'host1', path], ['host2', 'host2', 'host1', path], ['sr1', 'host2', 'host1', path]]); -}, 'Event path for an event with a relatedTarget. relaterTarget is a shadow-including ancestor of target.'); +}, 'Event path for an event with a relatedTarget. relatedTarget is a shadow-including ancestor of target.'); test(() => { let n = createTestTree(test4); let log = dispatchEventWithLog(n, n.host1, new FocusEvent('my-focus', { bubbles: true, composed: true, relatedTarget: n.target })); - let path = ['host1', 'test4']; - assert_event_path_equals(log, [['host1', 'host1', 'host1', path], - ['test4', 'host1', 'host1', path]]); + assert_event_path_equals(log, []); }, 'Event path for an event with a relatedTarget. target is a shadow-including ancestor of relatedTarget.'); diff --git a/tests/wpt/web-platform-tests/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-event-interface/event-path-001.html b/tests/wpt/web-platform-tests/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-event-interface/event-path-001.html deleted file mode 100644 index 455ee40c383..00000000000 --- a/tests/wpt/web-platform-tests/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-event-interface/event-path-001.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - -Shadow DOM Test - event path - - - - - - - - - -
- - - diff --git a/tests/wpt/web-platform-tests/svg/OWNERS b/tests/wpt/web-platform-tests/svg/OWNERS index 54ae635434f..e815ad8af64 100644 --- a/tests/wpt/web-platform-tests/svg/OWNERS +++ b/tests/wpt/web-platform-tests/svg/OWNERS @@ -3,3 +3,4 @@ @boggydigital @ewilligers @AmeliaBR +@svgeesus diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedAngle.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedAngle.html new file mode 100644 index 00000000000..5fdc9f3cffb --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedAngle.html @@ -0,0 +1,33 @@ + +SVGAnimatedAngle interface - utilizing the orientAngle property of SVGMarkerElement + + + diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedBoolean.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedBoolean.html new file mode 100644 index 00000000000..ba52922ed73 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedBoolean.html @@ -0,0 +1,45 @@ + +SVGAnimatedBoolean interface - utilizing the preserveAlpha property of SVGFEConvolveMatrixElement + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedInteger.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedInteger.html new file mode 100644 index 00000000000..849c13d3671 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedInteger.html @@ -0,0 +1,35 @@ + +SVGAnimatedInteger interface - utilizing the targetX property of SVGFEConvolveMatrix + + + diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedLength.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedLength.html new file mode 100644 index 00000000000..788849d8e35 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedLength.html @@ -0,0 +1,33 @@ + +SVGAnimatedLength interface - utilizing the width property of SVGRectElement + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedLengthList.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedLengthList.html new file mode 100644 index 00000000000..763d804642d --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedLengthList.html @@ -0,0 +1,34 @@ + +SVGAnimatedLengthList interface - utilizing the dx property of SVGTextElement + + + diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedNumber.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedNumber.html new file mode 100644 index 00000000000..a1697cbf926 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedNumber.html @@ -0,0 +1,42 @@ + +SVGAnimatedNumber interface - utilizing the surfaceScale property of SVGFESpecularLightingElement + + + diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedNumberList.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedNumberList.html new file mode 100644 index 00000000000..5737cd4d318 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedNumberList.html @@ -0,0 +1,34 @@ + +SVGAnimatedNumberList interface - utilizing the rotate property of SVGTextElement + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedPreserveAspectRatio.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedPreserveAspectRatio.html new file mode 100644 index 00000000000..80b96e99697 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedPreserveAspectRatio.html @@ -0,0 +1,41 @@ + +SVGAnimatedPreserveAspectRatio interface - utilizing the preserveAspectRatio property of SVGSVGElement + + + diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedRect.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedRect.html new file mode 100644 index 00000000000..011f44eee81 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGAnimatedRect.html @@ -0,0 +1,33 @@ + +SVGAnimatedRect interface - utilizing the viewBox property of SVGSVGElement + + + diff --git a/tests/wpt/web-platform-tests/tools/lint/lint.py b/tests/wpt/web-platform-tests/tools/lint/lint.py index 3228524353b..c1a6ce02d1e 100644 --- a/tests/wpt/web-platform-tests/tools/lint/lint.py +++ b/tests/wpt/web-platform-tests/tools/lint/lint.py @@ -722,7 +722,8 @@ def changed_files(wpt_root): def lint_paths(kwargs, wpt_root): if kwargs.get("paths"): - paths = kwargs["paths"] + r = os.path.realpath(wpt_root) + paths = [os.path.relpath(os.path.realpath(x), r) for x in kwargs["paths"]] elif kwargs["all"]: paths = list(all_filesystem_paths(wpt_root)) else: diff --git a/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py b/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py index e3e530f172e..9375e2f7560 100644 --- a/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py +++ b/tests/wpt/web-platform-tests/tools/lint/tests/test_lint.py @@ -390,7 +390,10 @@ def test_main_with_args(): sys.argv = ['./lint', 'a', 'b', 'c'] with _mock_lint('lint', return_value=True) as m: lint_mod.main(**vars(create_parser().parse_args())) - m.assert_called_once_with(repo_root, ['a', 'b', 'c'], "normal") + m.assert_called_once_with(repo_root, + [os.path.relpath(os.path.join(os.getcwd(), x), repo_root) + for x in ['a', 'b', 'c']], + "normal") finally: sys.argv = orig_argv diff --git a/tests/wpt/web-platform-tests/tools/pytest.ini b/tests/wpt/web-platform-tests/tools/pytest.ini index ecef9b7173d..b52e465598a 100644 --- a/tests/wpt/web-platform-tests/tools/pytest.ini +++ b/tests/wpt/web-platform-tests/tools/pytest.ini @@ -1,2 +1,3 @@ [pytest] norecursedirs = .* {arch} *.egg html5lib third_party pywebsocket six wpt wptrunner +xfail_strict=true diff --git a/tests/wpt/web-platform-tests/tools/tox.ini b/tests/wpt/web-platform-tests/tools/tox.ini index 159a934eb1a..1db1b4ebb7a 100644 --- a/tests/wpt/web-platform-tests/tools/tox.ini +++ b/tests/wpt/web-platform-tests/tools/tox.ini @@ -16,7 +16,7 @@ deps = pytest-catchlog commands = - pytest --cov + pytest --cov {posargs} flake8 passenv = 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 127ed188f3e..fade7024f4a 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 @@ -1,7 +1,10 @@ +import errno import os import shutil import socket import subprocess +import sys +import tempfile import time import urllib2 @@ -10,8 +13,42 @@ import pytest from tools.wpt import wpt -pytestmark = pytest.mark.skipif(os.name == "nt", - reason="Tests currently don't work on Windows for path reasons") +def is_port_8000_in_use(): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + try: + s.bind(("127.0.0.1", 8000)) + except socket.error as e: + if e.errno == errno.EADDRINUSE: + return True + else: + raise e + finally: + s.close() + return False + + +@pytest.fixture(scope="module") +def manifest_dir(): + def update_manifest(): + with pytest.raises(SystemExit) as excinfo: + wpt.main(argv=["manifest", "--no-download", "--path", os.path.join(path, "MANIFEST.json")]) + assert excinfo.value.code == 0 + + if os.environ.get('TRAVIS') == "true": + path = "~/meta" + update_manifest() + yield path + else: + try: + path = tempfile.mkdtemp() + old_path = os.path.join(wpt.localpaths.repo_root, "MANIFEST.json") + if os.path.exists(os.path.join(wpt.localpaths.repo_root, "MANIFEST.json")): + shutil.copyfile(old_path, os.path.join(path, "MANIFEST.json")) + update_manifest() + yield path + finally: + shutil.rmtree(path) + def test_missing(): with pytest.raises(SystemExit): @@ -27,11 +64,17 @@ def test_help(): @pytest.mark.slow -@pytest.mark.system_dependent @pytest.mark.remote_network -def test_run_firefox(): +@pytest.mark.xfail(sys.platform == "darwin", + reason="https://github.com/w3c/web-platform-tests/issues/9090") +@pytest.mark.xfail(sys.platform == "win32", + reason="Tests currently don't work on Windows for path reasons") +def test_run_firefox(manifest_dir): # TODO: It seems like there's a bug in argparse that makes this argument order required # should try to work around that + if is_port_8000_in_use(): + pytest.skip("port 8000 already in use") + os.environ["MOZ_HEADLESS"] = "1" try: fx_path = os.path.join(wpt.localpaths.repo_root, "_venv", "firefox") @@ -39,7 +82,7 @@ def test_run_firefox(): shutil.rmtree(fx_path) with pytest.raises(SystemExit) as excinfo: wpt.main(argv=["run", "--no-pause", "--install-browser", "--yes", - "--metadata", "~/meta/", + "--metadata", manifest_dir, "firefox", "/dom/nodes/Element-tagName.html"]) assert os.path.exists(fx_path) shutil.rmtree(fx_path) @@ -49,17 +92,23 @@ def test_run_firefox(): @pytest.mark.slow -@pytest.mark.system_dependent -def test_run_chrome(): +@pytest.mark.xfail(sys.platform == "win32", + reason="Tests currently don't work on Windows for path reasons") +def test_run_chrome(manifest_dir): + if is_port_8000_in_use(): + pytest.skip("port 8000 already in use") + with pytest.raises(SystemExit) as excinfo: wpt.main(argv=["run", "--yes", "--no-pause", "--binary-arg", "headless", - "--metadata", "~/meta/", + "--metadata", manifest_dir, "chrome", "/dom/nodes/Element-tagName.html"]) assert excinfo.value.code == 0 @pytest.mark.slow @pytest.mark.remote_network +@pytest.mark.xfail(sys.platform == "win32", + reason="Tests currently don't work on Windows for path reasons") def test_install_chromedriver(): chromedriver_path = os.path.join(wpt.localpaths.repo_root, "_venv", "bin", "chromedriver") if os.path.exists(chromedriver_path): @@ -73,6 +122,10 @@ def test_install_chromedriver(): @pytest.mark.slow @pytest.mark.remote_network +@pytest.mark.xfail(sys.platform == "darwin", + reason="https://github.com/w3c/web-platform-tests/issues/9090") +@pytest.mark.xfail(sys.platform == "win32", + reason="Tests currently don't work on Windows for path reasons") def test_install_firefox(): fx_path = os.path.join(wpt.localpaths.repo_root, "_venv", "firefox") if os.path.exists(fx_path): @@ -84,6 +137,8 @@ def test_install_firefox(): shutil.rmtree(fx_path) +@pytest.mark.xfail(sys.platform == "win32", + reason="Tests currently don't work on Windows for path reasons") def test_files_changed(capsys): commit = "9047ac1d9f51b1e9faa4f9fad9c47d109609ab09" with pytest.raises(SystemExit) as excinfo: @@ -120,27 +175,26 @@ def test_files_changed_ignore_rules(): @pytest.mark.slow # this updates the manifest -@pytest.mark.system_dependent -def test_tests_affected(capsys): +@pytest.mark.xfail(sys.platform == "win32", + reason="Tests currently don't work on Windows for path reasons") +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" with pytest.raises(SystemExit) as excinfo: - wpt.main(argv=["tests-affected", "--metadata", "~/meta/", "%s~..%s" % (commit, commit)]) + 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 @pytest.mark.slow -@pytest.mark.system_dependent +@pytest.mark.xfail(sys.platform == "win32", + reason="Tests currently don't work on Windows for path reasons") def test_serve(): - def test(): - s = socket.socket() - s.connect(("127.0.0.1", 8000)) - with pytest.raises(socket.error): - test() + if is_port_8000_in_use(): + pytest.skip("port 8000 already in use") p = subprocess.Popen([os.path.join(wpt.localpaths.repo_root, "wpt"), "serve"], preexec_fn=os.setsid) @@ -148,8 +202,10 @@ def test_serve(): start = time.time() try: while True: + if p.poll() is not None: + assert False, "server not running" if time.time() - start > 60: - assert False + assert False, "server did not start responding within 60s" try: resp = urllib2.urlopen("http://web-platform.test:8000") print resp diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/README.rst b/tests/wpt/web-platform-tests/tools/wptrunner/README.rst index 834e07ee41d..4890e3a6e03 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/README.rst +++ b/tests/wpt/web-platform-tests/tools/wptrunner/README.rst @@ -197,7 +197,7 @@ language e.g.:: if debug and (platform == "linux" or platform == "osx"): FAIL -For test expectations the avaliable variables are those in the +For test expectations the available variables are those in the `run_info` which for desktop are `version`, `os`, `bits`, `processor`, `debug` and `product`. diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt index 7b828f84b08..43a7881b64f 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt @@ -1,2 +1,3 @@ mozprocess >= 0.19 selenium >= 3.3.0 +requests diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini index fa6aa3f7129..9be8c0e422a 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini +++ b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini @@ -2,19 +2,21 @@ xfail_strict=true [tox] -envlist = {py27,pypy}-{base,chrome,firefox,servo},py27-flake8 +envlist = {py27,pypy}-{base,chrome,firefox,sauce,servo},py27-flake8 [testenv] deps = pytest>=2.9 pytest-cov pytest-xdist + mock -r{toxinidir}/requirements.txt chrome: -r{toxinidir}/requirements_chrome.txt firefox: -r{toxinidir}/requirements_firefox.txt + sauce: -r{toxinidir}/requirements_sauce.txt servo: -r{toxinidir}/requirements_servo.txt -commands = pytest --cov +commands = pytest {posargs:--cov} [testenv:py27-flake8] # flake8 versions should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py index 25eeb5684c2..4c1be1c0e22 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/sauce.py @@ -156,10 +156,28 @@ class SauceConnect(): "web-platform.test", "*.web-platform.test" ]) - while not os.path.exists('./sauce_is_ready') and not self.sc_process.poll(): - time.sleep(5) - if self.sc_process.returncode is not None and self.sc_process.returncode > 0: + # Timeout config vars + each_sleep_secs = 1 + max_wait = 30 + kill_wait = 5 + + tot_wait = 0 + while not os.path.exists('./sauce_is_ready') and self.sc_process.poll() is None: + if tot_wait >= max_wait: + self.sc_process.terminate() + while self.sc_process.poll() is None: + time.sleep(each_sleep_secs) + tot_wait += each_sleep_secs + if tot_wait >= (max_wait + kill_wait): + self.sc_process.kill() + break + raise SauceException("Sauce Connect Proxy was not ready after %d seconds" % tot_wait) + + time.sleep(each_sleep_secs) + tot_wait += each_sleep_secs + + if self.sc_process.returncode is not None: raise SauceException("Unable to start Sauce Connect Proxy. Process exited with code %s", self.sc_process.returncode) def __exit__(self, exc_type, exc_val, exc_tb): 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 30930c3c2f9..faf087b7a96 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 @@ -96,7 +96,7 @@ class MarionetteProtocol(Protocol): def teardown(self): try: self.marionette._request_in_app_shutdown() - self.marionette.delete_session(send_request=False, reset_session_id=True) + self.marionette.delete_session(send_request=False) except Exception: # This is typically because the session never started pass @@ -131,13 +131,14 @@ class MarionetteProtocol(Protocol): self.logger.debug("Loading %s" % url) self.runner_handle = self.marionette.current_window_handle try: - self.marionette.navigate(url) + self.dismiss_alert(lambda: self.marionette.navigate(url)) except Exception as e: self.logger.critical( "Loading initial page %s failed. Ensure that the " "there are no other programs bound to this port and " "that your firewall rules or network setup does not " "prevent access.\e%s" % (url, traceback.format_exc(e))) + raise self.marionette.execute_script( "document.title = '%s'" % threading.current_thread().name.replace("'", '"')) @@ -157,6 +158,7 @@ class MarionetteProtocol(Protocol): for handle in handles: try: + self.dismiss_alert(lambda: self.marionette.switch_to_window(handle)) self.marionette.switch_to_window(handle) self.marionette.close() except errors.NoSuchWindowException: @@ -168,6 +170,19 @@ class MarionetteProtocol(Protocol): if runner_handle != self.runner_handle: self.load_runner(protocol) + def dismiss_alert(self, f): + while True: + try: + f() + except errors.UnexpectedAlertOpen: + alert = self.marionette.switch_to_alert() + try: + alert.dismiss() + except errors.NoAlertPresentException: + pass + else: + break + def wait(self): try: socket_timeout = self.marionette.client.socket_timeout 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 0870b1232ad..8eabf27f47f 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 @@ -52,12 +52,13 @@ def run(path, server_config, session_config, timeout=0): with TemporaryDirectory() as cache: try: pytest.main(["--strict", # turn warnings into errors - "--verbose", # show each individual subtest + "-vv", # show each individual subtest and full failure logs "--capture", "no", # enable stdout/stderr from tests "--basetemp", cache, # temporary directory "--showlocals", # display contents of variables in local scope "-p", "no:mozlog", # use the WPT result recorder "-p", "no:cacheprovider", # disable state preservation across invocations + "-o=console_output_style=classic", # disable test progress bar path], plugins=[harness, subtests]) except Exception as e: diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py index 9c31e4279ef..92d77ba8d94 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/metadata.py @@ -65,9 +65,9 @@ def update_expected(test_paths, serve_root, log_file_names, for test in tree.iterchildren(): for subtest in test.iterchildren(): if subtest.new_disabled: - print os.path.dirname(subtest.root.test_path) + "/" + subtest.name + print "disabled: %s" % os.path.dirname(subtest.root.test_path) + "/" + subtest.name if test.new_disabled: - print test.root.test_path + print "disabled: %s" % test.root.test_path results_changed = [item.test_path for item in expected_map.itervalues() if item.modified] 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 new file mode 100644 index 00000000000..bf3e487bd72 --- /dev/null +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/browsers/test_sauce.py @@ -0,0 +1,84 @@ +import sys +from os.path import join, dirname + +import mock +import pytest + +sys.path.insert(0, join(dirname(__file__), "..", "..", "..")) + +sauce = pytest.importorskip("wptrunner.browsers.sauce") + + +def test_sauceconnect_success(): + with mock.patch.object(sauce.SauceConnect, "upload_prerun_exec"),\ + mock.patch.object(sauce.subprocess, "Popen") as Popen,\ + mock.patch.object(sauce.os.path, "exists") as exists: + # Act as if it's still running + Popen.return_value.poll.return_value = None + Popen.return_value.returncode = None + # Act as if file created + exists.return_value = True + + sauce_connect = sauce.SauceConnect( + sauce_user="aaa", + sauce_key="bbb", + sauce_tunnel_id="ccc", + sauce_connect_binary="ddd") + + sauce_connect.__enter__(None) + + +@pytest.mark.parametrize("readyfile,returncode", [ + (True, 0), + (True, 1), + (True, 2), + (False, 0), + (False, 1), + (False, 2), +]) +def test_sauceconnect_failure_exit(readyfile, returncode): + with mock.patch.object(sauce.SauceConnect, "upload_prerun_exec"),\ + mock.patch.object(sauce.subprocess, "Popen") as Popen,\ + mock.patch.object(sauce.os.path, "exists") as exists,\ + mock.patch.object(sauce.time, "sleep") as sleep: + Popen.return_value.poll.return_value = returncode + Popen.return_value.returncode = returncode + exists.return_value = readyfile + + sauce_connect = sauce.SauceConnect( + sauce_user="aaa", + sauce_key="bbb", + sauce_tunnel_id="ccc", + sauce_connect_binary="ddd") + + with pytest.raises(sauce.SauceException): + sauce_connect.__enter__(None) + + # Given we appear to exit immediately with these mocks, sleep shouldn't be called + sleep.assert_not_called() + + +def test_sauceconnect_failure_never_ready(): + with mock.patch.object(sauce.SauceConnect, "upload_prerun_exec"),\ + mock.patch.object(sauce.subprocess, "Popen") as Popen,\ + mock.patch.object(sauce.os.path, "exists") as exists,\ + mock.patch.object(sauce.time, "sleep") as sleep: + Popen.return_value.poll.return_value = None + Popen.return_value.returncode = None + exists.return_value = False + + sauce_connect = sauce.SauceConnect( + sauce_user="aaa", + sauce_key="bbb", + sauce_tunnel_id="ccc", + sauce_connect_binary="ddd") + + with pytest.raises(sauce.SauceException): + sauce_connect.__enter__(None) + + # We should sleep while waiting for it to create the readyfile + sleep.assert_called() + + # Check we actually kill it after termination fails + Popen.return_value.terminate.assert_called() + Popen.return_value.kill.assert_called() diff --git a/tests/wpt/web-platform-tests/wai-aria/tools/make_tests.pl b/tests/wpt/web-platform-tests/wai-aria/tools/make_tests.pl index 36de4493264..b680c0eb202 100644 --- a/tests/wpt/web-platform-tests/wai-aria/tools/make_tests.pl +++ b/tests/wpt/web-platform-tests/wai-aria/tools/make_tests.pl @@ -230,6 +230,9 @@ while (<$io>) { $theCode =~ s/ +$//; $theCode =~ s/\t/ /g; $theCode .= $_; + # In MediaWiki, to display & symbol escapes as literal text, one + # must use "&&" for the "&" character. We need to undo that. + $theCode =~ s/&(\S)/&$1/g; } } } elsif ($state == 3) { diff --git a/tests/wpt/web-platform-tests/web-animations/README.md b/tests/wpt/web-platform-tests/web-animations/README.md index 475f58a57b1..f6efbf977f9 100644 --- a/tests/wpt/web-platform-tests/web-animations/README.md +++ b/tests/wpt/web-platform-tests/web-animations/README.md @@ -98,10 +98,19 @@ Guidelines for writing tests Remember, even if we do need to make all tests take, say 200s each, text editors are very good at search and replace. -* Use the `assert_times_equal` assertion for comparing calculated times. - It tests times are equal using the precision recommended in the spec whilst - allowing implementations to override the function to meet their own - precision requirements. +* Use the `assert_times_equal` assertion for comparing times returned from + the API. This asserts that the time values are equal using a tolerance + based on the precision recommended in the spec. This tolerance is applied + to *both* of the values being compared. That is, it effectively allows + double the epsilon that is used when comparing with an absolute value. + + For comparing a time value returned from the API to an absolute value, use + `assert_time_equals_literal`. This tests that the actual value is equal to + the expected value within the precision recommended in the spec. + + Both `assert_times_equal` and `assert_time_equals_literal` are defined in a + way that implementations can override them to meet their own precision + requirements. * There are quite a few bad tests in the repository. We're learning as we go. Don't just copy them blindly—please fix them! 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 1220b455b18..4b917957f7f 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 @@ -751,19 +751,19 @@ const gCSSProperties = { 'justify-content': { // https://drafts.csswg.org/css-align/#propdef-justify-content types: [ - { type: 'discrete', options: [ [ 'baseline', 'last baseline' ] ] } + { type: 'discrete', options: [ [ 'start', 'end' ] ] } ] }, 'justify-items': { // https://drafts.csswg.org/css-align/#propdef-justify-items types: [ - { type: 'discrete', options: [ [ 'baseline', 'last baseline' ] ] } + { type: 'discrete', options: [ [ 'start', 'end' ] ] } ] }, 'justify-self': { // https://drafts.csswg.org/css-align/#propdef-justify-self types: [ - { type: 'discrete', options: [ [ 'baseline', 'last baseline' ] ] } + { type: 'discrete', options: [ [ 'start', 'end' ] ] } ] }, 'left': { diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html index 9a3b76240f0..be5bf969498 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/Animation/playbackRate.html @@ -14,16 +14,14 @@ function assert_playbackrate(animation, previousAnimationCurrentTime, previousTimelineCurrentTime, description) { - const accuracy = 0.001; /* accuracy of DOMHighResTimeStamp */ const animationCurrentTimeDifference = animation.currentTime - previousAnimationCurrentTime; const timelineCurrentTimeDifference = animation.timeline.currentTime - previousTimelineCurrentTime; - assert_approx_equals(animationCurrentTimeDifference, - timelineCurrentTimeDifference * animation.playbackRate, - accuracy, - description); + assert_times_equal(animationCurrentTimeDifference, + timelineCurrentTimeDifference * animation.playbackRate, + description); } promise_test(t => { diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/direction.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/direction.html index 7bc315da967..3238f5d7a5e 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/direction.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/direction.html @@ -31,13 +31,13 @@ test(t => { const div = createDiv(t); const anim = div.animate(null, { duration: 10000, direction: 'normal' }); anim.currentTime = 7000; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.7, - 'progress before updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.7, + 'progress before updating direction'); anim.effect.timing.direction = 'reverse'; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3, - 'progress after updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3, + 'progress after updating direction'); }, 'Can be changed from \'normal\' to \'reverse\' while in progress'); test(t => { @@ -78,13 +78,13 @@ test(t => { duration: 10000, direction: 'normal' }); anim.currentTime = 17000; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.7, - 'progress before updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.7, + 'progress before updating direction'); anim.effect.timing.direction = 'alternate'; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3, - 'progress after updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3, + 'progress after updating direction'); }, 'Can be changed from \'normal\' to \'alternate\' while in progress'); test(t => { @@ -94,13 +94,13 @@ test(t => { duration: 10000, direction: 'alternate' }); anim.currentTime = 17000; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3, - 'progress before updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3, + 'progress before updating direction'); anim.effect.timing.direction = 'alternate-reverse'; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.7, - 'progress after updating direction'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.7, + 'progress after updating direction'); }, 'Can be changed from \'alternate\' to \'alternate-reverse\' while in' + ' progress'); diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/duration.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/duration.html index 9caa0e36e05..42913f552dd 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/duration.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/duration.html @@ -19,10 +19,10 @@ test(t => { const div = createDiv(t); const anim = div.animate({ opacity: [ 0, 1 ] }, 2000); anim.effect.timing.duration = 123.45; - assert_times_equal(anim.effect.timing.duration, 123.45, - 'set duration 123.45'); - assert_times_equal(anim.effect.getComputedTiming().duration, 123.45, - 'getComputedTiming() after set duration 123.45'); + assert_time_equals_literal(anim.effect.timing.duration, 123.45, + 'set duration 123.45'); + assert_time_equals_literal(anim.effect.getComputedTiming().duration, 123.45, + 'getComputedTiming() after set duration 123.45'); }, 'Can be set to a double value'); test(t => { @@ -176,8 +176,8 @@ test(t => { assert_equals(anim.effect.getComputedTiming().progress, 1, 'progress when animation is finished'); anim.effect.timing.duration *= 2; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5, - 'progress after doubling the duration'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5, + 'progress after doubling the duration'); anim.effect.timing.duration = 0; assert_equals(anim.effect.getComputedTiming().progress, 1, 'progress after setting duration to zero'); diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/endDelay.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/endDelay.html index b6793edaed5..3062c8c1565 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/endDelay.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/endDelay.html @@ -19,10 +19,10 @@ test(t => { const div = createDiv(t); const anim = div.animate({ opacity: [ 0, 1 ] }, 2000); anim.effect.timing.endDelay = 123.45; - assert_times_equal(anim.effect.timing.endDelay, 123.45, - 'set endDelay 123.45'); - assert_times_equal(anim.effect.getComputedTiming().endDelay, 123.45, - 'getComputedTiming() after set endDelay 123.45'); + assert_time_equals_literal(anim.effect.timing.endDelay, 123.45, + 'set endDelay 123.45'); + assert_time_equals_literal(anim.effect.getComputedTiming().endDelay, 123.45, + 'getComputedTiming() after set endDelay 123.45'); }, 'Can be set to a positive number'); test(t => { diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html index 5521f1e8594..73bc4810da1 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterationStart.html @@ -24,7 +24,7 @@ test(t => { duration: 100, delay: 1 }); anim.effect.timing.iterationStart = 2.5; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); }, 'Changing the value updates computed timing when backwards-filling'); @@ -37,7 +37,7 @@ test(t => { duration: 100, delay: 0 }); anim.effect.timing.iterationStart = 2.5; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); }, 'Changing the value updates computed timing during the active phase'); @@ -51,7 +51,7 @@ test(t => { delay: 0 }); anim.finish(); anim.effect.timing.iterationStart = 2.5; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); assert_equals(anim.effect.getComputedTiming().currentIteration, 3); }, 'Changing the value updates computed timing when forwards-filling'); diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html index 32390626463..3bfaf8e9920 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/AnimationEffectTiming/iterations.html @@ -70,10 +70,12 @@ test(t => { anim.effect.timing.iterations = 2; - assert_times_equal(anim.effect.getComputedTiming().progress, 0, - 'progress after adding an iteration'); - assert_times_equal(anim.effect.getComputedTiming().currentIteration, 1, - 'current iteration after adding an iteration'); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, + 0, + 'progress after adding an iteration'); + assert_time_equals_literal(anim.effect.getComputedTiming().currentIteration, + 1, + 'current iteration after adding an iteration'); anim.effect.timing.iterations = 0; diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/composite.html b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/composite.html index 745f66bc711..82ac633f0a9 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/composite.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/composite.html @@ -29,8 +29,8 @@ test(t => { anim.effect.composite = 'add'; const keyframes = anim.effect.getKeyframes(); - assert_equals(keyframes[0].composite, undefined, - 'unspecified keyframe composite value should be absent even ' + + assert_equals(keyframes[0].composite, null, + 'unspecified keyframe composite value should be null even ' + 'if effect composite is set'); }, 'Unspecified keyframe composite value when setting effect composite'); diff --git a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html index b257257b2ca..dfdebde2072 100644 --- a/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html +++ b/tests/wpt/web-platform-tests/web-animations/interfaces/KeyframeEffect/constructor.html @@ -57,7 +57,7 @@ test(t => { assert_equals(effect.getKeyframes()[0].composite, composite, `resulting composite for '${composite}'`); } - for (const composite of gBadCompositeValueTests) { + for (const composite of gBadKeyframeCompositeValueTests) { assert_throws(new TypeError, () => { new KeyframeEffectReadOnly(target, getKeyframe(composite)); }); @@ -76,7 +76,7 @@ test(t => { assert_equals(effect.getKeyframes()[0].composite, composite, `resulting composite for '${composite}'`); } - for (const composite of gBadCompositeValueTests) { + for (const composite of gBadKeyframeCompositeValueTests) { assert_throws(new TypeError, () => { new KeyframeEffectReadOnly(target, getKeyframes(composite)); }); @@ -89,17 +89,17 @@ test(t => { const effect = new KeyframeEffectReadOnly(target, { left: ['10px', '20px'] }, { composite: composite }); - assert_equals(effect.getKeyframes()[0].composite, undefined, + assert_equals(effect.getKeyframes()[0].composite, null, `resulting composite for '${composite}'`); } - for (const composite of gBadCompositeValueTests) { + for (const composite of gBadOptionsCompositeValueTests) { assert_throws(new TypeError, () => { new KeyframeEffectReadOnly(target, { left: ['10px', '20px'] }, { composite: composite }); }); } -}, 'composite value is absent if the composite operation specified on the ' + +}, 'composite value is null if the composite operation specified on the ' + 'keyframe effect is being used'); for (const subtest of gKeyframesTests) { 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 e6c5c2af851..523019d2913 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 @@ -180,9 +180,27 @@ test(() => { { done: true }, ])); assert_frame_lists_equal(effect.getKeyframes(), [ - { offset: null, computedOffset: 0, easing: 'linear', left: '100px' }, - { offset: null, computedOffset: 0.5, easing: 'linear', left: '300px' }, - { offset: null, computedOffset: 1, easing: 'linear', left: '200px' }, + { + offset: null, + computedOffset: 0, + easing: 'linear', + left: '100px', + composite: null, + }, + { + offset: null, + computedOffset: 0.5, + easing: 'linear', + left: '300px', + composite: null, + }, + { + offset: null, + computedOffset: 1, + easing: 'linear', + left: '200px', + composite: null, + }, ]); }, 'Keyframes are read from a custom iterator'); @@ -197,9 +215,27 @@ test(() => { keyframes.offset = '0.1'; const effect = new KeyframeEffect(null, keyframes); assert_frame_lists_equal(effect.getKeyframes(), [ - { offset: null, computedOffset: 0, easing: 'linear', left: '100px' }, - { offset: null, computedOffset: 0.5, easing: 'linear', left: '300px' }, - { offset: null, computedOffset: 1, easing: 'linear', left: '200px' }, + { + offset: null, + computedOffset: 0, + easing: 'linear', + left: '100px', + composite: null, + }, + { + offset: null, + computedOffset: 0.5, + easing: 'linear', + left: '300px', + composite: null, + }, + { + offset: null, + computedOffset: 1, + easing: 'linear', + left: '200px', + composite: null, + }, ]); }, '\'easing\' and \'offset\' are ignored on iterable objects'); @@ -211,11 +247,29 @@ test(() => { { done: true }, ])); assert_frame_lists_equal(effect.getKeyframes(), [ - { offset: null, computedOffset: 0, easing: 'linear', left: '100px', - top: '200px' }, - { offset: null, computedOffset: 0.5, easing: 'linear', left: '300px' }, - { offset: null, computedOffset: 1, easing: 'linear', left: '200px', - top: '100px' }, + { + offset: null, + computedOffset: 0, + easing: 'linear', + left: '100px', + top: '200px', + composite: null, + }, + { + offset: null, + computedOffset: 0.5, + easing: 'linear', + left: '300px', + composite: null, + }, + { + offset: null, + computedOffset: 1, + easing: 'linear', + left: '200px', + top: '100px', + composite: null, + }, ]); }, 'Keyframes are read from a custom iterator with multiple properties' + ' specified'); @@ -228,9 +282,27 @@ test(() => { { done: true }, ])); assert_frame_lists_equal(effect.getKeyframes(), [ - { offset: null, computedOffset: 0, easing: 'linear', left: '100px' }, - { offset: 0.75, computedOffset: 0.75, easing: 'linear', left: '250px' }, - { offset: null, computedOffset: 1, easing: 'linear', left: '200px' }, + { + offset: null, + computedOffset: 0, + easing: 'linear', + left: '100px', + composite: null, + }, + { + offset: 0.75, + computedOffset: 0.75, + easing: 'linear', + left: '250px', + composite: null, + }, + { + offset: null, + computedOffset: 1, + easing: 'linear', + left: '200px', + composite: null, + }, ]); }, 'Keyframes are read from a custom iterator with where an offset is' + ' specified'); @@ -253,7 +325,7 @@ test(() => { { done: true }, ])); assert_frame_lists_equal(effect.getKeyframes(), [ - { offset: null, computedOffset: 1, easing: 'linear' } + { offset: null, computedOffset: 1, easing: 'linear', composite: null } ]); }, 'A list of values returned from a custom iterator should be ignored'); @@ -270,8 +342,20 @@ test(() => { const effect = new KeyframeEffect(null, [keyframe, { height: '200px' }]); assert_frame_lists_equal(effect.getKeyframes(), [ - { offset: null, computedOffset: 0, easing: 'linear', height: '100px' }, - { offset: null, computedOffset: 1, easing: 'linear', height: '200px' }, + { + offset: null, + computedOffset: 0, + easing: 'linear', + height: '100px', + composite: null, + }, + { + offset: null, + computedOffset: 1, + easing: 'linear', + height: '200px', + composite: null, + }, ]); }, 'Only enumerable properties on keyframes are read'); @@ -289,8 +373,20 @@ test(() => { const effect = new KeyframeEffect(null, [keyframe, { top: '200px' }]); assert_frame_lists_equal(effect.getKeyframes(), [ - { offset: null, computedOffset: 0, easing: 'linear', top: '100px' }, - { offset: null, computedOffset: 1, easing: 'linear', top: '200px' }, + { + offset: null, + computedOffset: 0, + easing: 'linear', + top: '100px', + composite: null, + }, + { + offset: null, + computedOffset: 1, + easing: 'linear', + top: '200px', + composite: null, + }, ]); }, 'Only properties defined directly on keyframes are read'); @@ -305,8 +401,20 @@ test(() => { const effect = new KeyframeEffect(null, keyframes); assert_frame_lists_equal(effect.getKeyframes(), [ - { offset: null, computedOffset: 0, easing: 'linear', height: '100px' }, - { offset: null, computedOffset: 1, easing: 'linear', height: '200px' }, + { + offset: null, + computedOffset: 0, + easing: 'linear', + height: '100px', + composite: null, + }, + { + offset: null, + computedOffset: 1, + easing: 'linear', + height: '200px', + composite: null, + }, ]); }, 'Only enumerable properties on property-indexed keyframes are read'); @@ -324,8 +432,20 @@ test(() => { const effect = new KeyframeEffect(null, keyframes); assert_frame_lists_equal(effect.getKeyframes(), [ - { offset: null, computedOffset: 0, easing: 'linear', top: '100px' }, - { offset: null, computedOffset: 1, easing: 'linear', top: '200px' }, + { + offset: null, + computedOffset: 0, + easing: 'linear', + top: '100px', + composite: null, + }, + { + offset: null, + computedOffset: 1, + easing: 'linear', + top: '200px', + composite: null, + }, ]); }, 'Only properties defined directly on property-indexed keyframes are read'); diff --git a/tests/wpt/web-platform-tests/web-animations/resources/keyframe-tests.js b/tests/wpt/web-platform-tests/web-animations/resources/keyframe-tests.js index 3aa1c6dba25..f32f5ced8e7 100644 --- a/tests/wpt/web-platform-tests/web-animations/resources/keyframe-tests.js +++ b/tests/wpt/web-platform-tests/web-animations/resources/keyframe-tests.js @@ -12,14 +12,18 @@ // ------------------------------ const gGoodKeyframeCompositeValueTests = [ - 'replace', 'add', 'accumulate', undefined + 'replace', 'add', 'accumulate', null +]; + +const gBadKeyframeCompositeValueTests = [ + 'unrecognised', 'replace ', 'Replace' ]; const gGoodOptionsCompositeValueTests = [ 'replace', 'add', 'accumulate' ]; -const gBadCompositeValueTests = [ +const gBadOptionsCompositeValueTests = [ 'unrecognised', 'replace ', 'Replace', null ]; @@ -50,9 +54,7 @@ const keyframe = (offset, props, easing='linear', composite) => { // Object.assign instead. const result = {}; Object.assign(result, offset, props, { easing }); - if (composite) { - result.composite = composite; - } + result.composite = composite || null; return result; }; diff --git a/tests/wpt/web-platform-tests/web-animations/testcommon.js b/tests/wpt/web-platform-tests/web-animations/testcommon.js index 51b84dd3e53..be3827fd5d8 100644 --- a/tests/wpt/web-platform-tests/web-animations/testcommon.js +++ b/tests/wpt/web-platform-tests/web-animations/testcommon.js @@ -21,10 +21,18 @@ const TIME_PRECISION = 0.0005; // ms // times based on their precision requirements. if (!window.assert_times_equal) { window.assert_times_equal = (actual, expected, description) => { - assert_approx_equals(actual, expected, TIME_PRECISION, description); + assert_approx_equals(actual, expected, TIME_PRECISION * 2, description); }; } +// Allow implementations to substitute an alternative method for comparing +// a time value based on its precision requirements with a fixed value. +if (!window.assert_time_equals_literal) { + window.assert_time_equals_literal = (actual, expected, description) => { + assert_approx_equals(actual, expected, TIME_PRECISION, description); + } +} + // creates div element, appends it to the document body and // removes the created element during test cleanup function createDiv(test, doc) { diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animation-effects/active-time.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animation-effects/active-time.html index 3e3b528d534..a2feb2323c3 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animation-effects/active-time.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animation-effects/active-time.html @@ -25,19 +25,19 @@ test(t => { test(t => { const anim = createDiv(t).animate(null, 1000); anim.currentTime = 500; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); }, 'Active time in active phase and no start delay is the local time'); test(t => { const anim = createDiv(t).animate(null, { duration: 1000, delay: 500 }); anim.currentTime = 1000; - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); }, 'Active time in active phase and positive start delay is the local time' + ' minus the start delay'); test(t => { const anim = createDiv(t).animate(null, { duration: 1000, delay: -500 }); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); }, 'Active time in active phase and negative start delay is the local time' + ' minus the start delay'); @@ -58,7 +58,7 @@ test(t => { fill: 'forwards' }); anim.finish(); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3); }, 'Active time in after phase with forwards fill is the active duration'); test(t => { @@ -79,7 +79,7 @@ test(t => { fill: 'forwards' }); anim.finish(); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3); }, 'Active time in after phase with forwards fill and positive end delay' + ' is the active duration'); @@ -91,7 +91,7 @@ test(t => { fill: 'forwards' }); anim.finish(); assert_equals(anim.effect.getComputedTiming().currentIteration, 1); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.5); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.5); }, 'Active time in after phase with forwards fill and negative end delay' + ' is the active duration + end delay'); @@ -127,7 +127,7 @@ test(t => { fill: 'both' }); anim.finish(); assert_equals(anim.effect.getComputedTiming().currentIteration, 2); - assert_times_equal(anim.effect.getComputedTiming().progress, 0.3); + assert_time_equals_literal(anim.effect.getComputedTiming().progress, 0.3); }, 'Active time in after phase with \'both\' fill is the active duration'); test(t => { diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html index d2f5075d1b2..08f90d9f0c1 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/current-time.html @@ -68,7 +68,7 @@ promise_test(t => { return animation.ready.then(() => waitForAnimationFrames(1)) .then(() => { - assert_times_equal(animation.currentTime, 0); + assert_time_equals_literal(animation.currentTime, 0); }); }, 'The current time does not progress if playback rate is 0'); diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html index 2beed475e7e..10641920514 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/playing-an-animation.html @@ -14,26 +14,26 @@ test(t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); animation.currentTime = 1 * MS_PER_SEC; - assert_times_equal(animation.currentTime, 1 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 1 * MS_PER_SEC); animation.play(); - assert_times_equal(animation.currentTime, 1 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 1 * MS_PER_SEC); }, 'Playing a running animation leaves the current time unchanged'); test(t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); animation.finish(); - assert_times_equal(animation.currentTime, 100 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); animation.play(); - assert_times_equal(animation.currentTime, 0); + assert_time_equals_literal(animation.currentTime, 0); }, 'Playing a finished animation seeks back to the start'); test(t => { const animation = createDiv(t).animate(null, 100 * MS_PER_SEC); animation.playbackRate = -1; animation.currentTime = 0; - assert_times_equal(animation.currentTime, 0); + assert_time_equals_literal(animation.currentTime, 0); animation.play(); - assert_times_equal(animation.currentTime, 100 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 100 * MS_PER_SEC); }, 'Playing a finished and reversed animation seeks to end'); test(t => { diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html index 1526be05766..d2a311d4dd4 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-animation-start-time.html @@ -80,9 +80,9 @@ test(t => { // If we set the start time, however, we should clear the hold time. animation.startTime = document.timeline.currentTime - 2000; - assert_times_equal(animation.currentTime, 2000, - 'The current time is calculated from the start time,' - + ' not the hold time'); + assert_time_equals_literal(animation.currentTime, 2000, + 'The current time is calculated from the start' + + ' time, not the hold time'); // Sanity check assert_equals(animation.playState, 'running', @@ -99,13 +99,14 @@ test(t => { // are resolved). animation.startTime = document.timeline.currentTime - 1000; assert_equals(animation.playState, 'running'); - assert_times_equal(animation.currentTime, 1000, - 'Current time is resolved for a running animation') + assert_time_equals_literal(animation.currentTime, 1000, + 'Current time is resolved for a running animation'); // Clear start time animation.startTime = null; - assert_times_equal(animation.currentTime, 1000, - 'Hold time is set after start time is made unresolved'); + assert_time_equals_literal(animation.currentTime, 1000, + 'Hold time is set after start time is made' + + ' unresolved'); assert_equals(animation.playState, 'paused', 'Animation reports it is paused after setting an unresolved' + ' start time'); diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html index 8a4421309b9..24f201d550c 100644 --- a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html +++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/set-the-timeline-of-an-animation.html @@ -26,7 +26,7 @@ test(t => { animation.timeline = document.timeline; assert_equals(animation.playState, 'paused'); - assert_times_equal(animation.currentTime, 50 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC); }, 'After setting timeline on paused animation it is still paused'); test(t => { @@ -39,7 +39,7 @@ test(t => { animation.timeline = document.timeline; assert_equals(animation.playState, 'paused'); - assert_times_equal(animation.currentTime, 200 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 200 * MS_PER_SEC); }, 'After setting timeline on animation paused outside active interval' + ' it is still paused'); @@ -141,7 +141,7 @@ test(t => { assert_false(animation.pending); assert_equals(animation.playState, 'paused'); - assert_times_equal(animation.currentTime, 50 * MS_PER_SEC); + assert_time_equals_literal(animation.currentTime, 50 * MS_PER_SEC); }, 'After clearing timeline on paused animation it is still paused'); test(t => { diff --git a/tests/wpt/web-platform-tests/webauthn/OWNERS b/tests/wpt/web-platform-tests/webauthn/OWNERS index 8fc1758e6f8..1388899abe5 100644 --- a/tests/wpt/web-platform-tests/webauthn/OWNERS +++ b/tests/wpt/web-platform-tests/webauthn/OWNERS @@ -1 +1,2 @@ @apowers313 +@jcjones diff --git a/tests/wpt/web-platform-tests/webauthn/createcredential-badargs-rp.https.html b/tests/wpt/web-platform-tests/webauthn/createcredential-badargs-rp.https.html new file mode 100644 index 00000000000..f06e02cc4ff --- /dev/null +++ b/tests/wpt/web-platform-tests/webauthn/createcredential-badargs-rp.https.html @@ -0,0 +1,42 @@ + + +WebAuthn navigator.credentials.create() rp Tests + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/createcredential-passing.https.html b/tests/wpt/web-platform-tests/webauthn/createcredential-passing.https.html new file mode 100644 index 00000000000..a66d3c14355 --- /dev/null +++ b/tests/wpt/web-platform-tests/webauthn/createcredential-passing.https.html @@ -0,0 +1,20 @@ + + +WebAuthn credential.create() Passing Tests + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/getcredential-passing.https.html b/tests/wpt/web-platform-tests/webauthn/getcredential-passing.https.html new file mode 100644 index 00000000000..c7cf794cf65 --- /dev/null +++ b/tests/wpt/web-platform-tests/webauthn/getcredential-passing.https.html @@ -0,0 +1,21 @@ + + +WebAuthn credential.get() Passing Tests + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/helpers.js b/tests/wpt/web-platform-tests/webauthn/helpers.js index e36cb6d7adb..11d0aee044b 100644 --- a/tests/wpt/web-platform-tests/webauthn/helpers.js +++ b/tests/wpt/web-platform-tests/webauthn/helpers.js @@ -1,3 +1,15 @@ + +/* Useful constants for working with COSE key objects */ +const cose_kty = 1; +const cose_kty_ec2 = 2; +const cose_alg = 3; +const cose_alg_ECDSA_w_SHA256 = -7; +const cose_alg_ECDSA_w_SHA512 = -36; +const cose_crv = -1; +const cose_crv_P256 = 1; +const cose_crv_x = -2; +const cose_crv_y = -3; + /** * TestCase * @@ -5,7 +17,7 @@ * Is intended to be overloaded with subclasses that override testObject, testFunction and argOrder * The testObject is the default arguments for the testFunction * The default testObject can be modified with the modify() method, making it easy to create new tests based on the default - * The testFunction is the target of the test and is called by the test() method. test() applies the testObject as arguments via toArgs() + * The testFunction is the target of the test and is called by the doIt() method. doIt() applies the testObject as arguments via toArgs() * toArgs() uses argOrder to make sure the resulting array is in the right order of the arguments for the testFunction */ class TestCase { @@ -15,6 +27,7 @@ class TestCase { }; this.testObject = {}; this.argOrder = []; + this.ctx = null; } /** @@ -70,7 +83,6 @@ class TestCase { } // iterate through each of the desired modifications, and call recursiveSetObject on them - var obj = this.testObject; for (let idx in mods) { var mod = mods[idx]; let paths = mod.path.split("."); @@ -94,61 +106,103 @@ class TestCase { } /** - * test - * - * run the test function with the top-level properties of the test object applied as arguments + * actually runs the test function with the supplied arguments */ - test() { - return this.testFunction(...this.toArgs()); + doIt() { + if (typeof this.testFunction !== "function") { + throw new Error("Test function not found"); + } + + return this.testFunction.call(this.ctx, ...this.toArgs()); } /** - * testArgs - * - * calls test() with testObject() and expects it to fail with a TypeError() + * run the test function with the top-level properties of the test object applied as arguments + */ + test(desc) { + promise_test(() => { + return this.doIt() + .then((ret) => { + // check the result + this.validateRet(ret); + return ret; + }); + }, desc); + } + + /** + * validates the value returned from the test function + */ + validateRet() { + throw new Error("Not implemented"); + } + + /** + * calls doIt() with testObject() and expects it to fail with a TypeError() */ testBadArgs(testDesc) { promise_test(function(t) { - return promise_rejects(t, new TypeError(), this.test()); + return promise_rejects(t, new TypeError(), this.doIt(), "Expected bad parameters to fail"); }.bind(this), testDesc); } } +var createCredentialDefaultArgs = { + options: { + publicKey: { + // Relying Party: + rp: { + name: "Acme" + }, + + // User: + user: { + id: new Uint8Array(), // Won't survive the copy, must be rebuilt + name: "john.p.smith@example.com", + displayName: "John P. Smith", + icon: "https://pics.acme.com/00/p/aBjjjpqPb.png" + }, + + pubKeyCredParams: [{ + type: "public-key", + alg: cose_alg_ECDSA_w_SHA256, + }], + + timeout: 60000, // 1 minute + excludeCredentials: [] // No excludeList + } + } +}; + +function cloneObject(o) { + return JSON.parse(JSON.stringify(o)); +} + /** - * MakeCredentialTest + * CreateCredentialTest * - * tests the WebAuthn makeCredential() interface + * tests the WebAuthn navigator.credentials.create() interface */ -class MakeCredentialTest extends TestCase { +class CreateCredentialsTest extends TestCase { constructor() { // initialize the parent class super(); // the function to be tested - this.testFunction = navigator.authentication.makeCredential; + this.testFunction = navigator.credentials.create; + // the context to call the test function with (i.e. - the 'this' object for the function) + this.ctx = navigator.credentials; // the default object to pass to makeCredential, to be modified with modify() for various tests - // var challenge = Uint8Array.from("Y2xpbWIgYSBtb3VudGFpbg"); - this.testObject = { - accountInformation: { - rpDisplayName: "ACME", - displayName: "John P. Smith", - name: "johnpsmith@example.com", - id: "1098237235409872", - imageUri: "https://pics.acme.com/00/p/aBjjjpqPb.png" - }, - cryptoParameters: [{ - type: "ScopedCred", - algorithm: "RSASSA-PKCS1-v1_5", - }], - attestationChallenge: Uint8Array.from([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]).buffer - }; + let challengeBytes = new Uint8Array(16); + window.crypto.getRandomValues(challengeBytes); + this.testObject = cloneObject(createCredentialDefaultArgs); + // cloneObject can't clone the BufferSource in user.id, so let's recreate it. + this.testObject.options.publicKey.user.id = new Uint8Array(); + this.testObject.options.publicKey.challenge = challengeBytes; // how to order the properties of testObject when passing them to makeCredential this.argOrder = [ - "accountInformation", - "cryptoParameters", - "attestationChallenge", "options" ]; @@ -156,43 +210,201 @@ class MakeCredentialTest extends TestCase { // would prefer to do this in the super class, but have to call super() before using `this.*` if (arguments.length) this.modify(...arguments); } + + validateRet(ret) { + validatePublicKeyCredential(ret); + validateAuthenticatorAttestationResponse(ret.response); + } } -//************* BEGIN DELETE AFTER 1/1/2017 *************** // +/** + * GetCredentialsTest + * + * tests the WebAuthn navigator.credentials.get() interface + */ +class GetCredentialsTest extends TestCase { + constructor(...args) { + // initialize the parent class + super(); + + // the function to be tested + this.testFunction = navigator.credentials.get; + // the context to call the test function with (i.e. - the 'this' object for the function) + this.ctx = navigator.credentials; + + // default arguments + let challengeBytes = new Uint8Array(16); + window.crypto.getRandomValues(challengeBytes); + this.testObject = { + options: { + publicKey: { + challenge: challengeBytes, + // timeout: 60000, + // allowCredentials: [newCredential] + } + } + }; + + // how to order the properties of testObject when passing them to makeCredential + this.argOrder = [ + "options" + ]; + + this.credentialPromiseList = []; + + // enable the constructor to modify the default testObject + // would prefer to do this in the super class, but have to call super() before using `this.*` + if (arguments.length) { + if (args.cred instanceof Promise) this.credPromise = args.cred; + else if (typeof args.cred === "object") this.credPromise = Promise.resolve(args.cred); + delete args.cred; + this.modify(...arguments); + } + } + + addCredential(arg) { + // if a Promise was passed in, add it to the list + if (arg instanceof Promise) { + this.credentialPromiseList.push(arg); + return; + } + + // if a credential object was passed in, convert it to a Promise for consistency + if (typeof arg === "object") { + this.credentialPromiseList.push(Promise.resolve(arg)); + return; + } + + // if a credential wasn't passed in, create one + let challengeBytes = new Uint8Array(16); + window.crypto.getRandomValues(challengeBytes); + var createArgs = cloneObject(createCredentialDefaultArgs); + createArgs.options.publicKey.challenge = challengeBytes; + createArgs.options.publicKey.user.id = new Uint8Array(); + var p = navigator.credentials.create(createArgs.options); + this.credentialPromiseList.push(p); + + return this; + } + + test() { + if (!this.credentialPromiseList.length) { + throw new Error("Attempting list without defining credential to test"); + } + + Promise.all(this.credentialPromiseList) + .then((credList) => { + var idList = credList.map((cred) => { + return { + id: cred.rawId, + transports: ["usb", "nfc", "ble"], + type: "public-key" + }; + }); + this.testObject.options.publicKey.allowCredentials = idList; + return super.test(); + }); + } + + validateRet(ret) { + validatePublicKeyCredential (ret); + validateAuthenticatorAssertionResponse(ret.response); + } +} + +/** + * runs assertions against a PublicKeyCredential object to ensure it is properly formatted + */ +function validatePublicKeyCredential(cred) { + // class + assert_class_string(cred, "PublicKeyCredential", "Expected return to be instance of 'PublicKeyCredential' class"); + // id + assert_idl_attribute(cred, "id", "should return PublicKeyCredential with id attribute"); + assert_readonly(cred, "id", "should return PublicKeyCredential with readonly id attribute"); + // rawId + assert_idl_attribute(cred, "rawId", "should return PublicKeyCredential with rawId attribute"); + assert_readonly(cred, "rawId", "should return PublicKeyCredential with readonly rawId attribute"); + // type + assert_idl_attribute(cred, "type", "should return PublicKeyCredential with type attribute"); + assert_equals(cred.type, "public-key", "should return PublicKeyCredential with type 'public-key'"); +} + +/** + * runs assertions against a AuthenticatorAttestationResponse object to ensure it is properly formatted + */ +function validateAuthenticatorAttestationResponse(attr) { + // class + assert_class_string(attr, "AuthenticatorAttestationResponse", "Expected credentials.create() to return instance of 'AuthenticatorAttestationResponse' class"); + // clientDataJSON + assert_idl_attribute(attr, "clientDataJSON", "credentials.create() should return AuthenticatorAttestationResponse with clientDataJSON attribute"); + assert_readonly(attr, "clientDataJSON", "credentials.create() should return AuthenticatorAttestationResponse with readonly clientDataJSON attribute"); + // attestationObject + assert_idl_attribute(attr, "attestationObject", "credentials.create() should return AuthenticatorAttestationResponse with attestationObject attribute"); + assert_readonly(attr, "attestationObject", "credentials.create() should return AuthenticatorAttestationResponse with readonly attestationObject attribute"); +} + +/** + * runs assertions against a AuthenticatorAssertionResponse object to ensure it is properly formatted + */ +function validateAuthenticatorAssertionResponse(assert) { + // class + assert_class_string(assert, "AuthenticatorAssertionResponse", "Expected credentials.create() to return instance of 'AuthenticatorAssertionResponse' class"); + // clientDataJSON + assert_idl_attribute(assert, "clientDataJSON", "credentials.get() should return AuthenticatorAssertionResponse with clientDataJSON attribute"); + assert_readonly(assert, "clientDataJSON", "credentials.get() should return AuthenticatorAssertionResponse with readonly clientDataJSON attribute"); + // signature + assert_idl_attribute(assert, "signature", "credentials.get() should return AuthenticatorAssertionResponse with signature attribute"); + assert_readonly(assert, "signature", "credentials.get() should return AuthenticatorAssertionResponse with readonly signature attribute"); + // authenticatorData + assert_idl_attribute(assert, "authenticatorData", "credentials.get() should return AuthenticatorAssertionResponse with authenticatorData attribute"); + assert_readonly(assert, "authenticatorData", "credentials.get() should return AuthenticatorAssertionResponse with readonly authenticatorData attribute"); +} + +//************* BEGIN DELETE AFTER 1/1/2018 *************** // // XXX for development mode only!! // debug() for debugging purposes... we can drop this later if it is considered ugly // note that debug is currently an empty function (i.e. - prints no output) // and debug only prints output if the polyfill is loaded var debug = function() {}; // if the WebAuthn API doesn't exist load a polyfill for testing -// note that the polyfill only gets loaded if navigator.authentication doesn't exist +// note that the polyfill only gets loaded if navigator.credentials create doesn't exist // AND if the polyfill script is found at the right path (i.e. - the polyfill is opt-in) function ensureInterface() { - return new Promise(function(resolve, reject) { - if (typeof navigator.authentication !== "object") { - debug = console.log; + if (typeof navigator.credentials.create !== "function") { + debug = console.log; - // dynamic loading of polyfill script by creating new - - - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-attestationchallenge.https.html b/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-attestationchallenge.https.html deleted file mode 100644 index 441d1adfa2c..00000000000 --- a/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-attestationchallenge.https.html +++ /dev/null @@ -1,20 +0,0 @@ - - -WebAuthn makeCredential attestationChallenge Tests - - - - - - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-cryptoparameters.https.html b/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-cryptoparameters.https.html deleted file mode 100644 index 7e177573966..00000000000 --- a/tests/wpt/web-platform-tests/webauthn/makecredential-badargs-cryptoparameters.https.html +++ /dev/null @@ -1,33 +0,0 @@ - - -WebAuthn makeCredential cryptoParameters Tests - - - - - - - \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/securecontext.http.html b/tests/wpt/web-platform-tests/webauthn/securecontext.http.html new file mode 100644 index 00000000000..82464bd8df8 --- /dev/null +++ b/tests/wpt/web-platform-tests/webauthn/securecontext.http.html @@ -0,0 +1,48 @@ + + +WebAuthn Secure Context Tests + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webauthn/securecontext.https.html b/tests/wpt/web-platform-tests/webauthn/securecontext.https.html new file mode 100644 index 00000000000..9810a7fe149 --- /dev/null +++ b/tests/wpt/web-platform-tests/webauthn/securecontext.https.html @@ -0,0 +1,30 @@ + + +WebAuthn Secure Context Tests + + + + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webdriver/OWNERS b/tests/wpt/web-platform-tests/webdriver/OWNERS index c004c0467e0..4b92bface16 100644 --- a/tests/wpt/web-platform-tests/webdriver/OWNERS +++ b/tests/wpt/web-platform-tests/webdriver/OWNERS @@ -1,5 +1,4 @@ @AutomatedTester -@JKereliuk @andreastt @lukeis @mjzffr diff --git a/tests/wpt/web-platform-tests/webdriver/tests/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/__init__.py index e69de29bb2d..0ba172ff2e2 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/__init__.py @@ -0,0 +1,4 @@ +import pytest + +# Enable pytest assert introspection for assertion helper +pytest.register_assert_rewrite('tests.support.asserts') diff --git a/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse.py b/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse.py index 95d284c4b72..bb7e1451aae 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/actions/mouse.py @@ -1,7 +1,8 @@ import pytest -from tests.actions.support.mouse import assert_move_to_coordinates, get_center +from tests.actions.support.mouse import get_center from tests.actions.support.refine import get_events, filter_dict +from tests.support.asserts import assert_move_to_coordinates from tests.support.inline import inline from tests.support.wait import wait 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 f73f780a7a7..e9e4c26ad33 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,7 +1,8 @@ import pytest -from tests.actions.support.mouse import assert_move_to_coordinates, get_center +from tests.actions.support.mouse import get_center from tests.actions.support.refine import get_events, filter_dict +from tests.support.asserts import assert_move_to_coordinates _DBLCLICK_INTERVAL = 640 diff --git a/tests/wpt/web-platform-tests/webdriver/tests/actions/support/mouse.py b/tests/wpt/web-platform-tests/webdriver/tests/actions/support/mouse.py index 63a771d9487..d627ebb9d39 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/actions/support/mouse.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/actions/support/mouse.py @@ -1,11 +1,3 @@ -def assert_move_to_coordinates(point, target, events): - for e in events: - if e["type"] != "mousemove": - assert e["pageX"] == point["x"] - assert e["pageY"] == point["y"] - assert e["target"] == target - - def get_center(rect): return { "x": rect["width"] / 2 + rect["x"], diff --git a/tests/wpt/web-platform-tests/webdriver/tests/cookies/add_cookie.py b/tests/wpt/web-platform-tests/webdriver/tests/cookies/add_cookie.py index 1ebbcb41de7..ff4a0c906da 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/cookies/add_cookie.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/cookies/add_cookie.py @@ -17,7 +17,7 @@ def test_add_domain_cookie(session, url, server_config): result = session.transport.send("POST", "session/%s/cookie" % session.session_id, create_cookie_request) assert result.status == 200 assert "value" in result.body - assert isinstance(result.body["value"], dict) + assert result.body["value"] is None result = session.transport.send("GET", "session/%s/cookie" % session.session_id) assert result.status == 200 @@ -54,7 +54,7 @@ def test_add_cookie_for_ip(session, url, server_config, configuration): result = session.transport.send("POST", "session/%s/cookie" % session.session_id, create_cookie_request) assert result.status == 200 assert "value" in result.body - assert isinstance(result.body["value"], dict) + assert result.body["value"] is None result = session.transport.send("GET", "session/%s/cookie" % session.session_id) assert result.status == 200 @@ -89,7 +89,7 @@ def test_add_non_session_cookie(session, url): result = session.transport.send("POST", "session/%s/cookie" % session.session_id, create_cookie_request) assert result.status == 200 assert "value" in result.body - assert isinstance(result.body["value"], dict) + assert result.body["value"] is None result = session.transport.send("GET", "session/%s/cookie" % session.session_id) assert result.status == 200 @@ -122,7 +122,7 @@ def test_add_session_cookie(session, url): result = session.transport.send("POST", "session/%s/cookie" % session.session_id, create_cookie_request) assert result.status == 200 assert "value" in result.body - assert isinstance(result.body["value"], dict) + assert result.body["value"] is None result = session.transport.send("GET", "session/%s/cookie" % session.session_id) assert result.status == 200 @@ -136,8 +136,8 @@ def test_add_session_cookie(session, url): assert isinstance(cookie["name"], basestring) assert "value" in cookie assert isinstance(cookie["value"], basestring) - assert "expiry" in cookie - assert cookie.get("expiry") is None + if "expiry" in cookie: + assert cookie.get("expiry") is None assert cookie["name"] == "hello" assert cookie["value"] == "world" @@ -155,7 +155,7 @@ def test_add_session_cookie_with_leading_dot_character_in_domain(session, url, s result = session.transport.send("POST", "session/%s/cookie" % session.session_id, create_cookie_request) assert result.status == 200 assert "value" in result.body - assert isinstance(result.body["value"], dict) + assert result.body["value"] is None result = session.transport.send("GET", "session/%s/cookie" % session.session_id) assert result.status == 200 diff --git a/tests/wpt/web-platform-tests/webdriver/tests/cookies/delete_cookie.py b/tests/wpt/web-platform-tests/webdriver/tests/cookies/delete_cookie.py index 677fd94e8ba..813ee884070 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/cookies/delete_cookie.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/cookies/delete_cookie.py @@ -119,5 +119,4 @@ def test_unknown_cookie(session): response = delete_cookie(session, "stilton") assert response.status == 200 assert "value" in response.body - assert isinstance(response.body["value"], dict) - assert response.body["value"] == {} + assert response.body["value"] is None diff --git a/tests/wpt/web-platform-tests/webdriver/tests/cookies/get_named_cookie.py b/tests/wpt/web-platform-tests/webdriver/tests/cookies/get_named_cookie.py index f367eccf947..806dda37887 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/cookies/get_named_cookie.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/cookies/get_named_cookie.py @@ -26,8 +26,8 @@ def test_get_named_session_cookie(session, url): assert isinstance(cookie["secure"], bool) assert "httpOnly" in cookie assert isinstance(cookie["httpOnly"], bool) - assert "expiry" in cookie - assert cookie.get("expiry") is None + if "expiry" in cookie: + assert cookie.get("expiry") is None assert cookie["name"] == "foo" assert cookie["value"] == "bar" @@ -77,7 +77,7 @@ def test_duplicated_cookie(session, url, server_config): result = session.transport.send("POST", "session/%s/cookie" % session.session_id, create_cookie_request) assert result.status == 200 assert "value" in result.body - assert isinstance(result.body["value"], dict) + assert result.body["value"] is None session.url = inline("" % server_config["domains"][""]) result = session.transport.send("GET", "session/%s/cookie" % session.session_id) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_click/select.py b/tests/wpt/web-platform-tests/webdriver/tests/element_click/select.py index 15c36fc454f..ca5e498e72e 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_click/select.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_click/select.py @@ -211,3 +211,15 @@ def test_out_of_view_multiple(session): last_option = options[-1] last_option.click() assert last_option.selected + + +def test_option_disabled(session): + session.url = inline(""" + """) + option = session.find.css("option", all=False) + assert not option.selected + + option.click() + assert not option.selected diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/form_controls.py b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/form_controls.py new file mode 100644 index 00000000000..ee6269e2522 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/form_controls.py @@ -0,0 +1,94 @@ +import pytest + +from tests.support.asserts import assert_error, assert_same_element, assert_success +from tests.support.inline import inline + + +def element_send_keys(session, element, text): + return session.transport.send( + "POST", + "/session/{session_id}/element/{element_id}/value".format( + session_id=session.session_id, + element_id=element.id), + {"text": text}) + + +def add_event_listeners(element): + element.session.execute_script(""" + let [target] = arguments; + window.events = []; + for (let expected of ["focus", "blur", "change", "keypress", "keydown", "keyup", "input"]) { + target.addEventListener(expected, ({type}) => window.events.push(type)); + } + """, args=(element,)) + + +def get_events(session): + return session.execute_script("return window.events") + + +def test_input(session): + session.url = inline("") + element = session.find.css("input", all=False) + assert element.property("value") == "" + + element_send_keys(session, element, "foo") + assert element.property("value") == "foo" + + +def test_textarea(session): + session.url = inline("") + element = session.find.css("textarea", all=False) + assert element.property("value") == "a" + + element_send_keys(session, element, "b") + assert element.property("value") == "ab" + + element_send_keys(session, element, "c") + assert element.property("value") == "abc" + + +@pytest.mark.parametrize("tag", ["input", "textarea"]) +def test_events(session, tag): + session.url = inline("<%s>" % tag) + element = session.find.css(tag, all=False) + add_event_listeners(element) + + element_send_keys(session, element, "foo") + assert element.property("value") == "foo" + assert get_events(session) == ["focus", + "keydown", + "keypress", + "input", + "keyup", + "keydown", + "keypress", + "input", + "keyup", + "keydown", + "keypress", + "input", + "keyup", + "change", + "blur"] diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/interactability.py b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/interactability.py index 5812f2b305f..bf1959fc415 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/interactability.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/interactability.py @@ -46,7 +46,7 @@ def test_document_element_is_interactable(session): response = send_keys_to_element(session, element, "foo") assert_success(response) - assert_same_element(session, element, session.active_element) + assert_same_element(session, body, session.active_element) assert result.property("value") == "foo" @@ -65,7 +65,7 @@ def test_iframe_is_interactable(session): response = send_keys_to_element(session, frame, "foo") assert_success(response) - assert_same_element(session, frame, session.active_element) + assert_same_element(session, body, session.active_element) # Any key events are immediately routed to the nested # browsing context's active document. diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_async_script/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/webdriver/tests/execute_script/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/execute_script/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/wpt/web-platform-tests/webdriver/tests/interaction/element_clear.py b/tests/wpt/web-platform-tests/webdriver/tests/interaction/element_clear.py index f9755f784e5..0443995c21b 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/interaction/element_clear.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/interaction/element_clear.py @@ -1,185 +1,390 @@ +# META: timeout=long + import pytest -from tests.support.asserts import assert_error, assert_success + +from tests.support.asserts import ( + assert_element_has_focus, + assert_error, + assert_success, +) from tests.support.inline import inline -def clear(session, element): - return session.transport.send("POST", "session/{session_id}/element/{element_id}/clear" - .format(session_id=session.session_id, - element_id=element.id)) +def add_event_listeners(element): + element.session.execute_script(""" + let [target] = arguments; + window.events = []; + for (let expected of ["focus", "blur", "change"]) { + target.addEventListener(expected, ({type}) => window.events.push(type)); + } + """, args=(element,)) -# 14.2 Element Clear +def get_events(session): + return session.execute_script("return window.events") -def test_no_browsing_context(session, create_window): - # 14.2 step 1 - session.url = inline("

This is not an editable paragraph.") - element = session.find.css("p", all=False) - session.window_handle = create_window() +@pytest.fixture(scope="session") +def text_file(tmpdir_factory): + fh = tmpdir_factory.mktemp("tmp").join("hello.txt") + fh.write("hello") + return fh + + +def element_clear(session, element): + return session.transport.send("POST", "/session/%s/element/%s/clear" % + (session.session_id, element.id)) + + +def test_closed_context(session, create_window): + new_window = create_window() + session.window_handle = new_window + session.url = inline("") + element = session.find.css("input", all=False) session.close() - response = clear(session, element) + response = element_clear(session, element) assert_error(response, "no such window") -def test_element_not_found(session): - # 14.2 Step 2 - response = session.transport.send("POST", "session/{session_id}/element/{element_id}/clear" - .format(session_id=session.session_id, - element_id="box1")) +def test_connected_element(session): + session.url = inline("") + element = session.find.css("input", all=False) - assert_error(response, "no such element") + session.url = inline("") + response = element_clear(session, element) + assert_error(response, "stale element reference") -def test_element_not_editable(session): - # 14.2 Step 3 - session.url = inline("

This is not an editable paragraph.") +def test_pointer_interactable(session): + session.url = inline("") + element = session.find.css("input", all=False) + response = element_clear(session, element) + assert_error(response, "element not interactable") + + +def test_keyboard_interactable(session): + session.url = inline(""" + +

+ + + """) + element = session.find.css("input", all=False) + assert element.property("value") == "foobar" + + response = element_clear(session, element) + assert_success(response) + assert element.property("value") == "" + + +@pytest.mark.parametrize("type,value,default", + [("number", "42", ""), + ("range", "42", "50"), + ("email", "foo@example.com", ""), + ("password", "password", ""), + ("search", "search", ""), + ("tel", "999", ""), + ("text", "text", ""), + ("url", "https://example.com/", ""), + ("color", "#ff0000", "#000000"), + ("date", "2017-12-26", ""), + ("datetime", "2017-12-26T19:48", ""), + ("datetime-local", "2017-12-26T19:48", ""), + ("time", "19:48", ""), + ("month", "2017-11", ""), + ("week", "2017-W52", "")]) +def test_input(session, type, value, default): + session.url = inline("" % (type, value)) + element = session.find.css("input", all=False) + add_event_listeners(element) + assert element.property("value") == value + + response = element_clear(session, element) + assert_success(response) + assert element.property("value") == default + events = get_events(session) + assert "focus" in events + assert "change" in events + assert "blur" in events + assert_element_has_focus(session.execute_script("return document.body")) + + +@pytest.mark.parametrize("type", + ["number", + "range", + "email", + "password", + "search", + "tel", + "text", + "url", + "color", + "date", + "datetime", + "datetime-local", + "time", + "month", + "week", + "file"]) +def test_input_disabled(session, type): + session.url = inline("" % type) + element = session.find.css("input", all=False) + + response = element_clear(session, element) + assert_error(response, "invalid element state") + + +@pytest.mark.parametrize("type", + ["number", + "range", + "email", + "password", + "search", + "tel", + "text", + "url", + "color", + "date", + "datetime", + "datetime-local", + "time", + "month", + "week", + "file"]) +def test_input_readonly(session, type): + session.url = inline("" % type) + element = session.find.css("input", all=False) + + response = element_clear(session, element) + assert_error(response, "invalid element state") + + +def test_textarea(session): + session.url = inline("") + element = session.find.css("textarea", all=False) + add_event_listeners(element) + assert element.property("value") == "foobar" + + response = element_clear(session, element) + assert_success(response) + assert element.property("value") == "" + events = get_events(session) + assert "focus" in events + assert "change" in events + assert "blur" in events + + +def test_textarea_disabled(session): + session.url = inline("") + element = session.find.css("textarea", all=False) + + response = element_clear(session, element) + assert_error(response, "invalid element state") + + +def test_textarea_readonly(session): + session.url = inline("") + element = session.find.css("textarea", all=False) + + response = element_clear(session, element) + assert_error(response, "invalid element state") + + +def test_input_file(session, text_file): + session.url = inline("") + element = session.find.css("input", all=False) + element.send_keys(str(text_file)) + + response = element_clear(session, element) + assert_success(response) + assert element.property("value") == "" + + +def test_input_file_multiple(session, text_file): + session.url = inline("") + element = session.find.css("input", all=False) + element.send_keys(str(text_file)) + element.send_keys(str(text_file)) + + response = element_clear(session, element) + assert_success(response) + assert element.property("value") == "" + + +def test_select(session): + session.url = inline(""" + + """) + select = session.find.css("select", all=False) + option = session.find.css("option", all=False) + + response = element_clear(session, select) + assert_error(response, "invalid element state") + response = element_clear(session, option) + assert_error(response, "invalid element state") + + +def test_button(session): + session.url = inline("") + button = session.find.css("button", all=False) + + response = element_clear(session, button) + assert_error(response, "invalid element state") + + +def test_button_with_subtree(session): + """ + Whilst an is normally editable, the focusable area + where it is placed will default to the + """) + text_field = session.find.css("input", all=False) + + response = element_clear(session, text_field) + assert_error(response, "element not interactable") + + +def test_contenteditable(session): + session.url = inline("

foobar

") element = session.find.css("p", all=False) - response = clear(session, element) - assert_error(response, "invalid element state") + add_event_listeners(element) + assert element.property("innerHTML") == "foobar" - -def test_button_element_not_resettable(session): - # 14.2 Step 3 - session.url = inline("") - - element = session.find.css("input", all=False) - response = clear(session, element) - assert_error(response, "invalid element state") - - -def test_disabled_element_not_resettable(session): - # 14.2 Step 3 - session.url = inline("") - - element = session.find.css("input", all=False) - response = clear(session, element) - assert_error(response, "invalid element state") - - -def test_scroll_into_element_view(session): - # 14.2 Step 4 - session.url = inline("
") - - # Scroll to the bottom right of the page - session.execute_script("window.scrollTo(document.body.scrollWidth, document.body.scrollHeight);") - element = session.find.css("input", all=False) - # Clear and scroll back to the top of the page - response = clear(session, element) + response = element_clear(session, element) assert_success(response) - - # Check if element cleared is scrolled into view - rect = session.execute_script("return document.getElementsByTagName(\"input\")[0].getBoundingClientRect()") - - pageDict = {} - - pageDict["innerHeight"] = session.execute_script("return window.innerHeight") - pageDict["innerWidth"] = session.execute_script("return window.innerWidth") - pageDict["pageXOffset"] = session.execute_script("return window.pageXOffset") - pageDict["pageYOffset"] = session.execute_script("return window.pageYOffset") - - assert rect["top"] < (pageDict["innerHeight"] + pageDict["pageYOffset"]) and \ - rect["left"] < (pageDict["innerWidth"] + pageDict["pageXOffset"]) and \ - (rect["top"] + element.rect["height"]) > pageDict["pageYOffset"] and \ - (rect["left"] + element.rect["width"]) > pageDict["pageXOffset"] + assert element.property("innerHTML") == "" + assert get_events(session) == ["focus", "change", "blur"] + assert_element_has_focus(session.execute_script("return document.body")) -# TODO -# Any suggestions on implementation? -# def test_session_implicit_wait_timeout(session): - # 14.2 Step 5 -# TODO -# Any suggestions on implementation? -# def test_element_not_interactable(session): -# # 14.2 Step 6 -# assert_error(response, "element not interactable") +def test_designmode(session): + session.url = inline("foobar") + element = session.find.css("body", all=False) + assert element.property("innerHTML") == "foobar" + session.execute_script("document.designMode = 'on'") - -def test_element_readonly(session): - # 14.2 Step 7 - session.url = inline("") - - element = session.find.css("input", all=False) - response = clear(session, element) - assert_error(response, "invalid element state") - - -def test_element_disabled(session): - # 14.2 Step 7 - session.url = inline("") - - element = session.find.css("input", all=False) - response = clear(session, element) - assert_error(response, "invalid element state") - - -def test_element_pointer_events_disabled(session): - # 14.2 Step 7 - session.url = inline("") - - element = session.find.css("input", all=False) - response = clear(session, element) - assert_error(response, "invalid element state") - - -@pytest.mark.parametrize("element", [["text", ""], - ["search", ""], - ["url", ""], - ["tele", ""], - ["email", ""], - ["password", ""], - ["date", ""], - ["time", ""], - ["number", ""], - ["range", ""], - ["color", ""], - ["file", ""], - ["textarea", ""], - ["sel", ""], - ["out", ""], - ["para", "

This is an editable paragraph.

"]]) - -def test_clear_content_editable_resettable_element(session, element): - # 14.2 Step 8 - url = element[1] + """ - - """ % element[0] - session.url = inline(url) - # Step 1 - empty_element = session.find.css("#empty", all=False) - clear_element_test_helper(session, empty_element, False) - session.execute_script("document.getElementById(\"focusCheck\").checked = false;") - session.execute_script("document.getElementById(\"blurCheck\").checked = false;") - # Step 2 - 4 - test_element = session.find.css("#" + element[0], all=False) - clear_element_test_helper(session, test_element, True) - - -def clear_element_test_helper(session, element, value): - response = clear(session, element) + response = element_clear(session, element) assert_success(response) - response = session.execute_script("return document.getElementById(\"focusCheck\").checked;") - assert response is value - response = session.execute_script("return document.getElementById(\"blurCheck\").checked;") - assert response is value - if element.name == "p": - response = session.execute_script("return document.getElementById(\"para\").innerHTML;") - assert response == "" - else: - assert element.property("value") == "" + assert element.property("innerHTML") == "
" + assert_element_has_focus(session.execute_script("return document.body")) + + +def test_resettable_element_focus_when_empty(session): + session.url = inline("") + element = session.find.css("input", all=False) + add_event_listeners(element) + assert element.property("value") == "" + + response = element_clear(session, element) + assert_success(response) + assert element.property("value") == "" + assert get_events(session) == [] + + +@pytest.mark.parametrize("type,invalid_value", + [("number", "foo"), + ("range", "foo"), + ("email", "foo"), + ("url", "foo"), + ("color", "foo"), + ("date", "foo"), + ("datetime", "foo"), + ("datetime-local", "foo"), + ("time", "foo"), + ("month", "foo"), + ("week", "foo")]) +def test_resettable_element_does_not_satisfy_validation_constraints(session, type, invalid_value): + """ + Some UAs allow invalid input to certain types of constrained + form controls. For example, Gecko allows non-valid characters + to be typed into but Chrome does not. + Since we want to test that Element Clear works for clearing the + invalid characters in these UAs, it is fine to skip this test + where UAs do not allow the element to not satisfy its constraints. + """ + session.url = inline("" % type) + element = session.find.css("input", all=False) + + def is_valid(element): + return session.execute_script(""" + let [input] = arguments; + return input.validity.valid; + """, args=(element,)) + + # value property does not get updated if the input is invalid + element.send_keys(invalid_value) + + # UA does not allow invalid input for this form control type + if is_valid(element): + return + + response = element_clear(session, element) + assert_success(response) + assert is_valid(element) + + +@pytest.mark.parametrize("type", + ["checkbox", + "radio", + "hidden", + "submit", + "button", + "image"]) +def test_non_editable_inputs(session, type): + session.url = inline("" % type) + element = session.find.css("input", all=False) + + response = element_clear(session, element) + assert_error(response, "invalid element state") + + +def test_scroll_into_view(session): + session.url = inline(""" + +
+ """) + element = session.find.css("input", all=False) + assert element.property("value") == "foobar" + assert session.execute_script("return window.scrollY") == 0 + + # scroll to the bottom right of the page + session.execute_script(""" + let {scrollWidth, scrollHeight} = document.body; + window.scrollTo(scrollWidth, scrollHeight); + """) + + # clear and scroll back to the top of the page + response = element_clear(session, element) + assert_success(response) + assert element.property("value") == "" + + # check if element cleared is scrolled into view + rect = session.execute_script(""" + let [input] = arguments; + return input.getBoundingClientRect(); + """, args=(element,)) + window = session.execute_script(""" + let {innerHeight, innerWidth, pageXOffset, pageYOffset} = window; + return {innerHeight, innerWidth, pageXOffset, pageYOffset}; + """) + + assert rect["top"] < (window["innerHeight"] + window["pageYOffset"]) and \ + rect["left"] < (window["innerWidth"] + window["pageXOffset"]) and \ + (rect["top"] + element.rect["height"]) > window["pageYOffset"] and \ + (rect["left"] + element.rect["width"]) > window["pageXOffset"] diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/response.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/response.py index 0bec23f9990..c9a8c766eca 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/response.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/response.py @@ -50,5 +50,5 @@ def test_timeouts(new_session, add_browser_capabilites, platform_name): } def test_pageLoadStrategy(new_session, add_browser_capabilites, platform_name): - resp, _ = new_session({"capabilities": add_browser_capabilites({"alwaysMatch": {"pageLoadStrategy": "eager"}})}) + resp, _ = new_session({"capabilities": {"alwaysMatch": add_browser_capabilites({"pageLoadStrategy": "eager"})}}) assert resp["capabilities"]["pageLoadStrategy"] == "eager" diff --git a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/create.py b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/create.py index 231199d120f..85ae1cd4ea8 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/create.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/sessions/new_session/support/create.py @@ -6,7 +6,7 @@ valid_data = [ ("platformName", [None]), ("pageLoadStrategy", ["none", "eager", "normal", None]), ("proxy", [None]), - ("timeouts", [{"script": 0, "pageLoad": 2.0, "implicit": 2**64 - 1}, + ("timeouts", [{"script": 0, "pageLoad": 2.0, "implicit": 2**53 - 1}, {"script": 50, "pageLoad": 25}, {"script": 500}, {}]), diff --git a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_attribute.py b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_attribute.py index 1301a45a73c..ce78e11d3ff 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_attribute.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_attribute.py @@ -1,3 +1,5 @@ +# META: timeout=long + import pytest from tests.support.asserts import assert_error, assert_success, assert_dialog_handled diff --git a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_property.py b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_property.py index c76c5610462..e4da98e0c3f 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_property.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_property.py @@ -1,3 +1,5 @@ +# META: timeout=long + from tests.support.asserts import assert_error, assert_dialog_handled, assert_success from tests.support.inline import inline from tests.support.fixtures import create_dialog diff --git a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_tag_name.py b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_tag_name.py index 2dd7528bb20..e3ed83f3f20 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_tag_name.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/state/get_element_tag_name.py @@ -1,3 +1,5 @@ +# META: timeout=long + from tests.support.asserts import assert_error, assert_dialog_handled, assert_success from tests.support.inline import inline from tests.support.fixtures import create_dialog diff --git a/tests/wpt/web-platform-tests/webdriver/tests/state/is_element_selected.py b/tests/wpt/web-platform-tests/webdriver/tests/state/is_element_selected.py index 392929a5828..b51ba020fa4 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/state/is_element_selected.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/state/is_element_selected.py @@ -1,3 +1,5 @@ +# META: timeout=long + from tests.support.asserts import assert_error, assert_dialog_handled, assert_success from tests.support.inline import inline from tests.support.fixtures import create_dialog diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py b/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py index 95859ac3d2b..a1cd0f95419 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/asserts.py @@ -137,3 +137,22 @@ def assert_same_element(session, a, b): pass raise AssertionError(message) + + +def assert_element_has_focus(target_element): + session = target_element.session + + active_element = session.execute_script("return document.activeElement") + active_tag = active_element.property("localName") + target_tag = target_element.property("localName") + + assert active_element == target_element, ( + "Focussed element is <%s>, not <%s>" % (active_tag, target_tag)) + + +def assert_move_to_coordinates(point, target, events): + for e in events: + if e["type"] != "mousemove": + assert e["pageX"] == point["x"] + assert e["pageY"] == point["y"] + assert e["target"] == target diff --git a/tests/wpt/web-platform-tests/webmessaging/MessageEvent.html b/tests/wpt/web-platform-tests/webmessaging/MessageEvent.html index e95b3efc2ac..4fb68b5999b 100644 --- a/tests/wpt/web-platform-tests/webmessaging/MessageEvent.html +++ b/tests/wpt/web-platform-tests/webmessaging/MessageEvent.html @@ -18,4 +18,11 @@ prefixes.forEach(function(prefix) { assert_false(name in event); }, name + " on the instance"); }); + +test(function() { + var event = new MessageEvent("message"); + assert_throws(new TypeError(), function() { + event.initMessageEvent(); + }, "Not enough arguments to initMessageEvent"); +}, "initMessageEvent with no arguments"); diff --git a/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js index c2be1b3124f..e91b40b6854 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js +++ b/tests/wpt/web-platform-tests/webrtc/RTCStats-helper.js @@ -178,7 +178,7 @@ function validateRtpStreamStats(statsReport, stats) { assert_optional_unsigned_int_field(stats, 'firCount'); assert_optional_unsigned_int_field(stats, 'pliCount'); - assert_unsigned_int_field(stats, 'nackCount'); + assert_optional_unsigned_int_field(stats, 'nackCount'); assert_optional_unsigned_int_field(stats, 'sliCount'); assert_optional_unsigned_int_field(stats, 'qpSum'); } @@ -211,15 +211,15 @@ function validateCodecStats(statsReport, stats) { validateRtcStats(statsReport, stats); assert_unsigned_int_field(stats, 'payloadType'); - assert_enum_field(stats, 'codecType', ['encode', 'decode']); + assert_optional_enum_field(stats, 'codecType', ['encode', 'decode']); validateOptionalIdField(statsReport, stats, 'transportId', 'transport'); assert_optional_string_field(stats, 'mimeType'); assert_unsigned_int_field(stats, 'clockRate'); - assert_unsigned_int_field(stats, 'channels'); + assert_optional_unsigned_int_field(stats, 'channels'); - assert_string_field(stats, 'sdpFmtpLine'); + assert_optional_string_field(stats, 'sdpFmtpLine'); assert_optional_string_field(stats, 'implementation'); } @@ -365,7 +365,9 @@ function validateOutboundRtpStreamStats(statsReport, stats) { assert_optional_number_field(stats, 'lastPacketSentTimestamp'); assert_optional_number_field(stats, 'targetBitrate'); - assert_unsigned_int_field(stats, 'framesEncoded'); + if (stats['mediaType'] == 'video') { + assert_unsigned_int_field(stats, 'framesEncoded'); + } assert_optional_number_field(stats, 'totalEncodeTime'); assert_optional_number_field(stats, 'averageRTCPInterval'); } @@ -526,35 +528,38 @@ function validateMediaStreamTrackStats(statsReport, stats) { assert_optional_enum_field(stats, 'kind', ['audio', 'video']); assert_optional_number_field(stats, 'estimatedPlayoutTimestamp'); + if (stats['kind'] === 'video') { + assert_unsigned_int_field(stats, 'frameWidth'); + assert_unsigned_int_field(stats, 'frameHeight'); + assert_number_field(stats, 'framesPerSecond'); + if (stats['framesSent']) { + assert_optional_unsigned_int_field(stats, 'framesCaptured'); + assert_unsigned_int_field(stats, 'framesSent'); + assert_optional_unsigned_int_field(stats, 'keyFramesSent'); + } else { + assert_unsigned_int_field(stats, 'framesReceived'); + assert_optional_unsigned_int_field(stats, 'keyFramesReceived'); + assert_unsigned_int_field(stats, 'framesDecoded'); + assert_unsigned_int_field(stats, 'framesDropped'); + assert_unsigned_int_field(stats, 'framesCorrupted'); + } - assert_unsigned_int_field(stats, 'frameWidth'); - assert_unsigned_int_field(stats, 'frameHeight'); - assert_number_field(stats, 'framesPerSecond'); + assert_optional_unsigned_int_field(stats, 'partialFramesLost'); + assert_optional_unsigned_int_field(stats, 'fullFramesLost'); + } else { + assert_number_field(stats, 'audioLevel'); + assert_optional_number_field(stats, 'totalAudioEnergy'); + assert_optional_boolean_field(stats, 'voiceActivityFlag'); + assert_optional_number_field(stats, 'echoReturnLoss'); + assert_optional_number_field(stats, 'echoReturnLossEnhancement'); - assert_optional_unsigned_int_field(stats, 'framesCaptured'); - assert_unsigned_int_field(stats, 'framesSent'); - assert_optional_unsigned_int_field(stats, 'keyFramesSent'); - assert_unsigned_int_field(stats, 'framesReceived'); - assert_optional_unsigned_int_field(stats, 'keyFramesReceived'); - assert_unsigned_int_field(stats, 'framesDecoded'); - assert_unsigned_int_field(stats, 'framesDropped'); - assert_unsigned_int_field(stats, 'framesCorrupted'); - - assert_optional_unsigned_int_field(stats, 'partialFramesLost'); - assert_optional_unsigned_int_field(stats, 'fullFramesLost'); - - assert_number_field(stats, 'audioLevel'); - assert_optional_number_field(stats, 'totalAudioEnergy'); - assert_optional_boolean_field(stats, 'voiceActivityFlag'); - assert_optional_number_field(stats, 'echoReturnLoss'); - assert_optional_number_field(stats, 'echoReturnLossEnhancement'); - - assert_optional_unsigned_int_field(stats, 'totalSamplesSent'); - assert_optional_unsigned_int_field(stats, 'totalSamplesReceived'); - assert_optional_number_field(stats, 'totalSamplesDuration'); - assert_optional_unsigned_int_field(stats, 'concealedSamples'); - assert_optional_unsigned_int_field(stats, 'concealmentEvents'); - assert_optional_number_field(stats, 'jitterBufferDelay'); + assert_optional_unsigned_int_field(stats, 'totalSamplesSent'); + assert_optional_unsigned_int_field(stats, 'totalSamplesReceived'); + assert_optional_number_field(stats, 'totalSamplesDuration'); + assert_optional_unsigned_int_field(stats, 'concealedSamples'); + assert_optional_unsigned_int_field(stats, 'concealmentEvents'); + assert_optional_number_field(stats, 'jitterBufferDelay'); + } assert_optional_enum_field(stats, 'priority', ['very-low', 'low', 'medium', 'high']); @@ -651,7 +656,8 @@ function validateTransportStats(statsReport, stats) { assert_unsigned_int_field(stats, 'bytesSent'); assert_unsigned_int_field(stats, 'bytesReceived'); - validateIdField(statsReport, stats, 'rtcpTransportStatsId', 'transport'); + validateOptionalIdField(statsReport, stats, 'rtcpTransportStatsId', + 'transport'); assert_optional_enum_field(stats, 'iceRole', ['controlling', 'controlled']); @@ -721,7 +727,7 @@ function validateIceCandidateStats(statsReport, stats) { ['host', 'srflx', 'prflx', 'relay']); assert_int_field(stats, 'priority'); - assert_string_field(stats, 'url'); + assert_optional_string_field(stats, 'url'); assert_optional_string_field(stats, 'relayProtocol'); assert_optional_boolean_field(stats, 'deleted'); } @@ -788,7 +794,7 @@ function validateIceCandidatePairStats(statsReport, stats) { assert_optional_unsigned_int_field(stats, 'packetsSent'); assert_optional_unsigned_int_field(stats, 'packetsReceived'); assert_unsigned_int_field(stats, 'bytesSent'); - assert_unsigned_int_field(stats, 'byteReceived'); + assert_unsigned_int_field(stats, 'bytesReceived'); assert_optional_number_field(stats, 'lastPacketSentTimestamp'); assert_optional_number_field(stats, 'lastPacketReceivedTimestamp'); @@ -834,5 +840,5 @@ function validateCertificateStats(statsReport, stats) { assert_string_field(stats, 'fingerprint'); assert_string_field(stats, 'fingerprintAlgorithm'); assert_string_field(stats, 'base64Certificate'); - assert_string_field(stats, 'issuerCertificateId'); + assert_optional_string_field(stats, 'issuerCertificateId'); } diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js index a663b2d1d9a..388c7578c5e 100644 --- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js +++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js @@ -11,6 +11,7 @@ function forEachWebxrObject(callback) { callback(window.XRSession, 'XRSession'); callback(window.XRSessionCreationOptions, 'XRSessionCreationOptions'); callback(window.XRFrameRequestCallback, 'XRFrameRequestCallback'); + callback(window.XRPresentationContext, 'XRPresentationContext'); callback(window.XRPresentationFrame, 'XRPresentationFrame'); callback(window.XRView, 'XRView'); callback(window.XRViewport, 'XRViewport'); diff --git a/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm b/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm index 30bf7d03741..f67ea10e24b 100644 --- a/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm +++ b/tests/wpt/web-platform-tests/xhr/responsexml-document-properties.htm @@ -24,7 +24,7 @@ readyState:'complete', location:null, defaultView:null, - body:undefined, + body:null, images: undefined, doctype:null, forms:undefined, diff --git a/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html b/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html index 1866100bf06..5ad5557700d 100644 --- a/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html +++ b/tests/wpt/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub.html @@ -17,11 +17,15 @@ try { var xhr = new XMLHttpRequest(); xhr.open("GET", "data:,", false); - xhr.send(); - resolve(); + try { + xhr.send(); + } catch(e) { + reject(e); + } } catch(e) { - reject(e); + reject({"name": "UnexpectedException:" + e.name}); } + resolve(); }); });