From 75d64844153019cbd33385994cede79a2242d286 Mon Sep 17 00:00:00 2001 From: WPT Sync Bot Date: Sat, 12 Sep 2020 08:20:19 +0000 Subject: [PATCH 1/9] Update web-platform-tests to revision 9ca57e052ba1b19fa3dd46c6aa656e8d529469a8 --- .../FileAPI/file/File-constructor.html.ini | 4 + .../url/url-in-tags-revoke.window.js.ini | 2 +- .../CSS2/floats/hit-test-floats-002.html.ini | 4 - .../CSS2/floats/hit-test-floats-004.html.ini | 4 + .../CSS2/floats/hit-test-floats-005.html.ini | 4 - .../border-width-small-values-001-a.html.ini | 2 + .../border-width-small-values-001-b.html.ini | 2 + .../flex-aspect-ratio-img-row-006.html.ini | 2 + ...able-with-percent-intrinsic-width.html.ini | 7 + ...e-orientation-background-position.html.ini | 2 + .../tab-size-interpolation.html.ini | 589 ++ .../tab-size/tab-size-inline-001.html.ini | 2 + .../tab-size/tab-size-inline-002.html.ini | 2 + .../tab-size/tab-size-integer-004.html.ini | 2 + .../white-space/eol-spaces-bidi-002.html.ini | 2 + .../white-space/trailing-ogham-001.html.ini | 2 + .../white-space/trailing-ogham-002.html.ini | 2 + .../white-space/trailing-ogham-003.html.ini | 2 + .../css/cssom-view/CaretPosition-001.html.ini | 4 - .../cssom-view/elementFromPoint-001.html.ini | 4 - .../elementsFromPoint-iframes.html.ini | 3 + .../elementsFromPoint-invalid-cases.html.ini | 4 + .../matchMedia-display-none-iframe.html.ini | 2 + .../css/cssom/CSSCounterStyleRule.html.ini | 4 + .../css/cssom/CSSFontFaceRule.html.ini | 4 + ...backdrop-filter-svg-foreignObject.html.ini | 2 + .../mediaqueries/prefers-contrast.html.ini | 12 + .../CustomElementRegistry.html.ini | 49 + .../dom/events/Event-dispatch-click.html.ini | 6 + .../api/request/request-structure.html.ini | 7 + .../fetch/content-type/response.window.js.ini | 27 +- .../fetch/content-type/script.window.js.ini | 2 +- .../embed.https.sub.tentative.html.ini} | 2 +- .../stale-image.html.ini | 4 + .../api/document-fullscreen-enabled.html.ini | 4 + .../failure-check-sequence.https.html.ini | 13 + .../traverse_the_history_3.html.ini} | 2 +- ...ross-origin-objects-on-new-window.html.ini | 2 + ...creating_browsing_context_test_01.html.ini | 4 + .../canvas-createImageBitmap-e_srgb.html.ini | 107 +- ...reatePutGetImageData-colorManaged.html.ini | 18 - .../images/bypass-cache-revalidation.html.ini | 4 + .../html/dom/idlharness.https.html.ini | 78 +- .../html/dom/idlharness.worker.js.ini | 30 +- .../supported-elements.html.ini | 3 +- .../fieldset-overflow-cssomview.html.ini | 4 + .../hash-name-reference.html.ini | 3 - .../no-cuechange-before-play.html.ini | 4 + .../iframe_sandbox_popups_escaping-2.html.ini | 2 +- .../iframe_sandbox_popups_escaping-3.html.ini | 1 + ...rame_sandbox_popups_nonescaping-1.html.ini | 2 +- ...ge-compositing-large-scale-change.html.ini | 2 + .../reload.window.js.ini | 5 + .../protocol.https.html.ini | 54 + .../protocol.tentative.https.html.ini | 55 + ...evented-with-reference.optional.any.js.ini | 5 + ...vented-with-unregister.optional.any.js.ini | 5 + ...o-call-cleanupCallback.optional.any.js.ini | 5 + ...ldings-multiple-values.optional.any.js.ini | 57 + .../weakrefs/reentrancy.optional.any.js.ini | 5 + ...turn-undefined-with-gc.optional.any.js.ini | 5 + ...gister-cleaned-up-cell.optional.any.js.ini | 5 + .../contenteditable/collapse.html.ini | 10 + .../contenteditable/modify.tentative.html.ini | 4 + .../url/a-element-xhtml.xhtml.ini | 36 + .../url/a-element.html.ini | 36 + .../url/url-constructor.html.ini | 36 + .../url/url-setters.html.ini | 1 + .../wasm/jsapi/memory/constructor.any.js.ini | 9 + .../realtimeanalyser-fft-scaling.html.ini | 1 + ...workletnode-with-parameters.https.html.ini | 2 + .../delay-test.html.ini | 13 + .../tests/execute_script/execute.py.ini | 28 + .../hand-input/idlharness.https.window.js.ini | 229 + .../workers/WorkerGlobalScope-close.html.ini | 4 - .../workers/Worker_script_mimetype.htm.ini | 4 + .../Worker/Worker-constructor.html.ini | 2 - .../message-classic-DOMException.html.ini | 8 + .../onerror/message-classic-Error.html.ini | 8 + .../message-module-DOMException.html.ini | 8 + .../onerror/message-module-Error.html.ini | 8 + .../FileAPI/file/File-constructor.html.ini | 4 + .../url/url-in-tags-revoke.window.js.ini | 2 +- tests/wpt/metadata/MANIFEST.json | 8493 ++++++++++++----- .../CSS2/floats/hit-test-floats-002.html.ini | 4 - .../CSS2/floats/hit-test-floats-004.html.ini | 4 + .../CSS2/floats/hit-test-floats-005.html.ini | 4 - .../border-width-small-values-001-a.html.ini | 2 + .../border-width-small-values-001-b.html.ini | 2 + .../canvas-dynamic-change-001.html.ini | 4 + .../flex-aspect-ratio-img-row-006.html.ini | 2 + ...able-with-percent-intrinsic-width.html.ini | 7 + ...e-orientation-background-position.html.ini | 2 + .../tab-size-interpolation.html.ini | 589 ++ .../tab-size/tab-size-inline-001.html.ini | 2 + .../tab-size/tab-size-inline-002.html.ini | 2 + .../tab-size/tab-size-integer-004.html.ini | 2 + .../white-space/eol-spaces-bidi-002.html.ini | 2 + .../white-space/trailing-ogham-001.html.ini | 2 + .../white-space/trailing-ogham-002.html.ini | 2 + .../white-space/trailing-ogham-003.html.ini | 2 + .../appearance-button-002.tentative.html.ini | 2 - ...t-appearance-button-002.tentative.html.ini | 2 - .../css/cssom-view/CaretPosition-001.html.ini | 4 - .../cssom-view/elementFromPoint-001.html.ini | 4 - .../elementsFromPoint-iframes.html.ini | 3 + .../elementsFromPoint-invalid-cases.html.ini | 4 + .../matchMedia-display-none-iframe.html.ini | 2 + .../css/cssom/CSSCounterStyleRule.html.ini | 4 + .../css/cssom/CSSFontFaceRule.html.ini | 4 + ...backdrop-filter-svg-foreignObject.html.ini | 2 + .../mediaqueries/prefers-contrast.html.ini | 12 + .../CustomElementRegistry.html.ini | 15 + .../dom/events/Event-dispatch-click.html.ini | 6 + .../api/request/request-structure.html.ini | 3 - .../fetch/content-type/response.window.js.ini | 27 +- .../fetch/content-type/script.window.js.ini | 2 +- .../embed.https.sub.tentative.html.ini | 20 + .../stale-image.html.ini | 3 +- .../api/document-fullscreen-enabled.html.ini | 4 + .../failure-check-sequence.https.html.ini | 13 + .../traverse_the_history_3.html.ini} | 2 +- ...ross-origin-objects-on-new-window.html.ini | 2 + ...creating_browsing_context_test_01.html.ini | 4 + .../canvas-createImageBitmap-e_srgb.html.ini | 107 +- ...reatePutGetImageData-colorManaged.html.ini | 18 - .../imageData-colorSpace.html.ini | 19 - .../images/bypass-cache-revalidation.html.ini | 4 + .../html/dom/idlharness.https.html.ini | 33 + .../html/dom/idlharness.worker.js.ini | 18 +- .../supported-elements.html.ini | 3 +- .../fieldset-overflow-cssomview.html.ini | 4 + .../hash-name-reference.html.ini | 3 - .../no-cuechange-before-play.html.ini | 4 + .../iframe_sandbox_popups_escaping-2.html.ini | 2 +- .../iframe_sandbox_popups_escaping-3.html.ini | 1 + ...rame_sandbox_popups_nonescaping-1.html.ini | 2 +- ...ge-compositing-large-scale-change.html.ini | 2 + .../reload.window.js.ini | 5 + .../protocol.https.html.ini | 54 + .../protocol.tentative.https.html.ini | 55 + ...evented-with-reference.optional.any.js.ini | 5 + ...vented-with-unregister.optional.any.js.ini | 5 + ...o-call-cleanupCallback.optional.any.js.ini | 5 + ...ldings-multiple-values.optional.any.js.ini | 57 + .../weakrefs/reentrancy.optional.any.js.ini | 5 + ...turn-undefined-with-gc.optional.any.js.ini | 5 + ...gister-cleaned-up-cell.optional.any.js.ini | 5 + .../contenteditable/collapse.html.ini | 10 + .../contenteditable/modify.tentative.html.ini | 4 + .../metadata/url/a-element-xhtml.xhtml.ini | 36 + tests/wpt/metadata/url/a-element.html.ini | 36 + .../wpt/metadata/url/url-constructor.html.ini | 36 + tests/wpt/metadata/url/url-setters.html.ini | 1 + .../wasm/jsapi/memory/constructor.any.js.ini | 6 + .../realtimeanalyser-fft-scaling.html.ini | 1 + ...workletnode-with-parameters.https.html.ini | 2 + .../delay-test.html.ini | 13 + .../tests/execute_script/execute.py.ini | 3 + .../webstorage/idlharness.window.js.ini | 4 - .../hand-input/idlharness.https.window.js.ini | 229 + .../workers/WorkerGlobalScope-close.html.ini | 4 - .../workers/Worker_script_mimetype.htm.ini | 4 + .../Worker/Worker-constructor.html.ini | 2 - .../message-classic-DOMException.html.ini | 8 + .../onerror/message-classic-Error.html.ini | 8 + .../message-module-DOMException.html.ini | 8 + .../onerror/message-module-Error.html.ini | 8 + .../web-platform-tests/.azure-pipelines.yml | 8 +- .../.github/workflows/regen_certs.yml | 33 + .../FileAPI/file/File-constructor.html | 3 +- .../FileAPI/idlharness-manual.html | 49 +- .../DOMException-custom-bindings.any.js | 6 +- .../WebIDL/idlharness.any.js | 16 + .../web-platform-tests/WebIDL/idlharness.html | 28 - .../bluetooth/resources/bluetooth-test.js | 67 +- .../async-svg-script-removal.https.html | 57 + .../async-write-svg-read-svg.https.html | 56 + .../security-features/subresource/svg.py | 4 +- .../web-platform-tests/common/stringifiers.js | 2 +- .../contacts/contacts-select.https.window.js | 1 + .../contacts/resources/helpers.js | 36 +- .../subsumption_algorithm-general.html | 34 + .../frame-src-same-document-meta.sub.html | 4 +- .../frame-src-same-document.sub.html | 7 +- ...scriptions_multiple.tentative.https.any.js | 9 +- ...ubscriptions_single.tentative.https.any.js | 5 +- ...tore_event_basic.tentative.https.window.js | 4 + ...re_getAll_arguments.tentative.https.any.js | 91 +- ...Store_get_arguments.tentative.https.any.js | 80 +- ...re_get_delete_basic.tentative.https.any.js | 2 +- ...ieStore_opaque_origin.tentative.https.html | 2 +- ...subscribe_arguments.tentative.https.any.js | 17 +- .../resources/helper_iframe.sub.html | 2 +- ...e_subscriptions_reset.tentative.https.html | 4 +- ...atched_subscription.tentative.https.any.js | 4 +- ...tiple_subscriptions.tentative.https.any.js | 6 +- ...pping_subscriptions.tentative.https.any.js | 4 +- ...single_subscription.tentative.https.any.js | 4 +- ...single_subscription.tentative.https.any.js | 4 +- .../positioning/bottom-offset-001-ref.xht | 4 +- .../svg/mix-blend-mode-svg-rectangle.html | 4 +- .../mix-blend-mode-svg-rectangle-ref.html | 3 + .../event-dispatch.tentative.html | 13 + .../border-radius-012-ref.html | 13 + .../css-backgrounds/border-radius-012.html | 14 + .../border-width-small-values-001-a.html | 8 + .../border-width-small-values-001-b.html | 8 + .../border-width-small-values-001-c.html | 8 + .../border-width-small-values-001-d.html | 8 + .../border-width-small-values-001-e.html | 8 + .../css3-border-image-repeat-repeat.html | 41 +- .../css3-border-image-repeat-stretch.html | 41 +- .../inline-background-rtl-001.html | 25 + .../border-width-small-values-001-ref.html | 5 + .../css3-border-image-repeat-repeat-ref.html | 137 +- .../css3-border-image-repeat-stretch-ref.html | 123 +- .../inline-background-rtl-001-ref.html | 19 + .../support/blue-diamond-27x27.png | Bin 0 -> 285 bytes .../support/new-red-diamond-27x27.png | Bin 0 -> 372 bytes .../css/css-break/borders-000-ref.html | 4 + .../css/css-break/borders-000.html | 9 + .../css/css-break/borders-001-ref.html | 7 + .../css/css-break/borders-001.html | 11 + .../css/css-break/borders-002-ref.html | 8 + .../css/css-break/borders-002.html | 11 + .../css/css-break/borders-003-ref.html | 37 + .../css/css-break/borders-003.html | 10 + .../css/css-break/borders-004-ref.html | 37 + .../css/css-break/borders-004.html | 10 + .../css/css-break/borders-005-ref.html | 37 + .../css/css-break/borders-005.html | 10 + .../css/css-break/borders-006-ref.html | 22 + .../css/css-break/borders-006.html | 10 + .../css/css-break/borders-007-ref.html | 22 + .../css/css-break/borders-007.html | 10 + ...k-nested-float-in-table-001-print-ref.html | 26 + ...break-nested-float-in-table-001-print.html | 45 + .../css/css-break/fieldset-002-ref.html | 8 + .../css/css-break/fieldset-002.html | 10 + .../css/css-break/fieldset-003-ref.html | 12 + .../css/css-break/fieldset-003.html | 13 + .../css/css-break/fieldset-004-ref.html | 13 + .../css/css-break/fieldset-004.html | 14 + .../css/css-cascade/all-prop-001-ref.html | 17 +- .../css/css-cascade/all-prop-001.html | 55 +- .../css-cascade/import-conditional-001.html | 30 + .../css/css-cascade/important-prop.html | 22 +- .../important-transition-manual.html | 25 + .../css/css-cascade/support/test-green.css | 4 + .../css/css-cascade/support/test-red.css | 4 + .../css/css-cascade/unset-val-001.html | 9 +- .../content-visibility-026.html | 66 +- ...k-nested-float-in-flex-item-001-print.html | 2 +- ...k-nested-float-in-flex-item-002-print.html | 2 +- ...k-nested-float-in-flex-item-print-ref.html | 2 +- .../canvas-dynamic-change-001.html | 6 +- .../flex-aspect-ratio-img-row-006.html | 15 + .../table-with-percent-intrinsic-width.html | 67 + ...downloadable-font-in-iframe-print-ref.html | 24 + .../downloadable-font-in-iframe-print.html | 26 + .../downloadable-font-print-ref.html | 23 + .../css-fonts/downloadable-font-print.html | 25 + .../css/css-fonts/resources/markA.ttf | Bin 0 -> 1568 bytes .../css/css-fonts/resources/markB.ttf | Bin 0 -> 1568 bytes .../grid-self-baseline-008-ref.html | 12 + .../self-baseline/grid-self-baseline-008.html | 39 + .../grid-intrinsic-track-sizes-001.html | 75 +- ...image-orientation-background-position.html | 43 + ...e-orientation-background-position-ref.html | 41 + .../css-lists/counter-list-item-2-ref.html | 24 + .../css/css-lists/counter-list-item-2.html | 24 + .../css-lists/counter-list-item-3-ref.html | 24 + .../css/css-lists/counter-list-item-3.html | 24 + ...ath-rotated-will-change-transform-ref.html | 4 + ...ip-path-rotated-will-change-transform.html | 11 + .../clip/clip-no-stacking-context-ref.html | 4 + .../clip/clip-no-stacking-context.html | 36 + .../spanning-legend-000-crash.html | 8 + .../spanning-legend-001-crash.html | 9 + .../css/css-overflow/clip-001.html | 1 - .../css/css-overflow/clip-002-ref.html | 35 + .../css/css-overflow/clip-002.html | 39 + .../css/css-overflow/clip-003-ref.html | 61 + .../css/css-overflow/clip-003.html | 63 + .../css/css-overflow/clip-004-ref.html | 35 + .../css/css-overflow/clip-004.html | 40 + .../css/css-overflow/clip-005-ref.html | 36 + .../css/css-overflow/clip-005.html | 41 + .../dynamic-visible-to-clip-001.html | 1 - .../overflow-body-propagation-007.html | 1 - .../overflow-body-propagation-008.html | 1 - .../overflow-body-propagation-009.html | 1 - .../parsing/overflow-computed.html | 2 + .../css-overflow/scrollbar-gutter-001.html | 187 + .../css-overflow/scrollbar-gutter-002.html | 187 + .../css-overflow/scrollbar-gutter-003.html | 187 + .../css-overflow/scrollbar-gutter-004.html | 187 + .../css-overflow/scrollbar-gutter-005.html | 187 + ...ion-absolute-large-negative-inset-ref.html | 9 + ...osition-absolute-large-negative-inset.html | 26 + ...osition-fixed-scroll-nested-fixed-ref.html | 3 + .../position-fixed-scroll-nested-fixed.html | 14 + .../css/css-pseudo/active-selection-031.html | 2 +- .../file-chooser-button-001.tentative.html | 11 - ...l => file-selector-button-001-notref.html} | 0 .../file-selector-button-001.tentative.html | 11 + ...utton-display-toggle-crash.tentative.html} | 4 +- .../css-pseudo/marker-content-023-ref.html | 33 + .../css/css-pseudo/marker-content-023.html | 46 + .../css/css-pseudo/marker-default-styles.html | 7 +- .../css/css-pseudo/marker-hyphens-ref.html | 26 + .../css/css-pseudo/marker-hyphens.html | 44 + .../marker-letter-spacing-ref-001.html | 63 + .../marker-letter-spacing-ref-002.html | 63 + .../css/css-pseudo/marker-letter-spacing.html | 74 + .../css/css-pseudo/marker-line-break-ref.html | 23 + .../css/css-pseudo/marker-line-break.html | 62 + .../css/css-pseudo/marker-overflow-wrap.html | 62 + .../css/css-pseudo/marker-tab-size-ref.html | 49 + .../css/css-pseudo/marker-tab-size.html | 57 + .../css/css-pseudo/marker-text-align-ref.html | 58 + .../css/css-pseudo/marker-text-align.html | 62 + .../marker-text-decoration-skip-ink-ref.html | 39 + .../marker-text-decoration-skip-ink.html | 53 + .../css-pseudo/marker-text-emphasis-ref.html | 44 + .../css/css-pseudo/marker-text-emphasis.html | 58 + .../css-pseudo/marker-text-shadow-ref.html | 23 + .../css/css-pseudo/marker-text-shadow.html | 38 + .../css/css-pseudo/marker-word-break-ref.html | 23 + .../css/css-pseudo/marker-word-break.html | 62 + .../css-pseudo/marker-word-spacing-ref.html | 63 + .../css/css-pseudo/marker-word-spacing.html | 71 + ...ker-supported-properties-in-animation.html | 82 +- .../parsing/marker-supported-properties.html | 17 +- .../placeholder-input-dynamic-crash.html | 10 + .../reference/active-selection-031-ref.html | 2 +- ...selection-overlay-and-grammar-001-ref.html | 71 + ...election-overlay-and-spelling-001-ref.html | 62 + .../selection-overlay-and-grammar-001.html | 90 + .../selection-overlay-and-spelling-001.html | 102 + .../focus-prioritized.html | 2 +- .../flexbox-scrolling-vertical-rl.html | 20 + .../support/scrolling-vertical-rl.html | 18 + .../vertical-rl-viewport-size-change-000.html | 21 + .../vertical-rl-viewport-size-change-001.html | 21 + .../assorted}/float-retry-push-circle.html | 2 +- .../assorted}/float-retry-push-image.html | 2 +- .../assorted}/float-retry-push-inset.html | 2 +- .../assorted}/float-retry-push-polygon.html | 2 +- .../assorted}/float-should-push.html | 2 +- .../reference}/float-retry-push-ref.html | 0 .../reference}/float-should-push-ref.html | 0 .../shape-outside-border-box-001-ref.html | 0 .../shape-outside-border-box-002-ref.html | 0 ...side-border-box-border-radius-001-ref.html | 0 ...side-border-box-border-radius-002-ref.html | 0 ...side-border-box-border-radius-003-ref.html | 0 ...side-border-box-border-radius-004-ref.html | 0 ...side-border-box-border-radius-005-ref.html | 0 ...side-border-box-border-radius-006-ref.html | 0 ...side-border-box-border-radius-007-ref.html | 0 ...side-border-box-border-radius-008-ref.html | 0 ...side-border-box-border-radius-009-ref.html | 0 ...side-border-box-border-radius-010-ref.html | 0 ...side-border-box-border-radius-011-ref.html | 0 ...side-border-box-border-radius-012-ref.html | 0 .../shape-outside-content-box-001-ref.html | 0 .../shape-outside-content-box-002-ref.html | 0 ...ide-content-box-border-radius-001-ref.html | 0 ...ide-content-box-border-radius-002-ref.html | 0 .../shape-outside-margin-box-001-ref.html | 0 .../shape-outside-margin-box-002-ref.html | 0 ...side-margin-box-border-radius-001-ref.html | 0 ...side-margin-box-border-radius-002-ref.html | 0 ...side-margin-box-border-radius-003-ref.html | 0 ...side-margin-box-border-radius-004-ref.html | 0 ...side-margin-box-border-radius-005-ref.html | 0 ...side-margin-box-border-radius-006-ref.html | 0 ...side-margin-box-border-radius-007-ref.html | 0 ...side-margin-box-border-radius-008-ref.html | 0 .../shape-outside-padding-box-001-ref.html | 0 .../shape-outside-padding-box-002-ref.html | 0 ...ide-padding-box-border-radius-001-ref.html | 0 ...ide-padding-box-border-radius-002-ref.html | 0 .../shape-outside-border-box-001.html | 2 +- .../shape-outside-border-box-002.html | 2 +- ...-outside-border-box-border-radius-001.html | 2 +- ...-outside-border-box-border-radius-002.html | 2 +- ...-outside-border-box-border-radius-003.html | 2 +- ...-outside-border-box-border-radius-004.html | 2 +- ...-outside-border-box-border-radius-005.html | 2 +- ...-outside-border-box-border-radius-006.html | 2 +- ...-outside-border-box-border-radius-007.html | 2 +- ...-outside-border-box-border-radius-008.html | 2 +- ...-outside-border-box-border-radius-009.html | 2 +- ...-outside-border-box-border-radius-010.html | 2 +- ...-outside-border-box-border-radius-011.html | 2 +- ...-outside-border-box-border-radius-012.html | 2 +- .../shape-outside-content-box-001.html | 2 +- .../shape-outside-content-box-002.html | 2 +- ...outside-content-box-border-radius-001.html | 2 +- ...outside-content-box-border-radius-002.html | 2 +- .../shape-outside-margin-box-001.html | 2 +- .../shape-outside-margin-box-002.html | 2 +- ...-outside-margin-box-border-radius-001.html | 2 +- ...-outside-margin-box-border-radius-002.html | 2 +- ...-outside-margin-box-border-radius-003.html | 2 +- ...-outside-margin-box-border-radius-004.html | 2 +- ...-outside-margin-box-border-radius-005.html | 2 +- ...-outside-margin-box-border-radius-006.html | 2 +- ...-outside-margin-box-border-radius-007.html | 2 +- ...-outside-margin-box-border-radius-008.html | 2 +- .../shape-outside-padding-box-001.html | 2 +- .../shape-outside-padding-box-002.html | 2 +- ...outside-padding-box-border-radius-001.html | 2 +- ...outside-padding-box-border-radius-002.html | 2 +- .../shape-outside-circle-032-ref.html | 0 .../shape-outside-circle-033-ref.html | 0 .../shape-outside-circle-034-ref.html | 0 .../shape-outside-circle-035-ref.html | 0 .../shape-outside-circle-036-ref.html | 0 .../shape-outside-circle-041-ref.html | 0 .../shape-outside-circle-042-ref.html | 0 .../shape-outside-circle-047-ref.html | 0 .../shape-outside-circle-048-ref.html | 0 .../shape-outside-circle-049-ref.html | 0 .../shape-outside-circle-050-ref.html | 0 .../shape-outside-circle-051-ref.html | 0 .../shape-outside-circle-052-ref.html | 0 .../shape-outside-circle-053-ref.html | 0 .../shape-outside-circle-054-ref.html | 0 .../shape-outside-circle-055-ref.html | 0 .../shape-outside-circle-056-ref.html | 0 .../circle}/shape-outside-circle-032.html | 2 +- .../circle}/shape-outside-circle-033.html | 2 +- .../circle}/shape-outside-circle-034.html | 2 +- .../circle}/shape-outside-circle-035.html | 2 +- .../circle}/shape-outside-circle-036.html | 2 +- .../circle}/shape-outside-circle-037.html | 2 +- .../circle}/shape-outside-circle-038.html | 2 +- .../circle}/shape-outside-circle-041.html | 2 +- .../circle}/shape-outside-circle-042.html | 2 +- .../circle}/shape-outside-circle-043.html | 2 +- .../circle}/shape-outside-circle-044.html | 2 +- .../circle}/shape-outside-circle-047.html | 2 +- .../circle}/shape-outside-circle-048.html | 2 +- .../circle}/shape-outside-circle-049.html | 2 +- .../circle}/shape-outside-circle-050.html | 2 +- .../circle}/shape-outside-circle-051.html | 2 +- .../circle}/shape-outside-circle-052.html | 2 +- .../circle}/shape-outside-circle-053.html | 2 +- .../circle}/shape-outside-circle-054.html | 2 +- .../circle}/shape-outside-circle-055.html | 2 +- .../circle}/shape-outside-circle-056.html | 2 +- .../shape-outside-ellipse-032-ref.html | 0 .../shape-outside-ellipse-033-ref.html | 0 .../shape-outside-ellipse-034-ref.html | 0 .../shape-outside-ellipse-035-ref.html | 0 .../shape-outside-ellipse-036-ref.html | 0 .../shape-outside-ellipse-037-ref.html | 0 .../shape-outside-ellipse-038-ref.html | 0 .../shape-outside-ellipse-039-ref.html | 0 .../shape-outside-ellipse-040-ref.html | 0 .../shape-outside-ellipse-042-ref.html | 0 .../shape-outside-ellipse-044-ref.html | 0 .../shape-outside-ellipse-045-ref.html | 0 .../shape-outside-ellipse-046-ref.html | 0 .../shape-outside-ellipse-047-ref.html | 0 .../shape-outside-ellipse-048-ref.html | 0 .../shape-outside-ellipse-049-ref.html | 0 .../shape-outside-ellipse-050-ref.html | 0 .../shape-outside-ellipse-051-ref.html | 0 .../shape-outside-ellipse-052-ref.html | 0 .../ellipse}/shape-outside-ellipse-032.html | 2 +- .../ellipse}/shape-outside-ellipse-033.html | 2 +- .../ellipse}/shape-outside-ellipse-034.html | 2 +- .../ellipse}/shape-outside-ellipse-035.html | 2 +- .../ellipse}/shape-outside-ellipse-036.html | 2 +- .../ellipse}/shape-outside-ellipse-037.html | 2 +- .../ellipse}/shape-outside-ellipse-038.html | 2 +- .../ellipse}/shape-outside-ellipse-039.html | 2 +- .../ellipse}/shape-outside-ellipse-040.html | 2 +- .../ellipse}/shape-outside-ellipse-041.html | 2 +- .../ellipse}/shape-outside-ellipse-042.html | 2 +- .../ellipse}/shape-outside-ellipse-043.html | 2 +- .../ellipse}/shape-outside-ellipse-044.html | 2 +- .../ellipse}/shape-outside-ellipse-045.html | 2 +- .../ellipse}/shape-outside-ellipse-046.html | 2 +- .../ellipse}/shape-outside-ellipse-047.html | 2 +- .../ellipse}/shape-outside-ellipse-048.html | 2 +- .../ellipse}/shape-outside-ellipse-049.html | 2 +- .../ellipse}/shape-outside-ellipse-050.html | 2 +- .../ellipse}/shape-outside-ellipse-051.html | 2 +- .../ellipse}/shape-outside-ellipse-052.html | 2 +- .../shape-outside-inset-016-ref.html | 0 .../shape-outside-inset-017-ref.html | 0 .../shape-outside-inset-020-ref.html | 0 .../shape-outside-inset-021-ref.html | 0 .../shape-outside-inset-022-ref.html | 0 .../shape-outside-inset-023-ref.html | 0 .../shape-outside-inset-024-ref.html | 0 .../shape-outside-inset-025-ref.html | 0 .../shape-outside-inset-026-ref.html | 0 .../shape-outside-inset-027-ref.html | 0 .../inset}/shape-outside-inset-016.html | 2 +- .../inset}/shape-outside-inset-017.html | 2 +- .../inset}/shape-outside-inset-020.html | 2 +- .../inset}/shape-outside-inset-021.html | 2 +- .../inset}/shape-outside-inset-022.html | 2 +- .../inset}/shape-outside-inset-023.html | 2 +- .../inset}/shape-outside-inset-024.html | 2 +- .../inset}/shape-outside-inset-025.html | 2 +- .../inset}/shape-outside-inset-026.html | 2 +- .../inset}/shape-outside-inset-027.html | 2 +- .../shape-outside-polygon-018-ref.html | 0 .../shape-outside-polygon-019-ref.html | 0 .../shape-outside-polygon-020-ref.html | 0 .../shape-outside-polygon-021-ref.html | 0 .../shape-outside-polygon-022-ref.html | 0 .../shape-outside-polygon-023-ref.html | 0 .../shape-outside-polygon-024-ref.html | 0 .../shape-outside-polygon-025-ref.html | 0 .../shape-outside-polygon-032-ref.html | 0 .../polygon}/shape-outside-polygon-018.html | 2 +- .../polygon}/shape-outside-polygon-019.html | 2 +- .../polygon}/shape-outside-polygon-020.html | 2 +- .../polygon}/shape-outside-polygon-021.html | 2 +- .../polygon}/shape-outside-polygon-022.html | 2 +- .../polygon}/shape-outside-polygon-023.html | 2 +- .../polygon}/shape-outside-polygon-024.html | 2 +- .../polygon}/shape-outside-polygon-025.html | 2 +- .../polygon}/shape-outside-polygon-032.html | 2 +- .../values/shape-margin-000.html | 4 +- .../values/shape-margin-001.html | 4 +- .../values/shape-margin-002.html | 4 +- ...-with-margin-collapsing-001.tentative.html | 15 + ...-with-margin-collapsing-002.tentative.html | 14 + .../flex-aspect-ratio-011.tentative.html | 12 + .../flex-aspect-ratio-012.tentative.html | 12 + .../flex-aspect-ratio-013.tentative.html | 12 + .../flex-aspect-ratio-014.tentative.html | 12 + .../ref-filled-green-100x20-rect.html | 4 + .../replaced-element-015.tentative.html | 9 + .../replaced-element-016.tentative.html | 9 + .../replaced-element-017.tentative.html | 18 + .../replaced-element-018.tentative.html | 9 + .../replaced-element-019.tentative.html | 7 + .../replaced-element-020.tentative.html | 10 + .../replaced-element-021.tentative.html | 10 + ...s-1252-http-windows-1251-css-utf8-bom.html | 17 + .../support/utf8-bom-http-windows-1251.css | 1 + .../utf8-bom-http-windows-1251.css.headers | 1 + .../absolute-tables-008.tentative.html | 25 + .../absolute-tables-009.tentative.html | 25 + .../absolute-tables-010.tentative.html | 26 + .../absolute-tables-011.tentative.html | 25 + .../css/css-tables/absolute-tables-012.html | 9 + .../css/css-tables/table-model-fixup-2.html | 265 +- .../animations/tab-size-interpolation.html | 125 + .../tab-size/tab-size-inline-001-ref.html | 16 + .../tab-size/tab-size-inline-001.html | 28 + .../tab-size/tab-size-inline-002-ref.html | 20 + .../tab-size/tab-size-inline-002.html | 28 + .../tab-size/tab-size-integer-004-ref.html | 18 + .../tab-size/tab-size-integer-004.html | 30 + .../white-space/eol-spaces-bidi-001.html | 54 +- .../white-space/eol-spaces-bidi-002.html | 69 + .../reference/eol-spaces-bidi-001-ref.html | 45 +- .../reference/eol-spaces-bidi-002-ref.html | 48 + .../reference/trailing-ogham-001-ref.html | 19 + .../white-space/trailing-ogham-001.html | 22 + .../white-space/trailing-ogham-002.html | 23 + .../white-space/trailing-ogham-003.html | 23 + .../changing-while-transition-004.html | 57 + .../css-transitions/transition-delay-001.html | 6 +- .../transition-duration-001.html | 6 +- .../css/css-ui/appearance-button-001-ref.html | 22 - .../css/css-ui/appearance-button-001.html | 7 +- .../appearance-button-002.tentative-ref.html | 4 - .../appearance-button-002.tentative.html | 16 - ...-appearance-auto-input-non-widget-001.html | 16 + .../css-ui/webkit-appearance-button-001.html | 7 +- ...ebkit-appearance-button-002.tentative.html | 16 - .../webkit-appearance-progress-bar-002.html | 20 + .../viewport-units-001-print-ref.html | 13 + .../css-values/viewport-units-001-print.html | 17 + .../will-change-stacking-context-003-ref.html | 11 + .../will-change-stacking-context-003.html | 36 + .../client-props-root-display-none-crash.html | 17 + .../scroll-behavior-main-frame-root.html | 1 + .../scroll-behavior-subframe-window.html | 1 + .../css/cssom/CSSCounterStyleRule.html | 21 + .../css/cssom/CSSFontFaceRule.html | 21 + .../cssom/removerule-invalidation-crash.html | 16 + .../backdrop-filter-svg-foreignObject.html | 38 + .../css/mediaqueries/prefers-contrast.html | 12 +- .../css/selectors/focus-visible-007.html | 2 +- .../css/selectors/focus-visible-011.html | 2 +- .../background/reftest.list | 1 + .../mozilla-central-reftests/reftest.list | 3 - .../shapes1/reftest.list | 111 - .../shapes1/support/Ahem.ttf | Bin 12480 -> 0 bytes ...-container-with-min-or-max-content-2b.html | 2 +- .../CustomElementRegistry.html | 38 +- tests/wpt/web-platform-tests/docs/Makefile | 4 +- .../web-platform-tests/docs/admin/index.md | 12 +- .../docs/admin/pywebsocket3.rst | 91 + tests/wpt/web-platform-tests/docs/conf.py | 24 +- tests/wpt/web-platform-tests/docs/make.bat | 3 + .../docs/running-tests/from-local-system.md | 7 +- .../docs/writing-tests/idlharness.md | 175 +- .../docs/writing-tests/server-pipes.md | 8 + .../docs/writing-tests/testharness-api.md | 35 +- .../docs/writing-tests/testharness.md | 227 +- .../document-policy/echo-policy-nested.html | 2 +- .../echo-policy-nested.html.headers | 2 +- .../document-write.tentative.html | 10 +- .../resources/async-script.js | 0 .../resources/defer-script.js | 0 .../resources/document-write-allowed.html} | 0 .../resources/document-write-disallowed.html | 37 + .../document-write-disallowed.html.headers | 1 + .../resources/parser-blocking-script.js | 0 .../resources/sync-script-test.js | 0 .../sync-script.tentative.https.sub.html | 8 +- ...nc-script.tentative.https.sub.html.headers | 1 + ...document-write-report-only-tentative.html} | 4 +- ...t-write-report-only-tentative.html.headers | 1 + .../document-write-reporting-tentative.html} | 4 +- ...ent-write-reporting-tentative.html.headers | 1 + ...s-max-bpp-reporting-onload-tentative.html} | 2 +- ...pp-reporting-onload-tentative.html.headers | 1 + ...y-images-max-bpp-reporting-tentative.html} | 2 +- ...s-max-bpp-reporting-tentative.html.headers | 1 + ...oversized-images-reporting-tentative.html} | 0 ...d-images-reporting-tentative.html.headers} | 0 ...lossy-images-reporting-onload.html.headers | 1 - ...imized-lossy-images-reporting.html.headers | 1 - ...=> unsized-media-reporting-tentative.html} | 0 ...ed-media-reporting-tentative.html.headers} | 0 .../required-policy/document-policy.html | 4 +- .../document-policy.html.headers | 2 +- .../required-document-policy-nested.html | 12 +- .../required-document-policy.html | 12 +- .../required-document-policy.html.headers | 2 +- .../separate-document-policies.html | 12 +- .../separate-document-policies.html.headers | 4 +- .../dom/events/Event-dispatch-click.html | 48 + .../Event-dispatch-click.tentative.html | 52 + ...ecursive-exec-command-calls.tentative.html | 37 + .../entries-api/idlharness-manual.html | 54 - .../entries-api/idlharness-manual.window.js | 46 + .../entries-api/idlharness.html | 39 - .../entries-api/idlharness.window.js | 15 + .../web-platform-tests/eventsource/README.md | 2 + .../eventsource/idlharness.html | 74 - .../feature-policy/README.md | 2 +- ...nc-script.tentative.https.sub.html.headers | 1 - .../document-write-report-only.html.headers | 1 - .../document-write-reporting.html.headers | 1 - .../api/basic/request-headers-nonascii.any.js | 27 + .../fetch/api/request/request-structure.html | 2 +- .../response-body-read-task-handling.html | 54 + .../fetch/http-cache/cache-mode.html | 72 + ...ub.html => embed.https.sub.tentative.html} | 5 + .../fetch/metadata/portal.https.sub.html | 9 +- .../fetch/metadata/resources/post-to-owner.py | 12 +- .../fetch/range/sw.https.window.js | 4 +- .../stale-while-revalidate/stale-image.html | 11 +- .../web-platform-tests/font-access/README.md | 2 + ...font_access-blob.tentative.https.window.js | 4 + ...cess-enumeration.tentative.https.window.js | 4 + .../resources/test-expectations.js | 481 + .../resources/window-tests-blob.js | 38 + .../resources/window-tests-enumeration.js | 33 + .../forced-colors-mode-backplate-11-ref.html | 11 + .../forced-colors-mode-backplate-11.html | 20 + .../forced-colors-mode-03.html | 4 +- .../forced-colors-mode-08-ref.html | 8 +- .../forced-colors-mode-08.html | 8 +- .../forced-colors-mode-17-ref.html | 1 + .../forced-colors-mode-17.html | 1 + .../forced-colors-mode-28.html | 9 +- .../forced-colors-mode-29-ref.html | 41 + .../forced-colors-mode-29.html | 42 + .../forced-colors-mode-30-ref.html | 18 + .../forced-colors-mode-30.html | 19 + .../forced-colors-mode-31-ref.html | 18 + .../forced-colors-mode-31.html | 22 + .../forced-colors-mode-32.html | 22 + .../forced-colors-mode-33-ref.html | 16 + .../forced-colors-mode-33.html | 23 + .../forced-colors-mode-34-ref.html | 16 + .../forced-colors-mode-34.html | 23 + .../forced-colors-mode-35-ref.html | 17 + .../forced-colors-mode-35.html | 23 + .../forced-colors-mode-36-ref.html | 18 + .../forced-colors-mode-36.html | 23 + .../forced-colors-mode-37-ref.html | 18 + .../forced-colors-mode-37.html | 24 + .../forced-colors-mode-38-ref.html | 18 + .../forced-colors-mode-38.html | 24 + .../forced-colors-mode-39-ref.html | 16 + .../forced-colors-mode-39.html | 17 + .../api/document-fullscreen-enabled.html | 10 +- .../generic-sensor-feature-policy-test.sub.js | 26 +- .../generic-sensor-iframe-tests.sub.js | 6 +- .../generic-sensor/generic-sensor-tests.js | 123 +- .../resources/generic-sensor-helpers.js | 52 +- tests/wpt/web-platform-tests/html/README.md | 1 + .../navigating-across-documents/010.html | 2 +- .../failure-check-sequence.https.html | 76 + .../cross-origin-objects.html | 6 +- .../proxy-getOwnPropertyDescriptor.html | 8 +- .../windows/iframe-nested-print-ref.html | 9 + .../browsers/windows/iframe-nested-print.html | 6 + .../canvas-createImageBitmap-e_srgb.html | 201 +- ...as-createPutGetImageData-colorManaged.html | 22 +- .../canvas-getImageData-e_srgb.html | 32 +- .../imageData-colorManagedBehavior.html | 23 - .../imageData-colorSpace.html | 71 - .../offscreencanvas.commit.html | 5 +- ...rage-reporting-dedicated-worker.https.html | 8 +- ...ache-storage-reporting-document.https.html | 8 +- ...torage-reporting-service-worker.https.html | 8 +- ...storage-reporting-shared-worker.https.html | 8 +- ...ross-origin-isolated-permission.https.html | 61 + ...gin-isolated-permission.https.html.headers | 2 + .../header-parsing.https.html | 84 + .../none-sw-from-none.https.html | 6 +- .../none-sw-from-require-corp.https.html | 7 +- .../none.https.html | 5 + .../reporting-navigation.https.html | 24 +- .../reporting-subresource-corp.https.html | 41 +- .../reporting-to-endpoint.https.html | 29 +- .../require-corp-sw-from-none.https.html | 7 +- ...quire-corp-sw-from-require-corp.https.html | 6 +- .../cross-origin-isolated-frame.html | 10 + .../resources/empty-coep.py | 7 + .../coop-csp-sandbox-navigate.https.html | 39 + .../coop-csp-sandbox.https.html | 24 + .../coop-sandbox.https.html | 13 + .../header-parsing.https.html | 52 + .../javascript-url.https.html | 262 + ...om-coop-page-to-openee_coop-ro.https.html} | 4 +- ...om-coop-page-to-opener_coop-ro.https.html} | 4 +- ...from-coop-page-to-other_coop-ro.https.html | 87 + ...-coop-page-from-openee_coop-ro.https.html} | 4 +- ...-coop-page-from-opener_coop-ro.https.html} | 4 +- ...to-coop-page-from-other_coop-ro.https.html | 75 + .../report-only-four-reports.https.html | 22 +- .../report-only-from-unsafe-none.https.html | 12 +- ...port-only-same-origin-report-to.https.html | 16 +- .../report-only-same-origin.https.html | 12 +- .../reporting-coop-navigated-popup.https.html | 11 +- ...e-origin-allow-popups-report-to.https.html | 27 +- ...opup-same-origin-coep-report-to.https.html | 38 +- ...ing-popup-same-origin-report-to.https.html | 49 +- .../reporting-popup-same-origin.https.html | 19 +- ...ing-popup-unsafe-none-report-to.https.html | 27 +- ...t-with-same-origin-allow-popups.https.html | 2 +- .../reporting/resources/reporting-common.js | 21 +- .../resource-popup.https.html | 91 + .../resources/common.js | 33 +- .../resources/coop-coep.py | 29 +- .../resources/coop-same-origin-repeated.asis | 24 + .../resources/csp-sandbox.py | 29 + .../javascript-url-same-origin.https.html | 33 + .../resources/resource-cleanup.html | 11 + .../resources/resource-popup.html | 21 + .../images/bypass-cache-revalidation.html | 37 + .../html/dom/elements/images/image.py | 28 + .../html/dom/idlharness.https.html | 6 + .../html/dom/idlharness.worker.js | 3 +- .../query-encoding/resources/resolve-url.js | 128 +- .../fieldset-overflow-cssomview.html | 30 + ...multicol-legend-becomes-floated-crash.html | 11 + ...-legend-becomes-rendered-legend-crash.html | 20 + .../html/resources/common.js | 4 +- .../no-cuechange-before-play.html | 27 + .../track-element/track-active-cues.html | 2 +- ...ge-compositing-large-scale-change-ref.html | 15 + .../image-compositing-large-scale-change.html | 35 + .../sizes/implicit-sizes-ignores-width.html | 19 + .../forms/the-input-element/datetime.html | 112 +- .../defaultValue-clobbering-ref.html | 24 - .../defaultValue-clobbering.html | 21 +- .../forms/the-input-element/range.html | 134 +- .../forms/the-input-element/search_input.html | 10 +- .../grouping-li-reftest-004-ref.html | 23 + .../grouping-li-reftest-004.html | 26 + .../grouping-li-reftest-005-ref.html | 22 + .../grouping-li-reftest-005.html | 25 + .../evaluation-order-2-import-worker.mjs | 2 +- .../template-as-a-descendant.html | 24 +- ...ng-stack-back-to-a-table-body-context.html | 3 +- ...learing-stack-back-to-a-table-context.html | 3 +- ...ing-stack-back-to-a-table-row-context.html | 3 +- .../template-owner-document.html | 6 +- .../pageshow-event.window.js | 13 + .../the-navigator-object/protocol.https.html | 9 + .../protocol.tentative.https.html | 30 + .../idle-detection/idlharness.https.window.js | 41 +- .../idle-detection/interceptor.https.html | 10 +- .../resources/idle-detection-helper.js | 21 + .../resources/idlharness-worker.js | 2 +- .../reftest/reftest_match-print-ref.html | 2 +- ...get-target-ranges-backspace.tentative.html | 529 +- ...target-ranges-forwarddelete.tentative.html | 466 +- .../wpt/web-platform-tests/interfaces/CSP.idl | 4 +- .../interfaces/DOM-Parsing.idl | 4 +- .../web-platform-tests/interfaces/FileAPI.idl | 16 +- .../interfaces/IndexedDB.idl | 20 +- .../wpt/web-platform-tests/interfaces/SRI.idl | 4 +- .../wpt/web-platform-tests/interfaces/SVG.idl | 4 +- .../interfaces/WebCryptoAPI.idl | 4 +- .../web-platform-tests/interfaces/WebIDL.idl | 6 +- .../interfaces/accelerometer.idl | 4 +- .../interfaces/ambient-light.idl | 4 +- .../web-platform-tests/interfaces/anchors.idl | 4 +- .../interfaces/appmanifest.idl | 4 +- .../interfaces/audio-output.idl | 12 +- .../interfaces/background-fetch.idl | 4 +- .../interfaces/background-sync.idl | 4 +- .../web-platform-tests/interfaces/badging.idl | 4 +- .../interfaces/battery-status.idl | 4 +- .../web-platform-tests/interfaces/beacon.idl | 4 +- .../interfaces/clipboard-apis.idl | 8 +- .../web-platform-tests/interfaces/compat.idl | 4 +- .../interfaces/compression.idl | 4 +- .../web-platform-tests/interfaces/console.idl | 42 +- .../interfaces/construct-stylesheets.idl | 4 +- .../interfaces/content-index.idl | 4 +- .../interfaces/cookie-store.idl | 34 +- .../interfaces/cors-rfc1918.idl | 4 +- .../interfaces/credential-management.idl | 4 +- .../interfaces/csp-embedded-enforcement.idl | 4 +- .../interfaces/css-animation-worklet.idl | 6 +- .../interfaces/css-animations.idl | 8 +- .../interfaces/css-conditional.idl | 4 +- .../interfaces/css-counter-styles.idl | 4 +- .../interfaces/css-device-adapt.idl | 4 +- .../interfaces/css-font-loading.idl | 8 +- .../interfaces/css-fonts.idl | 7 +- .../interfaces/css-images.idl | 4 +- .../interfaces/css-layout-api.idl | 4 +- .../interfaces/css-masking.idl | 4 +- .../interfaces/css-paint-api.idl | 6 +- .../interfaces/css-parser-api.idl | 4 +- .../interfaces/css-properties-values-api.idl | 6 +- .../interfaces/css-pseudo.idl | 4 +- .../interfaces/css-shadow-parts.idl | 4 +- .../interfaces/css-transitions.idl | 4 +- .../interfaces/css-typed-om.idl | 12 +- .../interfaces/cssom-view.idl | 42 +- .../web-platform-tests/interfaces/cssom.idl | 18 +- .../interfaces/custom-state-pseudo-class.idl | 4 +- .../interfaces/deprecation-reporting.idl | 4 +- .../interfaces/device-memory.idl | 4 +- .../interfaces/dom-overlays.idl | 4 +- .../wpt/web-platform-tests/interfaces/dom.idl | 94 +- .../interfaces/element-timing.idl | 4 +- .../interfaces/encoding.idl | 4 +- .../interfaces/encrypted-media.idl | 17 +- .../interfaces/entries-api.idl | 22 +- .../interfaces/event-timing.idl | 4 +- .../interfaces/feature-policy.idl | 4 +- .../web-platform-tests/interfaces/fetch.idl | 10 +- .../interfaces/filter-effects.idl | 4 +- .../interfaces/fullscreen.idl | 8 +- .../interfaces/gamepad-extensions.idl | 4 +- .../web-platform-tests/interfaces/gamepad.idl | 4 +- .../interfaces/generic-sensor.idl | 8 +- .../interfaces/geolocation-API.idl | 12 +- .../interfaces/geolocation-sensor.idl | 4 +- .../interfaces/geometry.idl | 4 +- .../interfaces/get-installed-related-apps.idl | 4 +- .../interfaces/gyroscope.idl | 4 +- .../interfaces/hit-test.idl | 4 +- .../web-platform-tests/interfaces/hr-time.idl | 4 +- .../interfaces/html-media-capture.idl | 4 +- .../web-platform-tests/interfaces/html.idl | 466 +- .../idle-detection.tentative.idl} | 0 .../interfaces/image-capture.idl | 4 +- .../interfaces/input-device-capabilities.idl | 4 +- .../interfaces/input-events.idl | 4 +- .../interfaces/intersection-observer.idl | 12 +- .../interfaces/intervention-reporting.idl | 4 +- .../interfaces/is-input-pending.idl | 4 +- .../interfaces/js-self-profiling.idl | 4 +- .../interfaces/keyboard-lock.idl | 4 +- .../interfaces/keyboard-map.idl | 4 +- .../interfaces/largest-contentful-paint.idl | 4 +- .../interfaces/layout-instability.idl | 4 +- .../interfaces/longtasks.idl | 4 +- .../interfaces/magnetometer.idl | 4 +- .../interfaces/media-capabilities.idl | 4 +- .../interfaces/media-playback-quality.idl | 4 +- .../interfaces/media-source.idl | 4 +- .../interfaces/mediacapture-depth.idl | 4 +- .../interfaces/mediacapture-fromelement.idl | 6 +- .../interfaces/mediacapture-streams.idl | 18 +- .../interfaces/mediasession.idl | 4 +- .../interfaces/mediastream-recording.idl | 4 +- .../interfaces/mst-content-hint.idl | 4 +- .../interfaces/native-file-system.idl | 36 +- .../interfaces/navigation-timing.idl | 4 +- .../web-platform-tests/interfaces/netinfo.idl | 4 +- .../interfaces/notifications.idl | 10 +- .../interfaces/orientation-event.idl | 4 +- .../interfaces/orientation-sensor.idl | 6 +- .../interfaces/origin-policy.idl | 4 +- .../interfaces/page-lifecycle.idl | 4 +- .../interfaces/page-visibility.idl | 4 +- .../interfaces/paint-timing.idl | 4 +- .../interfaces/payment-handler.idl | 4 +- .../interfaces/payment-method-basic-card.idl | 4 +- .../interfaces/payment-request.idl | 14 +- .../interfaces/performance-timeline.idl | 10 +- .../interfaces/periodic-background-sync.idl | 4 +- .../interfaces/permissions-request.idl | 4 +- .../interfaces/permissions-revoke.idl | 4 +- .../interfaces/permissions.idl | 4 +- .../interfaces/picture-in-picture.idl | 6 +- .../interfaces/pointerevents.idl | 8 +- .../interfaces/pointerlock.idl | 4 +- .../interfaces/presentation-api.idl | 4 +- .../interfaces/proximity.idl | 4 +- .../interfaces/push-api.idl | 4 +- .../interfaces/referrer-policy.idl | 4 +- .../interfaces/remote-playback.idl | 4 +- .../interfaces/reporting.idl | 10 +- .../interfaces/requestidlecallback.idl | 8 +- .../interfaces/resize-observer.idl | 13 +- .../interfaces/resource-timing.idl | 8 +- .../interfaces/sanitizer-api.tentative.idl | 11 + .../interfaces/savedata.idl | 4 +- .../interfaces/screen-capture.idl | 4 +- .../interfaces/screen-orientation.idl | 4 +- .../interfaces/scroll-animations.idl | 4 +- .../interfaces/scroll-to-text-fragment.idl | 12 + .../interfaces/secure-contexts.idl | 8 - .../interfaces/selection-api.idl | 28 +- .../interfaces/server-timing.idl | 4 +- .../interfaces/service-workers.idl | 4 +- .../interfaces/shape-detection-api.idl | 4 +- .../interfaces/speech-api.idl | 22 +- .../interfaces/storage-access.idl | 6 +- .../web-platform-tests/interfaces/storage.idl | 4 +- .../web-platform-tests/interfaces/streams.idl | 70 +- .../interfaces/touch-events.idl | 4 +- .../interfaces/ua-client-hints.idl | 4 +- .../interfaces/uievents.idl | 10 +- .../wpt/web-platform-tests/interfaces/url.idl | 12 +- .../interfaces/user-timing.idl | 8 +- .../interfaces/vibration.idl | 4 +- .../interfaces/video-rvfc.idl | 8 +- .../interfaces/visual-viewport.idl | 4 +- .../interfaces/wai-aria.idl | 4 +- .../interfaces/wake-lock.idl | 7 +- .../interfaces/wasm-js-api.idl | 6 +- .../interfaces/wasm-web-api.idl | 4 +- .../interfaces/web-animations.idl | 24 +- .../interfaces/web-bluetooth.idl | 4 +- .../interfaces/web-locks.idl | 4 +- .../web-platform-tests/interfaces/web-nfc.idl | 8 +- .../web-platform-tests/interfaces/web-otp.idl | 4 +- .../interfaces/web-share.idl | 6 +- .../interfaces/webaudio.idl | 94 +- .../interfaces/webauthn.idl | 6 +- .../interfaces/webdriver.idl | 4 +- .../web-platform-tests/interfaces/webgl1.idl | 4 +- .../web-platform-tests/interfaces/webgl2.idl | 4 +- .../web-platform-tests/interfaces/webhid.idl | 4 +- .../web-platform-tests/interfaces/webmidi.idl | 4 +- .../interfaces/webrtc-identity.idl | 8 +- .../interfaces/webrtc-stats.idl | 6 +- .../interfaces/webrtc-svc.idl | 4 +- .../web-platform-tests/interfaces/webrtc.idl | 54 +- .../web-platform-tests/interfaces/webusb.idl | 20 +- .../web-platform-tests/interfaces/webvtt.idl | 4 +- .../interfaces/webxr-ar-module.idl | 4 +- .../interfaces/webxr-gamepads-module.idl | 4 +- .../interfaces/webxr-hand-input.idl | 58 + .../web-platform-tests/interfaces/webxr.idl | 14 +- .../interfaces/worklets.idl | 6 +- .../wpt/web-platform-tests/interfaces/xhr.idl | 26 +- .../observer-attributes.html | 9 + .../is-input-pending/README.md | 3 + .../is-input-pending/resources/blank.html | 2 + .../resources/input-onmessage.js | 25 + .../resources/pending-input-utils.js | 68 + ...ross-origin-subframe-complex-clip.sub.html | 27 + ...igin-subframe-masked-complex-clip.sub.html | 34 + ...ame-masked-pointer-events-mixed-2.sub.html | 45 + ...frame-masked-pointer-events-mixed.sub.html | 43 + ...bframe-masked-pointer-events-none.sub.html | 33 + .../cross-origin-subframe-overlap.sub.html | 28 + ...igin-subframe-pointer-events-none.sub.html | 26 + ...cross-origin-subframe-transformed.sub.html | 27 + .../security/cross-origin-subframe.sub.html | 21 + .../tentative/same-origin-subframe.sub.html | 32 + .../is-input-pending/tentative/toplevel.html | 26 + ...p-prevented-with-reference.optional.any.js | 50 + ...-prevented-with-unregister.optional.any.js | 57 + ...ce-to-call-cleanupCallback.optional.any.js | 100 + .../holdings-multiple-values.optional.any.js | 65 + .../weakrefs/reentrancy.optional.any.js | 50 + .../resources/maybe-garbage-collect.js | 96 + .../return-undefined-with-gc.optional.any.js | 78 + ...unregister-cleaned-up-cell.optional.any.js | 72 + .../inline-flow-shift-one-line.html | 41 + .../inline-flow-shift-vertical-rl.html | 4 +- tests/wpt/web-platform-tests/lint.ignore | 13 +- .../mpadded/mpadded-003.html | 26 +- ...o-not-in-dictionary-lspace-rspace-ref.html | 47 + .../mo-not-in-dictionary-lspace-rspace.html | 52 + ...o-not-in-dictionary-movablelimits-ref.html | 47 + .../mo-not-in-dictionary-movablelimits.html | 52 + .../scripts/underover-parameters-3.html | 118 + ... => underover-parameters-4.tentative.html} | 3 +- .../css-styling/multi-column-layout.html | 56 + .../html5-tree/content-editable.html | 51 + .../html5-tree/integration-point-5.html | 57 + .../math-global-event-handlers.tentative.html | 4 +- .../resources/imagecapture-helpers.js | 52 +- .../MediaStreamTrack-getSettings.https.html | 3 +- .../idlharness.https.any.js | 2 +- .../opaque-origin.https.window.js | 8 +- .../resources/message-target.js | 6 +- .../resources/opaque-origin-sandbox.html | 10 +- .../resources/sandboxed-fs-test-helpers.js | 6 +- .../showOpenFilePicker-manual.https.html | 4 +- .../showPicker-errors.https.window.js | 26 +- .../showSaveFilePicker-manual.https.html | 2 +- .../close_async.tentative.https.any.js | 15 + .../close_sync.tentative.https.any.js | 7 + ..._io_setLength_async.tentative.https.any.js | 31 + .../concurrent_io/operation_helpers.js | 13 + ...tLength_async_basic.tentative.https.any.js | 53 + ...etLength_sync_basic.tentative.https.any.js | 48 + ...Length_bounds_async.tentative.https.any.js | 20 + ...tLength_bounds_sync.tentative.https.any.js | 24 + ...orthy_origin_failure.tentative.http.any.js | 9 + .../navigation-timing/idlharness.window.js | 33 +- .../nav2_test_navigate_iframe.html | 4 +- .../test_document_onload.html | 6 +- .../resources/orientation-event-helpers.js | 47 +- ...rent-no-child-bad-subdomain.sub.https.html | 4 +- .../parent-no-child-yes-port.sub.https.html | 7 +- .../parent-no-child-yes-same.sub.https.html | 7 +- ...rent-no-child-yes-subdomain.sub.https.html | 7 +- ...ild-yeswithparams-subdomain.sub.https.html | 7 +- .../parent-yes-child-no-port.sub.https.html | 6 +- .../parent-yes-child-no-same.sub.https.html | 6 +- ...rent-yes-child-no-subdomain.sub.https.html | 6 +- .../parent-yes-child-yes-port.sub.https.html | 6 +- .../parent-yes-child-yes-same.sub.https.html | 6 +- ...ent-yes-child-yes-subdomain.sub.https.html | 6 +- ...domain-child2-yes-subdomain.sub.https.html | 8 +- ...in-child2-yes-subdomainport.sub.https.html | 5 + ...main1-child2-yes-subdomain2.sub.https.html | 9 +- ...es-subdomain-child2-no-port.sub.https.html | 8 +- ...bdomain-child2-no-subdomain.sub.https.html | 8 +- ...bdomain-child2-no-subdomain.sub.https.html | 8 +- ...domain-child2-no-subdomain2.sub.https.html | 8 +- ...domain-child2-yes-subdomain.sub.https.html | 8 +- ...omain-child2-yes-subdomain2.sub.https.html | 8 +- ...in-child2-yes-subdomainport.sub.https.html | 5 + ...es-subdomain-child2-no-port.sub.https.html | 8 +- ...bdomain-child2-no-subdomain.sub.https.html | 8 +- ...domain-child2-yes-subdomain.sub.https.html | 8 +- ...omain-child2-yes-subdomain2.sub.https.html | 8 +- ...in-child2-yes-subdomainport.sub.https.html | 5 + .../origin-isolation/README.md | 5 + .../about-blank.https.sub.html | 10 +- .../csp-sandbox-no.https.html | 15 + .../csp-sandbox-no.https.html.headers | 1 + .../csp-sandbox-yes.https.html | 15 + .../csp-sandbox-yes.https.html.headers | 2 + .../data-to-javascript-no.https.html | 12 + .../data-to-javascript-yes.https.html | 12 + ...data-to-javascript-yes.https.html.headers} | 0 .../data-url-no.https.html | 12 + .../data-url-yes.https.html | 12 + ...eaders => data-url-yes.https.html.headers} | 0 .../getter-special-cases/data-url.https.html | 40 - .../javascript-url-no.https.html | 12 + .../javascript-url-yes.https.html | 12 + .../javascript-url-yes.https.html.headers | 1 + .../removed-iframe.sub.https.html | 12 +- .../resources/data-to-javascript-test.mjs | 33 + .../resources/data-url-test.mjs | 13 + .../resources/helpers.mjs | 29 + .../resources/javascript-url-test.mjs | 14 + .../resources/sandboxed-iframe-test.sub.mjs | 20 + .../sandboxed-same-origin-iframe-test.sub.mjs | 20 + .../sandboxed-iframe-no.https.html | 12 + .../sandboxed-iframe-yes.https.html | 12 + .../sandboxed-iframe-yes.https.html.headers | 1 + .../sandboxed-iframe.sub.https.html | 32 - ...sandboxed-same-origin-iframe-no.https.html | 12 + ...andboxed-same-origin-iframe-yes.https.html | 12 + ...-same-origin-iframe-yes.https.html.headers | 1 + ...ent-no-1-no-same-2-yes-port.sub.https.html | 10 +- ...o-1-no-same-2-yes-subdomain.sub.https.html | 10 +- ...o-subdomain-2-yes-subdomain.sub.https.html | 10 +- ...-subdomain-2-yes-subdomain2.sub.https.html | 10 +- ...bdomain-yes-2-subdomain2-no.sub.https.html | 10 +- ...es-subdomain-2-no-subdomain.sub.https.html | 10 +- ...ent-yes-1-no-same-2-no-port.sub.https.html | 10 +- ...es-1-no-same-2-no-subdomain.sub.https.html | 10 +- .../origin-isolation/insecure-http.sub.html | 6 +- .../opener-no-openee-yes-port.sub.https.html | 28 + .../opener-no-openee-yes-same.sub.https.html | 27 + ...ner-no-openee-yes-subdomain.sub.https.html | 28 + .../opener-yes-openee-no-port.sub.https.html | 28 + ...-yes-openee-no-port.sub.https.html.headers | 1 + .../opener-yes-openee-no-same.sub.https.html | 27 + ...-yes-openee-no-same.sub.https.html.headers | 1 + ...ner-yes-openee-no-subdomain.sub.https.html | 28 + ...openee-no-subdomain.sub.https.html.headers | 1 + .../opener-yes-openee-yes-port.sub.https.html | 28 + ...yes-openee-yes-port.sub.https.html.headers | 1 + .../opener-yes-openee-yes-same.sub.https.html | 27 + ...yes-openee-yes-same.sub.https.html.headers | 1 + ...er-yes-openee-yes-subdomain.sub.https.html | 28 + ...penee-yes-subdomain.sub.https.html.headers | 1 + .../removing-iframes.sub.https.html | 10 +- .../origin-isolation/resources/helpers.mjs | 119 +- ...script.mjs => send-header-page-script.mjs} | 22 +- ...rs => send-header-page-script.mjs.headers} | 0 .../resources/send-origin-isolation-header.py | 2 +- .../child-painting-first-image.html | 24 +- .../fcp-only/fcp-background-size.html | 12 +- .../fcp-only/fcp-bg-image-set.html | 12 +- .../fcp-only/fcp-bg-image-two-steps.html | 12 +- .../paint-timing/fcp-only/fcp-iframe.html | 27 + .../fcp-only/fcp-invisible-scale.html | 12 +- .../paint-timing/fcp-only/fcp-opacity.html | 12 +- .../fcp-only/fcp-out-of-bounds.html | 12 +- .../fcp-only/fcp-pseudo-element-image.html | 12 +- .../paint-timing/fcp-only/fcp-whitespace.html | 12 +- .../resources/subframe-painting.html | 26 +- .../paint-timing/resources/utils.js | 5 +- .../sibling-painting-first-image.html | 28 +- .../secure-payment-confirmation.https.html | 170 +- .../case-sensitivity.any.js | 35 + ...terevent_mouse-pointer-preventdefault.html | 189 +- ...use_pointercapture_inactivate_pointer.html | 82 + ...erevent_touch-adjustment_click_target.html | 67 + ...e_on_chorded_mouse_button_when_locked.html | 48 +- ...ntercapture_inactivate_pointer-iframe.html | 3 + .../portals/portals-host-exposure.sub.html | 34 +- .../portals-host-post-message.sub.html | 98 +- .../portals/portals-post-message.sub.html | 54 +- ...portal-host-cross-origin-navigate.sub.html | 4 +- .../portal-host-post-message-x-origin.html | 4 + ...sub.html => portal-host-post-message.html} | 0 .../portals/resources/portal-host.html | 8 +- .../portal-post-message-x-origin-portal.html | 11 + .../portals/resources/stash-utils.sub.js | 43 + ...id-delaying-onload-link-preload-style.html | 15 + .../avoid-delaying-onload-link-preload.html | 2 +- .../web-platform-tests/raw-sockets/META.yml | 5 + .../web-platform-tests/raw-sockets/README.md | 2 + .../open-consume-activation.https.html | 58 + .../raw-sockets/open-securecontext.http.html | 21 + .../open-without-user-gesture.https.html | 26 + .../remotePort-required.https.html | 67 + ...resource_nested_dedicated_worker.worker.js | 4 +- .../resources/chromium/README.md | 9 +- .../chromium/image_capture-mojom.js.headers | 1 - .../resources/chromium/image_capture.mojom.js | 1403 --- .../chromium/mock-idle-detection.js} | 0 .../resources/chromium/mojo_bindings.js | 5146 ---------- .../chromium/mojo_bindings.js.headers | 1 - .../mojo_web_test_helper_test.mojom.js | 264 - ...mojo_web_test_helper_test.mojom.js.headers | 1 - .../resources/chromium/nfc-mock.js | 11 +- .../resources/chromium/sensor.mojom.js | 1074 --- .../chromium/sensor_provider.mojom.js | 429 - .../resources/test-only-api.js | 34 +- .../resources/testharness.js | 4 +- .../web-platform-tests/sanitizer-api/META.yml | 5 + .../idlharness.tentative.window.js | 12 + .../sanitizer-config.tentative.html | 59 + .../sanitizer-sanitize.tentative.html | 25 + .../sanitizer-sanitizeToString.tentative.html | 18 + .../sanitizer-api/support/testcases.sub.js | 17 + ...wakelock-document-hidden-manual.https.html | 2 + .../wakelock-released.https.html | 38 + .../getScreens.values.https.html | 4 +- .../isMultiScreen.values.https.html | 4 +- .../resources/screenenumeration-helpers.js | 63 +- .../scroll-animations/constructor.html | 61 +- .../constructor.tentative.html | 41 +- .../css/animation-shorthand.html | 53 + .../css/animation-timeline-in-keyframe.html | 5 +- .../css/animation-timeline-none.html | 46 + .../at-scroll-timeline-element-offsets.html | 241 + .../css/at-scroll-timeline-orientation.html | 4 +- .../css/at-scroll-timeline-source.html | 4 +- .../css/at-scroll-timeline-start-end.html | 4 +- .../css/at-scroll-timeline-time-range.html | 4 +- .../css/scroll-timeline-cssom.tentative.html | 14 +- .../current-time-writing-modes.html | 18 +- .../scroll-animations/current-time.html | 113 +- ...-changes-on-percentage-based-timeline.html | 4 +- ...oll-animation-effect-phases.tentative.html | 42 +- .../scroll-timeline-phases.tentative.html | 6 +- .../setting-timeline.tentative.html | 320 + .../client-redirect.html | 12 + .../idlharness.window.js | 15 + .../redirects-target.html | 42 + .../redirects-target2.html | 28 + .../scroll-to-text-fragment/redirects.html | 126 + .../scroll-to-text-fragment-api.html | 14 +- .../secure-contexts/idlharness.any.js | 20 - .../selection/contenteditable/collapse.html | 43 + .../contenteditable/modify.tentative.html | 16 + .../cache-storage/script-tests/cache-add.js | 18 + .../cache-storage/script-tests/cache-put.js | 19 + .../cache-storage/window/cache-add.https.html | 1 + .../cache-storage/window/cache-put.https.html | 1 + .../fetch-request-resources.https.html | 2 +- .../resources/test-helpers.sub.js | 60 +- .../detection-on-worker.https.worker.js | 1 + .../resources/shapedetection-helpers.js | 59 +- ...ge-in-detached-iframe.tentative.https.html | 21 + .../transferable/deserialize-error.window.js | 39 + .../resources/create-wasm-module.js | 11 + .../resources/deserialize-error-frame.html | 39 + .../tools/certs/config.json | 2 +- .../ci/azure/safari-technology-preview.rb | 42 +- .../web-platform-tests/tools/ci/commands.json | 7 + .../tools/ci/regen_certs.py | 99 + .../tools/ci/tc/github_checks_output.py | 23 +- .../tools/ci/tc/tasks/test.yml | 5 +- .../wpt/web-platform-tests/tools/lint/lint.py | 67 +- .../tools/lint/tests/test_lint.py | 5 +- .../web-platform-tests/tools/serve/serve.py | 3 +- .../tools/third_party/pywebsocket3/.gitignore | 4 + .../tools/third_party/pywebsocket3/README.md | 2 +- .../pywebsocket3/example/echo_client.py | 143 +- .../mod_pywebsocket/extensions.py | 1 + .../mod_pywebsocket/http_header_util.py | 2 +- .../mod_pywebsocket/request_handler.py | 2 +- .../mod_pywebsocket/standalone.py | 357 +- .../pywebsocket3/test/client_for_testing.py | 7 + .../third_party/pywebsocket3/test/run_all.py | 13 +- .../pywebsocket3/test/set_sys_path.py | 2 +- .../pywebsocket3/test/test_dispatch.py | 4 +- .../pywebsocket3/test/test_endtoend.py | 93 +- .../pywebsocket3/test/test_msgutil.py | 4 - .../pywebsocket3/test/test_util.py | 5 +- .../tools/wave/www/css/bulma-0.7.5/bulma.css | 2 +- .../tools/webdriver/webdriver/client.py | 3 + .../web-platform-tests/tools/wpt/browser.py | 5 +- .../wptrunner/wptrunner/browsers/chrome.py | 9 +- .../wptrunner/browsers/chrome_spki_certs.py | 13 + .../wptrunner/wptrunner/browsers/firefox.py | 15 +- .../wptrunner/executors/executormarionette.py | 25 +- .../tools/wptrunner/wptrunner/stability.py | 4 +- .../tools/wptrunner/wptrunner/testloader.py | 4 + .../tools/wptrunner/wptrunner/testrunner.py | 8 +- .../wptrunner/tests/test_testloader.py | 43 +- .../tools/wptrunner/wptrunner/vcs.py | 8 +- .../wptrunner/wptrunner/wptcommandline.py | 4 +- .../tools/wptrunner/wptrunner/wptrunner.py | 3 + .../tools/wptrunner/wptrunner/wpttest.py | 2 +- .../tools/wptserve/docs/index.rst | 12 +- .../wptserve/tests/functional/test_pipes.py | 8 + .../tools/wptserve/wptserve/handlers.py | 2 +- .../url/resources/setters_tests.json | 55 + .../url/resources/urltestdata.json | 184 + .../wasm/jsapi/idlharness.any.js | 37 +- .../memory/constructor-types.tentative.any.js | 20 + .../wasm/jsapi/memory/constructor.any.js | 11 +- .../wasm/jsapi/table/assertions.js | 11 + .../table/constructor-types.tentative.any.js | 20 + .../wasm/jsapi/table/constructor.any.js | 12 +- .../web-animations/testcommon.js | 11 +- .../setting-the-timeline-of-an-animation.html | 16 +- .../resources/dynamic/__dir__.headers | 1 + .../resources/dynamic/classic_script.js | 1 + .../resources/dynamic1/classic_script.js | 1 + .../resources/dynamic2/classic_script.js | 1 + .../resources/generate-test-wbns.sh | 11 +- .../resources/wbn/dynamic1-crossorigin.wbn | Bin 0 -> 1487 bytes .../web-bundle/resources/wbn/dynamic1.wbn | Bin 1201 -> 1481 bytes .../web-bundle/resources/wbn/dynamic2.wbn | Bin 1201 -> 1481 bytes .../web-bundle/resources/wbn/subresource.wbn | Bin 523 -> 517 bytes ...rce-loading-from-web-bundle.tentative.html | 57 +- .../web-nfc/NDEFWriter_write.https.html | 54 +- .../web-nfc/resources/nfc-helpers.js | 55 +- .../disabled-by-feature-policy.https.sub.html | 1 + .../web-share/feature-policy-listed.html | 31 + .../share-consume-activation.https.html | 2 +- .../web-share/share-empty.https.html | 2 +- .../web-share/share-securecontext.http.html | 1 + .../web-share/share-url-invalid.https.html | 61 +- ...udioworkletnode-with-parameters.https.html | 16 + .../the-delaynode-interface/delay-test.html | 61 + .../detune-overflow.html | 41 + .../webcodecs/audio-decoder.html | 65 + .../wpt/web-platform-tests/webcodecs/h264.mp4 | Bin 0 -> 7637 bytes .../wpt/web-platform-tests/webcodecs/utils.js | 126 + .../webcodecs/video-decoder.html | 191 + .../webcodecs/video-encoder.html | 222 +- .../webcodecs/video-frame-serialization.html | 123 + .../webcodecs/video-frame.html | 108 + .../wpt/web-platform-tests/webcodecs/vp9.mp4 | Bin 0 -> 6159 bytes .../webdriver/tests/execute_script/execute.py | 19 + .../webdriver/tests/get_current_url/get.py | 42 +- .../webdriver/tests/get_current_url/iframe.py | 65 + .../webdriver/tests/get_title/get.py | 53 +- .../webdriver/tests/get_title/iframe.py | 70 + .../webdriver/tests/new_window/new_tab.py | 24 +- .../webdriver/tests/new_window/new_window.py | 24 +- .../tests/perform_actions/conftest.py | 17 + .../tests/perform_actions/pointer.py | 10 +- .../perform_actions/pointer_tripleclick.py | 2 +- .../webdriver/tests/print/printcmd.py | 8 +- .../webdriver/tests/print/user_prompts.py | 4 +- ...udioFrame-serviceworker-failure.https.html | 8 +- ...ideoFrame-serviceworker-failure.https.html | 8 +- ...ection-insertable-streams-audio.https.html | 291 + ...on-insertable-streams-simulcast.https.html | 85 + ...erConnection-insertable-streams.https.html | 417 + .../RTCPeerConnection-insertable-streams.js | 241 + ...erConnection-sender-worker-single-frame.js | 19 + .../webrtc/RTCIceCandidate-constructor.html | 2 +- ...PeerConnection-candidate-in-sdp.https.html | 26 + ...n-description-attributes-timing.https.html | 81 + .../webrtc/RTCPeerConnection-helper.js | 54 +- .../RTCPeerConnection-iceGatheringState.html | 10 +- ...erConnection-mandatory-getStats.https.html | 64 +- ...nection-onsignalingstatechanged.https.html | 15 + ...erConnection-perfect-negotiation-helper.js | 151 + ...negotiation-stress-glare-linear.https.html | 23 + ...erfect-negotiation-stress-glare.https.html | 23 + ...rConnection-perfect-negotiation.https.html | 166 +- .../RTCPeerConnection-videoDetectorTest.html | 38 +- ...RTCRtpTransceiver-setCodecPreferences.html | 171 +- .../webrtc/RTCRtpTransceiver.https.html | 7 +- .../handlers/stash_responder_blocking_wsh.py | 45 + .../web-platform-tests/webstorage/README.md | 2 + .../webstorage/idlharness.window.js | 29 - .../webstorage/set.window.js | 6 +- .../webusb/resources/usb-helpers.js | 4 +- .../hand-input/idlharness.https.window.js | 16 + .../webxr/resources/webxr_util.js | 22 +- .../workers/Worker_script_mimetype.htm | 41 +- .../onerror/exception-in-onerror.html | 10 +- .../onerror/exception-in-onerror.js | 25 - .../onerror/message-classic-DOMException.html | 7 + .../onerror/message-classic-Error.html | 7 + .../onerror/message-helper.js | 61 + .../onerror/message-module-DOMException.html | 7 + .../onerror/message-module-Error.html | 7 + .../WorkerGlobalScope/onerror/throw.js | 34 + .../x-frame-options/META.yml | 3 +- .../x-frame-options/README.md | 5 +- .../x-frame-options/deny.html | 43 + .../x-frame-options/deny.sub.html | 61 - .../x-frame-options/get-decode-split.html | 23 + .../x-frame-options/invalid.html | 59 + .../x-frame-options/invalid.sub.html | 84 - .../x-frame-options/multiple.html | 124 + .../x-frame-options/multiple.sub.html | 87 - .../x-frame-options/redirect.html | 17 + .../x-frame-options/redirect.sub.html | 19 - .../x-frame-options/sameorigin.sub.html | 113 +- .../x-frame-options/support/helper.js | 13 - .../x-frame-options/support/helper.sub.js | 104 + 1377 files changed, 31062 insertions(+), 16983 deletions(-) create mode 100644 tests/wpt/metadata-layout-2020/FileAPI/file/File-constructor.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-small-values-001-a.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-small-values-001-b.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-flexbox/flex-aspect-ratio-img-row-006.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-flexbox/table-with-percent-intrinsic-width.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-images/image-orientation/image-orientation-background-position.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-text/animations/tab-size-interpolation.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-inline-001.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-inline-002.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-integer-004.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-text/white-space/eol-spaces-bidi-002.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-001.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-002.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-003.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/cssom-view/matchMedia-display-none-iframe.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/cssom/CSSCounterStyleRule.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/cssom/CSSFontFaceRule.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/filter-effects/backdrop-filter-svg-foreignObject.html.ini create mode 100644 tests/wpt/metadata-layout-2020/custom-elements/CustomElementRegistry.html.ini create mode 100644 tests/wpt/metadata-layout-2020/fetch/api/request/request-structure.html.ini rename tests/wpt/{metadata/fetch/metadata/embed.https.sub.html.ini => metadata-layout-2020/fetch/metadata/embed.https.sub.tentative.html.ini} (91%) create mode 100644 tests/wpt/metadata-layout-2020/fetch/stale-while-revalidate/stale-image.html.ini create mode 100644 tests/wpt/metadata-layout-2020/fullscreen/api/document-fullscreen-enabled.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini rename tests/wpt/{metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini => metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini} (71%) create mode 100644 tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/dom/elements/images/bypass-cache-revalidation.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-overflow-cssomview.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/reload.window.js.ini create mode 100644 tests/wpt/metadata-layout-2020/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.tentative.https.html.ini create mode 100644 tests/wpt/metadata-layout-2020/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js.ini create mode 100644 tests/wpt/metadata-layout-2020/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js.ini create mode 100644 tests/wpt/metadata-layout-2020/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js.ini create mode 100644 tests/wpt/metadata-layout-2020/js/builtins/weakrefs/holdings-multiple-values.optional.any.js.ini create mode 100644 tests/wpt/metadata-layout-2020/js/builtins/weakrefs/reentrancy.optional.any.js.ini create mode 100644 tests/wpt/metadata-layout-2020/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js.ini create mode 100644 tests/wpt/metadata-layout-2020/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js.ini create mode 100644 tests/wpt/metadata-layout-2020/selection/contenteditable/collapse.html.ini create mode 100644 tests/wpt/metadata-layout-2020/selection/contenteditable/modify.tentative.html.ini create mode 100644 tests/wpt/metadata-layout-2020/wasm/jsapi/memory/constructor.any.js.ini create mode 100644 tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audioworklet-interface/extended-audioworkletnode-with-parameters.https.html.ini create mode 100644 tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-delaynode-interface/delay-test.html.ini create mode 100644 tests/wpt/metadata-layout-2020/webdriver/tests/execute_script/execute.py.ini create mode 100644 tests/wpt/metadata-layout-2020/webxr/hand-input/idlharness.https.window.js.ini delete mode 100644 tests/wpt/metadata-layout-2020/workers/WorkerGlobalScope-close.html.ini create mode 100644 tests/wpt/metadata-layout-2020/workers/Worker_script_mimetype.htm.ini delete mode 100644 tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini create mode 100644 tests/wpt/metadata-layout-2020/workers/interfaces/WorkerGlobalScope/onerror/message-classic-DOMException.html.ini create mode 100644 tests/wpt/metadata-layout-2020/workers/interfaces/WorkerGlobalScope/onerror/message-classic-Error.html.ini create mode 100644 tests/wpt/metadata-layout-2020/workers/interfaces/WorkerGlobalScope/onerror/message-module-DOMException.html.ini create mode 100644 tests/wpt/metadata-layout-2020/workers/interfaces/WorkerGlobalScope/onerror/message-module-Error.html.ini create mode 100644 tests/wpt/metadata/FileAPI/file/File-constructor.html.ini delete mode 100644 tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini create mode 100644 tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini delete mode 100644 tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini create mode 100644 tests/wpt/metadata/css/css-backgrounds/border-width-small-values-001-a.html.ini create mode 100644 tests/wpt/metadata/css/css-backgrounds/border-width-small-values-001-b.html.ini create mode 100644 tests/wpt/metadata/css/css-flexbox/canvas-dynamic-change-001.html.ini create mode 100644 tests/wpt/metadata/css/css-flexbox/flex-aspect-ratio-img-row-006.html.ini create mode 100644 tests/wpt/metadata/css/css-flexbox/table-with-percent-intrinsic-width.html.ini create mode 100644 tests/wpt/metadata/css/css-images/image-orientation/image-orientation-background-position.html.ini create mode 100644 tests/wpt/metadata/css/css-text/animations/tab-size-interpolation.html.ini create mode 100644 tests/wpt/metadata/css/css-text/tab-size/tab-size-inline-001.html.ini create mode 100644 tests/wpt/metadata/css/css-text/tab-size/tab-size-inline-002.html.ini create mode 100644 tests/wpt/metadata/css/css-text/tab-size/tab-size-integer-004.html.ini create mode 100644 tests/wpt/metadata/css/css-text/white-space/eol-spaces-bidi-002.html.ini create mode 100644 tests/wpt/metadata/css/css-text/white-space/trailing-ogham-001.html.ini create mode 100644 tests/wpt/metadata/css/css-text/white-space/trailing-ogham-002.html.ini create mode 100644 tests/wpt/metadata/css/css-text/white-space/trailing-ogham-003.html.ini delete mode 100644 tests/wpt/metadata/css/css-ui/appearance-button-002.tentative.html.ini delete mode 100644 tests/wpt/metadata/css/css-ui/webkit-appearance-button-002.tentative.html.ini delete mode 100644 tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini delete mode 100644 tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini create mode 100644 tests/wpt/metadata/css/cssom-view/matchMedia-display-none-iframe.html.ini create mode 100644 tests/wpt/metadata/css/cssom/CSSCounterStyleRule.html.ini create mode 100644 tests/wpt/metadata/css/cssom/CSSFontFaceRule.html.ini create mode 100644 tests/wpt/metadata/css/filter-effects/backdrop-filter-svg-foreignObject.html.ini create mode 100644 tests/wpt/metadata/fetch/metadata/embed.https.sub.tentative.html.ini create mode 100644 tests/wpt/metadata/fullscreen/api/document-fullscreen-enabled.html.ini create mode 100644 tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html.ini rename tests/wpt/{metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini => metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini} (71%) create mode 100644 tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini create mode 100644 tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini delete mode 100644 tests/wpt/metadata/html/canvas/element/manual/wide-gamut-canvas/imageData-colorSpace.html.ini create mode 100644 tests/wpt/metadata/html/dom/elements/images/bypass-cache-revalidation.html.ini create mode 100644 tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-overflow-cssomview.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html.ini create mode 100644 tests/wpt/metadata/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html.ini create mode 100644 tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/reload.window.js.ini create mode 100644 tests/wpt/metadata/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.tentative.https.html.ini create mode 100644 tests/wpt/metadata/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js.ini create mode 100644 tests/wpt/metadata/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js.ini create mode 100644 tests/wpt/metadata/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js.ini create mode 100644 tests/wpt/metadata/js/builtins/weakrefs/holdings-multiple-values.optional.any.js.ini create mode 100644 tests/wpt/metadata/js/builtins/weakrefs/reentrancy.optional.any.js.ini create mode 100644 tests/wpt/metadata/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js.ini create mode 100644 tests/wpt/metadata/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js.ini create mode 100644 tests/wpt/metadata/selection/contenteditable/collapse.html.ini create mode 100644 tests/wpt/metadata/selection/contenteditable/modify.tentative.html.ini create mode 100644 tests/wpt/metadata/webaudio/the-audio-api/the-audioworklet-interface/extended-audioworkletnode-with-parameters.https.html.ini create mode 100644 tests/wpt/metadata/webaudio/the-audio-api/the-delaynode-interface/delay-test.html.ini delete mode 100644 tests/wpt/metadata/webstorage/idlharness.window.js.ini create mode 100644 tests/wpt/metadata/webxr/hand-input/idlharness.https.window.js.ini delete mode 100644 tests/wpt/metadata/workers/WorkerGlobalScope-close.html.ini create mode 100644 tests/wpt/metadata/workers/Worker_script_mimetype.htm.ini delete mode 100644 tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini create mode 100644 tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/onerror/message-classic-DOMException.html.ini create mode 100644 tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/onerror/message-classic-Error.html.ini create mode 100644 tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/onerror/message-module-DOMException.html.ini create mode 100644 tests/wpt/metadata/workers/interfaces/WorkerGlobalScope/onerror/message-module-Error.html.ini create mode 100644 tests/wpt/web-platform-tests/.github/workflows/regen_certs.yml create mode 100644 tests/wpt/web-platform-tests/WebIDL/idlharness.any.js delete mode 100644 tests/wpt/web-platform-tests/WebIDL/idlharness.html create mode 100644 tests/wpt/web-platform-tests/clipboard-apis/async-svg-script-removal.https.html create mode 100644 tests/wpt/web-platform-tests/clipboard-apis/async-write-svg-read-svg.https.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/border-radius-012-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/border-radius-012.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/border-width-small-values-001-a.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/border-width-small-values-001-b.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/border-width-small-values-001-c.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/border-width-small-values-001-d.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/border-width-small-values-001-e.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/inline-background-rtl-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/reference/border-width-small-values-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/reference/inline-background-rtl-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/support/blue-diamond-27x27.png create mode 100644 tests/wpt/web-platform-tests/css/css-backgrounds/support/new-red-diamond-27x27.png create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-000-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-000.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-002-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-003-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-004-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-005-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-006-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-006.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-007-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/borders-007.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/break-nested-float-in-table-001-print-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/break-nested-float-in-table-001-print.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/fieldset-002-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/fieldset-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/fieldset-003-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/fieldset-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/fieldset-004-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/fieldset-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-cascade/import-conditional-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-cascade/important-transition-manual.html create mode 100644 tests/wpt/web-platform-tests/css/css-cascade/support/test-green.css create mode 100644 tests/wpt/web-platform-tests/css/css-cascade/support/test-red.css create mode 100644 tests/wpt/web-platform-tests/css/css-flexbox/flex-aspect-ratio-img-row-006.html create mode 100644 tests/wpt/web-platform-tests/css/css-flexbox/table-with-percent-intrinsic-width.html create mode 100644 tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-in-iframe-print-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-in-iframe-print.html create mode 100644 tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-print-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-print.html create mode 100644 tests/wpt/web-platform-tests/css/css-fonts/resources/markA.ttf create mode 100644 tests/wpt/web-platform-tests/css/css-fonts/resources/markB.ttf create mode 100644 tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-008-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-008.html create mode 100644 tests/wpt/web-platform-tests/css/css-images/image-orientation/image-orientation-background-position.html create mode 100644 tests/wpt/web-platform-tests/css/css-images/image-orientation/reference/image-orientation-background-position-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-lists/counter-list-item-2-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-lists/counter-list-item-2.html create mode 100644 tests/wpt/web-platform-tests/css/css-lists/counter-list-item-3-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-lists/counter-list-item-3.html create mode 100644 tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform.html create mode 100644 tests/wpt/web-platform-tests/css/css-masking/clip/clip-no-stacking-context-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-masking/clip/clip-no-stacking-context.html create mode 100644 tests/wpt/web-platform-tests/css/css-multicol/spanning-legend-000-crash.html create mode 100644 tests/wpt/web-platform-tests/css/css-multicol/spanning-legend-001-crash.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/clip-002-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/clip-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/clip-003-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/clip-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/clip-004-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/clip-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/clip-005-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/clip-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-005.html create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-absolute-large-negative-inset-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-absolute-large-negative-inset.html create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-fixed-scroll-nested-fixed-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-position/position-fixed-scroll-nested-fixed.html delete mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/file-chooser-button-001.tentative.html rename tests/wpt/web-platform-tests/css/css-pseudo/{file-chooser-button-001-notref.html => file-selector-button-001-notref.html} (100%) create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/file-selector-button-001.tentative.html rename tests/wpt/web-platform-tests/css/css-pseudo/{file-chooser-button-display-toggle-crash.tentative.html => file-selector-button-display-toggle-crash.tentative.html} (70%) create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-content-023-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-content-023.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-hyphens-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-hyphens.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing-ref-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing-ref-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-line-break-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-line-break.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-overflow-wrap.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-tab-size-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-tab-size.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-text-align-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-text-align.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-text-decoration-skip-ink-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-text-decoration-skip-ink.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-text-emphasis-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-text-emphasis.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-text-shadow-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-text-shadow.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-word-break-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-word-break.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-word-spacing-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/marker-word-spacing.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/placeholder-input-dynamic-crash.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/reference/selection-overlay-and-grammar-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/reference/selection-overlay-and-spelling-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/selection-overlay-and-grammar-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-pseudo/selection-overlay-and-spelling-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-scroll-anchoring/support/flexbox-scrolling-vertical-rl.html create mode 100644 tests/wpt/web-platform-tests/css/css-scroll-anchoring/support/scrolling-vertical-rl.html create mode 100644 tests/wpt/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-000.html create mode 100644 tests/wpt/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-001.html rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/assorted}/float-retry-push-circle.html (93%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/assorted}/float-retry-push-image.html (97%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/assorted}/float-retry-push-inset.html (93%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/assorted}/float-retry-push-polygon.html (93%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/assorted}/float-should-push.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/assorted/reference}/float-retry-push-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/assorted/reference}/float-should-push-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-001-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-002-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-001-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-002-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-003-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-004-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-005-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-006-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-007-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-008-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-009-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-010-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-011-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-border-box-border-radius-012-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-content-box-001-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-content-box-002-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-content-box-border-radius-001-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-content-box-border-radius-002-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-001-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-002-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-border-radius-001-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-border-radius-002-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-border-radius-003-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-border-radius-004-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-border-radius-005-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-border-radius-006-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-border-radius-007-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-margin-box-border-radius-008-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-padding-box-001-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-padding-box-002-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-padding-box-border-radius-001-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box/reference}/shape-outside-padding-box-border-radius-002-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-001.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-002.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-001.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-002.html (93%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-003.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-004.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-005.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-006.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-007.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-008.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-009.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-010.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-011.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-border-box-border-radius-012.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-content-box-001.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-content-box-002.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-content-box-border-radius-001.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-content-box-border-radius-002.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-001.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-002.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-border-radius-001.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-border-radius-002.html (93%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-border-radius-003.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-border-radius-004.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-border-radius-005.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-border-radius-006.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-border-radius-007.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-margin-box-border-radius-008.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-padding-box-001.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-padding-box-002.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-padding-box-border-radius-001.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/shape-box}/shape-outside-padding-box-border-radius-002.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-032-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-033-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-034-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-035-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-036-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-041-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-042-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-047-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-048-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-049-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-050-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-051-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-052-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-053-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-054-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-055-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle/reference}/shape-outside-circle-056-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-032.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-033.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-034.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-035.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-036.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-037.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-038.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-041.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-042.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-043.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-044.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-047.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-048.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-049.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-050.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-051.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-052.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-053.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-054.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-055.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/circle}/shape-outside-circle-056.html (97%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-032-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-033-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-034-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-035-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-036-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-037-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-038-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-039-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-040-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-042-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-044-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-045-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-046-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-047-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-048-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-049-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-050-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-051-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse/reference}/shape-outside-ellipse-052-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-032.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-033.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-034.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-035.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-036.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-037.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-038.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-039.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-040.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-041.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-042.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-043.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-044.html (94%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-045.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-046.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-047.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-048.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-049.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-050.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-051.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/ellipse}/shape-outside-ellipse-052.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-016-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-017-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-020-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-021-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-022-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-023-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-024-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-025-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-026-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset/reference}/shape-outside-inset-027-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-016.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-017.html (95%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-020.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-021.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-022.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-023.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-024.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-025.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-026.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/inset}/shape-outside-inset-027.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon/reference}/shape-outside-polygon-018-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon/reference}/shape-outside-polygon-019-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon/reference}/shape-outside-polygon-020-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon/reference}/shape-outside-polygon-021-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon/reference}/shape-outside-polygon-022-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon/reference}/shape-outside-polygon-023-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon/reference}/shape-outside-polygon-024-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon/reference}/shape-outside-polygon-025-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon/reference}/shape-outside-polygon-032-ref.html (100%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon}/shape-outside-polygon-018.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon}/shape-outside-polygon-019.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon}/shape-outside-polygon-020.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon}/shape-outside-polygon-021.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon}/shape-outside-polygon-022.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon}/shape-outside-polygon-023.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon}/shape-outside-polygon-024.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon}/shape-outside-polygon-025.html (96%) rename tests/wpt/web-platform-tests/css/{vendor-imports/mozilla/mozilla-central-reftests/shapes1 => css-shapes/shape-outside/supported-shapes/polygon}/shape-outside-polygon-032.html (97%) create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-001.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/block-aspect-ratio-with-margin-collapsing-002.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-011.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-012.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-013.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/flex-aspect-ratio-014.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/reference/ref-filled-green-100x20-rect.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-015.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-016.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-017.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-018.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-019.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-020.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-021.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-syntax/charset/page-windows-1252-http-windows-1251-css-utf8-bom.html create mode 100644 tests/wpt/web-platform-tests/css/css-syntax/charset/support/utf8-bom-http-windows-1251.css create mode 100644 tests/wpt/web-platform-tests/css/css-syntax/charset/support/utf8-bom-http-windows-1251.css.headers create mode 100644 tests/wpt/web-platform-tests/css/css-tables/absolute-tables-008.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-tables/absolute-tables-009.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-tables/absolute-tables-010.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-tables/absolute-tables-011.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-tables/absolute-tables-012.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/animations/tab-size-interpolation.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-002-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-integer-004-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-integer-004.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/white-space/eol-spaces-bidi-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/white-space/reference/eol-spaces-bidi-002-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ogham-001-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-transitions/changing-while-transition-004.html delete mode 100644 tests/wpt/web-platform-tests/css/css-ui/appearance-button-001-ref.html delete mode 100644 tests/wpt/web-platform-tests/css/css-ui/appearance-button-002.tentative-ref.html delete mode 100644 tests/wpt/web-platform-tests/css/css-ui/appearance-button-002.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-auto-input-non-widget-001.html delete mode 100644 tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-button-002.tentative.html create mode 100644 tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-progress-bar-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-values/viewport-units-001-print-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-values/viewport-units-001-print.html create mode 100644 tests/wpt/web-platform-tests/css/css-will-change/will-change-stacking-context-003-ref.html create mode 100644 tests/wpt/web-platform-tests/css/css-will-change/will-change-stacking-context-003.html create mode 100644 tests/wpt/web-platform-tests/css/cssom-view/client-props-root-display-none-crash.html create mode 100644 tests/wpt/web-platform-tests/css/cssom/CSSCounterStyleRule.html create mode 100644 tests/wpt/web-platform-tests/css/cssom/CSSFontFaceRule.html create mode 100644 tests/wpt/web-platform-tests/css/cssom/removerule-invalidation-crash.html create mode 100644 tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-svg-foreignObject.html delete mode 100644 tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/reftest.list delete mode 100644 tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/support/Ahem.ttf create mode 100644 tests/wpt/web-platform-tests/docs/admin/pywebsocket3.rst rename tests/wpt/web-platform-tests/{feature-policy => document-policy}/experimental-features/document-write.tentative.html (89%) rename tests/wpt/web-platform-tests/{feature-policy => document-policy}/experimental-features/resources/async-script.js (100%) rename tests/wpt/web-platform-tests/{feature-policy => document-policy}/experimental-features/resources/defer-script.js (100%) rename tests/wpt/web-platform-tests/{feature-policy/experimental-features/resources/document-write.html => document-policy/experimental-features/resources/document-write-allowed.html} (100%) create mode 100644 tests/wpt/web-platform-tests/document-policy/experimental-features/resources/document-write-disallowed.html create mode 100644 tests/wpt/web-platform-tests/document-policy/experimental-features/resources/document-write-disallowed.html.headers rename tests/wpt/web-platform-tests/{feature-policy => document-policy}/experimental-features/resources/parser-blocking-script.js (100%) rename tests/wpt/web-platform-tests/{feature-policy => document-policy}/experimental-features/resources/sync-script-test.js (100%) rename tests/wpt/web-platform-tests/{feature-policy => document-policy}/experimental-features/sync-script.tentative.https.sub.html (65%) create mode 100644 tests/wpt/web-platform-tests/document-policy/experimental-features/sync-script.tentative.https.sub.html.headers rename tests/wpt/web-platform-tests/{feature-policy/reporting/document-write-report-only.html => document-policy/reporting/document-write-report-only-tentative.html} (83%) create mode 100644 tests/wpt/web-platform-tests/document-policy/reporting/document-write-report-only-tentative.html.headers rename tests/wpt/web-platform-tests/{feature-policy/reporting/document-write-reporting.html => document-policy/reporting/document-write-reporting-tentative.html} (87%) create mode 100644 tests/wpt/web-platform-tests/document-policy/reporting/document-write-reporting-tentative.html.headers rename tests/wpt/web-platform-tests/document-policy/reporting/{unoptimized-lossy-images-reporting-onload.html => lossy-images-max-bpp-reporting-onload-tentative.html} (91%) create mode 100644 tests/wpt/web-platform-tests/document-policy/reporting/lossy-images-max-bpp-reporting-onload-tentative.html.headers rename tests/wpt/web-platform-tests/document-policy/reporting/{unoptimized-lossy-images-reporting.html => lossy-images-max-bpp-reporting-tentative.html} (92%) create mode 100644 tests/wpt/web-platform-tests/document-policy/reporting/lossy-images-max-bpp-reporting-tentative.html.headers rename tests/wpt/web-platform-tests/document-policy/reporting/{oversized-images-reporting.html => oversized-images-reporting-tentative.html} (100%) rename tests/wpt/web-platform-tests/document-policy/reporting/{oversized-images-reporting.html.headers => oversized-images-reporting-tentative.html.headers} (100%) delete mode 100644 tests/wpt/web-platform-tests/document-policy/reporting/unoptimized-lossy-images-reporting-onload.html.headers delete mode 100644 tests/wpt/web-platform-tests/document-policy/reporting/unoptimized-lossy-images-reporting.html.headers rename tests/wpt/web-platform-tests/document-policy/reporting/{unsized-media-reporting.html => unsized-media-reporting-tentative.html} (100%) rename tests/wpt/web-platform-tests/document-policy/reporting/{unsized-media-reporting.html.headers => unsized-media-reporting-tentative.html.headers} (100%) create mode 100644 tests/wpt/web-platform-tests/dom/events/Event-dispatch-click.tentative.html create mode 100644 tests/wpt/web-platform-tests/editing/other/recursive-exec-command-calls.tentative.html delete mode 100644 tests/wpt/web-platform-tests/entries-api/idlharness-manual.html create mode 100644 tests/wpt/web-platform-tests/entries-api/idlharness-manual.window.js delete mode 100644 tests/wpt/web-platform-tests/entries-api/idlharness.html create mode 100644 tests/wpt/web-platform-tests/entries-api/idlharness.window.js delete mode 100644 tests/wpt/web-platform-tests/eventsource/idlharness.html delete mode 100644 tests/wpt/web-platform-tests/feature-policy/experimental-features/sync-script.tentative.https.sub.html.headers delete mode 100644 tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html.headers delete mode 100644 tests/wpt/web-platform-tests/feature-policy/reporting/document-write-reporting.html.headers create mode 100644 tests/wpt/web-platform-tests/fetch/api/basic/request-headers-nonascii.any.js create mode 100644 tests/wpt/web-platform-tests/fetch/api/response/response-body-read-task-handling.html create mode 100644 tests/wpt/web-platform-tests/fetch/http-cache/cache-mode.html rename tests/wpt/web-platform-tests/fetch/metadata/{embed.https.sub.html => embed.https.sub.tentative.html} (92%) create mode 100644 tests/wpt/web-platform-tests/font-access/README.md create mode 100644 tests/wpt/web-platform-tests/font-access/font_access-blob.tentative.https.window.js create mode 100644 tests/wpt/web-platform-tests/font-access/font_access-enumeration.tentative.https.window.js create mode 100644 tests/wpt/web-platform-tests/font-access/resources/test-expectations.js create mode 100644 tests/wpt/web-platform-tests/font-access/resources/window-tests-blob.js create mode 100644 tests/wpt/web-platform-tests/font-access/resources/window-tests-enumeration.js create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/backplate/forced-colors-mode-backplate-11-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/backplate/forced-colors-mode-backplate-11.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-29-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-29.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-30-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-30.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-31-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-31.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-32.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-33-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-33.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-34-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-34.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-35-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-35.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-36-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-36.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-37-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-37.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-38-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-38.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-39-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-39.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/browsing-the-web/navigating-across-documents/failure-check-sequence.https.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/windows/iframe-nested-print-ref.html create mode 100644 tests/wpt/web-platform-tests/html/browsers/windows/iframe-nested-print.html delete mode 100644 tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorSpace.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html.headers create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/header-parsing.https.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-frame.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/empty-coep.py create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox-navigate.https.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox.https.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/header-parsing.https.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/javascript-url.https.html rename tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/{openee-accessed_opener-coop-ro.https.html => access-from-coop-page-to-openee_coop-ro.https.html} (95%) rename tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/{opener-accessed_openee-coop-ro.https.html => access-from-coop-page-to-opener_coop-ro.https.html} (92%) create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-from-coop-page-to-other_coop-ro.https.html rename tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/{opener-accessed_opener-coop-ro.https.html => access-to-coop-page-from-openee_coop-ro.https.html} (94%) rename tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/{openee-accessed_openee-coop-ro.https.html => access-to-coop-page-from-opener_coop-ro.https.html} (94%) create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/reporting/access-reporting/access-to-coop-page-from-other_coop-ro.https.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resource-popup.https.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-same-origin-repeated.asis create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/csp-sandbox.py create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/javascript-url-same-origin.https.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/resource-cleanup.html create mode 100644 tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/resource-popup.html create mode 100644 tests/wpt/web-platform-tests/html/dom/elements/images/bypass-cache-revalidation.html create mode 100644 tests/wpt/web-platform-tests/html/dom/elements/images/image.py create mode 100644 tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-overflow-cssomview.html create mode 100644 tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/multicol-legend-becomes-floated-crash.html create mode 100644 tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/second-legend-becomes-rendered-legend-crash.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change-ref.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/implicit-sizes-ignores-width.html delete mode 100644 tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/defaultValue-clobbering-ref.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-004-ref.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-004.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005-ref.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005.html create mode 100644 tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/pageshow-event.window.js create mode 100644 tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.tentative.https.html create mode 100644 tests/wpt/web-platform-tests/idle-detection/resources/idle-detection-helper.js rename tests/wpt/web-platform-tests/{idle-detection/idle-detection.idl => interfaces/idle-detection.tentative.idl} (100%) create mode 100644 tests/wpt/web-platform-tests/interfaces/sanitizer-api.tentative.idl create mode 100644 tests/wpt/web-platform-tests/interfaces/scroll-to-text-fragment.idl delete mode 100644 tests/wpt/web-platform-tests/interfaces/secure-contexts.idl create mode 100644 tests/wpt/web-platform-tests/interfaces/webxr-hand-input.idl create mode 100644 tests/wpt/web-platform-tests/is-input-pending/README.md create mode 100644 tests/wpt/web-platform-tests/is-input-pending/resources/blank.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/resources/input-onmessage.js create mode 100644 tests/wpt/web-platform-tests/is-input-pending/resources/pending-input-utils.js create mode 100644 tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-complex-clip.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-complex-clip.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed-2.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-none.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-overlap.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-pointer-events-none.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-transformed.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/tentative/same-origin-subframe.sub.html create mode 100644 tests/wpt/web-platform-tests/is-input-pending/tentative/toplevel.html create mode 100644 tests/wpt/web-platform-tests/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js create mode 100644 tests/wpt/web-platform-tests/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js create mode 100644 tests/wpt/web-platform-tests/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js create mode 100644 tests/wpt/web-platform-tests/js/builtins/weakrefs/holdings-multiple-values.optional.any.js create mode 100644 tests/wpt/web-platform-tests/js/builtins/weakrefs/reentrancy.optional.any.js create mode 100644 tests/wpt/web-platform-tests/js/builtins/weakrefs/resources/maybe-garbage-collect.js create mode 100644 tests/wpt/web-platform-tests/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js create mode 100644 tests/wpt/web-platform-tests/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js create mode 100644 tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-one-line.html create mode 100644 tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-lspace-rspace-ref.html create mode 100644 tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-lspace-rspace.html create mode 100644 tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-movablelimits-ref.html create mode 100644 tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-movablelimits.html rename tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/{underover-parameters-4.html => underover-parameters-4.tentative.html} (99%) create mode 100644 tests/wpt/web-platform-tests/mathml/relations/css-styling/multi-column-layout.html create mode 100644 tests/wpt/web-platform-tests/mathml/relations/html5-tree/content-editable.html create mode 100644 tests/wpt/web-platform-tests/mathml/relations/html5-tree/integration-point-5.html create mode 100644 tests/wpt/web-platform-tests/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.js create mode 100644 tests/wpt/web-platform-tests/native-io/getLength_setLength_async_basic.tentative.https.any.js create mode 100644 tests/wpt/web-platform-tests/native-io/getLength_setLength_sync_basic.tentative.https.any.js create mode 100644 tests/wpt/web-platform-tests/native-io/setLength_bounds_async.tentative.https.any.js create mode 100644 tests/wpt/web-platform-tests/native-io/setLength_bounds_sync.tentative.https.any.js create mode 100644 tests/wpt/web-platform-tests/native-io/trustworthy_origin_failure.tentative.http.any.js create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-no.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-no.https.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-yes.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-yes.https.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-no.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-yes.https.html rename tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/{data-url.https.html.headers => data-to-javascript-yes.https.html.headers} (100%) create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-no.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-yes.https.html rename tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/{sandboxed-iframe.sub.https.html.headers => data-url-yes.https.html.headers} (100%) delete mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-no.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-yes.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-yes.https.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/data-to-javascript-test.mjs create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/data-url-test.mjs create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/helpers.mjs create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/javascript-url-test.mjs create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/sandboxed-iframe-test.sub.mjs create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/sandboxed-same-origin-iframe-test.sub.mjs create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-no.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-yes.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-yes.https.html.headers delete mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-no.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-port.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-same.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-subdomain.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-port.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-port.sub.https.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-same.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-same.sub.https.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-subdomain.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-subdomain.sub.https.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-port.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-port.sub.https.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-same.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-same.sub.https.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-subdomain.sub.https.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-subdomain.sub.https.html.headers rename tests/wpt/web-platform-tests/origin-isolation/resources/{child-frame-script.mjs => send-header-page-script.mjs} (76%) rename tests/wpt/web-platform-tests/origin-isolation/resources/{child-frame-script.mjs.headers => send-header-page-script.mjs.headers} (100%) create mode 100644 tests/wpt/web-platform-tests/paint-timing/fcp-only/fcp-iframe.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerevent_mouse_pointercapture_inactivate_pointer.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-adjustment_click_target.html create mode 100644 tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_mouse_pointercapture_inactivate_pointer-iframe.html create mode 100644 tests/wpt/web-platform-tests/portals/resources/portal-host-post-message-x-origin.html rename tests/wpt/web-platform-tests/portals/resources/{portal-host-post-message.sub.html => portal-host-post-message.html} (100%) create mode 100644 tests/wpt/web-platform-tests/portals/resources/portal-post-message-x-origin-portal.html create mode 100644 tests/wpt/web-platform-tests/portals/resources/stash-utils.sub.js create mode 100644 tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload-style.html create mode 100644 tests/wpt/web-platform-tests/raw-sockets/META.yml create mode 100644 tests/wpt/web-platform-tests/raw-sockets/README.md create mode 100644 tests/wpt/web-platform-tests/raw-sockets/open-consume-activation.https.html create mode 100644 tests/wpt/web-platform-tests/raw-sockets/open-securecontext.http.html create mode 100644 tests/wpt/web-platform-tests/raw-sockets/open-without-user-gesture.https.html create mode 100644 tests/wpt/web-platform-tests/raw-sockets/remotePort-required.https.html delete mode 100644 tests/wpt/web-platform-tests/resources/chromium/image_capture-mojom.js.headers delete mode 100644 tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js rename tests/wpt/web-platform-tests/{idle-detection/mock.js => resources/chromium/mock-idle-detection.js} (100%) delete mode 100644 tests/wpt/web-platform-tests/resources/chromium/mojo_bindings.js delete mode 100644 tests/wpt/web-platform-tests/resources/chromium/mojo_bindings.js.headers delete mode 100644 tests/wpt/web-platform-tests/resources/chromium/mojo_web_test_helper_test.mojom.js delete mode 100644 tests/wpt/web-platform-tests/resources/chromium/mojo_web_test_helper_test.mojom.js.headers delete mode 100644 tests/wpt/web-platform-tests/resources/chromium/sensor.mojom.js delete mode 100644 tests/wpt/web-platform-tests/resources/chromium/sensor_provider.mojom.js create mode 100644 tests/wpt/web-platform-tests/sanitizer-api/META.yml create mode 100644 tests/wpt/web-platform-tests/sanitizer-api/idlharness.tentative.window.js create mode 100644 tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.tentative.html create mode 100644 tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.tentative.html create mode 100644 tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitizeToString.tentative.html create mode 100644 tests/wpt/web-platform-tests/sanitizer-api/support/testcases.sub.js create mode 100644 tests/wpt/web-platform-tests/screen-wake-lock/wakelock-released.https.html create mode 100644 tests/wpt/web-platform-tests/scroll-animations/css/animation-shorthand.html create mode 100644 tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-none.html create mode 100644 tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-element-offsets.html create mode 100644 tests/wpt/web-platform-tests/scroll-animations/setting-timeline.tentative.html create mode 100644 tests/wpt/web-platform-tests/scroll-to-text-fragment/client-redirect.html create mode 100644 tests/wpt/web-platform-tests/scroll-to-text-fragment/idlharness.window.js create mode 100644 tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects-target.html create mode 100644 tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects-target2.html create mode 100644 tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects.html delete mode 100644 tests/wpt/web-platform-tests/secure-contexts/idlharness.any.js create mode 100644 tests/wpt/web-platform-tests/selection/contenteditable/collapse.html create mode 100644 tests/wpt/web-platform-tests/selection/contenteditable/modify.tentative.html create mode 100644 tests/wpt/web-platform-tests/storage/quotachange-in-detached-iframe.tentative.https.html create mode 100644 tests/wpt/web-platform-tests/streams/transferable/deserialize-error.window.js create mode 100644 tests/wpt/web-platform-tests/streams/transferable/resources/create-wasm-module.js create mode 100644 tests/wpt/web-platform-tests/streams/transferable/resources/deserialize-error-frame.html create mode 100644 tests/wpt/web-platform-tests/tools/ci/regen_certs.py create mode 100644 tests/wpt/web-platform-tests/tools/third_party/pywebsocket3/.gitignore create mode 100644 tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_spki_certs.py create mode 100644 tests/wpt/web-platform-tests/wasm/jsapi/memory/constructor-types.tentative.any.js create mode 100644 tests/wpt/web-platform-tests/wasm/jsapi/table/constructor-types.tentative.any.js create mode 100644 tests/wpt/web-platform-tests/web-bundle/resources/dynamic/__dir__.headers create mode 100644 tests/wpt/web-platform-tests/web-bundle/resources/dynamic/classic_script.js create mode 100644 tests/wpt/web-platform-tests/web-bundle/resources/dynamic1/classic_script.js create mode 100644 tests/wpt/web-platform-tests/web-bundle/resources/dynamic2/classic_script.js create mode 100644 tests/wpt/web-platform-tests/web-bundle/resources/wbn/dynamic1-crossorigin.wbn create mode 100644 tests/wpt/web-platform-tests/web-share/feature-policy-listed.html create mode 100644 tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/extended-audioworkletnode-with-parameters.https.html create mode 100644 tests/wpt/web-platform-tests/webaudio/the-audio-api/the-delaynode-interface/delay-test.html create mode 100644 tests/wpt/web-platform-tests/webaudio/the-audio-api/the-oscillatornode-interface/detune-overflow.html create mode 100644 tests/wpt/web-platform-tests/webcodecs/audio-decoder.html create mode 100644 tests/wpt/web-platform-tests/webcodecs/h264.mp4 create mode 100644 tests/wpt/web-platform-tests/webcodecs/utils.js create mode 100644 tests/wpt/web-platform-tests/webcodecs/video-decoder.html create mode 100644 tests/wpt/web-platform-tests/webcodecs/video-frame-serialization.html create mode 100644 tests/wpt/web-platform-tests/webcodecs/video-frame.html create mode 100644 tests/wpt/web-platform-tests/webcodecs/vp9.mp4 create mode 100644 tests/wpt/web-platform-tests/webdriver/tests/get_current_url/iframe.py create mode 100644 tests/wpt/web-platform-tests/webdriver/tests/get_title/iframe.py create mode 100644 tests/wpt/web-platform-tests/webrtc-insertable-streams/RTCPeerConnection-insertable-streams-audio.https.html create mode 100644 tests/wpt/web-platform-tests/webrtc-insertable-streams/RTCPeerConnection-insertable-streams-simulcast.https.html create mode 100644 tests/wpt/web-platform-tests/webrtc-insertable-streams/RTCPeerConnection-insertable-streams.https.html create mode 100644 tests/wpt/web-platform-tests/webrtc-insertable-streams/RTCPeerConnection-insertable-streams.js create mode 100644 tests/wpt/web-platform-tests/webrtc-insertable-streams/RTCPeerConnection-sender-worker-single-frame.js create mode 100644 tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-candidate-in-sdp.https.html create mode 100644 tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-description-attributes-timing.https.html create mode 100644 tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-helper.js create mode 100644 tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare-linear.https.html create mode 100644 tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-perfect-negotiation-stress-glare.https.html create mode 100755 tests/wpt/web-platform-tests/websockets/handlers/stash_responder_blocking_wsh.py delete mode 100644 tests/wpt/web-platform-tests/webstorage/idlharness.window.js create mode 100644 tests/wpt/web-platform-tests/webxr/hand-input/idlharness.https.window.js delete mode 100644 tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/exception-in-onerror.js create mode 100644 tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/message-classic-DOMException.html create mode 100644 tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/message-classic-Error.html create mode 100644 tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/message-helper.js create mode 100644 tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/message-module-DOMException.html create mode 100644 tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/message-module-Error.html create mode 100644 tests/wpt/web-platform-tests/workers/interfaces/WorkerGlobalScope/onerror/throw.js create mode 100644 tests/wpt/web-platform-tests/x-frame-options/deny.html delete mode 100644 tests/wpt/web-platform-tests/x-frame-options/deny.sub.html create mode 100644 tests/wpt/web-platform-tests/x-frame-options/get-decode-split.html create mode 100644 tests/wpt/web-platform-tests/x-frame-options/invalid.html delete mode 100644 tests/wpt/web-platform-tests/x-frame-options/invalid.sub.html create mode 100644 tests/wpt/web-platform-tests/x-frame-options/multiple.html delete mode 100644 tests/wpt/web-platform-tests/x-frame-options/multiple.sub.html create mode 100644 tests/wpt/web-platform-tests/x-frame-options/redirect.html delete mode 100644 tests/wpt/web-platform-tests/x-frame-options/redirect.sub.html delete mode 100644 tests/wpt/web-platform-tests/x-frame-options/support/helper.js create mode 100644 tests/wpt/web-platform-tests/x-frame-options/support/helper.sub.js diff --git a/tests/wpt/metadata-layout-2020/FileAPI/file/File-constructor.html.ini b/tests/wpt/metadata-layout-2020/FileAPI/file/File-constructor.html.ini new file mode 100644 index 00000000000..5cd88706bde --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/file/File-constructor.html.ini @@ -0,0 +1,4 @@ +[File-constructor.html] + [No replacement when using special character in fileName] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini index 3605e8f3fc9..76b44d9e9cf 100644 --- a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -4,7 +4,7 @@ expected: TIMEOUT [Opening a blob URL in a new window immediately before revoking it works.] - expected: TIMEOUT + expected: FAIL [Fetching a blob URL immediately before revoking it works in an iframe.] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini deleted file mode 100644 index f64b45fea6b..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-002.html] - [Hit test float] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-small-values-001-a.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-small-values-001-a.html.ini new file mode 100644 index 00000000000..17392520cdd --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-small-values-001-a.html.ini @@ -0,0 +1,2 @@ +[border-width-small-values-001-a.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-small-values-001-b.html.ini b/tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-small-values-001-b.html.ini new file mode 100644 index 00000000000..4fb4cdce41d --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-backgrounds/border-width-small-values-001-b.html.ini @@ -0,0 +1,2 @@ +[border-width-small-values-001-b.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-aspect-ratio-img-row-006.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-aspect-ratio-img-row-006.html.ini new file mode 100644 index 00000000000..3fb853b53f8 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/flex-aspect-ratio-img-row-006.html.ini @@ -0,0 +1,2 @@ +[flex-aspect-ratio-img-row-006.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/table-with-percent-intrinsic-width.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/table-with-percent-intrinsic-width.html.ini new file mode 100644 index 00000000000..3a555b0fc4a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/table-with-percent-intrinsic-width.html.ini @@ -0,0 +1,7 @@ +[table-with-percent-intrinsic-width.html] + [table 2] + expected: FAIL + + [table 1] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-images/image-orientation/image-orientation-background-position.html.ini b/tests/wpt/metadata-layout-2020/css/css-images/image-orientation/image-orientation-background-position.html.ini new file mode 100644 index 00000000000..d99383b3d84 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-images/image-orientation/image-orientation-background-position.html.ini @@ -0,0 +1,2 @@ +[image-orientation-background-position.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/animations/tab-size-interpolation.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/animations/tab-size-interpolation.html.ini new file mode 100644 index 00000000000..f0166fb6c37 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/animations/tab-size-interpolation.html.ini @@ -0,0 +1,589 @@ +[tab-size-interpolation.html] + [CSS Transitions: property from neutral to [10\] at (0.3) should be [6.5\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions: property from neutral to [10\] at (0) should be [5\]] + expected: FAIL + + [CSS Animations: property from neutral to [10\] at (0.6) should be [8\]] + expected: FAIL + + [CSS Transitions: property from [1\] to [10px\] at (0.3) should be [10px\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [10\] at (0.6) should be [9.2\]] + expected: FAIL + + [Web Animations: property from [initial\] to [10\] at (-0.3) should be [7.4\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [10\] at (0.6) should be [14\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [10\] at (-0.3) should be [7.4\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [10\] at (0.6) should be [8\]] + expected: FAIL + + [CSS Transitions: property from [1\] to [10px\] at (-0.3) should be [10px\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [10\] at (0.3) should be [17\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [10\] at (0) should be [20\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [10\] at (0.6) should be [14\]] + expected: FAIL + + [Web Animations: property from [0\] to [10\] at (0.6) should be [6\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [10\] at (1.5) should be [5\]] + expected: FAIL + + [CSS Transitions: property from [1\] to [10px\] at (0.5) should be [10px\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [10\] at (-0.3) should be [23\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [10\] at (0.3) should be [17\]] + expected: FAIL + + [CSS Transitions: property from [1\] to [10px\] at (1.5) should be [10px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [10\] at (0.3) should be [17\]] + expected: FAIL + + [Web Animations: property from [1\] to [10px\] at (1) should be [10px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [4\] to [10\] at (0) should be [4\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [10\] at (1) should be [10\]] + expected: FAIL + + [Web Animations: property from [0\] to [10\] at (0) should be [0\]] + expected: FAIL + + [CSS Animations: property from neutral to [10\] at (0.3) should be [6.5\]] + expected: FAIL + + [Web Animations: property from [1px\] to [10px\] at (1.5) should be [14.5px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [10\] at (0.6) should be [14\]] + expected: FAIL + + [CSS Transitions: property from [1px\] to [10px\] at (0) should be [1px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [10\] at (-0.3) should be [23\]] + expected: FAIL + + [CSS Animations: property from [1px\] to [10px\] at (1.5) should be [14.5px\]] + expected: FAIL + + [CSS Animations: property from neutral to [10\] at (1.5) should be [12.5\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1px\] to [10px\] at (1.5) should be [14.5px\]] + expected: FAIL + + [Web Animations: property from neutral to [10\] at (1.5) should be [12.5\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [10\] at (-0.3) should be [7.4\]] + expected: FAIL + + [CSS Animations: property from [0\] to [10\] at (1.5) should be [15\]] + expected: FAIL + + [CSS Animations: property from [4\] to [10\] at (0.3) should be [5.8\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1\] to [10px\] at (1) should be [10px\]] + expected: FAIL + + [CSS Animations: property from [1px\] to [10px\] at (0) should be [1px\]] + expected: FAIL + + [Web Animations: property from [4\] to [10\] at (0) should be [4\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1px\] to [10px\] at (-0.3) should be [0px\]] + expected: FAIL + + [Web Animations: property from [unset\] to [10\] at (0.6) should be [14\]] + expected: FAIL + + [Web Animations: property from [1px\] to [10px\] at (-0.3) should be [0px\]] + expected: FAIL + + [CSS Animations: property from [4\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1px\] to [10px\] at (0.6) should be [6.4px\]] + expected: FAIL + + [CSS Animations: property from [0\] to [10\] at (0) should be [0\]] + expected: FAIL + + [Web Animations: property from [0\] to [10\] at (0.3) should be [3\]] + expected: FAIL + + [CSS Animations: property from [1\] to [10px\] at (1.5) should be [10px\]] + expected: FAIL + + [CSS Animations: property from [0\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [10\] at (1.5) should be [5\]] + expected: FAIL + + [CSS Transitions: property from [4\] to [10\] at (0) should be [4\]] + expected: FAIL + + [CSS Animations: property from [0\] to [10\] at (0.6) should be [6\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [10\] at (0.3) should be [8.6\]] + expected: FAIL + + [Web Animations: property from [0\] to [10\] at (1.5) should be [15\]] + expected: FAIL + + [Web Animations: property from [1px\] to [10px\] at (0.6) should be [6.4px\]] + expected: FAIL + + [CSS Animations: property from [1\] to [10px\] at (0.6) should be [10px\]] + expected: FAIL + + [CSS Transitions: property from [4\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Animations: property from neutral to [10\] at (0) should be [5\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [10\] at (1.5) should be [11\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [10\] at (0) should be [8\]] + expected: FAIL + + [Web Animations: property from neutral to [10\] at (0.3) should be [6.5\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [10\] at (-0.3) should be [23\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [4\] to [10\] at (0.3) should be [5.8\]] + expected: FAIL + + [CSS Animations: property from [0\] to [10\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [10\] at (0) should be [8\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [10\] at (0) should be [20\]] + expected: FAIL + + [CSS Animations: property from [1px\] to [10px\] at (-0.3) should be [0px\]] + expected: FAIL + + [CSS Animations: property from [1px\] to [10px\] at (0.3) should be [3.7px\]] + expected: FAIL + + [CSS Transitions: property from [1\] to [10px\] at (0.6) should be [10px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1px\] to [10px\] at (1) should be [10px\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [10\] at (0.6) should be [14\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [10\] at (0) should be [20\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [10\] at (1.5) should be [5\]] + expected: FAIL + + [Web Animations: property from [4\] to [10\] at (-0.3) should be [2.2\]] + expected: FAIL + + [CSS Transitions: property from [0\] to [10\] at (0.6) should be [6\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1px\] to [10px\] at (0) should be [1px\]] + expected: FAIL + + [Web Animations: property from [1\] to [10px\] at (0.3) should be [1\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [10\] at (1.5) should be [5\]] + expected: FAIL + + [Web Animations: property from [0\] to [10\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Animations: property from [1px\] to [10px\] at (0.6) should be [6.4px\]] + expected: FAIL + + [CSS Transitions: property from [0\] to [10\] at (0) should be [0\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [10\] at (0.3) should be [17\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0\] to [10\] at (1.5) should be [15\]] + expected: FAIL + + [CSS Transitions: property from [1px\] to [10px\] at (-0.3) should be [0px\]] + expected: FAIL + + [CSS Animations: property from [1\] to [10px\] at (0) should be [1\]] + expected: FAIL + + [Web Animations: property from [unset\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Animations: property from [1\] to [10px\] at (0.3) should be [1\]] + expected: FAIL + + [Web Animations: property from neutral to [10\] at (0) should be [5\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [4\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Animations: property from [1px\] to [10px\] at (1) should be [10px\]] + expected: FAIL + + [CSS Animations: property from [1\] to [10px\] at (-0.3) should be [1\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [10\] at (1.5) should be [5\]] + expected: FAIL + + [Web Animations: property from [initial\] to [10\] at (0.3) should be [8.6\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [10\] at (1.5) should be [11\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [10\] at (1.5) should be [5\]] + expected: FAIL + + [Web Animations: property from [1\] to [10px\] at (-0.3) should be [1\]] + expected: FAIL + + [Web Animations: property from neutral to [10\] at (-0.3) should be [3.5\]] + expected: FAIL + + [CSS Animations: property from [4\] to [10\] at (0) should be [4\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1\] to [10px\] at (-0.3) should be [10px\]] + expected: FAIL + + [CSS Animations: property from [4\] to [10\] at (1.5) should be [13\]] + expected: FAIL + + [CSS Animations: property from [1\] to [10px\] at (0.5) should be [10px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [10\] at (1.5) should be [5\]] + expected: FAIL + + [CSS Transitions: property from [1px\] to [10px\] at (1.5) should be [14.5px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [10\] at (0) should be [5\]] + expected: FAIL + + [CSS Transitions: property from [4\] to [10\] at (0.6) should be [7.6\]] + expected: FAIL + + [CSS Animations: property from neutral to [10\] at (-0.3) should be [3.5\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [10\] at (0.3) should be [17\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [10\] at (-0.3) should be [7.4\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [10\] at (-0.3) should be [23\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions: property from [0\] to [10\] at (0.3) should be [3\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [10\] at (0.3) should be [8.6\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [4\] to [10\] at (-0.3) should be [2.2\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [10\] at (-0.3) should be [23\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [10\] at (0) should be [20\]] + expected: FAIL + + [Web Animations: property from [inherit\] to [10\] at (0.6) should be [14\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [10\] at (1.5) should be [12.5\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [10\] at (0) should be [20\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [10\] at (1.5) should be [11\]] + expected: FAIL + + [Web Animations: property from [1px\] to [10px\] at (0.3) should be [3.7px\]] + expected: FAIL + + [CSS Transitions: property from [inherit\] to [10\] at (-0.3) should be [23\]] + expected: FAIL + + [Web Animations: property from [1\] to [10px\] at (0) should be [1\]] + expected: FAIL + + [CSS Transitions: property from [1\] to [10px\] at (1) should be [10px\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [10\] at (0) should be [20\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [10\] at (0.3) should be [17\]] + expected: FAIL + + [Web Animations: property from [initial\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions: property from [initial\] to [10\] at (0.6) should be [9.2\]] + expected: FAIL + + [CSS Animations: property from neutral to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1\] to [10px\] at (0.5) should be [10px\]] + expected: FAIL + + [Web Animations: property from [1px\] to [10px\] at (0) should be [1px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0\] to [10\] at (0.3) should be [3\]] + expected: FAIL + + [CSS Animations: property from [0\] to [10\] at (0.3) should be [3\]] + expected: FAIL + + [Web Animations: property from [unset\] to [10\] at (0) should be [20\]] + expected: FAIL + + [CSS Transitions: property from neutral to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Animations: property from [1\] to [10px\] at (1) should be [10px\]] + expected: FAIL + + [CSS Transitions: property from [0\] to [10\] at (1.5) should be [15\]] + expected: FAIL + + [Web Animations: property from [initial\] to [10\] at (1.5) should be [11\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1\] to [10px\] at (0.3) should be [10px\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [10\] at (0.6) should be [9.2\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0\] to [10\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Transitions: property from [0\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [10\] at (0.6) should be [14\]] + expected: FAIL + + [CSS Animations: property from [4\] to [10\] at (-0.3) should be [2.2\]] + expected: FAIL + + [CSS Transitions: property from [4\] to [10\] at (0.3) should be [5.8\]] + expected: FAIL + + [Web Animations: property from [1\] to [10px\] at (0.5) should be [10px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1px\] to [10px\] at (0.3) should be [3.7px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1\] to [10px\] at (0) should be [10px\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [10\] at (0.3) should be [17\]] + expected: FAIL + + [Web Animations: property from [4\] to [10\] at (1.5) should be [13\]] + expected: FAIL + + [CSS Transitions: property from [4\] to [10\] at (-0.3) should be [2.2\]] + expected: FAIL + + [Web Animations: property from [unset\] to [10\] at (-0.3) should be [23\]] + expected: FAIL + + [CSS Transitions: property from [1px\] to [10px\] at (0.6) should be [6.4px\]] + expected: FAIL + + [CSS Transitions: property from [1\] to [10px\] at (0) should be [10px\]] + expected: FAIL + + [CSS Transitions: property from neutral to [10\] at (0.6) should be [8\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [4\] to [10\] at (0.6) should be [7.6\]] + expected: FAIL + + [Web Animations: property from [1px\] to [10px\] at (1) should be [10px\]] + expected: FAIL + + [Web Animations: property from [1\] to [10px\] at (0.6) should be [10px\]] + expected: FAIL + + [Web Animations: property from [initial\] to [10\] at (0) should be [8\]] + expected: FAIL + + [Web Animations: property from [1\] to [10px\] at (1.5) should be [10px\]] + expected: FAIL + + [CSS Transitions: property from [0\] to [10\] at (-0.3) should be [0\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1\] to [10px\] at (0.6) should be [10px\]] + expected: FAIL + + [Web Animations: property from [4\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions: property from [4\] to [10\] at (1.5) should be [13\]] + expected: FAIL + + [Web Animations: property from [unset\] to [10\] at (1.5) should be [5\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0\] to [10\] at (0.6) should be [6\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [1\] to [10px\] at (1.5) should be [10px\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [initial\] to [10\] at (0) should be [8\]] + expected: FAIL + + [CSS Animations: property from [unset\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [unset\] to [10\] at (-0.3) should be [23\]] + expected: FAIL + + [CSS Transitions: property from [unset\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Animations: property from [initial\] to [10\] at (0.3) should be [8.6\]] + expected: FAIL + + [CSS Transitions: property from [1px\] to [10px\] at (0.3) should be [3.7px\]] + expected: FAIL + + [Web Animations: property from [4\] to [10\] at (0.6) should be [7.6\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [0\] to [10\] at (0) should be [0\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [inherit\] to [10\] at (0.3) should be [17\]] + expected: FAIL + + [CSS Animations: property from [4\] to [10\] at (0.6) should be [7.6\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [10\] at (0) should be [20\]] + expected: FAIL + + [CSS Transitions: property from neutral to [10\] at (-0.3) should be [3.5\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [10\] at (0.3) should be [6.5\]] + expected: FAIL + + [Web Animations: property from neutral to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Transitions: property from [1px\] to [10px\] at (1) should be [10px\]] + expected: FAIL + + [Web Animations: property from [4\] to [10\] at (0.3) should be [5.8\]] + expected: FAIL + + [CSS Transitions with transition: all: property from neutral to [10\] at (-0.3) should be [3.5\]] + expected: FAIL + + [CSS Transitions with transition: all: property from [4\] to [10\] at (1.5) should be [13\]] + expected: FAIL + + [Web Animations: property from [initial\] to [10\] at (0.6) should be [9.2\]] + expected: FAIL + + [Web Animations: property from [0\] to [10\] at (1) should be [10\]] + expected: FAIL + + [CSS Animations: property from [inherit\] to [10\] at (0.6) should be [14\]] + expected: FAIL + + [Web Animations: property from neutral to [10\] at (0.6) should be [8\]] + expected: FAIL + + [CSS Transitions: property from neutral to [10\] at (1.5) should be [12.5\]] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-inline-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-inline-001.html.ini new file mode 100644 index 00000000000..1d1532d3f05 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-inline-001.html.ini @@ -0,0 +1,2 @@ +[tab-size-inline-001.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-inline-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-inline-002.html.ini new file mode 100644 index 00000000000..2c86079710a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-inline-002.html.ini @@ -0,0 +1,2 @@ +[tab-size-inline-002.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-integer-004.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-integer-004.html.ini new file mode 100644 index 00000000000..6fa97c35fcd --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/tab-size/tab-size-integer-004.html.ini @@ -0,0 +1,2 @@ +[tab-size-integer-004.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/white-space/eol-spaces-bidi-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/white-space/eol-spaces-bidi-002.html.ini new file mode 100644 index 00000000000..f66d7ce5370 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/white-space/eol-spaces-bidi-002.html.ini @@ -0,0 +1,2 @@ +[eol-spaces-bidi-002.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-001.html.ini new file mode 100644 index 00000000000..dd10c6e6aa9 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-001.html.ini @@ -0,0 +1,2 @@ +[trailing-ogham-001.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-002.html.ini new file mode 100644 index 00000000000..571770b0949 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-002.html.ini @@ -0,0 +1,2 @@ +[trailing-ogham-002.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-003.html.ini new file mode 100644 index 00000000000..3a948541d64 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-text/white-space/trailing-ogham-003.html.ini @@ -0,0 +1,2 @@ +[trailing-ogham-003.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini deleted file mode 100644 index 4c79907309b..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[CaretPosition-001.html] - [Element at (400, 100)] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini deleted file mode 100644 index e38782d8c85..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[elementFromPoint-001.html] - [CSSOM View - 5 - extensions to the Document interface] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini index 171592fc08f..6ef8bb1049f 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini @@ -2,3 +2,6 @@ [elementsFromPoint on the root document for points in iframe elements] expected: FAIL + [elementsFromPoint on inner documents] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini new file mode 100644 index 00000000000..e181af5397f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini @@ -0,0 +1,4 @@ +[elementsFromPoint-invalid-cases.html] + [The root element is the last element returned for otherwise empty queries within the viewport] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/matchMedia-display-none-iframe.html.ini new file mode 100644 index 00000000000..e6e1f29e274 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/matchMedia-display-none-iframe.html.ini @@ -0,0 +1,2 @@ +[matchMedia-display-none-iframe.html] + expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/cssom/CSSCounterStyleRule.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/CSSCounterStyleRule.html.ini new file mode 100644 index 00000000000..d631e397542 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/CSSCounterStyleRule.html.ini @@ -0,0 +1,4 @@ +[CSSCounterStyleRule.html] + [CSSCounterStyleRule.cssText doesn't serialize with newlines] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom/CSSFontFaceRule.html.ini b/tests/wpt/metadata-layout-2020/css/cssom/CSSFontFaceRule.html.ini new file mode 100644 index 00000000000..ef2b41ef6d4 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom/CSSFontFaceRule.html.ini @@ -0,0 +1,4 @@ +[CSSFontFaceRule.html] + [CSSFontFaceRule.cssText doesn't serialize with newlines] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/filter-effects/backdrop-filter-svg-foreignObject.html.ini b/tests/wpt/metadata-layout-2020/css/filter-effects/backdrop-filter-svg-foreignObject.html.ini new file mode 100644 index 00000000000..e9bf55ee134 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/filter-effects/backdrop-filter-svg-foreignObject.html.ini @@ -0,0 +1,2 @@ +[backdrop-filter-svg-foreignObject.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-contrast.html.ini b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-contrast.html.ini index 691c5bc64c7..1c19177769f 100644 --- a/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-contrast.html.ini +++ b/tests/wpt/metadata-layout-2020/css/mediaqueries/prefers-contrast.html.ini @@ -32,3 +32,15 @@ [Should be parseable in JS: '(prefers-contrast: high)'] expected: FAIL + [Should be parseable in a CSS stylesheet: '(prefers-contrast: more)'] + expected: FAIL + + [Should be parseable in JS: '(prefers-contrast: less)'] + expected: FAIL + + [Should be parseable in a CSS stylesheet: '(prefers-contrast: less)'] + expected: FAIL + + [Should be parseable in JS: '(prefers-contrast: more)'] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/custom-elements/CustomElementRegistry.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/CustomElementRegistry.html.ini new file mode 100644 index 00000000000..6d26e8b34bf --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/CustomElementRegistry.html.ini @@ -0,0 +1,49 @@ +[CustomElementRegistry.html] + [customElements.define must get "observedAttributes" property on the constructor prototype when "attributeChangedCallback" is present] + expected: FAIL + + [customElements.define must rethrow an exception thrown while getting formAssociated on the constructor prototype] + expected: FAIL + + [customElements.define must rethrow an exception thrown while getting additional formAssociated callbacks on the constructor prototype] + expected: FAIL + + [A promise returned by customElements.whenDefined must be resolved by "define"] + expected: FAIL + + [customElements.define must rethrow an exception thrown while retrieving Symbol.iterator on disabledFeatures] + expected: FAIL + + [customElements.whenDefined must return a new resolved promise each time invoked when the registry contains the entry with the given name] + expected: FAIL + + [customElements.define must upgrade elements in the shadow-including tree order] + expected: FAIL + + [A promise returned by customElements.whenDefined must be resolved with the defined class once such class is defined] + expected: FAIL + + [customElements.whenDefined must return a resolved promise when the registry contains the entry with the given name] + expected: FAIL + + [customElements.define must get four additional callbacks on the prototype if formAssociated is converted to true] + expected: FAIL + + [customElements.define must rethrow an exception thrown while getting disabledFeatures on the constructor prototype] + expected: FAIL + + [customElements.define must rethrow an exception thrown while iterating over disabledFeatures to sequence] + expected: FAIL + + [A promise returned by customElements.whenDefined must be resolved with the defined class] + expected: FAIL + + [customElements.define must get "prototype", "disabledFeatures", and "formAssociated" property of the constructor] + expected: FAIL + + [customElements.define must rethrow an exception thrown while converting the value of disabledFeatures to sequence] + expected: FAIL + + [customElements.define must not throw when defining another custom element in a different global object during Get(constructor, "prototype")] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/dom/events/Event-dispatch-click.html.ini b/tests/wpt/metadata-layout-2020/dom/events/Event-dispatch-click.html.ini index 43ff48a458a..0a32f1b8c1c 100644 --- a/tests/wpt/metadata-layout-2020/dom/events/Event-dispatch-click.html.ini +++ b/tests/wpt/metadata-layout-2020/dom/events/Event-dispatch-click.html.ini @@ -8,3 +8,9 @@ [disabled checkbox should be checked from dispatchEvent(new MouseEvent("click"))] expected: FAIL + [disabled radio should get legacy-canceled-activation behavior] + expected: FAIL + + [disabled checkbox should get legacy-canceled-activation behavior] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/api/request/request-structure.html.ini b/tests/wpt/metadata-layout-2020/fetch/api/request/request-structure.html.ini new file mode 100644 index 00000000000..d90b69a1a99 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/request/request-structure.html.ini @@ -0,0 +1,7 @@ +[request-structure.html] + [Check isReloadNavigation attribute] + expected: FAIL + + [Check isHistoryNavigation attribute] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index 1ef70aa9010..449b7d8c20f 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini @@ -315,18 +315,27 @@ [ + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-in-iframe-print.html b/tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-in-iframe-print.html new file mode 100644 index 00000000000..0cd7c4a9bcd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-in-iframe-print.html @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-print-ref.html b/tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-print-ref.html new file mode 100644 index 00000000000..28a92a86dca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-print-ref.html @@ -0,0 +1,23 @@ + + + + + + + + + +

B

+ + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-print.html b/tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-print.html new file mode 100644 index 00000000000..5d23073d8fc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-fonts/downloadable-font-print.html @@ -0,0 +1,25 @@ + + + + + + + + + + + +

A

+ + + diff --git a/tests/wpt/web-platform-tests/css/css-fonts/resources/markA.ttf b/tests/wpt/web-platform-tests/css/css-fonts/resources/markA.ttf new file mode 100644 index 0000000000000000000000000000000000000000..353e7ac3328297b91844430dbd6d93ad9d25779f GIT binary patch literal 1568 zcmdT^OKTKC5dL}|o2c;-h+r^>UKCB#tg{o;AQ9B);)BIk2vHCnH=Erho6IuVXd);c z)PsoR+C>}&FUVaWO$a_6fONn;!^*Kpk` zcq5fCWG2`@sMib; zqyCV3Q`ygX=)ol8Tc|e-d1DnE!Y;0NQkTQtQ2yA{(`&hYA26CL{zx@^2G(l7=K2<> z-pKb_8^4@c+4T*}%+IvoUC-m|HJJ>j>@njB^?De}N@9%hB%H!2Th$4BOlMMXfoyHD z(V)5|sYs!1yOGis%larLU~}n)&VDnJ;serx-UjR_QaP(SYjkvAe?R9TvB#8QCr&ZC zpNp}N&Lts48A%l)vh1E+u~Oxwaw=|#{r6E*ku9*GW{{v1+??4tDMT{-6uyZ4X%dOr zW>A&ZPK8ht^DUOXVEjv}`}2R3zSr0ke;J-alIOC?m}K*HNKFfD?V72xFy~Gu?Dt(W zra_2lQ<-gLo~cWSA6+v%!a292G1<7Wqj6nQEcyKMr7`()AZhTLn&^*jpUSz6`L`uk z*LYsc|J-L@{eItW67#dOzurWwk97s^)+V-@H=Z*g3EsDf7#qxZC&ngg{~BWpwvaKl zu}U0>af0@|x-HfcX6hwJSYRox#@N6L+>Wt{y{sYfv9Of?;0W80Vnd7*w4X#bd{i)w z03{SqM3uL$6*;s~x^Vb)qFp1UNo47Nk-lYq9(5HTFoXK_7+oS72D<&qcu*=7tFkrM zCSAwrYgnZ9 z0Y>8Pq&}Cl-dCNFZk2Xtkq0=bAF^e(RdM8 zY2T;aT=X*@`Y^-%R@#jt-b4w;}%?1&o%GKUNN(;xyNP#ra)O zy>Z;$xa!l{HCZvi{!q zy4qM0OWzNfSH9l0o5j+L7e8KChu+oIxKlf^ofwF);C-8pu)&JAB5acT=LlP{g^aL` zwc<#GWAta$ZLu1-LO(|p3#`DE2pd?9n-MnAO%Bx<3oG~qSFsH#wnjKc|7rBVM+p@K zC?JPC%Di=L$Y49Q3x`h!+BH&^M4IuFj4kr*jQo?&=_AlWdi6?IGgtjQezktdR PD)i0gAB{@?{(t-li&@+j literal 0 HcmV?d00001 diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-008-ref.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-008-ref.html new file mode 100644 index 00000000000..7876656c208 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-008-ref.html @@ -0,0 +1,12 @@ + + + +
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-008.html b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-008.html new file mode 100644 index 00000000000..5398b7e9c1b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-grid/alignment/self-baseline/grid-self-baseline-008.html @@ -0,0 +1,39 @@ + + +CSS Grid Layout Test: baseline context and self alignment + + + + + + + + + + + +
+ + +
+ + +
+
+ + +
+
diff --git a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html index f570f02aa70..5c740681f8f 100644 --- a/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html +++ b/tests/wpt/web-platform-tests/css/css-grid/layout-algorithm/grid-intrinsic-track-sizes-001.html @@ -40,49 +40,54 @@ function checkTrackSizes(span, trackList, expectedCols, expectedRows) { TestingUtils.testGridTemplateColumnsRows("grid", trackList, trackList, expectedCols, expectedRows); } -// Item spanning a single track -checkTrackSizes(1, "auto", "120px"); -checkTrackSizes(1, "min-content", "30px", "40px"); -checkTrackSizes(1, "max-content", "60px", "30px"); +setup({ explicit_done: true }); +document.fonts.ready.then(() => { + // Item spanning a single track + checkTrackSizes(1, "auto", "120px"); + checkTrackSizes(1, "min-content", "30px", "40px"); + checkTrackSizes(1, "max-content", "60px", "30px"); -checkTrackSizes(1, "minmax(0, auto)", "120px"); -checkTrackSizes(1, "minmax(0, min-content)", "30px", "40px"); -checkTrackSizes(1, "minmax(0, max-content)", "60px", "30px"); + checkTrackSizes(1, "minmax(0, auto)", "120px"); + checkTrackSizes(1, "minmax(0, min-content)", "30px", "40px"); + checkTrackSizes(1, "minmax(0, max-content)", "60px", "30px"); -checkTrackSizes(1, "minmax(auto, 10px)", "12px"); -checkTrackSizes(1, "minmax(min-content, 10px)", "30px", "40px"); -checkTrackSizes(1, "minmax(max-content, 10px)", "60px", "30px"); + checkTrackSizes(1, "minmax(auto, 10px)", "12px"); + checkTrackSizes(1, "minmax(min-content, 10px)", "30px", "40px"); + checkTrackSizes(1, "minmax(max-content, 10px)", "60px", "30px"); -// Item spanning two identical tracks + // Item spanning two identical tracks -checkTrackSizes(2, "auto auto", "60px 60px"); -checkTrackSizes(2, "min-content min-content", "15px 15px", "20px 20px"); -checkTrackSizes(2, "max-content max-content", "30px 30px", "15px 15px"); + checkTrackSizes(2, "auto auto", "60px 60px"); + checkTrackSizes(2, "min-content min-content", "15px 15px", "20px 20px"); + checkTrackSizes(2, "max-content max-content", "30px 30px", "15px 15px"); -checkTrackSizes(2, "minmax(0, auto) minmax(0, auto)", "60px 60px"); -checkTrackSizes(2, "minmax(0, min-content) minmax(0, min-content)", "15px 15px", "20px 20px"); -checkTrackSizes(2, "minmax(0, max-content) minmax(0, max-content)", "30px 30px", "15px 15px"); + checkTrackSizes(2, "minmax(0, auto) minmax(0, auto)", "60px 60px"); + checkTrackSizes(2, "minmax(0, min-content) minmax(0, min-content)", "15px 15px", "20px 20px"); + checkTrackSizes(2, "minmax(0, max-content) minmax(0, max-content)", "30px 30px", "15px 15px"); -checkTrackSizes(2, "minmax(auto, 4px) minmax(auto, 4px)", "6px 6px"); -checkTrackSizes(2, "minmax(auto, 10px) minmax(auto, 10px)", "10px 10px"); -checkTrackSizes(2, "minmax(min-content, 10px) minmax(min-content, 10px)", "15px 15px", "20px 20px"); -checkTrackSizes(2, "minmax(max-content, 10px) minmax(max-content, 10px)", "30px 30px", "15px 15px"); + checkTrackSizes(2, "minmax(auto, 4px) minmax(auto, 4px)", "6px 6px"); + checkTrackSizes(2, "minmax(auto, 10px) minmax(auto, 10px)", "10px 10px"); + checkTrackSizes(2, "minmax(min-content, 10px) minmax(min-content, 10px)", "15px 15px", "20px 20px"); + checkTrackSizes(2, "minmax(max-content, 10px) minmax(max-content, 10px)", "30px 30px", "15px 15px"); -// Item spanning a fixed track also -checkTrackSizes(2, "20px auto", "20px 100px"); -checkTrackSizes(2, "20px min-content", "20px 10px", "20px 20px"); -checkTrackSizes(2, "20px max-content", "20px 40px", "20px 10px"); + // Item spanning a fixed track also + checkTrackSizes(2, "20px auto", "20px 100px"); + checkTrackSizes(2, "20px min-content", "20px 10px", "20px 20px"); + checkTrackSizes(2, "20px max-content", "20px 40px", "20px 10px"); -checkTrackSizes(2, "20px minmax(0, auto)", "20px 100px"); -checkTrackSizes(2, "20px minmax(0, min-content)", "20px 10px", "20px 20px"); -checkTrackSizes(2, "20px minmax(0, max-content)", "20px 40px", "20px 10px"); + checkTrackSizes(2, "20px minmax(0, auto)", "20px 100px"); + checkTrackSizes(2, "20px minmax(0, min-content)", "20px 10px", "20px 20px"); + checkTrackSizes(2, "20px minmax(0, max-content)", "20px 40px", "20px 10px"); -checkTrackSizes(2, "20px minmax(auto, 30px)", "20px 30px"); -checkTrackSizes(2, "20px minmax(min-content, 6px)", "20px 10px", "20px 20px"); -checkTrackSizes(2, "20px minmax(min-content, 40px)", "20px 40px", "20px 40px"); -checkTrackSizes(2, "20px minmax(max-content, 6px)", "20px 40px", "20px 10px"); -checkTrackSizes(2, "20px minmax(max-content, 30px)", "20px 40px", "20px 30px"); + checkTrackSizes(2, "20px minmax(auto, 30px)", "20px 30px"); + checkTrackSizes(2, "20px minmax(min-content, 6px)", "20px 10px", "20px 20px"); + checkTrackSizes(2, "20px minmax(min-content, 40px)", "20px 40px", "20px 40px"); + checkTrackSizes(2, "20px minmax(max-content, 6px)", "20px 40px", "20px 10px"); + checkTrackSizes(2, "20px minmax(max-content, 30px)", "20px 40px", "20px 30px"); -// Item spanning two mismatched intrinsic tracks -checkTrackSizes(2, "max-content min-content", "45px 15px", "15px 15px"); + // Item spanning two mismatched intrinsic tracks + checkTrackSizes(2, "max-content min-content", "45px 15px", "15px 15px"); + + done(); +}); diff --git a/tests/wpt/web-platform-tests/css/css-images/image-orientation/image-orientation-background-position.html b/tests/wpt/web-platform-tests/css/css-images/image-orientation/image-orientation-background-position.html new file mode 100644 index 00000000000..cf4fcd4a301 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-orientation/image-orientation-background-position.html @@ -0,0 +1,43 @@ + + + + +CSS Images Module Level 3: image-orientation with background positions + + + + + + + +
+
+
+
+ + diff --git a/tests/wpt/web-platform-tests/css/css-images/image-orientation/reference/image-orientation-background-position-ref.html b/tests/wpt/web-platform-tests/css/css-images/image-orientation/reference/image-orientation-background-position-ref.html new file mode 100644 index 00000000000..a19e535dabc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-images/image-orientation/reference/image-orientation-background-position-ref.html @@ -0,0 +1,41 @@ + + + + +CSS Images Module Level 3: image-orientation with background positions reference + + + + + +
+
+
+
+ + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-2-ref.html b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-2-ref.html new file mode 100644 index 00000000000..9405c845ce7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-2-ref.html @@ -0,0 +1,24 @@ + + + + HTML LI element: explicit scope + + + + +
    +
  1. +
  2. +
    +
  3. +
+ + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-2.html b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-2.html new file mode 100644 index 00000000000..959ff6660ca --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-2.html @@ -0,0 +1,24 @@ + + + + HTML LI element: explicit scope + + + + + + + +
    +
  1. +
  2. +
    +
  3. +
+ + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-3-ref.html b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-3-ref.html new file mode 100644 index 00000000000..926d8df504e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-3-ref.html @@ -0,0 +1,24 @@ + + + + HTML LI element: explicit scope + + + + +
    +
  1. +
  2. +
    +
  3. +
+ + diff --git a/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-3.html b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-3.html new file mode 100644 index 00000000000..096fdfbc289 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-lists/counter-list-item-3.html @@ -0,0 +1,24 @@ + + + + HTML LI element: explicit scope + + + + + + + +
    +
  1. +
  2. +
    +
  3. +
+ + diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform-ref.html new file mode 100644 index 00000000000..ddbf0e9812c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform-ref.html @@ -0,0 +1,4 @@ + +
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform.html b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform.html new file mode 100644 index 00000000000..a609e9cc915 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip-path/clip-path-rotated-will-change-transform.html @@ -0,0 +1,11 @@ + +Clip Path: should be correctly rotated by transform with will-change:transform + + + +
+
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip/clip-no-stacking-context-ref.html b/tests/wpt/web-platform-tests/css/css-masking/clip/clip-no-stacking-context-ref.html new file mode 100644 index 00000000000..056af223758 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip/clip-no-stacking-context-ref.html @@ -0,0 +1,4 @@ + + +

Expected: A green box with no red visible.

+
diff --git a/tests/wpt/web-platform-tests/css/css-masking/clip/clip-no-stacking-context.html b/tests/wpt/web-platform-tests/css/css-masking/clip/clip-no-stacking-context.html new file mode 100644 index 00000000000..cbd07ee6380 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-masking/clip/clip-no-stacking-context.html @@ -0,0 +1,36 @@ + + +Clip does not create a stacking context + + + + + + +

Expected: A green box with no red visible.

+
+ +
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/spanning-legend-000-crash.html b/tests/wpt/web-platform-tests/css/css-multicol/spanning-legend-000-crash.html new file mode 100644 index 00000000000..407697e8433 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/spanning-legend-000-crash.html @@ -0,0 +1,8 @@ + + + +
+ +
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/spanning-legend-001-crash.html b/tests/wpt/web-platform-tests/css/css-multicol/spanning-legend-001-crash.html new file mode 100644 index 00000000000..6126ec61e24 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-multicol/spanning-legend-001-crash.html @@ -0,0 +1,9 @@ + + + +
+ +
+ diff --git a/tests/wpt/web-platform-tests/css/css-overflow/clip-001.html b/tests/wpt/web-platform-tests/css/css-overflow/clip-001.html index 84bf8cdae55..dacb658db64 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/clip-001.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/clip-001.html @@ -10,7 +10,6 @@ width: 100px; height: 100px; background: red; - overflow: -moz-hidden-unscrollable; overflow: clip; } diff --git a/tests/wpt/web-platform-tests/css/css-overflow/clip-002-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/clip-002-ref.html new file mode 100644 index 00000000000..19c901981d7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/clip-002-ref.html @@ -0,0 +1,35 @@ + + +Reference: overflow: clip can be combined with overflow: visible + + + +
+
+
+ + +
+
+
+ + +
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/clip-002.html b/tests/wpt/web-platform-tests/css/css-overflow/clip-002.html new file mode 100644 index 00000000000..cd8b9a3cbeb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/clip-002.html @@ -0,0 +1,39 @@ + + +CSS Test: overflow:clip can be combined with overflow:visible + + + + + +
+
+
+ + +
+
+
+ + +
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/clip-003-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/clip-003-ref.html new file mode 100644 index 00000000000..5de31068e2e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/clip-003-ref.html @@ -0,0 +1,61 @@ + + +Reference: overflow:clip can be combined with overflow:visible + + + +
+
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/clip-003.html b/tests/wpt/web-platform-tests/css/css-overflow/clip-003.html new file mode 100644 index 00000000000..0c7e9bfa254 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/clip-003.html @@ -0,0 +1,63 @@ + + +CSS Test: overflow:clip can be combined with overflow:visible + + + + + +
+
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/clip-004-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/clip-004-ref.html new file mode 100644 index 00000000000..39e12445d40 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/clip-004-ref.html @@ -0,0 +1,35 @@ + + +Reference: overflow: clip can be combined with overflow: visible + + + +
+
+
+ + +
+
+
+ + +
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/clip-004.html b/tests/wpt/web-platform-tests/css/css-overflow/clip-004.html new file mode 100644 index 00000000000..30dde4a5e12 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/clip-004.html @@ -0,0 +1,40 @@ + + +CSS Test: overflow:clip can be combined with overflow:visible + + + + + +
+
+
+ + +
+
+
+ + +
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/clip-005-ref.html b/tests/wpt/web-platform-tests/css/css-overflow/clip-005-ref.html new file mode 100644 index 00000000000..09081e25039 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/clip-005-ref.html @@ -0,0 +1,36 @@ + + +Reference: overflow:clip doesn't affect the box' own outline + + + +
+
+
+ + +
+
+
+ + +
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/clip-005.html b/tests/wpt/web-platform-tests/css/css-overflow/clip-005.html new file mode 100644 index 00000000000..e55f4b22fcb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/clip-005.html @@ -0,0 +1,41 @@ + + +CSS Test: overflow:clip doesn't affect the box' own outline + + + + + +
+
+
+ + +
+
+
+ + +
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-overflow/dynamic-visible-to-clip-001.html b/tests/wpt/web-platform-tests/css/css-overflow/dynamic-visible-to-clip-001.html index b97701bfb29..e2011324dda 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/dynamic-visible-to-clip-001.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/dynamic-visible-to-clip-001.html @@ -32,7 +32,6 @@ onload = function() { let target = document.getElementById("target"); window.unused = target.getBoundingClientRect(); // Update layout requestAnimationFrame(() => requestAnimationFrame(() => { - target.style.overflow = "-moz-hidden-unscrollable"; target.style.overflow = "clip"; document.documentElement.removeAttribute("class"); })); diff --git a/tests/wpt/web-platform-tests/css/css-overflow/overflow-body-propagation-007.html b/tests/wpt/web-platform-tests/css/css-overflow/overflow-body-propagation-007.html index 9ce13ed8de3..ee6e1a1cc69 100644 --- a/tests/wpt/web-platform-tests/css/css-overflow/overflow-body-propagation-007.html +++ b/tests/wpt/web-platform-tests/css/css-overflow/overflow-body-propagation-007.html @@ -7,7 +7,6 @@ + + + + Test scrollbar-gutter: auto, writing-mode: horizontal-tb + +
+
overflow-y: auto
+
+ +
+
overflow-y: scroll
+
+ +
+
overflow: visible
+
+ + + + writing-mode: vertical-rl; + +
+
overflow-x: auto
+
+ +
+
overflow-x: scroll
+
+ +
+
overflow: visible
+
+ + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-002.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-002.html new file mode 100644 index 00000000000..5cfc45c358c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-002.html @@ -0,0 +1,187 @@ + + +CSS Overflow: test scrollbar-gutter: stable (classic scrollbars) + + + + + + + + + + + Test scrollbar-gutter: stable, writing-mode: horizontal-tb + +
+
overflow-y: auto
+
+ +
+
overflow-y: scroll
+
+ +
+
overflow: visible
+
+ + + + writing-mode: vertical-rl; + +
+
overflow-x: auto
+
+ +
+
overflow-x: scroll
+
+ +
+
overflow: visible
+
+ + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-003.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-003.html new file mode 100644 index 00000000000..17f724fb37c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-003.html @@ -0,0 +1,187 @@ + + +CSS Overflow: test scrollbar-gutter: always (classic scrollbars) + + + + + + + + + + + Test scrollbar-gutter: always, writing-mode: horizontal-tb + +
+
overflow-y: auto
+
+ +
+
overflow-y: scroll
+
+ +
+
overflow: visible
+
+ + + + writing-mode: vertical-rl; + +
+
overflow-x: auto
+
+ +
+
overflow-x: scroll
+
+ +
+
overflow: visible
+
+ + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-004.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-004.html new file mode 100644 index 00000000000..2f9ac9b7f33 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-004.html @@ -0,0 +1,187 @@ + + +CSS Overflow: test scrollbar-gutter: stable both (classic scrollbars) + + + + + + + + + + + Test scrollbar-gutter: stable both, writing-mode: horizontal-tb + +
+
overflow-y: auto
+
+ +
+
overflow-y: scroll
+
+ +
+
overflow: visible
+
+ + + + writing-mode: vertical-rl; + +
+
overflow-x: auto
+
+ +
+
overflow-x: scroll
+
+ +
+
overflow: visible
+
+ + + + diff --git a/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-005.html b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-005.html new file mode 100644 index 00000000000..5f1e8413f3b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-overflow/scrollbar-gutter-005.html @@ -0,0 +1,187 @@ + + +CSS Overflow: test scrollbar-gutter: always both (classic scrollbars) + + + + + + + + + + + Test scrollbar-gutter: always both, writing-mode: horizontal-tb + +
+
overflow-y: auto
+
+ +
+
overflow-y: scroll
+
+ +
+
overflow: visible
+
+ + + + writing-mode: vertical-rl; + +
+
overflow-x: auto
+
+ +
+
overflow-x: scroll
+
+ +
+
overflow: visible
+
+ + + + diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-large-negative-inset-ref.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-large-negative-inset-ref.html new file mode 100644 index 00000000000..e04afce6ebd --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-large-negative-inset-ref.html @@ -0,0 +1,9 @@ + + +
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-absolute-large-negative-inset.html b/tests/wpt/web-platform-tests/css/css-position/position-absolute-large-negative-inset.html new file mode 100644 index 00000000000..ed17ea91d5e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-absolute-large-negative-inset.html @@ -0,0 +1,26 @@ + + + CSS Position: Large negative box inset properties + + + + + +
+ negative inset text + diff --git a/tests/wpt/web-platform-tests/css/css-position/position-fixed-scroll-nested-fixed-ref.html b/tests/wpt/web-platform-tests/css/css-position/position-fixed-scroll-nested-fixed-ref.html new file mode 100644 index 00000000000..024bf032d77 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-fixed-scroll-nested-fixed-ref.html @@ -0,0 +1,3 @@ + +
+
diff --git a/tests/wpt/web-platform-tests/css/css-position/position-fixed-scroll-nested-fixed.html b/tests/wpt/web-platform-tests/css/css-position/position-fixed-scroll-nested-fixed.html new file mode 100644 index 00000000000..64586a207ed --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-position/position-fixed-scroll-nested-fixed.html @@ -0,0 +1,14 @@ + +CSS Position: Nested position:fixed in a scrollable position:fixed + + + + +
+
+
+
+
+ diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/active-selection-031.html b/tests/wpt/web-platform-tests/css/css-pseudo/active-selection-031.html index 387bb82082f..e5c68814526 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/active-selection-031.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/active-selection-031.html @@ -15,7 +15,7 @@ { color: red; float: left; - font-size: 48px; + font-size: 32px; margin-left: 16px; } diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/file-chooser-button-001.tentative.html b/tests/wpt/web-platform-tests/css/css-pseudo/file-chooser-button-001.tentative.html deleted file mode 100644 index 99c67dee5d9..00000000000 --- a/tests/wpt/web-platform-tests/css/css-pseudo/file-chooser-button-001.tentative.html +++ /dev/null @@ -1,11 +0,0 @@ - -::file-chooser-button allows to customize the button in <input type=file> - - - - diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/file-chooser-button-001-notref.html b/tests/wpt/web-platform-tests/css/css-pseudo/file-selector-button-001-notref.html similarity index 100% rename from tests/wpt/web-platform-tests/css/css-pseudo/file-chooser-button-001-notref.html rename to tests/wpt/web-platform-tests/css/css-pseudo/file-selector-button-001-notref.html diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/file-selector-button-001.tentative.html b/tests/wpt/web-platform-tests/css/css-pseudo/file-selector-button-001.tentative.html new file mode 100644 index 00000000000..48b2852de82 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/file-selector-button-001.tentative.html @@ -0,0 +1,11 @@ + +::file-selector-button allows to customize the button in <input type=file> + + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/file-chooser-button-display-toggle-crash.tentative.html b/tests/wpt/web-platform-tests/css/css-pseudo/file-selector-button-display-toggle-crash.tentative.html similarity index 70% rename from tests/wpt/web-platform-tests/css/css-pseudo/file-chooser-button-display-toggle-crash.tentative.html rename to tests/wpt/web-platform-tests/css/css-pseudo/file-selector-button-display-toggle-crash.tentative.html index 4e43609bee8..bc9f24ae019 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/file-chooser-button-display-toggle-crash.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/file-selector-button-display-toggle-crash.tentative.html @@ -1,8 +1,8 @@ -Shouldn't assert when re-creating a ::file-chooser-button pseudo-element after it being display: none +Shouldn't assert when re-creating a ::file-selector-button pseudo-element after it being display: none diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-023-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-023-ref.html new file mode 100644 index 00000000000..d0ce5c1fad7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-023-ref.html @@ -0,0 +1,33 @@ + + +CSS Reference: ::marker pseudo elements styled with 'content' property + + +
    +
  1. disc
  2. +
  3. decimal
  4. +
  5. string
  6. +
  7. content
  8. +
+
    +
  1. disc
  2. +
  3. decimal
  4. +
  5. string
  6. +
  7. content
  8. +
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-023.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-023.html new file mode 100644 index 00000000000..9ec0ca46e42 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-content-023.html @@ -0,0 +1,46 @@ + + +CSS Test: ::marker pseudo elements styled with 'content' property + + + + + + +
    +
  1. disc
  2. +
  3. decimal
  4. +
  5. string
  6. +
  7. content
  8. +
+
    +
  1. disc
  2. +
  3. decimal
  4. +
  5. string
  6. +
  7. content
  8. +
diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-default-styles.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-default-styles.html index 865a2d01a99..0f988d8eb06 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/marker-default-styles.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-default-styles.html @@ -11,7 +11,11 @@ .decimal { list-style-type: decimal } .string { list-style-type: "string" } .marker::marker { content: "marker" } -li { text-transform: lowercase } +li { + /* These inheritable properties should not be inherited by ::marker */ + text-transform: lowercase; + text-indent: 1px; +}
    @@ -32,6 +36,7 @@ const defaultStyles = [ ["unicode-bidi", "isolate"], ["font-variant-numeric", "tabular-nums"], ["text-transform", "none"], + ["text-indent", "0px"], ]; for (const target of document.querySelectorAll("li")) { const cs = getComputedStyle(target, "::marker"); diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-hyphens-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-hyphens-ref.html new file mode 100644 index 00000000000..3f29ce441ff --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-hyphens-ref.html @@ -0,0 +1,26 @@ + + +CSS Reftest Reference + + +
      +
    1. foo­bar
    2. +
    3. foo­bar
    4. +
    +
      +
    1. foo­bar
    2. +
    3. foo­bar
    4. +
    +
      +
    1. foobar
    2. +
    3. foobar
    4. +
    +
      +
    1. foobar
    2. +
    3. foobar
    4. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-hyphens.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-hyphens.html new file mode 100644 index 00000000000..a63e3deaf9b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-hyphens.html @@ -0,0 +1,44 @@ + + +::marker supports 'hyphens' + + + + + + +
      +
    1. +
    2. +
    +
      +
    1. +
    2. +
    +
      +
    1. +
    2. +
    +
      +
    1. +
    2. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing-ref-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing-ref-001.html new file mode 100644 index 00000000000..e5f4aedfba7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing-ref-001.html @@ -0,0 +1,63 @@ + + +CSS Reftest Reference + + + +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing-ref-002.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing-ref-002.html new file mode 100644 index 00000000000..b4022699063 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing-ref-002.html @@ -0,0 +1,63 @@ + + +CSS Reftest Reference + + + +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing.html new file mode 100644 index 00000000000..8a89e179215 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-letter-spacing.html @@ -0,0 +1,74 @@ + + +::marker supports 'letter-spacing' + + + + + + + + + +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-break-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-break-ref.html new file mode 100644 index 00000000000..75625c1ea28 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-break-ref.html @@ -0,0 +1,23 @@ + + +CSS Reftest Reference + + +
      +

    • 2.
      ab
      cd
    • +
    +
      +

    • 2.
      ab
      cd
    • +
    +
      +

    • 2
      .
      a
      b
      c
      d
    • +
    +
      +

    • 2
      .
      a
      b
      c
      d
    • +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-break.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-break.html new file mode 100644 index 00000000000..7577822bce3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-line-break.html @@ -0,0 +1,62 @@ + + +::marker supports 'line-break' + + + + + + +
      +
    1. +
    2. +
    3. +
    4. +
    +
      +
    1. +
    2. +
    3. +
    4. +
    +
      +
    1. +
    2. +
    3. +
    4. +
    +
      +
    1. +
    2. +
    3. +
    4. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-overflow-wrap.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-overflow-wrap.html new file mode 100644 index 00000000000..29d9cf77849 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-overflow-wrap.html @@ -0,0 +1,62 @@ + + +::marker supports 'overflow-wrap' + + + + + + +
      +
    1. +
    2. +
    3. +
    4. +
    +
      +
    1. +
    2. +
    3. +
    4. +
    +
      +
    1. +
    2. +
    3. +
    4. +
    +
      +
    1. +
    2. +
    3. +
    4. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-tab-size-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-tab-size-ref.html new file mode 100644 index 00000000000..2985ac2eeba --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-tab-size-ref.html @@ -0,0 +1,49 @@ + + +CSS Reftest Reference + + + +
    +
      +
    1. É
    2. +
    3. É
    4. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    +
    +
    +
      +
    1. É
    2. +
    3. É
    4. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-tab-size.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-tab-size.html new file mode 100644 index 00000000000..a521f58bc80 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-tab-size.html @@ -0,0 +1,57 @@ + + +::marker supports 'tab-size' + + + + + + + +
    +
      +
    1. É
    2. +
    3. É
    4. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    +
    +
    +
      +
    1. É
    2. +
    3. É
    4. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-align-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-align-ref.html new file mode 100644 index 00000000000..2355fab2e7e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-align-ref.html @@ -0,0 +1,58 @@ + + +CSS Reference: ::marker pseudo elements styled with 'text-align' property + + +
      +
    1. disc
    2. +
    3. decimal
    4. +
    5. string
    6. +
    7. content
    8. +
    +
      +
    1. disc
    2. +
    3. decimal
    4. +
    5. string
    6. +
    7. content
    8. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-align.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-align.html new file mode 100644 index 00000000000..c5f8ed3a201 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-align.html @@ -0,0 +1,62 @@ + + +CSS Test: ::marker pseudo elements styled with 'text-align' property + + + + + + +
      +
    1. disc
    2. +
    3. decimal
    4. +
    5. string
    6. +
    7. content
    8. +
    +
      +
    1. disc
    2. +
    3. decimal
    4. +
    5. string
    6. +
    7. content
    8. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-decoration-skip-ink-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-decoration-skip-ink-ref.html new file mode 100644 index 00000000000..9bf2cf2f50b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-decoration-skip-ink-ref.html @@ -0,0 +1,39 @@ + + +CSS Reftest Reference + + + +
      +
    1. g.
    2. +
    3. p.
    4. +
    5. q.
    6. +
    +
      +
    1. g.
    2. +
    3. p.
    4. +
    5. q.
    6. +
    +
      +
    1. g.
    2. +
    3. p.
    4. +
    5. q.
    6. +
    +
      +
    1. g.
    2. +
    3. p.
    4. +
    5. q.
    6. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-decoration-skip-ink.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-decoration-skip-ink.html new file mode 100644 index 00000000000..153e9221a39 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-decoration-skip-ink.html @@ -0,0 +1,53 @@ + + +::marker supports 'text-decoration-skip-ink' + + + + + + +
      +
    1. +
    2. +
    3. +
    +
      +
    1. +
    2. +
    3. +
    +
      +
    1. +
    2. +
    3. +
    +
      +
    1. +
    2. +
    3. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-emphasis-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-emphasis-ref.html new file mode 100644 index 00000000000..aad3614c693 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-emphasis-ref.html @@ -0,0 +1,44 @@ + + +CSS Reftest Reference + + + +
      +
    1. 1.
    2. +
    3. 2.
    4. +
    5. 3.
    6. +
    +
      +
    1. 1.
    2. +
    3. 2.
    4. +
    5. 3.
    6. +
    +
      +
    1. 1.
    2. +
    3. 2.
    4. +
    5. 3.
    6. +
    +
      +
    1. 1.
    2. +
    3. 2.
    4. +
    5. 3.
    6. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-emphasis.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-emphasis.html new file mode 100644 index 00000000000..db9fb3d5257 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-emphasis.html @@ -0,0 +1,58 @@ + + +::marker supports 'text-emphasis' + + + + + + +
      +
    1. +
    2. +
    3. +
    +
      +
    1. +
    2. +
    3. +
    +
      +
    1. +
    2. +
    3. +
    +
      +
    1. +
    2. +
    3. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-shadow-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-shadow-ref.html new file mode 100644 index 00000000000..62627d64b7b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-shadow-ref.html @@ -0,0 +1,23 @@ + + +CSS Reftest Reference + + + +
      +
    1. 1.
    2. +
    3. 2.
    4. +
    5. 3.
    6. +
    +
      +
    1. 1.
    2. +
    3. 2.
    4. +
    5. 3.
    6. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-shadow.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-shadow.html new file mode 100644 index 00000000000..3f8ae566f16 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-text-shadow.html @@ -0,0 +1,38 @@ + + +::marker supports 'text-shadow' + + + + + + +
      +
    1. +
    2. +
    3. +
    +
      +
    1. +
    2. +
    3. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-break-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-break-ref.html new file mode 100644 index 00000000000..683eaf1c7f6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-break-ref.html @@ -0,0 +1,23 @@ + + +CSS Reftest Reference + + +
      +

    • 2.
      ab
      cd
    • +
    +
      +

    • 2.
      ab
      cd
    • +
    +
      +

    • 2.
      a
      b
      c
      d
    • +
    +
      +

    • 2.
      a
      b
      c
      d
    • +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-break.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-break.html new file mode 100644 index 00000000000..4e3aeaebd88 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-break.html @@ -0,0 +1,62 @@ + + +::marker supports 'word-break' + + + + + + +
      +
    1. +
    2. +
    3. +
    4. +
    +
      +
    1. +
    2. +
    3. +
    4. +
    +
      +
    1. +
    2. +
    3. +
    4. +
    +
      +
    1. +
    2. +
    3. +
    4. +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-spacing-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-spacing-ref.html new file mode 100644 index 00000000000..a81aeee44d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-spacing-ref.html @@ -0,0 +1,63 @@ + + +CSS Reftest Reference + + + +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-spacing.html b/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-spacing.html new file mode 100644 index 00000000000..a98f0bd7763 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/marker-word-spacing.html @@ -0,0 +1,71 @@ + + +::marker supports 'word-spacing' + + + + + + + +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
      +
    1. É
    2. +
    3. É
    4. +
    5. É
    6. +
    7. É
    8. +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation.html b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation.html index bc26e202696..5f7dab7a8bf 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties-in-animation.html @@ -158,13 +158,93 @@ const interpolationTests = [ midPoint: "\"bar\"", }, - // ::marker supports `text-transform` + // ::marker supports text properties. + { + property: "hyphens", + from: "manual", + to: "none", + midPoint: "none", + }, + { + property: "letter-spacing", + from: "0px", + to: "20px", + midPoint: "10px", + }, + { + property: "line-break", + from: "strict", + to: "anywhere", + midPoint: "anywhere", + }, + { + property: "overflow-wrap", + from: "break-word", + to: "anywhere", + midPoint: "anywhere", + }, + { + property: "tab-size", + from: "0px", + to: "20px", + midPoint: "10px", + }, { property: "text-transform", from: "lowercase", to: "uppercase", midPoint: "uppercase", }, + { + property: "word-break", + from: "break-all", + to: "break-word", + midPoint: "break-word", + }, + { + property: "word-spacing", + from: "0px", + to: "20px", + midPoint: "10px", + }, + + // ::marker supports inherited text decoration properties. + { + property: "text-decoration-skip-ink", + from: "auto", + to: "none", + midPoint: "none", + }, + { + property: "text-emphasis", + from: "dot rgb(0, 200, 0)", + to: "triangle rgb(100, 0, 200)", + midPoint: "triangle rgb(50, 100, 100)", + }, + { + property: "text-emphasis-color", + from: "rgb(0, 200, 0)", + to: "rgb(100, 0, 200)", + midPoint: "rgb(50, 100, 100)", + }, + { + property: "text-emphasis-position", + from: "over right", + to: "under left", + midPoint: "under left", + }, + { + property: "text-emphasis-style", + from: "dot", + to: "triangle", + midPoint: "triangle", + }, + { + property: "text-shadow", + from: "rgb(0, 200, 0) 1px 2px 3px", + to: "rgb(100, 0, 200) 3px 2px 1px", + midPoint: "rgb(50, 100, 100) 2px 2px 2px", + }, // ::marker does NOT support layout properties { diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html index 669d040671b..15a4e894ff3 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/parsing/marker-supported-properties.html @@ -63,8 +63,23 @@ test_pseudo_computed_value("::marker", "transition-duration", "2s"); test_pseudo_computed_value("::marker", "transition-property", "display"); test_pseudo_computed_value("::marker", "transition-timing-function", "linear"); -// ::marker supports `text-transform` +// ::marker supports text properties. +test_pseudo_computed_value("::marker", "hyphens", "none"); +test_pseudo_computed_value("::marker", "letter-spacing", "10px"); +test_pseudo_computed_value("::marker", "line-break", "anywhere"); +test_pseudo_computed_value("::marker", "overflow-wrap", "anywhere"); +test_pseudo_computed_value("::marker", "tab-size", "10px"); test_pseudo_computed_value("::marker", "text-transform", "uppercase"); +test_pseudo_computed_value("::marker", "word-break", "break-word"); +test_pseudo_computed_value("::marker", "word-spacing", "10px"); + +// ::marker supports inherited text decoration properties. +test_pseudo_computed_value("::marker", "text-decoration-skip-ink", "none"); +test_pseudo_computed_value("::marker", "text-emphasis", "dot rgb(0, 255, 0)"); +test_pseudo_computed_value("::marker", "text-emphasis-color", "rgb(0, 255, 0)"); +test_pseudo_computed_value("::marker", "text-emphasis-position", "under left"); +test_pseudo_computed_value("::marker", "text-emphasis-style", "dot"); +test_pseudo_computed_value("::marker", "text-shadow", "rgb(0, 255, 0) 1px 2px 3px"); // ::marker does NOT support layout properties test_pseudo_computed_value("::marker", "display", "none", ["block", "inline", "inline-block"]); diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/placeholder-input-dynamic-crash.html b/tests/wpt/web-platform-tests/css/css-pseudo/placeholder-input-dynamic-crash.html new file mode 100644 index 00000000000..28ab898a6d9 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/placeholder-input-dynamic-crash.html @@ -0,0 +1,10 @@ + +Dynamic placeholder attribute changes after addition shouldn't crash + + + diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/reference/active-selection-031-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/reference/active-selection-031-ref.html index 0e3680844f8..7e354e5bc68 100644 --- a/tests/wpt/web-platform-tests/css/css-pseudo/reference/active-selection-031-ref.html +++ b/tests/wpt/web-platform-tests/css/css-pseudo/reference/active-selection-031-ref.html @@ -12,7 +12,7 @@ background-color: yellow; color: green; float: left; - font-size: 48px; + font-size: 32px; margin-left: 16px; } diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/reference/selection-overlay-and-grammar-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/reference/selection-overlay-and-grammar-001-ref.html new file mode 100644 index 00000000000..f5a416ecef3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/reference/selection-overlay-and-grammar-001-ref.html @@ -0,0 +1,71 @@ + + + + + + + CSS Reftest Reference + + + + + + + + + +

    PREREQUISITE: User agent needs to have an enabled and capable grammar error module. If it does not, then this test does not apply to such user agent. + +

    Test passes + +

      +
    • if each glyph of the sentence is yellow +
    • if "thing" has a desaturated lime green background +
    • if the other words have a very lite blue background and +
    • if there is no red. +
    + +
    Many thing can happen.
    + +
    Many thing can happen.
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/reference/selection-overlay-and-spelling-001-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/reference/selection-overlay-and-spelling-001-ref.html new file mode 100644 index 00000000000..5dffca9f358 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/reference/selection-overlay-and-spelling-001-ref.html @@ -0,0 +1,62 @@ + + + + + + + CSS Reftest Reference + + + + + +

    PREREQUISITE: User agent needs to have an enabled and capable spelling error module. If it does not, then this test does not apply to such user agent. + +

    Test passes + +

      +
    • if each glyph of "Txet sample" is yellow +
    • if "Txet" has a desaturated lime green background +
    • if " sample" has a very lite blue background and +
    • if there is no red. +
    + + + +
    Txet sample
    + +
    Txet sample
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-overlay-and-grammar-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-overlay-and-grammar-001.html new file mode 100644 index 00000000000..e4fe6e682e6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-overlay-and-grammar-001.html @@ -0,0 +1,90 @@ + + + + + + + CSS Pseudo-Elements Test: ::selection overlay drawn over the ::grammar-error overlay + + + + + + + + + + + + + + + + +

    PREREQUISITE: User agent needs to have an enabled and capable grammar error module. If it does not, then this test does not apply to such user agent. + +

    Test passes + +

      +
    • if each glyph of the sentence is yellow +
    • if "thing" has a desaturated lime green background +
    • if the other words have a very lite blue background and +
    • if there is no red. +
    + +
    Many thing can happen.
    diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/selection-overlay-and-spelling-001.html b/tests/wpt/web-platform-tests/css/css-pseudo/selection-overlay-and-spelling-001.html new file mode 100644 index 00000000000..64129ab5f56 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/selection-overlay-and-spelling-001.html @@ -0,0 +1,102 @@ + + + + + + + CSS Pseudo-Elements Test: ::selection overlay drawn over the ::spelling-error overlay + + + + + + + + + + + + + + + + +

    PREREQUISITE: User agent needs to have an enabled and capable spelling error module. If it does not, then this test does not apply to such user agent. + +

    Test passes + +

      +
    • if each glyph of "Txet sample" is yellow +
    • if "Txet" has a desaturated lime green background +
    • if " sample" has a very lite blue background and +
    • if there is no red. +
    + + + +
    Txet sample
    diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/focus-prioritized.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/focus-prioritized.html index 36e3c7644a7..32d90badcad 100644 --- a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/focus-prioritized.html +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/focus-prioritized.html @@ -21,7 +21,7 @@ body { height: 4000px }
    -
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/support/flexbox-scrolling-vertical-rl.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/support/flexbox-scrolling-vertical-rl.html new file mode 100644 index 00000000000..1a2d02d5c71 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/support/flexbox-scrolling-vertical-rl.html @@ -0,0 +1,20 @@ + + + +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/support/scrolling-vertical-rl.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/support/scrolling-vertical-rl.html new file mode 100644 index 00000000000..1273469dab2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/support/scrolling-vertical-rl.html @@ -0,0 +1,18 @@ + + + +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-000.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-000.html new file mode 100644 index 00000000000..ee367b1c971 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-000.html @@ -0,0 +1,21 @@ + + + + + + +

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

    + + diff --git a/tests/wpt/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-001.html b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-001.html new file mode 100644 index 00000000000..0e58a1e63b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-scroll-anchoring/vertical-rl-viewport-size-change-001.html @@ -0,0 +1,21 @@ + + + + + + +

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

    + + diff --git a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/float-retry-push-circle.html b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/assorted/float-retry-push-circle.html similarity index 93% rename from tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/float-retry-push-circle.html rename to tests/wpt/web-platform-tests/css/css-shapes/shape-outside/assorted/float-retry-push-circle.html index a079d71adbd..d8077c670fe 100644 --- a/tests/wpt/web-platform-tests/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/float-retry-push-circle.html +++ b/tests/wpt/web-platform-tests/css/css-shapes/shape-outside/assorted/float-retry-push-circle.html @@ -4,7 +4,7 @@ - + +

    Test passes if there is a filled green square.

    +
    + + +
    X X X X X X X X X
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-009.tentative.html b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-009.tentative.html new file mode 100644 index 00000000000..291c69afbcf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-009.tentative.html @@ -0,0 +1,25 @@ + + + + + + +

    Test passes if there is a filled green square.

    +
    + + +
    X X X X X X X X X
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-010.tentative.html b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-010.tentative.html new file mode 100644 index 00000000000..cb4ad48f3ac --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-010.tentative.html @@ -0,0 +1,26 @@ + + + + + + +

    Test passes if there is a filled green square.

    +
    +
    + + +
    X X X X X X X X X
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-011.tentative.html b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-011.tentative.html new file mode 100644 index 00000000000..5c8ed3a5fa8 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-011.tentative.html @@ -0,0 +1,25 @@ + + + + + + +

    Test passes if there is a filled green square.

    +
    + + +
    X X X X X X X X X
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-012.html b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-012.html new file mode 100644 index 00000000000..76dc0bf9e88 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/absolute-tables-012.html @@ -0,0 +1,9 @@ + + + + + +

    Test passes if there is a filled green square.

    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/css/css-tables/table-model-fixup-2.html b/tests/wpt/web-platform-tests/css/css-tables/table-model-fixup-2.html index 737a8d7e2a8..1bc4a2f6819 100644 --- a/tests/wpt/web-platform-tests/css/css-tables/table-model-fixup-2.html +++ b/tests/wpt/web-platform-tests/css/css-tables/table-model-fixup-2.html @@ -19,39 +19,28 @@ div input { width: 100px; }
    @@ -62,403 +51,253 @@

    Both input fields should look identical, on their own line:

    Replaced elements inside a table cannot be table-row and are considered block -- input elements

    -
    +
    -

    Both images should look identical, on their own line:

    Replaced elements inside a table cannot be table-row and are considered block -- img elements

    -
    +
    -

    Both input fields should look identical, on their own line:

    Replaced elements inside a table cannot be table-column and are considered inline -- input elements

    -
    +
    -

    Both images should look identical, on their own line:

    Replaced elements inside a table cannot be table-column and are considered inline -- img elements

    -
    +
    -

    Both input fields should look identical, on their own line:

    Replaced elements inside a table cannot be table-cell and are considered inline -- input elements

    -
    +
    -

    Both images should look identical, on their own line:

    Replaced elements inside a table cannot be table-cell and are considered inline -- img elements

    -
    +
    -

    Both text inputs should share the same line:

    Replaced elements outside a table cannot be inline-table and are considered inline -- input=text elements

    -
    +
    -

    Both button inputs should share the same line:

    Replaced elements outside a table cannot be inline-table and are considered inline -- input=button elements

    -
    +
    -

    Both file inputs should share the same line:

    Replaced elements outside a table cannot be inline-table and are considered inline -- input=file elements

    -
    +
    -

    Both images should share the same line:

    Replaced elements outside a table cannot be inline-table and are considered inline -- img elements

    -
    +
    -

    Both text inputs should stand on their own line:

    Replaced elements outside a table cannot be table and are considered block -- input=text elements

    -
    +
    -

    Both button inputs should stand on their own line:

    Replaced elements outside a table cannot be table and are considered block -- input=button elements

    -
    +
    -

    Both file inputs should stand on their own line:

    Replaced elements outside a table cannot be table and are considered block -- input=file elements

    -
    +
    -

    Both images should stand on their own line:

    Replaced elements outside a table cannot be table and are considered block -- img elements

    -
    +
    -

    Both text inputs should stand on their own line:

    Replaced elements outside a table cannot be table-row and are considered block -- input=text elements

    -
    +
    -

    Both button inputs should stand on their own line:

    Replaced elements outside a table cannot be table-row and are considered block -- input=button elements

    -
    +
    -

    Both file inputs should stand on their own line:

    Replaced elements outside a table cannot be table-row and are considered block -- input=file elements

    -
    +
    -

    Both images should stand on their own line:

    Replaced elements outside a table cannot be table-row and are considered block -- img elements

    -
    +
    -

    Both text inputs should stand on their own line:

    Replaced elements outside a table cannot be table-row-group and are considered block -- input=text elements

    -
    +
    -

    Both button inputs should stand on their own line:

    Replaced elements outside a table cannot be table-row-group and are considered block -- input=button elements

    -
    +
    -

    Both file inputs should stand on their own line:

    Replaced elements outside a table cannot be table-row-group and are considered block -- input=file elements

    -
    +
    -

    Both images should stand on their own line:

    Replaced elements outside a table cannot be table-row-group and are considered block -- img elements

    -
    +
    -

    Both text inputs should share the same line:

    Replaced elements outside a table cannot be table-column and are considered inline -- input=text elements

    -
    +
    -

    Both button inputs should share the same line:

    Replaced elements outside a table cannot be table-column and are considered inline -- input=button elements

    -
    +
    -

    Both file inputs should share the same line:

    Replaced elements outside a table cannot be table-column and are considered inline -- input=file elements

    -
    +
    -

    Both images should share the same line:

    Replaced elements outside a table cannot be table-column and are considered inline -- img elements

    -
    +
    -

    Both text inputs should share the same line:

    Replaced elements outside a table cannot be table-cell and are considered inline -- input=text elements

    -
    +
    -

    Both button inputs should share the same line:

    Replaced elements outside a table cannot be table-cell and are considered inline -- input=button elements

    -
    +
    -

    Both file inputs should share the same line:

    Replaced elements outside a table cannot be table-cell and are considered inline -- input=file elements

    -
    +
    -

    Both images should share the same line:

    Replaced elements outside a table cannot be table-cell and are considered inline -- img elements

    -
    +
    -
    diff --git a/tests/wpt/web-platform-tests/css/css-text/animations/tab-size-interpolation.html b/tests/wpt/web-platform-tests/css/css-text/animations/tab-size-interpolation.html new file mode 100644 index 00000000000..3cf63782f59 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/animations/tab-size-interpolation.html @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-001-ref.html new file mode 100644 index 00000000000..36347454947 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-001-ref.html @@ -0,0 +1,16 @@ + + +CSS Text level 3 Test reference + + + +

    Test passes if the three “A†letters below are vertically aligned with eachother. +

    +          A
    +          A
    +          A +
    diff --git a/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-001.html b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-001.html new file mode 100644 index 00000000000..ecdcfeff010 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-001.html @@ -0,0 +1,28 @@ + + +CSS Text level 3 Test: inline box tab-size + + + + + + +

    Test passes if the three “A†letters below are vertically aligned with eachother. + +

    +          A + A + A +
    diff --git a/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-002-ref.html new file mode 100644 index 00000000000..b595b3f9a5d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-002-ref.html @@ -0,0 +1,20 @@ + + +CSS Text level 3 Test reference + + + +

    Test passes if the black “A†lines up vertically with the blue one, not the orange one. + +

                A
    + +
                A
    +
                  A
    diff --git a/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-002.html b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-002.html new file mode 100644 index 00000000000..f87c107949a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-inline-002.html @@ -0,0 +1,28 @@ + + +CSS Text level 3 Test: inline box tab-size tab stops + + + + + + + +

    Test passes if the black “A†lines up vertically with the blue one, not the orange one. + +

    A
    + +
                A
    +
                  A
    diff --git a/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-integer-004-ref.html b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-integer-004-ref.html new file mode 100644 index 00000000000..0f29998d238 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-integer-004-ref.html @@ -0,0 +1,18 @@ + + +CSS Text Test reference + + + +

    Test passes if the two “X†letters bellow are vertically algined. + +

    X
    +
    X
    diff --git a/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-integer-004.html b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-integer-004.html new file mode 100644 index 00000000000..70dc7bf6f8a --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/tab-size/tab-size-integer-004.html @@ -0,0 +1,30 @@ + + +CSS Text Test: tab-size: bloc container + + + + + + +

    Test passes if the two “X†letters bellow are vertically algined. + +

    X
    +
    X
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/eol-spaces-bidi-001.html b/tests/wpt/web-platform-tests/css/css-text/white-space/eol-spaces-bidi-001.html index 976ce7c639f..b8bcbe17b73 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/eol-spaces-bidi-001.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/eol-spaces-bidi-001.html @@ -1,44 +1,46 @@ -CSS Text level 3 Test: collapsible white space at end-of-line and bidi - +CSS Text 3 test: trailing collapsible spaces and bidi + - + + -

    Test passes if the content of each blue box (on the left) is laid out identically to the content of the orange box to its right. + +

    Test passes if each pair of blue / orange boxes are identical (except for the color of their border).

    A B ا ب
    -
    A B ا
    ب
    -
    + +
    A B ا
    ب
    + +
    +
    A B ا ب
    -
    A B ا
    ب
    -
    + +
    A B ا
    ب
    + +
    +
    A B ا ب
    -
    A B ا ب
    -
    -
    A B ا ب
    -
    A B ا ب
    + +
    A B ا ب
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/eol-spaces-bidi-002.html b/tests/wpt/web-platform-tests/css/css-text/white-space/eol-spaces-bidi-002.html new file mode 100644 index 00000000000..0efba0a363f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/eol-spaces-bidi-002.html @@ -0,0 +1,69 @@ + + +CSS Text 3 test: trailing pre-wrap spaces and bidi + + + + + + + + + +

    Test passes if each pair of blue / orange boxes are identical (except for the color of their border). + + + + +

    A B ا ب
    +
    A B ا
    ب
    + +
    + +
    A B ا ب
    +
    A B ا
    ب
    + +
    + + + +
    A B ا ب
    +
    A B ا ب
    + +
    + +
    A B ا ب
    +
    A B ا ب
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/eol-spaces-bidi-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/eol-spaces-bidi-001-ref.html index 37da6649f9b..430706c5569 100644 --- a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/eol-spaces-bidi-001-ref.html +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/eol-spaces-bidi-001-ref.html @@ -1,39 +1,38 @@ -CSS test reference - +CSS Text 3 test reference + + -

    Test passes if the content of each blue box (on the left) is laid out identically to the content of the orange box to its right. + +

    Test passes if each pair of blue / orange boxes are identical (except for the color of their border).

    A B ا
    ب
    -
    A B ا
    ب
    -
    +
    A B ا
    ب
    + +
    +
    A B ا
    ب
    -
    A B ا
    ب
    -
    +
    A B ا
    ب
    + +
    +
    A B ا ب
    -
    A B ا ب
    -
    -
    A B ا ب
    -
    A B ا ب
    +
    A B ا ب
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/eol-spaces-bidi-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/eol-spaces-bidi-002-ref.html new file mode 100644 index 00000000000..30a4ffd303d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/eol-spaces-bidi-002-ref.html @@ -0,0 +1,48 @@ + + +CSS Text 3 test reference + + + + +

    Test passes if each pair of blue / orange boxes are identical (except for the color of their border). + + +

    A B ا
    ب
    +
    A B ا
    ب
    + +
    + +
    A B ا
    ب
    +
    A B ا
    ب
    + +
    + +
    A B ا ب
    +
    A B ا ب
    + +
    + +
    A B ا ب
    +
    A B ا ب
    + diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ogham-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ogham-001-ref.html new file mode 100644 index 00000000000..1b6fddd30e2 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ogham-001-ref.html @@ -0,0 +1,19 @@ + + +CSS Text level 3 Test Reference + + + +

    Test passes if the content of the blue and orange boxes is identical to that of the black box. + +

    ᚛ᚑᚌášáš‹ášœ
    ᚛ᚑᚌášáš‹ášœ
    +
    ᚛ᚑᚌášáš‹ášœ
    ᚛ᚑᚌášáš‹ášœ
    +
    ᚛ᚑᚌášáš‹ášœ
    ᚛ᚑᚌášáš‹ášœ
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-001.html b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-001.html new file mode 100644 index 00000000000..f687c7cdc37 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-001.html @@ -0,0 +1,22 @@ + + +CSS Text level 3 Test: trailing ogham spaces + + + + + + +

    Test passes if the content of the blue and orange boxes is identical to that of the black box. + +

    ᚛ᚑᚌášáš‹ášœ ᚛ᚑᚌášáš‹ášœ
    +
    ᚛ᚑᚌášáš‹ášœ 
    ᚛ᚑᚌášáš‹ášœ
    +
    ᚛ᚑᚌášáš‹ášœ
    ᚛ᚑᚌášáš‹ášœ
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-002.html b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-002.html new file mode 100644 index 00000000000..7bf17750783 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-002.html @@ -0,0 +1,23 @@ + + +CSS Text level 3 Test: trailing pre-line ogham spaces + + + + + + +

    Test passes if the content of the blue and orange boxes is identical to that of the black box. + +

    ᚛ᚑᚌášáš‹ášœ ᚛ᚑᚌášáš‹ášœ
    +
    ᚛ᚑᚌášáš‹ášœ 
    ᚛ᚑᚌášáš‹ášœ
    +
    ᚛ᚑᚌášáš‹ášœ
    ᚛ᚑᚌášáš‹ášœ
    diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-003.html b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-003.html new file mode 100644 index 00000000000..597feba3096 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ogham-003.html @@ -0,0 +1,23 @@ + + +CSS Text level 3 Test: trailing nowrap ogham spaces + + + + + + +

    Test passes if the content of the blue and orange boxes is identical to that of the black box. + +

    ᚛ᚑᚌášáš‹ášœ
    ᚛ᚑᚌášáš‹ášœ 
    +
    ᚛ᚑᚌášáš‹ášœ 
    ᚛ᚑᚌášáš‹ášœ
    +
    ᚛ᚑᚌášáš‹ášœ
    ᚛ᚑᚌášáš‹ášœ
    diff --git a/tests/wpt/web-platform-tests/css/css-transitions/changing-while-transition-004.html b/tests/wpt/web-platform-tests/css/css-transitions/changing-while-transition-004.html new file mode 100644 index 00000000000..71038ac11f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transitions/changing-while-transition-004.html @@ -0,0 +1,57 @@ + + + + +CSS Transitions Test: behavior when transition changes to default while transitioning + + + + + + + + + +
    + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-001.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-001.html index 921525ea72d..8fa5f5825aa 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-001.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-delay-001.html @@ -69,11 +69,7 @@ }); var result = computedStyle(transition, 'transition-delay'); assert_equals(result, values[key], "Expected computed value"); - }, "parse '" + key + "'", - { - // mark tests that fail as such - flags: invalidTests[key] ? "invalid" : "" - }); + }, "parse '" + key + "'"); } } diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-001.html b/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-001.html index b5c095f001e..60b9f5fc5c8 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-001.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/transition-duration-001.html @@ -70,11 +70,7 @@ }); var result = computedStyle(transition, 'transition-duration'); assert_equals(result, values[key], "Expected computed value"); - }, "parse '" + key + "'", - { - // mark tests that fail as such - flags: invalidTests[key] ? "invalid" : "" - }); + }, "parse '" + key + "'"); } } diff --git a/tests/wpt/web-platform-tests/css/css-ui/appearance-button-001-ref.html b/tests/wpt/web-platform-tests/css/css-ui/appearance-button-001-ref.html deleted file mode 100644 index 3e4da522e54..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/appearance-button-001-ref.html +++ /dev/null @@ -1,22 +0,0 @@ - - -Reference: appearance: button - -
    - - - - - - - - - - - - - -
    diff --git a/tests/wpt/web-platform-tests/css/css-ui/appearance-button-001.html b/tests/wpt/web-platform-tests/css/css-ui/appearance-button-001.html index 33fccb58065..317f56b18ae 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/appearance-button-001.html +++ b/tests/wpt/web-platform-tests/css/css-ui/appearance-button-001.html @@ -2,13 +2,15 @@ CSS Basic User Interface Test: appearance: button - - + +
    + a + @@ -19,6 +21,7 @@ + diff --git a/tests/wpt/web-platform-tests/css/css-ui/appearance-button-002.tentative-ref.html b/tests/wpt/web-platform-tests/css/css-ui/appearance-button-002.tentative-ref.html deleted file mode 100644 index c8c10ea511f..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/appearance-button-002.tentative-ref.html +++ /dev/null @@ -1,4 +0,0 @@ - - -Reference: appearance: button - diff --git a/tests/wpt/web-platform-tests/css/css-ui/appearance-button-002.tentative.html b/tests/wpt/web-platform-tests/css/css-ui/appearance-button-002.tentative.html deleted file mode 100644 index 5c9e9a280ac..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/appearance-button-002.tentative.html +++ /dev/null @@ -1,16 +0,0 @@ - - -CSS Basic User Interface Test: appearance: button - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-auto-input-non-widget-001.html b/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-auto-input-non-widget-001.html new file mode 100644 index 00000000000..5f5ddde393f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-auto-input-non-widget-001.html @@ -0,0 +1,16 @@ + + + +CSS Basic User Interface Test: -webkit-appearance: auto on non-widget input elements + + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-button-001.html b/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-button-001.html index c71a914723b..cf36b42384a 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-button-001.html +++ b/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-button-001.html @@ -6,13 +6,15 @@ Edit the appearance-* file instead and then run: CSS Basic User Interface Test: -webkit-appearance: button - - + +
    + a + @@ -23,6 +25,7 @@ Edit the appearance-* file instead and then run: + diff --git a/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-button-002.tentative.html b/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-button-002.tentative.html deleted file mode 100644 index 4c322fa20e4..00000000000 --- a/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-button-002.tentative.html +++ /dev/null @@ -1,16 +0,0 @@ - - -CSS Basic User Interface Test: -webkit-appearance: button - - - - - - diff --git a/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-progress-bar-002.html b/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-progress-bar-002.html new file mode 100644 index 00000000000..5394836b756 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-ui/webkit-appearance-progress-bar-002.html @@ -0,0 +1,20 @@ + + + +CSS Basic User Interface Test: progress dynamic appearance + + + + + + diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-001-print-ref.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-001-print-ref.html new file mode 100644 index 00000000000..bc914522c7f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-001-print-ref.html @@ -0,0 +1,13 @@ + + +CSS test reference + +
    I should not overflow to the next page.
    diff --git a/tests/wpt/web-platform-tests/css/css-values/viewport-units-001-print.html b/tests/wpt/web-platform-tests/css/css-values/viewport-units-001-print.html new file mode 100644 index 00000000000..3bff494e535 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-values/viewport-units-001-print.html @@ -0,0 +1,17 @@ + + +Viewport units in print account for margins + + + + + +
    I should not overflow to the next page.
    diff --git a/tests/wpt/web-platform-tests/css/css-will-change/will-change-stacking-context-003-ref.html b/tests/wpt/web-platform-tests/css/css-will-change/will-change-stacking-context-003-ref.html new file mode 100644 index 00000000000..38138ebcac3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-will-change/will-change-stacking-context-003-ref.html @@ -0,0 +1,11 @@ + + +CSS Test Reference + +
    diff --git a/tests/wpt/web-platform-tests/css/css-will-change/will-change-stacking-context-003.html b/tests/wpt/web-platform-tests/css/css-will-change/will-change-stacking-context-003.html new file mode 100644 index 00000000000..b764d2e86d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-will-change/will-change-stacking-context-003.html @@ -0,0 +1,36 @@ + + +CSS Test: will-change: opacity should create a stacking context for inlines. + + + + + + +
    + + +
    +
    diff --git a/tests/wpt/web-platform-tests/css/cssom-view/client-props-root-display-none-crash.html b/tests/wpt/web-platform-tests/css/cssom-view/client-props-root-display-none-crash.html new file mode 100644 index 00000000000..654e321e420 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom-view/client-props-root-display-none-crash.html @@ -0,0 +1,17 @@ + + + + + + + +Shouldn't assert when asking for the client* props on the scrolling element + + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html index 8aef8697747..7b4a8e38632 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-main-frame-root.html @@ -1,6 +1,7 @@ Testing scrollOptions' behavior for Element.scroll* and scroll-behavior on the root of the main frame + diff --git a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html index 0a8ed39d1b9..ef587fea49c 100644 --- a/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html +++ b/tests/wpt/web-platform-tests/css/cssom-view/scroll-behavior-subframe-window.html @@ -1,6 +1,7 @@ Testing scrollOptions' behavior for Element.scroll* and scroll-behavior on the root of a subframe + diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSCounterStyleRule.html b/tests/wpt/web-platform-tests/css/cssom/CSSCounterStyleRule.html new file mode 100644 index 00000000000..afae84b0b25 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/CSSCounterStyleRule.html @@ -0,0 +1,21 @@ + + +CSSOM - CSSCounterStyleRule interface + + + + + diff --git a/tests/wpt/web-platform-tests/css/cssom/CSSFontFaceRule.html b/tests/wpt/web-platform-tests/css/cssom/CSSFontFaceRule.html new file mode 100644 index 00000000000..438c30df9eb --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/CSSFontFaceRule.html @@ -0,0 +1,21 @@ + + +CSSOM - CSSFontFaceRule interface + + + + + diff --git a/tests/wpt/web-platform-tests/css/cssom/removerule-invalidation-crash.html b/tests/wpt/web-platform-tests/css/cssom/removerule-invalidation-crash.html new file mode 100644 index 00000000000..a83f43d5faf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/cssom/removerule-invalidation-crash.html @@ -0,0 +1,16 @@ + + +CSSOM - removeRule doesn't assert when removing a particular set of rules + + + + diff --git a/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-svg-foreignObject.html b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-svg-foreignObject.html new file mode 100644 index 00000000000..4ccaa0cf81f --- /dev/null +++ b/tests/wpt/web-platform-tests/css/filter-effects/backdrop-filter-svg-foreignObject.html @@ -0,0 +1,38 @@ + +backdrop-filter: on SVG foreignObject + + + +
    +

    Expected: A green box and an overlapping black box, with a magenta
    + overlapping region.

    +
    +
    + + + +
    + + + diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/prefers-contrast.html b/tests/wpt/web-platform-tests/css/mediaqueries/prefers-contrast.html index 617e0b97256..fe0d2f057c3 100644 --- a/tests/wpt/web-platform-tests/css/mediaqueries/prefers-contrast.html +++ b/tests/wpt/web-platform-tests/css/mediaqueries/prefers-contrast.html @@ -7,8 +7,8 @@ diff --git a/tests/wpt/web-platform-tests/docs/Makefile b/tests/wpt/web-platform-tests/docs/Makefile index 1b7fe8e8f59..9bd9c429f55 100644 --- a/tests/wpt/web-platform-tests/docs/Makefile +++ b/tests/wpt/web-platform-tests/docs/Makefile @@ -16,9 +16,9 @@ help: tools/%: mkdir -p $(shell dirname $@) test -d ../$@ - ln -s ../../$@ $@ + ln -s ${CURDIR}/../$@ $@ # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile tools/wptserve tools/certs tools/wptrunner +%: Makefile tools/wptserve tools/certs tools/wptrunner tools/third_party/pywebsocket3 @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/tests/wpt/web-platform-tests/docs/admin/index.md b/tests/wpt/web-platform-tests/docs/admin/index.md index 98725bfa31b..3073b9678fe 100644 --- a/tests/wpt/web-platform-tests/docs/admin/index.md +++ b/tests/wpt/web-platform-tests/docs/admin/index.md @@ -10,13 +10,23 @@ infrastructure which makes the project possible. :titlesonly: ../README - ../tools/wptserve/docs/index.rst ../tools/wptrunner/README + ../tools/wptserve/docs/index.rst + pywebsocket3 .. toctree:: :hidden: ../tools/wptserve/README + ../tools/third_party/pywebsocket3/README +``` + +### Indices and tables + +```eval_rst +* :ref:`modindex` +* :ref:`genindex` +* :ref:`search` ``` ## Secrets diff --git a/tests/wpt/web-platform-tests/docs/admin/pywebsocket3.rst b/tests/wpt/web-platform-tests/docs/admin/pywebsocket3.rst new file mode 100644 index 00000000000..af768d6b354 --- /dev/null +++ b/tests/wpt/web-platform-tests/docs/admin/pywebsocket3.rst @@ -0,0 +1,91 @@ +pywebsocket3: A Standalone WebSocket Server for testing purposes +================================================================ + +.. contents:: + :local: + +:mod:`mod_pywebsocket` +--------------------------------------------- + +.. automodule:: mod_pywebsocket + :members: + +:mod:`mod_pywebsocket.common` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.common + :members: + +:mod:`mod_pywebsocket.dispatch` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.dispatch + :members: + +:mod:`mod_pywebsocket.extensions` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.extensions + :members: + +:mod:`mod_pywebsocket.handshake` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.handshake + :members: + :imported-members: + +:mod:`mod_pywebsocket.request_handler` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.request_handler + :members: + +:mod:`mod_pywebsocket.stream` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.stream + :members: + :imported-members: + +:mod:`mod_pywebsocket.http_header_util` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.http_header_util + :members: + +:mod:`mod_pywebsocket.msgutil` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.msgutil + :members: + +:mod:`mod_pywebsocket.util` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.util + :members: + +:mod:`mod_pywebsocket.memorizingfile` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.memorizingfile + :members: + +:mod:`mod_pywebsocket.websocket_server` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.websocket_server + :members: + +:mod:`mod_pywebsocket.server_util` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.server_util + :members: + +:mod:`mod_pywebsocket.standalone` +--------------------------------------------- + +.. automodule:: mod_pywebsocket.standalone + :members: diff --git a/tests/wpt/web-platform-tests/docs/conf.py b/tests/wpt/web-platform-tests/docs/conf.py index 89f30a02a33..44d3c2f76bb 100644 --- a/tests/wpt/web-platform-tests/docs/conf.py +++ b/tests/wpt/web-platform-tests/docs/conf.py @@ -16,6 +16,7 @@ import os import sys sys.path.insert(0, os.path.abspath('..')) sys.path.insert(0, os.path.abspath('../tools/wptserve')) +sys.path.insert(0, os.path.abspath('../tools/third_party/pywebsocket3')) sys.path.insert(0, os.path.abspath('../tools')) import localpaths @@ -44,7 +45,9 @@ extensions = [ 'recommonmark', 'sphinxarg.ext', 'sphinx.ext.autodoc', - 'sphinx.ext.intersphinx' + 'sphinx.ext.intersphinx', + # Google-style Python docs + 'sphinx.ext.napoleon', ] # Add any paths that contain templates here, relative to this directory. @@ -59,10 +62,23 @@ source_suffix = '.rst' # The master toctree document. master_doc = 'index' -# These values are used in the documentation of wptserve but are not recognized -# by Sphinx. +# These values are used in third-party documentation not recognized by Sphinx. # https://stackoverflow.com/questions/51824453/how-to-document-parameter-of-type-function-in-sphinx -nitpick_ignore = [('py:class', 'Callable'), ('py:obj', 'None')] +nitpick_ignore = [ + # wptserve + ('py:class', 'Callable'), + ('py:obj', 'None'), + # pywebsocket3 + ('py:exc', 'AbortedByUserException'), + ('py:exc', 'HandshakeException'), + ('py:exc', 'InvalidFrameException'), + ('py:exc', 'UnsupportedFrameException'), + ('py:exc', 'InvalidUTF8Exception'), + ('py:exc', 'ConnectionTerminatedException'), + ('py:exc', 'BadOperationException'), + ('py:exc', 'Exception'), + ('py:exc', 'ValueError'), +] # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/tests/wpt/web-platform-tests/docs/make.bat b/tests/wpt/web-platform-tests/docs/make.bat index 49607bb0ae9..415076a912f 100755 --- a/tests/wpt/web-platform-tests/docs/make.bat +++ b/tests/wpt/web-platform-tests/docs/make.bat @@ -31,6 +31,9 @@ if not exist tools\wptserve\ ( mklink /d tools\wptserve ..\..\tools\wptserve ) if not exist tools\certs\ ( mklink /d tools\certs ..\..\tools\certs ) if not exist tools\wptrunner\ ( mklink /d tools\wptrunner ..\..\tools\wptrunner ) +if not exist tools\third_party\ ( mkdir tools\third_party ) +if not exist tools\third_party\pywebsocket3\ ( mklink /d tools\third_party\pywebsocket3 ..\..\..\tools\third_party\pywebsocket3 ) + %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% goto end diff --git a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md index 91823444d5d..f5cfa36915d 100644 --- a/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md +++ b/tests/wpt/web-platform-tests/docs/running-tests/from-local-system.md @@ -7,7 +7,8 @@ The tests are designed to be run from your local computer. Running the tests requires `python`, `pip` and `virtualenv`, as well as updating the system `hosts` file. -Note that Python 2.7 is required. Using Python 3 is not supported. +Python 3 is supported and preferred, but for now it is still possible to use +Python 2.7 if necessary. The required setup is different depending on your operating system. @@ -22,6 +23,10 @@ On Debian or Ubuntu: sudo apt-get install python python-pip virtualenv ``` +It is important to have a package that provides a `python` binary. On Fedora, +for example, that means installing the `python-unversioned-command` package. On +Ubuntu Focal and later, the package is called `python-is-python3`. + ### macOS Setup The system-provided Python can be used, while `pip` and `virtualenv` can be diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/idlharness.md b/tests/wpt/web-platform-tests/docs/writing-tests/idlharness.md index 13e1dc03fef..4af4224e644 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/idlharness.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/idlharness.md @@ -1,113 +1,86 @@ -# idlharness.js API +# IDL Tests (idlharness.js) ## Introduction ## -`idlharness.js` automatically generates browser tests for WebIDL interfaces, using -the testharness.js framework. To use, first include the following: +`idlharness.js` generates tests for Web IDL fragments, using the +[JavaScript Tests (`testharness.js`)](testharness.md) infrastructure. You typically want to use +`.any.js` or `.window.js` for this to avoid having to write unnessary boilerplate. -```html - - - - -``` +## Adding IDL fragments -Then you'll need some type of IDLs. Here's some script that can be run on a -spec written in HTML, which will grab all the elements with `class="idl"`, -concatenate them, and replace the body so you can copy-paste: +Web IDL is automatically scraped from specifications and added to the `/interfaces/` directory. See +the [README](https://github.com/web-platform-tests/wpt/blob/master/interfaces/README.md) there for +details. +## Testing IDL fragments + +For example, the Fetch API's IDL is tested in +[`/fetch/api/idlharness.any.js`](https://github.com/web-platform-tests/wpt/blob/master/fetch/api/idlharness.any.js): ```js -var s = ""; -[].forEach.call(document.getElementsByClassName("idl"), function(idl) { - //https://www.w3.org/Bugs/Public/show_bug.cgi?id=14914 - if (!idl.classList.contains("extract")) - { - if (s !== "") - { - s += "\n\n"; +// META: global=window,worker +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: timeout=long + +idl_test( + ['fetch'], + ['referrer-policy', 'html', 'dom'], + idl_array => { + idl_array.add_objects({ + Headers: ["new Headers()"], + Request: ["new Request('about:blank')"], + Response: ["new Response()"], + }); + if (self.GLOBAL.isWindow()) { + idl_array.add_objects({ Window: ['window'] }); + } else if (self.GLOBAL.isWorker()) { + idl_array.add_objects({ WorkerGlobalScope: ['self'] }); } - s += idl.textContent.replace(/ +$/mg, ""); } -}); -document.body.innerHTML = '
    ';
    -document.body.firstChild.textContent = s;
    +);
     ```
    +Note how it includes `/resources/WebIDLParser.js` and `/resources/idlharness.js` in addition to
    +`testharness.js` and `testharnessreport.js` (automatically included due to usage of `.any.js`).
    +These are needed to make the `idl_test` function work.
     
    -Once you have that, put it in your script somehow.  The easiest way is to
    -embed it literally in an HTML file with `
    +
    +
    +
    +
    +  
     ```
     
    -With `subsetTestByKey`, the key is given as the first argument, and the
    -query string can include or exclude a key (will be matched as a regular
    -expression).
    +Here too you could avoid the wrapper `test()` function:
     
     ```html
     
    -Testing variants by key
    -
    -
    -
    -
    +
    +Ensure UTF-8 declaration is observed
    +
    +
    +
    +  
     ```
     
    -## Auto-generated test boilerplate
    +In this case the test title is taken from the `title` element.
     
    -While most JavaScript tests require a certain amount of HTML
    -boilerplate to include the test library, etc., tests which are
    -expressible purely in script (e.g. tests for workers) can have all the
    -needed HTML and script boilerplate auto-generated.
    +## Dedicated worker tests (`.worker.js`)
     
    -### Standalone window tests
    -
    -Tests that only require a script file running in window scope can use
    -standalone window tests. In this case the test is a javascript file
    -with the extension `.window.js`. This is sourced from a generated
    -document which sources `testharness.js`, `testharnessreport.js` and
    -the test script. For a source script with the name
    -`example.window.js`, the corresponding test resource will be
    -`example.window.html`.
    -
    -### Standalone workers tests
    -
    -Tests that only require assertions in a dedicated worker scope can use
    -standalone workers tests. In this case, the test is a JavaScript file
    -with extension `.worker.js` that imports `testharness.js`. The test can
    -then use all the usual APIs, and can be run from the path to the
    -JavaScript file with the `.js` removed.
    +Create a JavaScript file that imports `testharness.js` and whose filename ends in `.worker.js` to
    +have the necessary HTML boilerplate generated for you at `.worker.html`.
     
     For example, one could write a test for the `FileReaderSync` API by
     creating a `FileAPI/FileReaderSync.worker.js` as follows:
    @@ -125,7 +105,10 @@ done();
     
     This test could then be run from `FileAPI/FileReaderSync.worker.html`.
     
    -### Multi-global tests
    +(Removing the need for `importScripts()` and `done()` is tracked in
    +[issue #11529](https://github.com/web-platform-tests/wpt/issues/11529).)
    +
    +## Tests for other or multiple globals (`.any.js`)
     
     Tests for features that exist in multiple global scopes can be written in a way
     that they are automatically run in several scopes. In this case, the test is a
    @@ -178,16 +161,18 @@ be made available by the framework:
         self.GLOBAL.isWindow()
         self.GLOBAL.isWorker()
     
    -Although [the global `done` function must be explicitly invoked for most
    +Although [the global `done()` function must be explicitly invoked for most
     dedicated worker tests and shared worker
     tests](testharness-api.html#determining-when-all-tests-are-complete), it is
     automatically invoked for tests defined using the "multi-global" pattern.
     
    -### Specifying a test title in auto-generated boilerplate tests
    +## Other features of `.window.js`, `.worker.js` and `.any.js`
    +
    +### Specifying a test title
     
     Use `// META: title=This is the title of the test` at the beginning of the resource.
     
    -### Including other JavaScript resources in auto-generated boilerplate tests
    +### Including other JavaScript files
     
     Use `// META: script=link/to/resource.js` at the beginning of the resource. For example,
     
    @@ -198,11 +183,11 @@ Use `// META: script=link/to/resource.js` at the beginning of the resource. For
     
     can be used to include both the global and a local `utils.js` in a test.
     
    -### Specifying a timeout of long in auto-generated boilerplate tests
    +### Specifying a timeout of long
     
     Use `// META: timeout=long` at the beginning of the resource.
     
    -### Specifying test [variants](#variants) in auto-generated boilerplate tests
    +### Specifying test [variants](#variants)
     
     Use `// META: variant=url-suffix` at the beginning of the resource. For example,
     
    @@ -210,3 +195,71 @@ Use `// META: variant=url-suffix` at the beginning of the resource. For example,
     // META: variant=
     // META: variant=?wss
     ```
    +
    +## Variants
    +
    +A test file can have multiple variants by including `meta` elements,
    +for example:
    +
    +```html
    +
    +
    +```
    +
    +Test runners will execute the test for each variant specified, appending the corresponding content
    +attribute value to the URL of the test as they do so.
    +
    +`/common/subset-tests.js` and `/common/subset-tests-by-key.js` are two utility scripts that work
    +well together with variants, allowing a test to be split up into subtests in cases when there are
    +otherwise too many tests to complete inside the timeout. For example:
    +
    +```html
    +
    +Testing variants
    +
    +
    +
    +
    +
    +
    +```
    +
    +With `subsetTestByKey`, the key is given as the first argument, and the
    +query string can include or exclude a key (which will be matched as a regular
    +expression).
    +
    +```html
    +
    +Testing variants by key
    +
    +
    +
    +
    +
    +
    +
    +```
    +
    +## Table of Contents
    +
    +```eval_rst
    +.. toctree::
    +   :maxdepth: 1
    +
    +   testharness-api
    +   testdriver
    +   testdriver-extension-tutorial
    +   idlharness
    +```
    diff --git a/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html b/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html
    index d572dcb0465..5a01f4e1ece 100644
    --- a/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html
    +++ b/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html
    @@ -13,7 +13,7 @@
     
     // This document is served with a Document Policy header that should satisfy
     // any requests that include a required policy for the
    -// 'unoptimized-lossless-images' feature.
    +// 'lossless-images-max-bpp' feature.
     const params = new URLSearchParams(window.location.search);
     const id = params.get('id');
     const level = params.get('level');
    diff --git a/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html.headers b/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html.headers
    index a6c7386bda0..419a3c3dd16 100644
    --- a/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html.headers
    +++ b/tests/wpt/web-platform-tests/document-policy/echo-policy-nested.html.headers
    @@ -1 +1 @@
    -Document-Policy: unoptimized-lossless-images=0.0
    +Document-Policy: lossless-images-max-bpp=0.0
    diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/document-write.tentative.html b/tests/wpt/web-platform-tests/document-policy/experimental-features/document-write.tentative.html
    similarity index 89%
    rename from tests/wpt/web-platform-tests/feature-policy/experimental-features/document-write.tentative.html
    rename to tests/wpt/web-platform-tests/document-policy/experimental-features/document-write.tentative.html
    index 7e09ef7e77a..551703c6f56 100644
    --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/document-write.tentative.html
    +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/document-write.tentative.html
    @@ -2,7 +2,7 @@
     'document-write' tests
     
     
    -
    +
     
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/document-write-disallowed.html.headers b/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/document-write-disallowed.html.headers
    new file mode 100644
    index 00000000000..32846f724a4
    --- /dev/null
    +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/document-write-disallowed.html.headers
    @@ -0,0 +1 @@
    +Document-Policy: document-write=?0
    \ No newline at end of file
    diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/parser-blocking-script.js b/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/parser-blocking-script.js
    similarity index 100%
    rename from tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/parser-blocking-script.js
    rename to tests/wpt/web-platform-tests/document-policy/experimental-features/resources/parser-blocking-script.js
    diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/sync-script-test.js b/tests/wpt/web-platform-tests/document-policy/experimental-features/resources/sync-script-test.js
    similarity index 100%
    rename from tests/wpt/web-platform-tests/feature-policy/experimental-features/resources/sync-script-test.js
    rename to tests/wpt/web-platform-tests/document-policy/experimental-features/resources/sync-script-test.js
    diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/sync-script.tentative.https.sub.html b/tests/wpt/web-platform-tests/document-policy/experimental-features/sync-script.tentative.https.sub.html
    similarity index 65%
    rename from tests/wpt/web-platform-tests/feature-policy/experimental-features/sync-script.tentative.https.sub.html
    rename to tests/wpt/web-platform-tests/document-policy/experimental-features/sync-script.tentative.https.sub.html
    index 94f0dcf13fc..a199a4ed3f9 100644
    --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/sync-script.tentative.https.sub.html
    +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/sync-script.tentative.https.sub.html
    @@ -15,8 +15,8 @@
     // before verifying the behavior.
     window.didExecuteInlineParsingBlockingScript = true;
     
    -
    -
    -
    -
    +
    +
    +
    +
     
    diff --git a/tests/wpt/web-platform-tests/document-policy/experimental-features/sync-script.tentative.https.sub.html.headers b/tests/wpt/web-platform-tests/document-policy/experimental-features/sync-script.tentative.https.sub.html.headers
    new file mode 100644
    index 00000000000..cfe200c27b0
    --- /dev/null
    +++ b/tests/wpt/web-platform-tests/document-policy/experimental-features/sync-script.tentative.https.sub.html.headers
    @@ -0,0 +1 @@
    +Document-Policy: sync-script=?0
    diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html b/tests/wpt/web-platform-tests/document-policy/reporting/document-write-report-only-tentative.html
    similarity index 83%
    rename from tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html
    rename to tests/wpt/web-platform-tests/document-policy/reporting/document-write-report-only-tentative.html
    index 69ce9f82298..bf17807f4a9 100644
    --- a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html
    +++ b/tests/wpt/web-platform-tests/document-policy/reporting/document-write-report-only-tentative.html
    @@ -8,7 +8,7 @@
         
    +
    +
    +
    diff --git a/tests/wpt/web-platform-tests/editing/other/recursive-exec-command-calls.tentative.html b/tests/wpt/web-platform-tests/editing/other/recursive-exec-command-calls.tentative.html
    new file mode 100644
    index 00000000000..60a3b03099f
    --- /dev/null
    +++ b/tests/wpt/web-platform-tests/editing/other/recursive-exec-command-calls.tentative.html
    @@ -0,0 +1,37 @@
    +
    +
    +Test recursive `Document.execCommand()` calls
    +
    +
    +

    + diff --git a/tests/wpt/web-platform-tests/entries-api/idlharness-manual.html b/tests/wpt/web-platform-tests/entries-api/idlharness-manual.html deleted file mode 100644 index 72bdf67dfa6..00000000000 --- a/tests/wpt/web-platform-tests/entries-api/idlharness-manual.html +++ /dev/null @@ -1,54 +0,0 @@ - - -Entries API: IDL Tests - - - - - - - diff --git a/tests/wpt/web-platform-tests/entries-api/idlharness-manual.window.js b/tests/wpt/web-platform-tests/entries-api/idlharness-manual.window.js new file mode 100644 index 00000000000..9f2731bf1d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/entries-api/idlharness-manual.window.js @@ -0,0 +1,46 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js +// META: script=support.js + +'use strict'; + +let resolve; +let globalItem; +let globalEntry; + +let entriesPromise = new Promise(r => { + resolve = r; +}); + +entry_test((t, entry, item) => { + assert_true(entry.isDirectory); + resolve(getEntriesAsPromise(entry)); + globalItem = item; + globalEntry = entry; + t.done(); +}); + +idl_test( + ['entries-api'], + ['FileAPI', 'html', 'dom'], + async idl_array => { + const entries = await entriesPromise; + window.samples = { + item: globalItem, + dirEntry: entries.filter(entry => entry.isDirectory)[0], + fileEntry: entries.filter(entry => entry.isFile)[0], + fileSystem: globalEntry.filesystem, + }; + + idl_array.add_objects({ + File: ['new File([], "example.txt")'], + HTMLInputElement: ['document.createElement("input")'], + DataTransferItem: ['samples.item'], + FileSystemEntry: [], + FileSystemDirectoryEntry: ['samples.dirEntry'], + FileSystemDirectoryReader: ['samples.dirEntry.createReader()'], + FileSystemFileEntry: ['samples.fileEntry'], + FileSystem: ['samples.fileSystem'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/entries-api/idlharness.html b/tests/wpt/web-platform-tests/entries-api/idlharness.html deleted file mode 100644 index 091549eb2dc..00000000000 --- a/tests/wpt/web-platform-tests/entries-api/idlharness.html +++ /dev/null @@ -1,39 +0,0 @@ - - -Entries API: IDL Tests - - - - - - diff --git a/tests/wpt/web-platform-tests/entries-api/idlharness.window.js b/tests/wpt/web-platform-tests/entries-api/idlharness.window.js new file mode 100644 index 00000000000..32527be514a --- /dev/null +++ b/tests/wpt/web-platform-tests/entries-api/idlharness.window.js @@ -0,0 +1,15 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +idl_test( + ['entries-api'], + ['FileAPI', 'html', 'dom'], + idl_array => { + idl_array.add_objects({ + File: ['new File([], "example.txt")'], + HTMLInputElement: ['document.createElement("input")'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/eventsource/README.md b/tests/wpt/web-platform-tests/eventsource/README.md index 60bbea3f3b9..e19a0ba6c74 100644 --- a/tests/wpt/web-platform-tests/eventsource/README.md +++ b/tests/wpt/web-platform-tests/eventsource/README.md @@ -1,2 +1,4 @@ These are the Server-sent events (`EventSource`) tests for the [Server-sent events chapter of the HTML Standard](https://html.spec.whatwg.org/multipage/comms.html#server-sent-events). + +IDL tests are part of the `/html/dom/idlharness.*` resources. diff --git a/tests/wpt/web-platform-tests/eventsource/idlharness.html b/tests/wpt/web-platform-tests/eventsource/idlharness.html deleted file mode 100644 index 2935927fd32..00000000000 --- a/tests/wpt/web-platform-tests/eventsource/idlharness.html +++ /dev/null @@ -1,74 +0,0 @@ - -EventSource IDL tests - - - - - -

    EventSource IDL tests

    -
    - - - diff --git a/tests/wpt/web-platform-tests/feature-policy/README.md b/tests/wpt/web-platform-tests/feature-policy/README.md index 48cb95ebf74..646fc1e0bec 100644 --- a/tests/wpt/web-platform-tests/feature-policy/README.md +++ b/tests/wpt/web-platform-tests/feature-policy/README.md @@ -5,7 +5,7 @@ This directory contains a framework to test features with feature policy. When adding a new feature to feature policy, the following cases should be tested: * feature enabled by header policy [HTTP tests] - + test when feature is enabled by feature policy HTTP headerr; + + test when feature is enabled by feature policy HTTP header; * feature disabled by header policy [HTTP tests] + test when feature is disabled by feature policy HTTP header; * feature enabled on self origin by header policy [HTTP tests] diff --git a/tests/wpt/web-platform-tests/feature-policy/experimental-features/sync-script.tentative.https.sub.html.headers b/tests/wpt/web-platform-tests/feature-policy/experimental-features/sync-script.tentative.https.sub.html.headers deleted file mode 100644 index b468c8b1822..00000000000 --- a/tests/wpt/web-platform-tests/feature-policy/experimental-features/sync-script.tentative.https.sub.html.headers +++ /dev/null @@ -1 +0,0 @@ -Feature-Policy: sync-script 'none' diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html.headers deleted file mode 100644 index bd1418700c2..00000000000 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-report-only.html.headers +++ /dev/null @@ -1 +0,0 @@ -Feature-Policy-Report-Only: document-write 'none' diff --git a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-reporting.html.headers b/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-reporting.html.headers deleted file mode 100644 index 57102d5ee7c..00000000000 --- a/tests/wpt/web-platform-tests/feature-policy/reporting/document-write-reporting.html.headers +++ /dev/null @@ -1 +0,0 @@ -Feature-Policy: document-write 'none' diff --git a/tests/wpt/web-platform-tests/fetch/api/basic/request-headers-nonascii.any.js b/tests/wpt/web-platform-tests/fetch/api/basic/request-headers-nonascii.any.js new file mode 100644 index 00000000000..0d822fb24f3 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/basic/request-headers-nonascii.any.js @@ -0,0 +1,27 @@ +// This tests characters that are not +// https://infra.spec.whatwg.org/#ascii-code-point +// but are still +// https://infra.spec.whatwg.org/#byte-value +// in request header values. +// Such request header values are valid and thus sent to servers. +// Characters outside the #byte-value range are tested e.g. in +// fetch/api/headers/headers-errors.html. + +promise_test(() => { + return fetch( + "../resources/inspect-headers.py?headers=accept|x-test", + {headers: { + "Accept": "before-æøå-after", + "X-Test": "before-ß-after" + }}) + .then(res => { + assert_equals( + res.headers.get("x-request-accept"), + "before-æøå-after", + "Accept Header"); + assert_equals( + res.headers.get("x-request-x-test"), + "before-ß-after", + "X-Test Header"); + }); +}, "Non-ascii bytes in request headers"); diff --git a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html index 806606cf627..e137a7ea512 100644 --- a/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html +++ b/tests/wpt/web-platform-tests/fetch/api/request/request-structure.html @@ -58,7 +58,7 @@ break; case "destination": - defaultValue = "empty"; + defaultValue = ""; newValue = "worker"; break; diff --git a/tests/wpt/web-platform-tests/fetch/api/response/response-body-read-task-handling.html b/tests/wpt/web-platform-tests/fetch/api/response/response-body-read-task-handling.html new file mode 100644 index 00000000000..c2c90eaa8bd --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/api/response/response-body-read-task-handling.html @@ -0,0 +1,54 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/http-cache/cache-mode.html b/tests/wpt/web-platform-tests/fetch/http-cache/cache-mode.html new file mode 100644 index 00000000000..ea5bbad0188 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/http-cache/cache-mode.html @@ -0,0 +1,72 @@ + + + + + Fetch - Cache Mode + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/metadata/embed.https.sub.html b/tests/wpt/web-platform-tests/fetch/metadata/embed.https.sub.tentative.html similarity index 92% rename from tests/wpt/web-platform-tests/fetch/metadata/embed.https.sub.html rename to tests/wpt/web-platform-tests/fetch/metadata/embed.https.sub.tentative.html index 8a59b821b45..1900dbdf081 100644 --- a/tests/wpt/web-platform-tests/fetch/metadata/embed.https.sub.html +++ b/tests/wpt/web-platform-tests/fetch/metadata/embed.https.sub.tentative.html @@ -6,6 +6,11 @@ + +

    Relevant issue: +<embed> should support loading random HTML documents, like <object> +

    + + - """ % json.dumps({ + """ % (json.dumps({ u"dest": isomorphic_decode(request.headers.get(b"sec-fetch-dest", b"")), u"mode": isomorphic_decode(request.headers.get(b"sec-fetch-mode", b"")), u"site": isomorphic_decode(request.headers.get(b"sec-fetch-site", b"")), u"user": isomorphic_decode(request.headers.get(b"sec-fetch-user", b"")), - }) + }), json.dumps(key)) return headers, body diff --git a/tests/wpt/web-platform-tests/fetch/range/sw.https.window.js b/tests/wpt/web-platform-tests/fetch/range/sw.https.window.js index 625e513a813..76f80e9416c 100644 --- a/tests/wpt/web-platform-tests/fetch/range/sw.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/range/sw.https.window.js @@ -86,11 +86,11 @@ promise_test(async t => { // Fetching should reject const fetchPromise = w.fetch('?action=use-stored-ranged-response', { mode: 'no-cors' }); - promise_rejects_js(t, TypeError, fetchPromise); + await promise_rejects_js(t, w.TypeError, fetchPromise); // Script loading should error too const loadScriptPromise = loadScript('?action=use-stored-ranged-response', { doc: w.document }); - promise_rejects_js(t, Error, loadScriptPromise); + await promise_rejects_js(t, Error, loadScriptPromise); await loadScriptPromise.catch(() => {}); diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.html b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.html index f90e293bc40..d86bdfbde2c 100644 --- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.html +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/stale-image.html @@ -10,13 +10,14 @@ Use a child document to load the second stale image into because an image loaded into the same document will skip cache-control headers. See: https://html.spec.whatwg.org/#the-list-of-available-images --> - + + diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-08.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-08.html index 8c87576bee2..a8819743fe9 100644 --- a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-08.html +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-08.html @@ -7,10 +7,10 @@ h1 { outline-color: rgb(0, 0, 255); outline-style: solid; - -webkit-column-count: 3; - -webkit-column-gap: 40px; - -webkit-column-rule-color: rgb(0, 0, 255); - -webkit-column-rule-style: solid; + column-count: 3; + column-gap: 40px; + column-rule-color: rgb(0, 0, 255); + column-rule-style: solid; } diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-17-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-17-ref.html index 5a5d7f980f4..125c4364129 100644 --- a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-17-ref.html +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-17-ref.html @@ -6,6 +6,7 @@ forced-color-adjust: none; text-decoration: underline; text-decoration-color: CanvasText; + text-emphasis: '*' CanvasText; -webkit-text-emphasis: '*' CanvasText; } diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-17.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-17.html index fbdc9da0b42..97dd3693855 100644 --- a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-17.html +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-17.html @@ -7,6 +7,7 @@ p { text-decoration: underline; text-decoration-color: red; + text-emphasis: '*' blue; -webkit-text-emphasis: '*' blue; } diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-28.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-28.html index 4e00c65357f..7e2dfefadc4 100644 --- a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-28.html +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-28.html @@ -5,20 +5,23 @@ + + + + + + + + + + + + + + + + +
    ColumnColumnColumn
    EntryEntryEntry
    \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-29.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-29.html new file mode 100644 index 00000000000..794cca771f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-29.html @@ -0,0 +1,42 @@ + + +Test forced colors mode on table styles with sys colors + + + + + + + + + + + + + + + + + + + +
    ColumnColumnColumn
    EntryEntryEntry
    diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-30-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-30-ref.html new file mode 100644 index 00000000000..6029573933b --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-30-ref.html @@ -0,0 +1,18 @@ + + +Forced colors mode - fill/stroke with sys colors. + + +
    + The triangle below should preserve the LinkText and Link fill/stroke colors + in forced colors mode. + + + +
    diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-30.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-30.html new file mode 100644 index 00000000000..2f2a5e2e127 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-30.html @@ -0,0 +1,19 @@ + + +Forced colors mode - fill/stroke with sys colors. + + + + +
    + The triangle below should preserve the LinkText and Link fill/stroke colors + in forced colors mode. + + + +
    diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-31-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-31-ref.html new file mode 100644 index 00000000000..93d4045978f --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-31-ref.html @@ -0,0 +1,18 @@ + + +Forced colors mode - outline and column color with sys colors. + +

    + The outline-color and column-rule-color should be LinkText when forced colors + mode is enabled. +

    diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-31.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-31.html new file mode 100644 index 00000000000..ba338c1e0cc --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-31.html @@ -0,0 +1,22 @@ + + +Forced colors mode - outline and column color with sys colors. + + + +

    + The outline-color and column-rule-color should be LinkText when forced colors + mode is enabled. +

    diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-32.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-32.html new file mode 100644 index 00000000000..bd3595bf3bf --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-32.html @@ -0,0 +1,22 @@ + + +Forced colors mode - webkit-tap-highlight-color with sys color. + + + + + + This link color should not be overridden when forced colors mode is enabled. + + + + diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-33-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-33-ref.html new file mode 100644 index 00000000000..ae7148ba8ed --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-33-ref.html @@ -0,0 +1,16 @@ + + +Test forced colors mode :visited colors + +Visited link. diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-33.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-33.html new file mode 100644 index 00000000000..17299efa2b9 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-33.html @@ -0,0 +1,23 @@ + + +Test forced colors mode :visited colors + + + +Visited link. diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-34-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-34-ref.html new file mode 100644 index 00000000000..b317d2f440c --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-34-ref.html @@ -0,0 +1,16 @@ + + +Test forced colors mode :visited colors with sys colors + +Visited link. diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-34.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-34.html new file mode 100644 index 00000000000..f4ec066e30f --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-34.html @@ -0,0 +1,23 @@ + + +Test forced colors mode :visited colors with sys colors + + + +Visited link. diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-35-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-35-ref.html new file mode 100644 index 00000000000..ba38e484b55 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-35-ref.html @@ -0,0 +1,17 @@ + + +Forced colors mode - :visited fill/stroke. + + + + The triangle below should not preserve the blue/green fill/stroke colors + in forced colors mode. + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-35.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-35.html new file mode 100644 index 00000000000..098a9ce9d33 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-35.html @@ -0,0 +1,23 @@ + + +Forced colors mode - :visited fill/stroke. + + + + + + The triangle below should not preserve the blue/green fill/stroke colors + in forced colors mode. + + + + diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-36-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-36-ref.html new file mode 100644 index 00000000000..838b10da953 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-36-ref.html @@ -0,0 +1,18 @@ + + +Forced colors mode - :visited fill/stroke with sys colors. + + + + The triangle below should preserve the CanvasText/LinkText fill/stroke colors + in forced colors mode. + + + + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-36.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-36.html new file mode 100644 index 00000000000..0fd90810dce --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-36.html @@ -0,0 +1,23 @@ + + +Forced colors mode - :visited fill/stroke with sys colors. + + + + + + The triangle below should preserve the CanvasText/LinkText fill/stroke colors + in forced colors mode. + + + + diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-37-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-37-ref.html new file mode 100644 index 00000000000..a2cc4b7efee --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-37-ref.html @@ -0,0 +1,18 @@ + + +Forced colors mode - :visited outline and column color. + + + The outline-color and column-rule-color should be overridden when forced colors + mode is enabled. + diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-37.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-37.html new file mode 100644 index 00000000000..80e06ed8703 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-37.html @@ -0,0 +1,24 @@ + + +Forced colors mode - :visited outline and column color. + + + + + The outline-color and column-rule-color should be overridden when forced colors + mode is enabled. + diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-38-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-38-ref.html new file mode 100644 index 00000000000..e72a73fcef7 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-38-ref.html @@ -0,0 +1,18 @@ + + +Forced colors mode - :visited outline and column color with sys colors. + + + The outline-color and column-rule-color should be GrayText when forced colors + mode is enabled. + diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-38.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-38.html new file mode 100644 index 00000000000..3179aaf4b99 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-38.html @@ -0,0 +1,24 @@ + + +Forced colors mode - :visited outline and column color with sys colors. + + + + + The outline-color and column-rule-color should be GrayText when forced colors + mode is enabled. + diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-39-ref.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-39-ref.html new file mode 100644 index 00000000000..df6de6eda25 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-39-ref.html @@ -0,0 +1,16 @@ + + +Forced colors mode - pseudo elements. + +

    + The background color of pseudo elements should get overridden in Forced Colors + Mode. +

    diff --git a/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-39.html b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-39.html new file mode 100644 index 00000000000..7b69fc979c2 --- /dev/null +++ b/tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-39.html @@ -0,0 +1,17 @@ + + +Forced colors mode - pseudo elements. + + + +

    + The background color of pseudo elements should get overridden in Forced Colors + Mode. +

    diff --git a/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled.html b/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled.html index 8c7057b430c..40430d7bbfb 100644 --- a/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled.html +++ b/tests/wpt/web-platform-tests/fullscreen/api/document-fullscreen-enabled.html @@ -4,14 +4,14 @@
    - diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-feature-policy-test.sub.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-feature-policy-test.sub.js index 20436be8007..da1af413248 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-feature-policy-test.sub.js +++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-feature-policy-test.sub.js @@ -28,12 +28,12 @@ function run_fp_tests_disabled(sensorName) { const desc = "'new " + sensorName + "()'"; test(() => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); assert_throws_dom("SecurityError", () => {new sensorType()}); }, `${sensorName}: ${header} disallows the top-level document.`); async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, @@ -43,7 +43,7 @@ function run_fp_tests_disabled(sensorName) { }, `${sensorName}: ${header} disallows same-origin iframes.`); async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, @@ -59,11 +59,11 @@ function run_fp_tests_enabled(sensorName) { const desc = "'new " + sensorName + "()'"; test(() => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); }, `${sensorName}: ${header} allows the top-level document.`); async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, @@ -73,7 +73,7 @@ function run_fp_tests_enabled(sensorName) { }, `${sensorName}: ${header} allows same-origin iframes.`); async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, @@ -89,7 +89,7 @@ function run_fp_tests_enabled_by_attribute(sensorName) { const desc = "'new " + sensorName + "()'"; async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, @@ -100,7 +100,7 @@ function run_fp_tests_enabled_by_attribute(sensorName) { }, `${sensorName}: ${header} allows same-origin iframe`); async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, @@ -117,7 +117,7 @@ function run_fp_tests_enabled_by_attribute_redirect_on_load(sensorName) { const desc = "'new " + sensorName + "()'"; async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, @@ -128,7 +128,7 @@ function run_fp_tests_enabled_by_attribute_redirect_on_load(sensorName) { }, `${sensorName}: ${header} allows same-origin relocation`); async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, @@ -145,11 +145,11 @@ function run_fp_tests_enabled_on_self_origin(sensorName) { const desc = "'new " + sensorName + "()'"; test(() => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); }, `${sensorName}: ${header} allows the top-level document.`); async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, @@ -159,7 +159,7 @@ function run_fp_tests_enabled_on_self_origin(sensorName) { }, `${sensorName}: ${header} allows same-origin iframes.`); async_test(t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); test_feature_availability( desc, t, diff --git a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js index 200013c48f9..3ebabad3a10 100644 --- a/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js +++ b/tests/wpt/web-platform-tests/generic-sensor/generic-sensor-iframe-tests.sub.js @@ -24,7 +24,7 @@ function run_generic_sensor_iframe_tests(sensorName) { const featurePolicies = get_feature_policies_for_sensor(sensorName); sensor_test(async t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); const iframe = document.createElement('iframe'); iframe.allow = featurePolicies.join(';') + ';'; iframe.src = 'https://{{domains[www1]}}:{{ports[https][0]}}/generic-sensor/resources/iframe_sensor_handler.html'; @@ -67,7 +67,7 @@ function run_generic_sensor_iframe_tests(sensorName) { to cross-origin frame`); sensor_test(async t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); const iframe = document.createElement('iframe'); iframe.allow = featurePolicies.join(';') + ';'; iframe.src = 'https://{{host}}:{{ports[https][0]}}/generic-sensor/resources/iframe_sensor_handler.html'; @@ -131,7 +131,7 @@ function run_generic_sensor_iframe_tests(sensorName) { to same-origin frame`); sensor_test(async t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); const iframe = document.createElement('iframe'); iframe.allow = featurePolicies.join(';') + ';'; iframe.src = 'https://{{host}}:{{ports[https][0]}}/generic-sensor/resources/iframe_sensor_handler.html'; 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 833bd0e7313..26ff6919599 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 @@ -51,7 +51,7 @@ function runGenericSensorTests(sensorName, } sensor_test(async (t, sensorProvider) => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); sensorProvider.setGetSensorShouldFail(sensorName, true); const sensor = new sensorType; const sensorWatcher = new EventWatcher(t, sensor, ["reading", "error"]); @@ -64,7 +64,7 @@ function runGenericSensorTests(sensorName, }, `${sensorName}: Test that onerror is sent when sensor is not supported.`); sensor_test(async (t, sensorProvider) => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); sensorProvider.setPermissionsDenied(sensorName, true); const sensor = new sensorType; const sensorWatcher = new EventWatcher(t, sensor, ["reading", "error"]); @@ -78,7 +78,7 @@ function runGenericSensorTests(sensorName, granted.`); sensor_test(async (t, sensorProvider) => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); const sensor = new sensorType({frequency: 560}); const sensorWatcher = new EventWatcher(t, sensor, ["reading", "error"]); sensor.start(); @@ -93,7 +93,7 @@ function runGenericSensorTests(sensorName, }, `${sensorName}: Test that onerror is send when start() call has failed.`); sensor_test(async (t, sensorProvider) => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); const sensor = new sensorType({frequency: 560}); const sensorWatcher = new EventWatcher(t, sensor, ["activate", "error"]); sensor.start(); @@ -108,7 +108,7 @@ function runGenericSensorTests(sensorName, }, `${sensorName}: Test that frequency is capped to allowed maximum.`); sensor_test(async (t, sensorProvider) => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); const maxSupportedFrequency = 5; sensorProvider.setMaximumSupportedFrequency(maxSupportedFrequency); const sensor = new sensorType({frequency: 50}); @@ -126,7 +126,7 @@ function runGenericSensorTests(sensorName, frequency.`); sensor_test(async (t, sensorProvider) => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); const minSupportedFrequency = 2; sensorProvider.setMinimumSupportedFrequency(minSupportedFrequency); const sensor = new sensorType({frequency: -1}); @@ -144,7 +144,7 @@ function runGenericSensorTests(sensorName, frequency.`); promise_test(async t => { - assert_true(sensorName in self); + assert_implements(sensorName in self, `${sensorName} is not supported.`); const iframe = document.createElement('iframe'); iframe.allow = featurePolicies.join(' \'none\'; ') + ' \'none\';'; iframe.srcdoc = ' + + + + + + diff --git a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html index 1d4560601b7..3b7c7832d7e 100644 --- a/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html +++ b/tests/wpt/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html @@ -656,7 +656,7 @@ addTest(function(win) { var desc = Object.getOwnPropertyDescriptor(window, "onmouseenter"); var f = () => {}; - // Check that it has [LenientThis] behavior + // Check that it has [LegacyLenientThis] behavior assert_equals(desc.get.call({}), undefined, "getter should return undefined"); desc.set.call({}, f); // Should not throw. @@ -669,14 +669,14 @@ addTest(function(win) { assert_equals(desc.get.call(B), null, "Should have been reset"); // Check that applying it to a cross-origin window throws instead of doing - // the [LenientThis] behavior. + // the [LegacyLenientThis] behavior. assert_throws_dom("SecurityError", () => { desc.get.call(win); }, "Should throw when getting cross-origin"); assert_throws_dom("SecurityError", () => { desc.set.call(win, f); }, "Should throw when setting cross-origin"); -}, "LenientThis behavior"); +}, "LegacyLenientThis behavior"); // We do a fresh load of the subframes for each test to minimize side-effects. // It would be nice to reload ourselves as well, but we can't do that without diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/proxy-getOwnPropertyDescriptor.html b/tests/wpt/web-platform-tests/html/browsers/the-window-object/proxy-getOwnPropertyDescriptor.html index c3db82f8502..88032fa18d5 100644 --- a/tests/wpt/web-platform-tests/html/browsers/the-window-object/proxy-getOwnPropertyDescriptor.html +++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/proxy-getOwnPropertyDescriptor.html @@ -52,7 +52,7 @@ test(() => { Object.getOwnPropertyDescriptor(window, 'document') ); assert_equals(trapCalls, 1); -}, 'Window target, forwarding trap, [Unforgeable] "document" attribute'); +}, 'Window target, forwarding trap, [LegacyUnforgeable] "document" attribute'); test(() => { const trapResult = {get() {}, set(_val) {}, enumerable: false, configurable: true}; @@ -80,7 +80,7 @@ test(() => { Object.getOwnPropertyDescriptor(document, 'location') ); assert_equals(trapCalls, 1); -}, 'Document target, forwarding trap, [Unforgeable] "location" attribute'); +}, 'Document target, forwarding trap, [LegacyUnforgeable] "location" attribute'); test(() => { const trapResult = {value: 4, writable: false, enumerable: true, configurable: true}; @@ -104,7 +104,7 @@ test(() => { assert_equals(location.hash, '#new'); assert_true(descriptor.enumerable); assert_false(descriptor.configurable); -}, 'Location target, no trap, [Unforgeable] "hash" attribute'); +}, 'Location target, no trap, [LegacyUnforgeable] "hash" attribute'); test(() => { let trapCalls = 0; @@ -120,7 +120,7 @@ test(() => { Object.getOwnPropertyDescriptor(location, 'reload') ); assert_equals(trapCalls, 1); -}, 'Location proxy target, forwarding trap, [Unforgeable] "reload" method'); +}, 'Location proxy target, forwarding trap, [LegacyUnforgeable] "reload" method'); diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/iframe-nested-print-ref.html b/tests/wpt/web-platform-tests/html/browsers/windows/iframe-nested-print-ref.html new file mode 100644 index 00000000000..c36c459881c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/iframe-nested-print-ref.html @@ -0,0 +1,9 @@ + + +

    PASS diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/iframe-nested-print.html b/tests/wpt/web-platform-tests/html/browsers/windows/iframe-nested-print.html new file mode 100644 index 00000000000..844f6ba3734 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/windows/iframe-nested-print.html @@ -0,0 +1,6 @@ + + + + diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html index fd9a5e96d1f..7483800b41e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html @@ -44,8 +44,9 @@ function testPixels(ctx, tests, sourceType) tolerance = 0.03; for (var i = 0; i < tests.length; i++) { actual = ctx.getImageData(tests[i][0], tests[i][1], 1, 1).dataUnion; + assert_implements(actual, 'ImageData dataUnion not supported'); expected = tests[i][2]; - assert_true(actual.length === expected.length); + assert_equals(actual.length, expected.length); for (var j = 0; j < actual.length; j++) assert_approx_equals(actual[j], expected[j], tolerance, tests[i][3]); } @@ -171,7 +172,9 @@ function compareBitmaps(bitmap1, bitmap2) ctx1.drawImage(bitmap1, 0, 0); ctx2.drawImage(bitmap2, 0, 0); var data1 = ctx1.getImageData(0, 0, 50, 50).dataUnion; + assert_implements(data1, 'ImageData dataUnion not supported'); var data2 = ctx2.getImageData(0, 0, 50, 50).dataUnion; + assert_implements(data2, 'ImageData dataUnion not supported'); var dataMatched = true; for (var i = 0; i < data1.length; i++) { if (data1[i] != data2[i]) { @@ -286,14 +289,11 @@ function initializeTestCanvasTransparent(canvasColorSpace, canvasPixelFormat) // HTMLImageElement - Opaque sRGB // File formats: AVIF, Bitmap, GIF, ICO, JPEG, PNG, WEBP ['avif', 'bmp', 'gif', 'ico', 'jpg', 'png', 'webp'].forEach(ext => { - promise_test(function() { - return new Promise((resolve,reject) => { - var image = new Image(); - image.onload = function() { - resolve(image); - } - image.src = 'resources/pattern-srgb.' + ext; - }).then(testImageBitmapOpaque); + promise_test(async () => { + const image = new Image(); + image.src = 'resources/pattern-srgb.' + ext; + await image.decode(); + await testImageBitmapOpaque(image); }, 'createImageBitmap in e-sRGB from an opaque sRGB HTMLImageElement (' + ext + ') with resize.'); }); @@ -301,14 +301,11 @@ function initializeTestCanvasTransparent(canvasColorSpace, canvasPixelFormat) // HTMLImageElement - Transparent sRGB // File formats: AVIF, Bitmap, ICO, PNG, WEBP ['avif', 'bmp', 'ico', 'png', 'webp'].forEach(ext => { - promise_test(function() { - return new Promise((resolve,reject) => { - var image = new Image(); - image.onload = function() { - resolve(image); - } - image.src = 'resources/pattern-srgb-transparent.' + ext; - }).then(testImageBitmapFromTransparentImage); + promise_test(async () => { + const image = new Image(); + image.src = 'resources/pattern-srgb-transparent.' + ext; + await image.decode(); + await testImageBitmapFromTransparentImage(image); }, 'createImageBitmap in e-sRGB from a transparent sRGB HTMLImageElement (' + ext + ') with resize.'); }); @@ -316,56 +313,54 @@ function initializeTestCanvasTransparent(canvasColorSpace, canvasPixelFormat) //////////////////////////////////////////////////////////////////////////////// // SVG Image - sRGB -promise_test(function() { - return new Promise((resolve, reject) => { - var image = new Image(); - image.onload = function() { - resolve(image); - } - image.src = 'resources/pattern-srgb.svg' - }).then(testImageBitmapFromSVG); +promise_test(async () => { + const image = new Image(); + image.src = 'resources/pattern-srgb.svg' + await image.decode(); + await testImageBitmapFromSVG(image); }, 'createImageBitmap in e-sRGB from a sRGB SVG image with resize.'); //////////////////////////////////////////////////////////////////////////////// // HTMLVideoElement - sRGB -promise_test(function() { - return new Promise((resolve, reject) => { - var video = document.createElement("video"); - video.oncanplaythrough = function() { - resolve(video); - } - video.preload = "auto"; - video.src = 'resources/pattern-srgb-fullcolor.ogv' - }).then(testImageBitmapVideoSource); +promise_test(async () => { + var video = document.createElement("video"); + assert_implements_optional(video.canPlayType("video/ogg"), "video/ogg not supported"); + video.preload = "auto"; + video.src = 'resources/pattern-srgb-fullcolor.ogv' + await new Promise((resolve, reject) => { + video.onloadeddata = resolve; + video.onerror = reject; + }); + await testImageBitmapVideoSource(video); }, 'createImageBitmap in e-sRGB from a sRGB HTMLVideoElement with resize.'); //////////////////////////////////////////////////////////////////////////////// // HTMLCanvasElement - Opaque sRGB -promise_test(function() { +promise_test(async () => { var testCanvas = initializeTestCanvas('srgb', 'uint8'); - return testImageBitmapOpaque(testCanvas); + await testImageBitmapOpaque(testCanvas); }, 'createImageBitmap in e-sRGB from an opaque sRGB HTMLCanvasElement with resize.'); // HTMLCanvasElement - Opaque e-sRGB -promise_test(function() { +promise_test(async () => { var testCanvas = initializeTestCanvas('srgb', 'float16'); - return testImageBitmapOpaque(testCanvas); + await testImageBitmapOpaque(testCanvas); }, 'createImageBitmap in e-sRGB from an opaque e-sRGB HTMLCanvasElement with resize.'); //////////////////////////////////////////////////////////////////////////////// // HTMLCanvasElement - Transparent sRGB -promise_test(function() { +promise_test(async () => { var testCanvas = initializeTestCanvasTransparent('srgb', 'uint8'); - return testImageBitmapTransparent(testCanvas); + await testImageBitmapTransparent(testCanvas); }, 'createImageBitmap in e-sRGB from a transparent sRGB HTMLCanvasElement with resize.'); // HTMLCanvasElement - Transparent e-sRGB -promise_test(function() { +promise_test(async () => { var testCanvas = initializeTestCanvasTransparent('srgb', 'float16'); - return testImageBitmapTransparent(testCanvas); + await testImageBitmapTransparent(testCanvas); }, 'createImageBitmap in e-sRGB from a transparent e-sRGB HTMLCanvasElement with resize.'); ////////////////////////////////////////////////////////////////////////////// @@ -373,60 +368,48 @@ promise_test(function() { // Blob from file - Opaque sRGB // File formats: AVIF, Bitmap, GIF, ICO, JPEG, PNG, WEBP ['avif', 'bmp', 'gif', 'ico', 'jpg', 'png', 'webp'].forEach(ext => { - promise_test(function() { - return new Promise((resolve, reject) => { - var xhr = new XMLHttpRequest(); - xhr.open("GET", 'resources/pattern-srgb.' + ext); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }).then(testImageBitmapOpaque); + promise_test(async () => { + const response = await fetch('resources/pattern-srgb.' + ext); + assert_true(response.ok); + const blob = await response.blob(); + await testImageBitmapOpaque(blob); }, 'createImageBitmap in e-sRGB from an opaque sRGB Blob (' + ext + ') with resize.'); }); // Blob form file - Transparent sRGB // File formats: AVIF, Bitmap, ICO, PNG, WEBP ['avif', 'bmp', 'ico', 'png', 'webp'].forEach(ext => { - promise_test(function() { - return new Promise((resolve, reject) => { - var xhr = new XMLHttpRequest(); - xhr.open("GET", 'resources/pattern-srgb-transparent.' + ext); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }).then(testImageBitmapFromTransparentImage); + promise_test(async () => { + const response = await fetch('resources/pattern-srgb-transparent.' + ext); + assert_true(response.ok); + const blob = await response.blob(); + await testImageBitmapFromTransparentImage(blob); }, 'createImageBitmap in e-sRGB from a transparent sRGB Blob (' + ext + ') with resize.'); }); // Color managed blob from canvas function testCreateImageBitmapFromColorManagedBlob(pixelFormat, isTransparent) { - let canvasPixelFormat = 'uint8'; - if (pixelFormat == 'uint16') - canvasPixelFormat = 'float16'; - var testCanvas; - if (isTransparent) - testCanvas = initializeTestCanvasTransparent('srgb', canvasPixelFormat); - else - testCanvas = initializeTestCanvas('srgb', canvasPixelFormat); - var encodeOptions = {}; - encodeOptions.quality = 1; - encodeOptions.type = 'image/png'; - encodeOptions.pixelFormat = pixelFormat; - - var t = async_test('createImageBitmap in e-sRGB from color managed Blob' + - ' with resize. blobPixelFormat: ' + pixelFormat + - ', transparency: ' + isTransparent); - testCanvas.convertToBlob(encodeOptions).then( - t.step_func_done(function(blob) { - if (isTransparent) - testImageBitmapTransparent(blob); - else - testImageBitmapOpaque(blob); - })); + promise_test(async () => { + let canvasPixelFormat = 'uint8'; + if (pixelFormat == 'uint16') + canvasPixelFormat = 'float16'; + let testCanvas; + if (isTransparent) + testCanvas = initializeTestCanvasTransparent('srgb', canvasPixelFormat); + else + testCanvas = initializeTestCanvas('srgb', canvasPixelFormat); + const blob = await testCanvas.convertToBlob({ + quality: 1, + type: 'image/png', + pixelFormat, + }); + if (isTransparent) + await testImageBitmapTransparent(blob); + else + await testImageBitmapOpaque(blob); + }, 'createImageBitmap in e-sRGB from color managed Blob' + + ' with resize. blobPixelFormat: ' + pixelFormat + + ', transparency: ' + isTransparent); } function runAllCreateImageBitmapFromColorManagedBlobTests() { @@ -444,67 +427,67 @@ runAllCreateImageBitmapFromColorManagedBlobTests(); //////////////////////////////////////////////////////////////////////////////// // ImageData - Opaque sRGB -promise_test(function() { +promise_test(async () => { var canvas = initializeTestCanvas('srgb', 'uint8'); var ctx = canvas.getContext('2d'); var data = ctx.getImageData(0, 0, 20, 20); - return testImageBitmapOpaque(data); + await testImageBitmapOpaque(data); }, 'createImageBitmap in e-sRGB from an opaque sRGB ImageData with resize.'); // ImageData - Opaque e-sRGB -promise_test(function() { +promise_test(async () => { var canvas = initializeTestCanvas('srgb', 'float16'); var ctx = canvas.getContext('2d', {colorSpace: 'srgb', pixelFormat:'float16'}); var data = ctx.getImageData(0, 0, 20, 20); - return testImageBitmapOpaque(data); + await testImageBitmapOpaque(data); }, 'createImageBitmap in e-sRGB from an opaque e-sRGB ImageData with resize.'); //////////////////////////////////////////////////////////////////////////////// // ImageData - Transparent sRGB -promise_test(function() { +promise_test(async () => { var canvas = initializeTestCanvasTransparent('srgb', 'uint8'); var ctx = canvas.getContext('2d'); var data = ctx.getImageData(0, 0, 20, 20); - return testImageBitmapTransparent(data); + await testImageBitmapTransparent(data); }, 'createImageBitmap in e-sRGB from a transparent sRGB ImageData with resize.'); // ImageData - Transparent e-sRGB -promise_test(function() { +promise_test(async () => { var canvas = initializeTestCanvasTransparent('srgb', 'float16'); var ctx = canvas.getContext('2d', {colorSpace: 'srgb', pixelFormat:'float16'}); var data = ctx.getImageData(0, 0, 20, 20); - return testImageBitmapTransparent(data); + await testImageBitmapTransparent(data); }, 'createImageBitmap in e-sRGB from a transparent e-sRGB ImageData with resize.'); //////////////////////////////////////////////////////////////////////////////// // ImageBitmap - Opaque sRGB -promise_test(function() { +promise_test(async () => { var testCanvas = initializeTestCanvas('srgb', 'uint8'); - return createImageBitmap(testCanvas).then(testImageBitmapOpaque); + await createImageBitmap(testCanvas).then(testImageBitmapOpaque); }, 'createImageBitmap in e-sRGB from an opaque sRGB ImageBitmap with resize.'); // ImageBitmap - Opaque e-sRGB -promise_test(function() { +promise_test(async () => { var testCanvas = initializeTestCanvas('srgb', 'float16'); - return createImageBitmap(testCanvas).then(testImageBitmapOpaque); + await createImageBitmap(testCanvas).then(testImageBitmapOpaque); }, 'createImageBitmap in e-sRGB from an opaque e-sRGB ImageBitmap with resize.'); //////////////////////////////////////////////////////////////////////////////// // ImageBitmap - Transparent sRGB -promise_test(function() { +promise_test(async () => { var testCanvas = initializeTestCanvasTransparent('srgb', 'uint8'); - return createImageBitmap(testCanvas).then(testImageBitmapTransparent); + await createImageBitmap(testCanvas).then(testImageBitmapTransparent); }, 'createImageBitmap in e-sRGB from a transparent sRGB ImageBitmap with resize.'); // ImageBitmap - Transparent e-sRGB -promise_test(function() { +promise_test(async () => { var testCanvas = initializeTestCanvasTransparent('srgb', 'float16'); - return createImageBitmap(testCanvas).then(testImageBitmapTransparent); + await createImageBitmap(testCanvas).then(testImageBitmapTransparent); }, 'createImageBitmap in e-sRGB from a transparent e-sRGB ImageBitmap with resize.'); //////////////////////////////////////////////////////////////////////////////// @@ -529,15 +512,15 @@ function initializeOffscreenCanvas(canvasColorSpace, canvasPixelFormat) } //OffscreenCanvas - Opaque sRGB -promise_test(function() { +promise_test(async () => { var offscreen = initializeOffscreenCanvas('srgb', 'uint8'); - return testImageBitmapOpaque(offscreen); + await testImageBitmapOpaque(offscreen); }, 'createImageBitmap in e-sRGB from an opaque sRGB OffscreenCanvas with resize.'); //OffscreenCanvas - Opaque e-sRGB -promise_test(function() { +promise_test(async () => { var offscreen = initializeOffscreenCanvas('srgb', 'float16'); - return testImageBitmapOpaque(offscreen); + await testImageBitmapOpaque(offscreen); }, 'createImageBitmap in e-sRGB from an opaque e-sRGB OffscreenCanvas with resize.'); //////////////////////////////////////////////////////////////////////////////// @@ -562,15 +545,15 @@ function initializeOffscreenCanvasTransparent(canvasColorSpace, canvasPixelForma } //OffscreenCanvas - Transparent sRGB -promise_test(function() { +promise_test(async () => { var offscreen = initializeOffscreenCanvasTransparent('srgb', 'uint8'); - return testImageBitmapTransparent(offscreen); + await testImageBitmapTransparent(offscreen); }, 'createImageBitmap in e-sRGB from a transparent sRGB OffscreenCanvas with resize.'); //OffscreenCanvas - Transparent e-sRGB -promise_test(function() { +promise_test(async () => { var offscreen = initializeOffscreenCanvasTransparent('srgb', 'float16'); - return testImageBitmapTransparent(offscreen); + await testImageBitmapTransparent(offscreen); }, 'createImageBitmap in e-sRGB from a transparent e-sRGB OffscreenCanvas with resize.'); //////////////////////////////////////////////////////////////////////////////// diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html index a6b202e8f2b..f153a983d93 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html @@ -76,17 +76,6 @@ runGetImageDataTests(); // Test putImageData when the canvas is color managed. -var dataU8 = new Uint8ClampedArray(4 * xWidth * xHeight); -var dataU16 = new Uint16Array(4 * xWidth * xHeight); -var dataF32 = new Float32Array(4 * xWidth * xHeight); -function prepareDataArrays() { - for (i = 0; i < 4 * xWidth * xHeight; i++) { - dataU8[i] = (i % 4 == 3) ? 255 : i % 256; - dataU16[i] = dataU8[i] * 257; - dataF32[i] = dataU8[i] / 255.0; - } -} - var testScenariosPutImageData = []; function prepareTestScenariosPutImageData() { var colorSpaces = ["srgb"]; @@ -108,25 +97,24 @@ function prepareTestScenariosPutImageData() { } } -function createAndPutImageData(data, imageDataColorSettings, canvasColorSettings) { +function createAndPutImageData(imageDataColorSettings, canvasColorSettings) { // create color managed canvas var aCanvas = document.createElement("canvas"); aCanvas.width = xWidth; aCanvas.height = xHeight; var ctx = aCanvas.getContext('2d', canvasColorSettings); // create color managed ImageData - var imageData = ctx.createImageData(data, xWidth, xHeight, imageDataColorSettings); + var imageData = ctx.createImageData(xWidth, xHeight, imageDataColorSettings); // put image data into canvas. test succeeds if this does not crash. ctx.putImageData(imageData, 0, 0); } function runTestPutImageData(imageDataColorSettings, canvasColorSettings) { - createAndPutImageData(dataU8, imageDataColorSettings, canvasColorSettings); - createAndPutImageData(dataU16, imageDataColorSettings, canvasColorSettings); - createAndPutImageData(dataF32, imageDataColorSettings, canvasColorSettings); + createAndPutImageData(imageDataColorSettings, canvasColorSettings); + createAndPutImageData(imageDataColorSettings, canvasColorSettings); + createAndPutImageData(imageDataColorSettings, canvasColorSettings); } -prepareDataArrays(); prepareTestScenariosPutImageData(); function runPutImageDataTests() { diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html index f5f0e629dd1..c38da7c95c0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html @@ -39,13 +39,12 @@ function putImageData_e_sRGBThenGetImageData_e_sRGB_InRange() { canvas.height = 10; var ctx = canvas.getContext('2d', {colorSpace: 'srgb', pixelFormat:'float16'}) - var data_e_sRGB = new Float32Array(4); - data_e_sRGB[0] = 0.2; - data_e_sRGB[1] = 0.4; - data_e_sRGB[2] = 0.6; - data_e_sRGB[3] = 0.8; - var imageData = ctx.createImageData(data_e_sRGB, 1, 1, + var imageData = ctx.createImageData(1, 1, {colorSpace: 'srgb', storageFormat:'float32'}); + imageData.dataUnion[0] = 0.2; + imageData.dataUnion[1] = 0.4; + imageData.dataUnion[2] = 0.6; + imageData.dataUnion[3] = 0.8; ctx.putImageData(imageData, 5, 5); var pixel = ctx.getImageData(5, 5, 1, 1).dataUnion; // Check against the same color in e-sRGB. 0.001 protects the test against @@ -59,13 +58,12 @@ function putImageData_e_sRGBThenGetImageData_e_sRGB_OutOfRange() { canvas.height = 10; var ctx = canvas.getContext('2d', {colorSpace: 'srgb', pixelFormat:'float16'}) - var data_e_sRGB = new Float32Array(4); - data_e_sRGB[0] = 1.3; - data_e_sRGB[1] = -1.13; - data_e_sRGB[2] = 0.7; - data_e_sRGB[3] = 1.8; - var imageData = ctx.createImageData(data_e_sRGB, 1, 1, + var imageData = ctx.createImageData(1, 1, {colorSpace: 'srgb', storageFormat:'float32'}); + imageData.dataUnion[0] = 1.3; + imageData.dataUnion[1] = -1.13; + imageData.dataUnion[2] = 0.7; + imageData.dataUnion[3] = 1.8; ctx.putImageData(imageData, 5, 5); var pixel = ctx.getImageData(5, 5, 1, 1).dataUnion; // Check against the same color in e-sRGB. 0.001 protects the test against @@ -80,12 +78,12 @@ function putImageDataSRGBThenGetImageData_e_sRGB() { var ctx = canvas.getContext('2d', {colorSpace: 'srgb', pixelFormat:'float16'}); var dataSRGB = new Uint8ClampedArray(4); - dataSRGB[0] = 51; - dataSRGB[1] = 102; - dataSRGB[2] = 153; - dataSRGB[3] = 204; - var imageData = ctx.createImageData(dataSRGB, 1, 1, + var imageData = ctx.createImageData(1, 1, {colorSpace: 'srgb', storageFormat:'uint8'}); + imageData.data[0] = 51; + imageData.data[1] = 102; + imageData.data[2] = 153; + imageData.data[3] = 204; ctx.putImageData(imageData, 5, 5); var pixel = ctx.getImageData(5, 5, 1, 1).dataUnion; // Check against the same color in e-sRGB. 0.01 protects the test against diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html index 6bc55b7ca70..dda9f9cc28f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html @@ -336,29 +336,6 @@ function runTestCreateImageDataDWHC(canvasColorSettings, imageData) { "ImageData should be transparent black"); } -var testScenariosCreateImageDataDWHC = []; -for (var i = 0; i < canvasColorSettingsSet.length; i++) { - for (var j = 0; j < imageDataColorSettingsSet.length; j++) { - message = "Test createImageData(data, width, height, imageDataColorSettings): " + - canvasColorSettingsSet[i].name + " canvas, " + - imageDataColorSettingsSet[j].name + " ImageData"; - testScenariosCreateImageDataDWHC. - push([message, canvasColorSettingsSet[i].colorSettings, - imageDataColorSettingsSet[j].imageData]); - } -} - -function runTestCreateImageDataDWHCTests() { - for (var i = 0; i < testScenariosCreateImageDataDWHC.length; i++){ - var t = test(function() { - runTestCreateImageDataDWHC( - testScenariosCreateImageDataDWHC[i][1], - testScenariosCreateImageDataDWHC[i][2]); - }, testScenariosCreateImageDataDWHC[i][0]); - } -} -runTestCreateImageDataDWHCTests(); - //////////////////////////////////////////////////////////////////////////////// diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorSpace.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorSpace.html deleted file mode 100644 index 9023cbea362..00000000000 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorSpace.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.html index 35cba368116..fa0e2ac5fc8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/manual/the-offscreen-canvas/offscreencanvas.commit.html @@ -14,7 +14,7 @@ function verifyPlaceholder(placeholder, expectedR, expectedG, expectedB, expecte _assertPixel(canvas, 5,5, expectedR, expectedG, expectedB, expectedA, "5,5", expectedClrStr); } -test(function() { +async_test(function(t) { var placeholder = document.createElement('canvas'); placeholder.width = placeholder.height = 10; var offscreenCanvas = placeholder.transferControlToOffscreen(); @@ -25,8 +25,9 @@ test(function() { // place holder contents should still be transparent black at this moment. verifyPlaceholder(placeholder, 0,0,0,0, "0,0,0,0"); // Set timeout acts as a sync barrier to allow commit to propagate - setTimeout(function() { + t.step_timeout(function() { verifyPlaceholder(placeholder, 0,255,0,255, "0,255,0,255"); + t.done(); }, 0); }, "Test that calling OffscreenCanvas's commit pushes its contents to its placeholder."); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html index d88bf56ec2c..f4b2599141a 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-dedicated-worker.https.html @@ -23,8 +23,10 @@ promise_test(async (t) => { const reports = (await new Promise(r => mc.port1.onmessage = r)).data; assert_equals(reports.length, 1); const report = reports[0]; - assert_equals(report.body["blocked-url"], image_url); + assert_equals(report.body.blockedURL, image_url); assert_equals(report.body.type, "corp"); + assert_equals(report.body.disposition, "enforce"); + assert_equals(report.body.destination, ""); assert_equals(report.type, "coep"); assert_equals(report.url, worker_url); }, "COEP support on DedicatedWorker.") @@ -37,8 +39,10 @@ promise_test(async (t) => { const reports = (await new Promise(r => mc.port1.onmessage = r)).data; assert_equals(reports.length, 1); const report = reports[0]; - assert_equals(report.body["blocked-url"], image_url); + assert_equals(report.body.blockedURL, image_url); assert_equals(report.body.type, "corp"); + assert_equals(report.body.disposition, "reporting"); + assert_equals(report.body.destination, ""); assert_equals(report.type, "coep"); assert_equals(report.url, worker_url); }, "COEP-Report-Only support on DedicatedWorker.") diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html index efb7e7a7795..b998ba7926e 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-document.https.html @@ -32,8 +32,10 @@ promise_test(async (t) => { const reports = await waitReports(iframe); assert_equals(reports.length, 1); const report = reports[0]; - assert_equals(report.body["blocked-url"], image_url); + assert_equals(report.body.blockedURL, image_url); assert_equals(report.body.type, "corp"); + assert_equals(report.body.disposition, "enforce"); + assert_equals(report.body.destination, ""); assert_equals(report.type, "coep"); assert_equals(report.url, iframe_url); }, "COEP support on document.") @@ -44,8 +46,10 @@ promise_test(async (t) => { const reports = await waitReports(iframe); assert_equals(reports.length, 1); const report = reports[0]; - assert_equals(report.body["blocked-url"], image_url); + assert_equals(report.body.blockedURL, image_url); assert_equals(report.body.type, "corp"); + assert_equals(report.body.disposition, "reporting"); + assert_equals(report.body.destination, ""); assert_equals(report.type, "coep"); assert_equals(report.url, iframe_url); }, "COEP-Report-Only support on document.") diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-service-worker.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-service-worker.https.html index b9ec8d95a59..96a328b2cc1 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-service-worker.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-service-worker.https.html @@ -29,8 +29,10 @@ promise_test(async (t) => { assert_not_equals(reports, 'TIMEOUT'); assert_equals(reports.length, 1); const report = reports[0]; - assert_equals(report.body["blocked-url"], image_url); + assert_equals(report.body.blockedURL, image_url); assert_equals(report.body.type, "corp"); + assert_equals(report.body.disposition, "enforce"); + assert_equals(report.body.destination, ""); assert_equals(report.type, "coep"); assert_equals(report.url, worker_url); }, "COEP support on ServiceWorker."); @@ -50,8 +52,10 @@ promise_test(async (t) => { assert_not_equals(reports, 'TIMEOUT'); assert_equals(reports.length, 1); const report = reports[0]; - assert_equals(report.body["blocked-url"], image_url); + assert_equals(report.body.blockedURL, image_url); assert_equals(report.body.type, "corp"); + assert_equals(report.body.disposition, "reporting"); + assert_equals(report.body.destination, ""); assert_equals(report.type, "coep"); assert_equals(report.url, worker_url); }, "COEP-Report-Only support on ServiceWorker."); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html index d7bd191a84e..34af988fc65 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cache-storage-reporting-shared-worker.https.html @@ -21,8 +21,10 @@ promise_test(async (t) => { const reports = (await new Promise(r => mc.port1.onmessage = r)).data; assert_equals(reports.length, 1); const report = reports[0]; - assert_equals(report.body["blocked-url"], image_url); + assert_equals(report.body.blockedURL, image_url); assert_equals(report.body.type, "corp"); + assert_equals(report.body.disposition, "enforce"); + assert_equals(report.body.destination, ""); assert_equals(report.type, "coep"); assert_equals(report.url, worker_url); }, "COEP support on SharedWorker.") @@ -35,8 +37,10 @@ promise_test(async (t) => { const reports = (await new Promise(r => mc.port1.onmessage = r)).data; assert_equals(reports.length, 1); const report = reports[0]; - assert_equals(report.body["blocked-url"], image_url); + assert_equals(report.body.blockedURL, image_url); assert_equals(report.body.type, "corp"); + assert_equals(report.body.disposition, "reporting"); + assert_equals(report.body.destination, ""); assert_equals(report.type, "coep"); assert_equals(report.url, worker_url); }, "COEP-Report-Only support on SharedWorker.") diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html new file mode 100644 index 00000000000..da3a632a3c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html @@ -0,0 +1,61 @@ + +crossOriginIsolated permission + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html.headers new file mode 100644 index 00000000000..5f8621ef836 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/cross-origin-isolated-permission.https.html.headers @@ -0,0 +1,2 @@ +Cross-Origin-Embedder-Policy: require-corp +Cross-Origin-Opener-Policy: same-origin diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/header-parsing.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/header-parsing.https.html new file mode 100644 index 00000000000..6da000d7ede --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/header-parsing.https.html @@ -0,0 +1,84 @@ + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-none.https.html index deb046cdb37..b539561effd 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-none.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-none.https.html @@ -77,9 +77,13 @@ promise_test(async (t) => { promise_test(async (t) => { const URL = remote( - '/common/blank.html?pipe=header(access-control-allow-origin,*'); + '/common/blank.html?pipe=header(access-control-allow-origin,*)'); await fetch(URL, {mode: 'cors'}); }, 'making a cross-origin request with CORS'); +promise_test(async (t) => { + const URL = remote('/fetch/api/resources/preflight.py?allow_headers=hoge'); + await fetch(URL, {mode: 'cors', headers: {'hoge': 'fuga'}}); +}, 'making a cross-origin request with CORS-preflight'); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-require-corp.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-require-corp.https.html index 88c0d2cf6fb..36cf4a153bf 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-require-corp.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none-sw-from-require-corp.https.html @@ -80,9 +80,14 @@ promise_test(async (t) => { promise_test(async (t) => { const URL = remote( - '/common/blank.html?pipe=header(access-control-allow-origin,*'); + '/common/blank.html?pipe=header(access-control-allow-origin,*)'); await fetch(URL, {mode: 'cors'}); }, 'making a cross-origin request with CORS'); +promise_test(async (t) => { + const URL = remote('/fetch/api/resources/preflight.py?allow_headers=hoge'); + await fetch(URL, {mode: 'cors', headers: {'hoge': 'fuga'}}); +}, 'making a cross-origin request with CORS-preflight'); + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none.https.html index 0fbd4165a5f..24b1fce1764 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/none.https.html @@ -11,6 +11,7 @@ const HOST = get_host_info(); const BASE = new URL("resources", location).pathname; async_test(t => { + t.step_timeout(t.unreached_func('timeout'), 10 * 1000); const frame = document.createElement("iframe"); t.add_cleanup(() => frame.remove()); frame.onload = t.step_func_done(() => { @@ -22,6 +23,7 @@ async_test(t => { }, `"none" top-level: navigating a frame to "none" should succeed`); async_test(t => { + t.step_timeout(t.unreached_func('timeout'), 10 * 1000); const frame = document.createElement("iframe"); t.add_cleanup(() => frame.remove()); const blank = "/common/blank.html"; @@ -42,6 +44,7 @@ async_test(t => { }, `"none" top-level: navigating a frame from "require-corp" to "none" should succeed`); async_test(t => { + t.step_timeout(t.unreached_func('timeout'), 10 * 1000); const w = window.open(`resources/navigate-none.sub.html?to=navigate-require-corp.sub.html`, "window_name"); t.add_cleanup(() => w.close()); @@ -53,6 +56,7 @@ async_test(t => { }, `"none" top-level: navigating a frame back from "require-corp" should succeed`); async_test(t => { + t.step_timeout(t.unreached_func('timeout'), 10 * 1000); let pageLoaded = false; const bc = new BroadcastChannel(token()); let finished = false; @@ -83,6 +87,7 @@ async_test(t => { }, `"require-corp" top-level noopener popup: navigating to "none" should succeed`); async_test(t => { + t.step_timeout(t.unreached_func('timeout'), 10 * 1000); const frame = document.createElement("iframe"); const id = token(); t.add_cleanup(() => frame.remove()); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-navigation.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-navigation.https.html index 7087985990e..680cc6af29a 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-navigation.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-navigation.https.html @@ -15,18 +15,21 @@ const CORP_CROSS_ORIGIN = const FRAME_URL = `${ORIGIN}/common/blank.html?pipe=`; const REMOTE_FRAME_URL = `${REMOTE_ORIGIN}/common/blank.html?pipe=`; -function checkCorpReport(report, contextUrl, blockedUrl) { +function checkCorpReport(report, contextUrl, blockedUrl, disposition) { assert_equals(report.type, 'coep'); assert_equals(report.url, contextUrl); assert_equals(report.body.type, 'corp'); - assert_equals(report.body['blocked-url'], blockedUrl); + assert_equals(report.body.blockedURL, blockedUrl); + assert_equals(report.body.disposition, disposition); + assert_equals(report.body.destination, 'iframe'); } -function checkCoepMismatchReport(report, contextUrl, blockedUrl) { +function checkCoepMismatchReport(report, contextUrl, blockedUrl, disposition) { assert_equals(report.type, 'coep'); assert_equals(report.url, contextUrl); assert_equals(report.body.type, 'navigation'); - assert_equals(report.body['blocked-url'], blockedUrl); + assert_equals(report.body.blockedURL, blockedUrl); + assert_equals(report.body.disposition, disposition); } function loadFrame(document, url) { @@ -82,9 +85,6 @@ async function observeReports(global) { // 'CORP-RO' CORP violation (report only) // 'NAV': COEP mismatch between the frames. // 'NAV-RO': COEP mismatch between the frames (report only). -// Currently '-RO' is no-op, e.g., 'CORP' and 'CORP-RO' have the same -// expectation. We are planning to introduce "disposition" member in -// reports, which will differentiate them each other. const CASES = [ { parent: '', target: '', reports: [] }, { parent: '', target: COEP, reports: [] }, @@ -124,12 +124,16 @@ for (const testcase of CASES) { const report = reports[i]; switch (testcase.reports[i]) { case 'CORP': + checkCorpReport(report, contextUrl, targetUrl, 'enforce'); + break; case 'CORP-RO': - checkCorpReport(report, contextUrl, targetUrl); + checkCorpReport(report, contextUrl, targetUrl, 'reporting'); break; case 'NAV': + checkCoepMismatchReport(report, contextUrl, targetUrl, 'enforce'); + break; case 'NAV-RO': - checkCoepMismatchReport(report, contextUrl, targetUrl); + checkCoepMismatchReport(report, contextUrl, targetUrl, 'reporting'); break; default: assert_unreached( @@ -146,4 +150,4 @@ for (const testcase of CASES) { } - \ No newline at end of file + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html index 5314ec93550..ad8a8e99eb9 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-subresource-corp.https.html @@ -21,11 +21,13 @@ function wait(ms) { return new Promise(resolve => step_timeout(resolve, ms)); } -function checkReport(report, contextUrl, blockedUrl) { +function checkReport(report, contextUrl, blockedUrl, disposition, destination) { assert_equals(report.type, 'coep'); assert_equals(report.url, contextUrl); assert_equals(report.body.type, 'corp'); - assert_equals(report.body['blocked-url'], blockedUrl); + assert_equals(report.body.blockedURL, blockedUrl); + assert_equals(report.body.disposition, disposition); + assert_equals(report.body.destination, destination); } async function fetchInFrame(t, frameUrl, url) { @@ -146,20 +148,18 @@ const CASES = [{ name: 'blocked due to COEP', url: `${REMOTE_ORIGIN}/common/text-plain.txt`, check: (reports, contextUrl, url) => { - // One for COEP, one for COEP-RO. assert_equals(reports.length, 2); - checkReport(reports[0], contextUrl, url); - checkReport(reports[1], contextUrl, url); + checkReport(reports[0], contextUrl, url, 'reporting', ''); + checkReport(reports[1], contextUrl, url, 'enforce', ''); } }, { name: 'blocked during redirect', url: `${ORIGIN}/common/redirect.py?location=` + encodeURIComponent(`${REMOTE_ORIGIN}/common/text-plain.txt`), check: (reports, contextUrl, url) => { - // One for COEP, one for COEP-RO. assert_equals(reports.length, 2); - checkReport(reports[0], contextUrl, url); - checkReport(reports[1], contextUrl, url); + checkReport(reports[0], contextUrl, url, 'reporting', ''); + checkReport(reports[1], contextUrl, url, 'enforce', ''); }, }]; @@ -173,4 +173,29 @@ for (const env of ENVIRONMENTS) { } } +// A test for a non-empty destination. +promise_test(async (t) => { + const reports = []; + const frame = await with_iframe(FRAME_URL); + t.add_cleanup(() => frame.remove()); + + const observer = new frame.contentWindow.ReportingObserver((rs) => { + for (const report of rs) { + reports.push(report.toJSON()); + } + }); + observer.observe(); + const url = `${REMOTE_ORIGIN}/common/utils.js`; + const script = frame.contentDocument.createElement('script'); + script.src = url; + frame.contentDocument.body.appendChild(script); + + // Wait 200ms for reports to settle. + await wait(200); + + assert_equals(reports.length, 2); + checkReport(reports[0], FRAME_URL, url, 'reporting', 'script'); + checkReport(reports[1], FRAME_URL, url, 'enforce', 'script'); +}, 'destination: script'); + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html index cfff7bcb9e8..02c719da737 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html @@ -44,7 +44,7 @@ const reportsForReportOnly = []; pollReports('endpoint', reports); pollReports('report-only-endpoint', reportsForReportOnly); -function checkCorpReportExistence(reports, blockedUrl, contextUrl) { +function checkCorpReportExistence(reports, blockedUrl, contextUrl, destination, disposition) { blockedUrl = new URL(blockedUrl, location).href; contextUrl = new URL(contextUrl, location).href; for (const report of reports) { @@ -52,14 +52,16 @@ function checkCorpReportExistence(reports, blockedUrl, contextUrl) { report.body.type !== 'corp') { continue; } - if (report.body['blocked-url'] === blockedUrl) { + if (report.body.blockedURL === blockedUrl && + report.body.disposition === disposition) { + assert_equals(report.body.destination, destination); return; } } - assert_unreached(`A report whose blocked-url is ${blockedUrl} and url is ${contextUrl} is not found.`); + assert_unreached(`A report whose blockedURL is ${blockedUrl} and url is ${contextUrl} is not found.`); } -function checkNavigationReportExistence(reports, blockedUrl, contextUrl) { +function checkNavigationReportExistence(reports, blockedUrl, contextUrl, disposition) { blockedUrl = new URL(blockedUrl, location).href; contextUrl = new URL(contextUrl, location).href; for (const report of reports) { @@ -67,11 +69,12 @@ function checkNavigationReportExistence(reports, blockedUrl, contextUrl) { report.body.type !== 'navigation') { continue; } - if (report.body['blocked-url'] === blockedUrl) { + if (report.body.blockedURL === blockedUrl && + report.body.disposition === disposition) { return; } } - assert_unreached(`A report whose blocked-url is ${blockedUrl} and url is ${contextUrl} is not found.`); + assert_unreached(`A report whose blockedURL is ${blockedUrl} and url is ${contextUrl} is not found.`); } async_test(async (t) => { @@ -94,8 +97,9 @@ async_test(async (t) => { // Wait 3 seconds for reports to settle. await wait(3000); - checkCorpReportExistence(reports, url, iframe.src); - checkCorpReportExistence(reportsForReportOnly, url, iframe.src); + checkCorpReportExistence(reports, url, iframe.src, '', 'enforce'); + checkCorpReportExistence( + reportsForReportOnly, url, iframe.src, '', 'reporting'); t.done(); } catch (e) { @@ -130,8 +134,9 @@ async_test(async (t) => { // Wait 3 seconds for reports to settle. await wait(3000); - checkCorpReportExistence(reports, url, iframe.src); - checkCorpReportExistence(reportsForReportOnly, url, iframe.src); + checkCorpReportExistence(reports, url, iframe.src, 'iframe', 'enforce'); + checkCorpReportExistence( + reportsForReportOnly, url, iframe.src, 'iframe', 'reporting'); t.done(); } catch (e) { @@ -158,9 +163,9 @@ async_test(async (t) => { // Wait 3 seconds for reports to settle. await wait(3000); - checkNavigationReportExistence(reports, targetUrl, iframe.src); + checkNavigationReportExistence(reports, targetUrl, iframe.src, 'enforce'); checkNavigationReportExistence( - reportsForReportOnly, targetUrl, iframe.src); + reportsForReportOnly, targetUrl, iframe.src, 'reporting'); t.done(); } catch (e) { diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-none.https.html index adb73bfba45..a60b8bd457e 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-none.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-none.https.html @@ -79,9 +79,14 @@ promise_test(async (t) => { promise_test(async (t) => { const URL = remote( - '/common/blank.html?pipe=header(access-control-allow-origin,*'); + '/common/blank.html?pipe=header(access-control-allow-origin,*)'); await fetch(URL, {mode: 'cors'}); }, 'making a cross-origin request with CORS'); +promise_test(async (t) => { + const URL = remote('/fetch/api/resources/preflight.py?allow_headers=hoge'); + await fetch(URL, {mode: 'cors', headers: {'hoge': 'fuga'}}); +}, 'making a cross-origin request with CORS-preflight'); + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-require-corp.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-require-corp.https.html index 0696b7a33cc..deefc92b804 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-require-corp.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/require-corp-sw-from-require-corp.https.html @@ -81,9 +81,13 @@ promise_test(async (t) => { promise_test(async (t) => { const URL = remote( - '/common/blank.html?pipe=header(access-control-allow-origin,*'); + '/common/blank.html?pipe=header(access-control-allow-origin,*)'); await fetch(URL, {mode: 'cors'}); }, 'making a cross-origin request with CORS'); +promise_test(async (t) => { + const URL = remote('/fetch/api/resources/preflight.py?allow_headers=hoge'); + await fetch(URL, {mode: 'cors', headers: {'hoge': 'fuga'}}); +}, 'making a cross-origin request with CORS-preflight'); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-frame.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-frame.html new file mode 100644 index 00000000000..b79fe288b3b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/cross-origin-isolated-frame.html @@ -0,0 +1,10 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/empty-coep.py b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/empty-coep.py new file mode 100644 index 00000000000..d0e547b130d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/resources/empty-coep.py @@ -0,0 +1,7 @@ +def main(request, response): + headers = [(b'Content-Type', b'text/html')] + + for value in request.GET.get_list(b'value'): + headers.append((b'Cross-Origin-Embedder-Policy', value)) + + return (200, headers, u'') diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox-navigate.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox-navigate.https.html new file mode 100644 index 00000000000..bd3a55a2d8f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox-navigate.https.html @@ -0,0 +1,39 @@ + +CSP sandbox popup navigate to Cross-Origin-Opener-Policy document should work + + + +

    + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox.https.html new file mode 100644 index 00000000000..259d484df2c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-csp-sandbox.https.html @@ -0,0 +1,24 @@ + +CSP sandboxed Cross-Origin-Opener-Policy popup should result in a network error + + + +
    + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html index ceb744c215b..6f250c1b092 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-sandbox.https.html @@ -29,6 +29,19 @@ }, ` + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/csp-sandbox.py b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/csp-sandbox.py new file mode 100644 index 00000000000..ed415c431ec --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/csp-sandbox.py @@ -0,0 +1,29 @@ +def main(request, response): + coop = request.GET.first(b"coop") + coep = request.GET.first(b"coep") + sandbox = request.GET.first(b"sandbox") + if coop != "": + response.headers.set(b"Cross-Origin-Opener-Policy", coop) + if coep != "": + response.headers.set(b"Cross-Origin-Embedder-Policy", coep) + response.headers.set(b"Content-Security-Policy", b"sandbox " + sandbox + b";") + + # Open a popup to coop-coep.py with the same parameters (except sandbox) + response.content = b""" + + + + + +""" diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/javascript-url-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/javascript-url-same-origin.https.html new file mode 100644 index 00000000000..be2e59312b7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/javascript-url-same-origin.https.html @@ -0,0 +1,33 @@ + + + + + + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/resource-cleanup.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/resource-cleanup.html new file mode 100644 index 00000000000..3ae5587c7d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/resource-cleanup.html @@ -0,0 +1,11 @@ + + + +Redirect destination for non-HTML documents to close themselves + diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/resource-popup.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/resource-popup.html new file mode 100644 index 00000000000..f6b811407f1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/resource-popup.html @@ -0,0 +1,21 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/html/dom/elements/images/bypass-cache-revalidation.html b/tests/wpt/web-platform-tests/html/dom/elements/images/bypass-cache-revalidation.html new file mode 100644 index 00000000000..38cdd876da1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/elements/images/bypass-cache-revalidation.html @@ -0,0 +1,37 @@ + +Cached images can bypass revalidation + + + +
    +
    + + + diff --git a/tests/wpt/web-platform-tests/html/dom/elements/images/image.py b/tests/wpt/web-platform-tests/html/dom/elements/images/image.py new file mode 100644 index 00000000000..1aec0819263 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/dom/elements/images/image.py @@ -0,0 +1,28 @@ +import os.path + +from wptserve.utils import isomorphic_decode + +def main(request, response): + + key = request.GET['id'] + alreadyServedRequest = False + try: + alreadyServedRequest = request.server.stash.take(key) + except (KeyError, ValueError) as e: + pass + + if alreadyServedRequest: + body = open(os.path.join(os.path.dirname(isomorphic_decode(__file__)), u"../../../../images/red.png"), u"rb").read() + else: + request.server.stash.put(key, True); + body = open(os.path.join(os.path.dirname(isomorphic_decode(__file__)), u"../../../../images/green.png"), u"rb").read() + pass + + response.writer.write_status(200) + response.writer.write_header(b"etag", "abcdef") + response.writer.write_header(b"content-length", len(body)) + response.writer.write_header(b"content-type", "image/png") + response.writer.write_header(b"cache-control", "public, max-age=31536000, no-cache") + response.writer.end_headers() + + response.writer.write(body) diff --git a/tests/wpt/web-platform-tests/html/dom/idlharness.https.html b/tests/wpt/web-platform-tests/html/dom/idlharness.https.html index 05b1f69ebb9..d79e09b46af 100644 --- a/tests/wpt/web-platform-tests/html/dom/idlharness.https.html +++ b/tests/wpt/web-platform-tests/html/dom/idlharness.https.html @@ -211,6 +211,7 @@ idl_test( PeerConnection: [], MediaStreamEvent: [], ErrorEvent: [], + EventSource: ['new EventSource("http://invalid")'], // https://web-platform-tests.org/writing-tests/server-features.html?tests-involving-multiple-origins WebSocket: ['new WebSocket("wss://nonexistent.' + get_host_info().ORIGINAL_HOST + '")'], CloseEvent: ['new CloseEvent("close")'], @@ -226,6 +227,11 @@ idl_test( HTMLDirectoryElement: ['document.createElement("dir")'], HTMLFontElement: ['document.createElement("font")'], DOMStringList: ['location.ancestorOrigins'], + Storage: [ + 'localStorage', + 'sessionStorage', + ], + StorageEvent: ['new StorageEvent("storage")'] }); idlArray.prevent_multiple_testing('HTMLElement'); await waitForLoad; diff --git a/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js b/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js index feddaf54c92..872657d383c 100644 --- a/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js +++ b/tests/wpt/web-platform-tests/html/dom/idlharness.worker.js @@ -11,7 +11,8 @@ idl_test( idlArray.add_objects({ WorkerLocation: ['self.location'], WorkerNavigator: ['self.navigator'], - WebSocket: ['new WebSocket("ws://foo")'], + EventSource: ['new EventSource("http://invalid")'], + WebSocket: ['new WebSocket("ws://invalid")'], CloseEvent: ['new CloseEvent("close")'], Worker: [], MessageEvent: ['new MessageEvent("message", { data: 5 })'], diff --git a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js index cac16d0b492..01c8a59cd2f 100644 --- a/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js +++ b/tests/wpt/web-platform-tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js @@ -1,6 +1,34 @@ // NOTE: this file needs to be split up rather than expanded. See ../location.sub.html for some // extracted tests. Tracked by https://github.com/web-platform-tests/wpt/issues/4934. +/* +* help: +* https://html.spec.whatwg.org/multipage/#the-link-element +* https://html.spec.whatwg.org/multipage/#styling +* https://html.spec.whatwg.org/multipage/#prepare-a-script +* https://html.spec.whatwg.org/multipage/#concept-media-load-algorithm +* https://html.spec.whatwg.org/multipage/#track-url +* https://html.spec.whatwg.org/multipage/#concept-form-submit +* https://html.spec.whatwg.org/multipage/#set-the-frozen-base-url +* https://dom.spec.whatwg.org/#dom-node-baseuri +* https://html.spec.whatwg.org/multipage/#the-a-element +* https://html.spec.whatwg.org/multipage/#dom-worker +* https://html.spec.whatwg.org/multipage/#dom-sharedworker +* https://html.spec.whatwg.org/multipage/#dom-eventsource +* https://html.spec.whatwg.org/multipage/#dom-xmldocument-load +* https://html.spec.whatwg.org/multipage/#dom-open +* http://url.spec.whatwg.org/#dom-url-search +* https://www.w3.org/Bugs/Public/show_bug.cgi?id=24148 +* https://xhr.spec.whatwg.org/#the-open()-method +* https://html.spec.whatwg.org/multipage/#set-up-a-worker-script-settings-object +* https://html.spec.whatwg.org/multipage/#dom-workerglobalscope-importscripts +* https://html.spec.whatwg.org/multipage/#parse-a-websocket-url's-components +* https://html.spec.whatwg.org/multipage/#dom-websocket-url +* https://html.spec.whatwg.org/multipage/#parse-a-manifest +* https://www.w3.org/Bugs/Public/show_bug.cgi?id=23968 +* http://dev.w3.org/csswg/cssom/#requirements-on-user-agents-implementing-the-xml-stylesheet-processing-instruction +* http://url.spec.whatwg.org/#dom-url +*/ setup({explicit_done:true}); onload = function() { var encoding = '{{GET[encoding]}}'; @@ -64,8 +92,7 @@ onload = function() { assert_equals(window[id].document.documentElement.textContent, expected_current); }); - }, 'load nested browsing context <'+tag+' '+attr+'>', - {help:spec_url}); + }, 'load nested browsing context <'+tag+' '+attr+'>'); } spec_url_load_nested_browsing_context = { @@ -94,9 +121,7 @@ onload = function() { assert_true(elm.sheet.href.indexOf(expected_current) > -1, 'sheet.href ' + msg(expected_current, got)); assert_equals(elm.sheet.cssRules[0].style.content, '"'+expected_current+'"', 'sheet.cssRules[0].style.content'); }); - }, 'loading css ', - {help:['https://html.spec.whatwg.org/multipage/#the-link-element', - 'https://html.spec.whatwg.org/multipage/#styling']}); + }, 'loading css '); // loading js subsetTestByKey('loading-css', async_test, function() { @@ -106,8 +131,7 @@ onload = function() { elm.onload = this.step_func_done(function() { assert_equals(window.test_load_js_got, expected_current); }); - }, 'loading js + + + +
    + Legend +
    +
    + + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/multicol-legend-becomes-floated-crash.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/multicol-legend-becomes-floated-crash.html new file mode 100644 index 00000000000..0e7f87232ab --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/multicol-legend-becomes-floated-crash.html @@ -0,0 +1,11 @@ + + + +
    + +
    + diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/second-legend-becomes-rendered-legend-crash.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/second-legend-becomes-rendered-legend-crash.html new file mode 100644 index 00000000000..6e36b3bb5ae --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/second-legend-becomes-rendered-legend-crash.html @@ -0,0 +1,20 @@ + + + +
    + +
    +
    + diff --git a/tests/wpt/web-platform-tests/html/resources/common.js b/tests/wpt/web-platform-tests/html/resources/common.js index 273f3a47be6..d23495ef8d1 100644 --- a/tests/wpt/web-platform-tests/html/resources/common.js +++ b/tests/wpt/web-platform-tests/html/resources/common.js @@ -113,7 +113,7 @@ function inContext(f) { // the context is passed to function as argument function testInIFrame(url, f, testName, testProps) { if (url) { - var t = async_test(testName, testProps); + var t = async_test(testName); t.step(function() { var context = newContext(); var iframe = newIFrame(context, url); @@ -130,7 +130,7 @@ function testInIFrame(url, f, testName, testProps) { test(inContext(function(context) { newRenderedHTMLDocument(context); f(context); - }), testName, testProps); + }), testName); } } diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html new file mode 100644 index 00000000000..cd53914ecd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html @@ -0,0 +1,27 @@ + +Ensure that the 'cuechange' event is not fired before video playback has begun. + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-active-cues.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-active-cues.html index 501cf3f92a2..a7c08a2e3ea 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-active-cues.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-active-cues.html @@ -26,7 +26,7 @@ async_test(function(t) { trackElement.oncuechange = t.step_func(eventCallback); video.oncanplaythrough = t.step_func(eventCallback); - video.onerror = t.step_func_done(function() { + video.onerror = t.step_func_done(function(event) { assert_equals(event.target, video); assert_not_equals(video.error, null); assert_equals(video.error.code, MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED); diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change-ref.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change-ref.html new file mode 100644 index 00000000000..ab18cd24e44 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change-ref.html @@ -0,0 +1,15 @@ + + + + +
    div
    diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html new file mode 100644 index 00000000000..07c53cb2344 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/image-compositing-large-scale-change.html @@ -0,0 +1,35 @@ + + +Composited images correctly display under large scale transform changes + + + + + +
    + + diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/implicit-sizes-ignores-width.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/implicit-sizes-ignores-width.html new file mode 100644 index 00000000000..db61db351ea --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/implicit-sizes-ignores-width.html @@ -0,0 +1,19 @@ + +Implicit sizes ignores width + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/datetime.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/datetime.html index 52cb3c0697b..38ac00fbf0f 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/datetime.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/datetime.html @@ -6,6 +6,13 @@ + + + + + + + @@ -24,80 +31,45 @@
    diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/defaultValue-clobbering-ref.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/defaultValue-clobbering-ref.html deleted file mode 100644 index 5a396d3c52a..00000000000 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/defaultValue-clobbering-ref.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - -
    - email with leading whitespace: -
    -
    - number with trailing incomplete exponent: -
    - - diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/defaultValue-clobbering.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/defaultValue-clobbering.html index c65f6ff88c7..41ff967c190 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/defaultValue-clobbering.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/defaultValue-clobbering.html @@ -1,15 +1,14 @@ - - + + -
    email with leading whitespace: @@ -19,13 +18,19 @@
    diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/range.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/range.html index 209ce25306e..577611bb802 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/range.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/range.html @@ -8,6 +8,13 @@ + + + + + + + @@ -48,137 +55,91 @@ function() { assert_equals(document.getElementById('range_basic').type, "range"); }, - "range type support on input element", - { - "help" : "https://html.spec.whatwg.org/multipage/#dom-input-type" - } + "range type support on input element" ); test( function() { assert_equals(document.getElementById('range_basic').min, "0") }, - "min attribute support on input element", - { - "help" : "https://html.spec.whatwg.org/multipage/#dom-input-min" - } + "min attribute support on input element" ); test( function() { assert_equals(document.getElementById('range_basic').max, "5") }, - "max attribute support on input element", - { - "help" : "https://html.spec.whatwg.org/multipage/#dom-input-max" - } + "max attribute support on input element" ); test( function() { assert_equals(document.getElementById('illegal_min_and_max').min, "ab") }, - "Illegal value of min attribute", - { - "help" : [ - "https://html.spec.whatwg.org/multipage/#dom-input-min", - "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - ] - } + "Illegal value of min attribute" ); test( function() { assert_equals(document.getElementById('illegal_min_and_max').max, "f") }, - "Illegal value of max attribute", - { - "help" : [ - "https://html.spec.whatwg.org/multipage/#dom-input-max", - "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - ] - } + "Illegal value of max attribute" ); test( function() { assert_equals(document.getElementById('illegal_value_and_step').value, "3") }, - "Converting an illegal string to the default value", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - } + "Converting an illegal string to the default value" ); test( function() { assert_equals(document.getElementById('illegal_value_and_step').step, "xyz") }, - "Illegal value of step attribute", - { - "help" : [ - "https://html.spec.whatwg.org/multipage/#dom-input-step", - "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - ] - } + "Illegal value of step attribute" ); test( function() { assert_equals(document.getElementById('value_smaller_than_min').value, "0") }, - "the value is set to min when a smaller value than min attribute is given", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - } + "the value is set to min when a smaller value than min attribute is given" ); test( function() { assert_equals(document.getElementById('value_larger_than_max').value, "5") }, - "the value is set to max when a larger value than max attribute is given", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - } + "the value is set to max when a larger value than max attribute is given" ); test( function() { assert_equals(document.getElementById('empty_attributes').min, "") }, - "default value of min attribute in input type=range", - { "help" : "https://html.spec.whatwg.org/multipage/#dom-input-min" } + "default value of min attribute in input type=range" ); test( function() { assert_equals(document.getElementById('empty_attributes').max, "") }, - "default value of max attribute in input type=range", - { - "help" : "https://html.spec.whatwg.org/multipage/#dom-input-max" - } + "default value of max attribute in input type=range" ); test( function() { assert_equals(document.getElementById('value_not_specified').value, "4") }, - "default value when min and max attributes are given (= min plus half the difference between min and max)", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - } + "default value when min and max attributes are given (= min plus half the difference between min and max)" ); test( function() { assert_equals(document.getElementById('control_step_mismatch').value, "4") }, - "default value with step control when both min and max attributes are given", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - } + "default value with step control when both min and max attributes are given" ); // Chrome would result in different value out of the range between min and max. Why? @@ -186,49 +147,35 @@ function() { assert_equals(document.getElementById('max_smaller_than_min').value, "2") }, - "default value when both min and max attributes are given, while min > max", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - } + "default value when both min and max attributes are given, while min > max" ); test( function() { assert_equals(document.getElementById('default_step_scale_factor_1').value, "7") }, - "The default step scale factor is 1, unless min attribute has non-integer value", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - } + "The default step scale factor is 1, unless min attribute has non-integer value" ); test( function() { assert_equals(document.getElementById('default_step_scale_factor_2').value, "6.3") }, - "Step scale factor behavior when min attribute has integer value but max attribute is non-integer ", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" } + "Step scale factor behavior when min attribute has integer value but max attribute is non-integer " ); test( function() { assert_equals(document.getElementById('default_step_scale_factor_3').step, "1") }, - "The default scale factor is 1 even if step attribute is explicitly set to non-integer value, unless min attribute has non-integer value", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - } + "The default scale factor is 1 even if step attribute is explicitly set to non-integer value, unless min attribute has non-integer value" ); test( function() { assert_equals(document.getElementById('float_step_scale_factor').value, "6.8") }, - "Solving the step mismatch", - { - "help" : "https://html.spec.whatwg.org/multipage/#range-state-(type=range)" - } + "Solving the step mismatch" ); // Firefox Nightly (24.0a1) would result in the possible maximum value in this range... (i.e. 12) @@ -238,10 +185,7 @@ e.stepUp(); assert_equals(e.value, "9") }, - "Performing stepUp()", - { - "help" : "https://html.spec.whatwg.org/multipage/#dom-input-stepup" - } + "Performing stepUp()" ); // Firefox Nightly (24.0a1) would result in the possible minimum value in this range... (i.e. 3) @@ -251,10 +195,7 @@ e.stepDown(); assert_equals(e.value, "6") }, - "Performing stepDown()", - { - "help" : "https://html.spec.whatwg.org/multipage/#dom-input-stepdown" - } + "Performing stepDown()" ); // Chrome and Opera would throw DOM Exception 11 (InvalidStateError) @@ -265,10 +206,7 @@ e.stepUp(2); assert_equals(e.value, "12") }, - "Performing stepUp() beyond the value of the max attribute", - { - "help" : "https://html.spec.whatwg.org/multipage/#dom-input-stepup" - } + "Performing stepUp() beyond the value of the max attribute" ); // Chrome and Opera would throw DOM Exception 11 (InvalidStateError) @@ -278,18 +216,14 @@ var e = document.getElementById('stepdown_beyond_min'); e.stepDown(2); assert_equals(e.value, "3") - }, "Performing stepDown() beyond the value of the min attribute", { - "help" : "https://html.spec.whatwg.org/multipage/#dom-input-stepdown" - } + }, "Performing stepDown() beyond the value of the min attribute" ); test( function() { var e = document.getElementById('should_skip_whitespace'); assert_equals(e.value, "123") - }, "Skip ASCII whitespace within input", { - "help" : "https://html.spec.whatwg.org/multipage/#best-representation-of-the-number-as-a-floating-point-number" - } + }, "Skip ASCII whitespace within input" ); test( @@ -297,9 +231,7 @@ var e = document.getElementById('exponent_value1'); e.value = 1e2; assert_equals(e.value, "100") - }, "Multiply value by ten raised to the exponentth power with `e`", { - "help" : "https://html.spec.whatwg.org/multipage/#best-representation-of-the-number-as-a-floating-point-number" - } + }, "Multiply value by ten raised to the exponentth power with `e`" ); test( @@ -307,9 +239,7 @@ var e = document.getElementById('exponent_value2'); e.value = 1E2; assert_equals(e.value, "100") - }, "Multiply value by ten raised to the exponentth power with `E`", { - "help" : "https://html.spec.whatwg.org/multipage/#best-representation-of-the-number-as-a-floating-point-number" - } + }, "Multiply value by ten raised to the exponentth power with `E`" ); diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/search_input.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/search_input.html index 175cdde99a3..7b63cd43e1b 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/search_input.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-input-element/search_input.html @@ -6,7 +6,9 @@ - + + + @@ -23,10 +25,8 @@ diff --git a/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-004-ref.html b/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-004-ref.html new file mode 100644 index 00000000000..2d9b19e0431 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-004-ref.html @@ -0,0 +1,23 @@ + + + + + HTML LI element: implied scope + + + + +
  • +
  • +
  • +
  • +
  • +
  • + + diff --git a/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-004.html b/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-004.html new file mode 100644 index 00000000000..2a7647fc2ad --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-004.html @@ -0,0 +1,26 @@ + + + + + HTML LI element: implied scope + + + + + + + +
  • +
  • +
  • +
  • +
  • +
  • + + diff --git a/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005-ref.html b/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005-ref.html new file mode 100644 index 00000000000..6ec02e5433c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005-ref.html @@ -0,0 +1,22 @@ + + + + + HTML LI element: explicit scope + + + +
      +
    1. +
    2. +
    3. +
    4. +
    5. +
    6. +
    7. +
    + + diff --git a/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005.html b/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005.html new file mode 100644 index 00000000000..2fa4e5dbe34 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/grouping-content/the-li-element/grouping-li-reftest-005.html @@ -0,0 +1,25 @@ + + + + + HTML LI element: explicit scope + + + + + + +
      +
    1. +
    2. +
    3. +
    4. +
    5. +
    6. +
    7. +
    + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.mjs index 3d9c9bb7497..81c9d0bd3e9 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.mjs +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-worker.mjs @@ -1,7 +1,7 @@ globalThis.expectedLog = [ "step-2.2-1", "step-2.2-2", - "microtask-2.2", "global-error", "error", + "microtask-2.2", ]; done(); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html index 8ad6532172c..caa1beab47a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-template-element/template-element/template-as-a-descendant.html @@ -72,15 +72,15 @@ var parameters = [['Template element as a descendant of the BODY element. ' + 'Template element is created by innerHTML', doc.head], ]; -generate_tests(templateIsAChild, parameters, - 'Template element as a descendant of the HEAD and BODY elements'); +// Template element as a descendant of the HEAD and BODY elements +generate_tests(templateIsAChild, parameters); parameters = [['Template element as a descendant of the FRAMESET element. ' + 'Template element is created by innerHTML', frameset], ]; -generate_tests(templateIsDisallowedAsAChild, parameters, - 'Template element should be disallowed as a descendant of the FRAMESET elements'); +// Template element should be disallowed as a descendant of the FRAMESET elements +generate_tests(templateIsDisallowedAsAChild, parameters); parameters = [['Template element as an indirect descendant of the BODY element. ' + @@ -90,15 +90,15 @@ parameters = [['Template element as an indirect descendant of the BODY element. 'Template element is created by innerHTML', doc.head], ]; -generate_tests(templateIsAnIndirectChild, parameters, - 'Template element as an indirect descendant of the HEAD, BODY and FRAMESET elements'); +// Template element as an indirect descendant of the HEAD, BODY and FRAMESET elements +generate_tests(templateIsAnIndirectChild, parameters); parameters = [['Template element as an indirect descendant of the FRAMESET element. ' + 'Template element is created by innerHTML', frameset], ]; -generate_tests(templateIsDisallowedAsAnIndirectChild, parameters, - 'Template element should be disallowed as an indirect descendant of the FRAMESET elements'); +// Template element should be disallowed as an indirect descendant of the FRAMESET elements +generate_tests(templateIsDisallowedAsAnIndirectChild, parameters); @@ -112,8 +112,8 @@ parameters = [['Template element as a descendant of the BODY element. ' + 'Template element is appended by appendChild()', doc, frameset] ]; -generate_tests(templateIsAnAppendedChild, parameters, - 'Template element as a descendant of the HEAD, BODY and FRAMESET elements'); +// Template element as a descendant of the HEAD, BODY and FRAMESET elements +generate_tests(templateIsAnAppendedChild, parameters); @@ -127,8 +127,8 @@ parameters = [['Template element as an indirect descendant of the BODY element. 'Template element is appended by appendChild()', doc, frameset] ]; -generate_tests(templateIsAnAppendedIndirectChild, parameters, - 'Template element as a descendant of the HEAD, BODY and FRAMESET elements'); +// Template element as a descendant of the HEAD, BODY and FRAMESET elements +generate_tests(templateIsAnAppendedIndirectChild, parameters); diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-body-context.html b/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-body-context.html index a150faa1d7e..2e7d5408214 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-body-context.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-body-context.html @@ -175,7 +175,8 @@ var parameters = [ doc, 'tbody', '', null, null] ]; -generate_tests(doTest, parameters, 'Clearing stack back to a table body context.'); +// Clearing stack back to a table body context. +generate_tests(doTest, parameters); diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-context.html b/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-context.html index 23a4e7b0bbf..b805d3c9f99 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-context.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-context.html @@ -77,7 +77,8 @@ var parameters = [ doc, '', 'col1', 'COL'] ]; -generate_tests(doTest, parameters, 'Clearing stack back to a table body context.'); +// Clearing stack back to a table body context. +generate_tests(doTest, parameters); diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-row-context.html b/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-row-context.html index 25039161261..d213c0fbddf 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-row-context.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/template/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-row-context.html @@ -64,7 +64,8 @@ var parameters = [ doc, '', null, null] ]; -generate_tests(doTest, parameters, 'Clearing stack back to a table body context.'); +// Clearing stack back to a table body context. +generate_tests(doTest, parameters); diff --git a/tests/wpt/web-platform-tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html b/tests/wpt/web-platform-tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html index bec3364adff..6738a6fde55 100644 --- a/tests/wpt/web-platform-tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html +++ b/tests/wpt/web-platform-tests/html/syntax/parsing/template/creating-an-element-for-the-token/template-owner-document.html @@ -171,9 +171,9 @@ function compare_owners(element, template) { assert_equals(element.ownerDocument, template.content.ownerDocument) } -generate_tests(compare_owners, parameters, - 'Test ownerDocument property of all HTML5 elements in a template. ' - + 'Current DOCUMENT has no browsing context.'); +// Test ownerDocument property of all HTML5 elements in a template. +// Current DOCUMENT has no browsing context. +generate_tests(compare_owners, parameters); var context = newContext(); parameters = []; diff --git a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/pageshow-event.window.js b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/pageshow-event.window.js new file mode 100644 index 00000000000..45570b35abf --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/pageshow-event.window.js @@ -0,0 +1,13 @@ +async_test(t => { + const frame = document.body.appendChild(document.createElement("iframe")); + assert_equals(frame.contentDocument.open(), frame.contentDocument); + assert_equals(frame.contentDocument.documentElement, null); + frame.contentDocument.write("
    heya
    "); + frame.contentDocument.close(); + frame.contentWindow.addEventListener("pageshow", function() { + t.step(function() { + assert_true(true, "Got pageshow event"); + }); + t.done(); + }); +}, "document.open(), and the pageshow events"); diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html index f4dca7d69d7..bb27ed704f5 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html +++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.https.html @@ -140,8 +140,16 @@ test(() => { /* web+ prefixed schemes must be followed by 1+ ascii alphas */ 'web+', 'web+1', + 'web+namewithid123', + 'web+namewithtrailingspace ', + 'web+préfixewithaccent', // é is not ascii alpha + 'web+Kelvinsign', // ASCII-lower KELVIN SIGN is not k + 'web+latinsmallletterlongſ', // ASCII-lower LATIN SMALL LETTER LONG S is not s 'web+dots.are.forbidden', 'web+dashes-are-forbidden', + 'web+underscores_are_forbidden', + 'web+spaces are forbidden', + 'web+non*alpha*are*forbidden', 'web+digits123areforbidden', ].forEach(scheme => { test(() => { @@ -191,6 +199,7 @@ test(() => { 'WebCAL', 'WTAI', 'web+myprotocol', + 'web+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', // all alphas 'web+UpperCasedIsLowercased', 'WEB+seeabove', 'WeB+SeEaBoVe' diff --git a/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.tentative.https.html b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.tentative.https.html new file mode 100644 index 00000000000..0120aaa12ff --- /dev/null +++ b/tests/wpt/web-platform-tests/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol.tentative.https.html @@ -0,0 +1,30 @@ + + +protocol handlers + + + + + diff --git a/tests/wpt/web-platform-tests/idle-detection/idlharness.https.window.js b/tests/wpt/web-platform-tests/idle-detection/idlharness.https.window.js index dec8fee9882..f2b32d8183b 100644 --- a/tests/wpt/web-platform-tests/idle-detection/idlharness.https.window.js +++ b/tests/wpt/web-platform-tests/idle-detection/idlharness.https.window.js @@ -7,31 +7,20 @@ 'use strict'; -promise_test(async (t) => { - await test_driver.set_permission({ name: 'notifications' }, 'granted', false); +idl_test( + ['idle-detection.tentative'], + ['dom', 'html'], + async (idl_array, t) => { + await test_driver.set_permission({ name: 'notifications' }, 'granted', false); - const srcs = ['./idle-detection.idl', - '/interfaces/dom.idl', - '/interfaces/html.idl']; + self.idle = new IdleDetector(); + let watcher = new EventWatcher(t, self.idle, ["change"]); + let initial_state = watcher.wait_for("change"); + await self.idle.start(); + await initial_state; - const [idle, dom, html] = await Promise.all( - srcs.map(i => fetch(i).then(r => r.text())) - ); - - const idl_array = new IdlArray(); - idl_array.add_idls(idle); - idl_array.add_dependency_idls(dom); - idl_array.add_dependency_idls(html); - - self.idle = new IdleDetector(); - let watcher = new EventWatcher(t, self.idle, ["change"]); - let initial_state = watcher.wait_for("change"); - await self.idle.start(); - await initial_state; - - idl_array.add_objects({ - IdleDetector: ['idle'], - }); - - idl_array.test(); -}, 'Test IDL implementation of Idle Detection API'); + idl_array.add_objects({ + IdleDetector: ['idle'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html b/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html index 31acf2829f2..e597bd3e94e 100644 --- a/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html +++ b/tests/wpt/web-platform-tests/idle-detection/interceptor.https.html @@ -3,18 +3,18 @@ Tests the Idle Detection API + - - - - - + diff --git a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-forwarddelete.tentative.html b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-forwarddelete.tentative.html index 3780324cf92..b31afacb62d 100644 --- a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-forwarddelete.tentative.html +++ b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-forwarddelete.tentative.html @@ -8,18 +8,21 @@
    diff --git a/tests/wpt/web-platform-tests/is-input-pending/resources/input-onmessage.js b/tests/wpt/web-platform-tests/is-input-pending/resources/input-onmessage.js new file mode 100644 index 00000000000..eeaa82841ed --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/resources/input-onmessage.js @@ -0,0 +1,25 @@ +// Responds to onmessage events from other frames to check for pending input. +onmessage = async e => { + if (e.data !== 'check-input') return; + + const discreteOptions = new IsInputPendingOptions({ includeContinuous: false }); + const continuousOptions = new IsInputPendingOptions({ includeContinuous: true }); + + // Use a reasonable time to wait after dispatching events, since we want to be + // able to test for cases where isInputPending returns false. + const DISPATCH_WAIT_TIME_MS = 200; + + // Wait a reasonable amount of time for the event to be enqueued. + const end = performance.now() + DISPATCH_WAIT_TIME_MS; + let hasDiscrete; + let hasContinuous; + do { + hasDiscrete = navigator.scheduling.isInputPending(discreteOptions); + hasContinuous = navigator.scheduling.isInputPending(continuousOptions); + } while (performance.now() < end && !(hasDiscrete && hasContinuous)); + + e.source.postMessage({ + discrete: hasDiscrete, + continuous: hasContinuous, + }, '*'); +} diff --git a/tests/wpt/web-platform-tests/is-input-pending/resources/pending-input-utils.js b/tests/wpt/web-platform-tests/is-input-pending/resources/pending-input-utils.js new file mode 100644 index 00000000000..489c16827a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/resources/pending-input-utils.js @@ -0,0 +1,68 @@ +// Dispatches the given sequence of actions and verifies isInputPending state +// after dispatch according to expectations. Returns when all dispatched input +// has been handled. +const pendingActionTest = async (label, target, actionCallback, expectations) => { + promise_test(async () => { + // Give focus to the page first, before running the test. + await new test_driver.Actions() + .pointerMove(0, 0) + .pointerDown() + .pointerUp() + .send(); + + // Register a handler to fetch the result of isInputPending from the target + // window. + const resultPromise = new Promise(res => { + window.addEventListener('message', function handler(e) { + if (e.data === 'check-input') return; + res(e.data); + window.removeEventListener('message', handler); + }); + }); + + // Signal to the target window to monitor isInputPending. + target.postMessage('check-input', '*'); + + const actions = actionCallback(); + const actionsPromise = actions.send(); + + const {discrete, continuous} = await resultPromise; + + assert_equals(discrete, expectations.discrete, 'detected discrete input'); + assert_equals(continuous, expectations.continuous, 'detected continuous input'); + + await actionsPromise; + }, label); +} + +const PendingInputUtils = { + testDetectNoPendingInput(target, actionCallback, label) { + pendingActionTest(label, target, actionCallback, { + discrete: false, + continuous: false, + }); + }, + + testDetectDiscretePendingInput(target, actionCallback, label) { + pendingActionTest(label, target, actionCallback, { + discrete: true, + continuous: true, + }); + }, + + testDetectContinuousPendingInput(target, actionCallback, label) { + pendingActionTest(label, target, actionCallback, { + discrete: false, + continuous: true, + }); + }, + + // Simulates a pointer event at the given coordinates, and tests that the + // given target window cannot access it. Intended for cross-origin compliance + // tests. + testCannotAccessPendingInputAt(target, x, y, label) { + PendingInputUtils.testDetectNoPendingInput(target, () => { + return new test_driver.Actions().pointerMove(x, y).pointerDown().pointerUp(); + }, label); + }, +} diff --git a/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-complex-clip.sub.html b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-complex-clip.sub.html new file mode 100644 index 00000000000..0bbe9c07820 --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-complex-clip.sub.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + + +
    + +

    Ensure that a parent frame cannot detect events on a cross-origin subframe with a complex clip.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-complex-clip.sub.html b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-complex-clip.sub.html new file mode 100644 index 00000000000..e5a3d310a9a --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-complex-clip.sub.html @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + +
    +

    Ensure that a parent frame cannot detect events on a cross-origin subframe masked by a div with a complex clip.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed-2.sub.html b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed-2.sub.html new file mode 100644 index 00000000000..55cbc48b7d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed-2.sub.html @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + +
    +
    +
    +

    Ensure that a parent frame cannot detect events on top of a cross-origin subframe masked by a div with a `pointer-events: none` child.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed.sub.html b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed.sub.html new file mode 100644 index 00000000000..b0363682ef4 --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-mixed.sub.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + +
    +
    +
    + +

    Ensure that a parent frame cannot can events on top of a cross-origin subframe masked by a div with `pointer-events: none` and a `pointer-events: initial` child.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-none.sub.html b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-none.sub.html new file mode 100644 index 00000000000..a3f971cdfd2 --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-masked-pointer-events-none.sub.html @@ -0,0 +1,33 @@ + + + + + + + + + + + + + +
    + +

    Ensure that a parent frame cannot detect events on a cross-origin subframe masked by a div with `pointer-events: none`.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-overlap.sub.html b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-overlap.sub.html new file mode 100644 index 00000000000..377eedbf35e --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-overlap.sub.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + +

    Ensure that two overlapping subframes cannot detect events from each other.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-pointer-events-none.sub.html b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-pointer-events-none.sub.html new file mode 100644 index 00000000000..371a92866a6 --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-pointer-events-none.sub.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + +

    Ensure that a subframe cannot detect events if it has `pointer-events: none`.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-transformed.sub.html b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-transformed.sub.html new file mode 100644 index 00000000000..5dac5aa36b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe-transformed.sub.html @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + +

    Ensure that a parent frame cannot detect events on a cross-origin subframe when the subframe does not intersect and is not an axis-aligned rect.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe.sub.html b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe.sub.html new file mode 100644 index 00000000000..d513fa94fc4 --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/security/cross-origin-subframe.sub.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + + +

    Ensure that a parent frame cannot detect events on a cross-origin subframe.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/tentative/same-origin-subframe.sub.html b/tests/wpt/web-platform-tests/is-input-pending/tentative/same-origin-subframe.sub.html new file mode 100644 index 00000000000..ee85bc4d06e --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/tentative/same-origin-subframe.sub.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + +

    Ensure that a parent frame can detect events on one of its same-origin subframes.

    + + + diff --git a/tests/wpt/web-platform-tests/is-input-pending/tentative/toplevel.html b/tests/wpt/web-platform-tests/is-input-pending/tentative/toplevel.html new file mode 100644 index 00000000000..4b60571d53c --- /dev/null +++ b/tests/wpt/web-platform-tests/is-input-pending/tentative/toplevel.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + +

    Ensure that pointer events dispatched the to the toplevel document are detectable by isInputPending.

    + + + diff --git a/tests/wpt/web-platform-tests/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js b/tests/wpt/web-platform-tests/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js new file mode 100644 index 00000000000..5095ca7d41e --- /dev/null +++ b/tests/wpt/web-platform-tests/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js @@ -0,0 +1,50 @@ +// META: script=resources/maybe-garbage-collect.js +// ├──> maybeGarbageCollectAndCleanupAsync +// └──> resolveGarbageCollection +/*--- +esid: sec-finalization-registry.prototype.cleanupSome +info: | + FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) + + 1. Let finalizationRegistry be the this value. + 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. + 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. + 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. + 5. Perform ? CleanupFinalizationRegistry(finalizationRegistry, callback). + 6. Return undefined. +---*/ + +let holdingsList = []; +function cb(holding) { + holdingsList.push(holding); +}; +let finalizationRegistry = new FinalizationRegistry(function() {}); + +let referenced = {}; + +function emptyCells() { + let target = {}; + finalizationRegistry.register(target, 'target!'); + finalizationRegistry.register(referenced, 'referenced'); + + let prom = maybeGarbageCollectAndCleanupAsync(target); + target = null; + + return prom; +} + +promise_test(() => { + return (async () => { + assert_implements( + typeof FinalizationRegistry.prototype.cleanupSome === 'function', + 'FinalizationRegistry.prototype.cleanupSome is not implemented.' + ); + + await emptyCells(); + finalizationRegistry.cleanupSome(cb); + + assert_equals(holdingsList.length, 1); + assert_equals(holdingsList[0], 'target!'); + assert_equals(typeof referenced, 'object', 'referenced preserved'); + })().catch(resolveGarbageCollection); +}, 'cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.'); diff --git a/tests/wpt/web-platform-tests/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js b/tests/wpt/web-platform-tests/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js new file mode 100644 index 00000000000..0dcfcbfbd02 --- /dev/null +++ b/tests/wpt/web-platform-tests/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js @@ -0,0 +1,57 @@ +// META: script=resources/maybe-garbage-collect.js +// ├──> maybeGarbageCollectAndCleanupAsync +// └──> resolveGarbageCollection +/*--- +esid: sec-finalization-registry.prototype.cleanupSome +info: | + FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) + + 1. Let finalizationRegistry be the this value. + 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. + 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. + 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. + 5. Perform ? CleanupFinalizationRegistry(finalizationRegistry, callback). + 6. Return undefined. + + FinalizationRegistry.prototype.unregister ( unregisterToken ) + + 1. Let removed be false. + 2. For each Record { [[Target]], [[Holdings]], [[UnregisterToken]] } cell that is an element of finalizationRegistry.[[Cells]], do + a. If SameValue(cell.[[UnregisterToken]], unregisterToken) is true, then + i. Remove cell from finalizationRegistry.[[Cells]]. + ii. Set removed to true. + 3. Return removed. +---*/ +let token = {}; +let finalizationRegistry = new FinalizationRegistry(function() {}); + +function emptyCells() { + let target = {}; + finalizationRegistry.register(target, 'target!', token); + + let prom = maybeGarbageCollectAndCleanupAsync(target); + target = null; + + return prom; +} + +promise_test(() => { + return (async () => { + assert_implements( + typeof FinalizationRegistry.prototype.cleanupSome === 'function', + 'FinalizationRegistry.prototype.cleanupSome is not implemented.' + ); + + await emptyCells(); + let called = 0; + + let res = finalizationRegistry.unregister(token); + assert_equals(res, true, 'unregister target before iterating over it in cleanup'); + + finalizationRegistry.cleanupSome((holding) => { + called += 1; + }); + + assert_equals(called, 0, 'callback was not called'); + })().catch(resolveGarbageCollection); +}, 'Cleanup might be prevented with an unregister usage'); diff --git a/tests/wpt/web-platform-tests/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js b/tests/wpt/web-platform-tests/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js new file mode 100644 index 00000000000..9a1d0a5c1a8 --- /dev/null +++ b/tests/wpt/web-platform-tests/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js @@ -0,0 +1,100 @@ +// META: script=resources/maybe-garbage-collect.js +// ├──> maybeGarbageCollectAndCleanupAsync +// ├──> maybeGarbageCollectAsync +// └──> resolveGarbageCollection +/*--- +esid: sec-finalization-registry-target +info: | + FinalizationRegistry ( cleanupCallback ) + + FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) + + ... + 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. + 5. Perform ? CleanupFinalizationRegistry(finalizationRegistry, callback). + 6. Return undefined. + + Execution + + At any time, if an object obj is not live, an ECMAScript implementation may perform the following steps atomically: + + 1. For each WeakRef ref such that ref.[[Target]] is obj, + a. Set ref.[[Target]] to empty. + 2. For each FinalizationRegistry finalizationRegistry such that finalizationRegistry.[[Cells]] contains cell, such that cell.[[Target]] is obj, + a. Set cell.[[Target]] to empty. + b. Optionally, perform ! HostCleanupFinalizationRegistry(finalizationRegistry). +---*/ + + +let cleanupCallback = 0; +let called = 0; +function cb(holding) { + assert_equals(holding, 'a'); + called += 1; +} + +let finalizationRegistry = new FinalizationRegistry(function() { + cleanupCallback += 1; +}); + +function emptyCells() { + let target = {}; + finalizationRegistry.register(target, 'a'); + + let prom = maybeGarbageCollectAndCleanupAsync(target); + target = null; + + return prom; +} + +promise_test(() => { + return (async () => { + assert_implements( + typeof FinalizationRegistry.prototype.cleanupSome === 'function', + 'FinalizationRegistry.prototype.cleanupSome is not implemented.' + ); + + let ticks = 0; + await emptyCells(); + await ticks++; + + finalizationRegistry.cleanupSome(cb); + + // cleanupSome will be invoked if there are empty cells left. If the + // cleanupCallback already ran, then cb won't be called. + let expectedCalled = cleanupCallback === 1 ? 0 : 1; + // This asserts the registered object was emptied in the previous GC. + assert_equals(called, expectedCalled, 'cleanupSome callback for the first time'); + + // At this point, we can't assert if cleanupCallback was called, because it's + // optional. Although, we can finally assert it's not gonna be called anymore + // for the other executions of the Garbage Collector. + // The chance of having it called only happens right after the + // cell.[[Target]] is set to empty. + assert_true(cleanupCallback >= 0, 'cleanupCallback might be 0'); + assert_true(cleanupCallback <= 1, 'cleanupCallback might be 1'); + + // Restoring the cleanupCallback variable to 0 will help us asserting the + // finalizationRegistry callback is not called again. + cleanupCallback = 0; + + await maybeGarbageCollectAsync(); + await ticks++; + + finalizationRegistry.cleanupSome(cb); + + assert_equals(called, expectedCalled, 'cleanupSome callback is not called anymore, no empty cells'); + assert_equals(cleanupCallback, 0, 'cleanupCallback is not called again #1'); + + await maybeGarbageCollectAsync(); + await ticks++; + + finalizationRegistry.cleanupSome(cb); + + assert_equals(called, expectedCalled, 'cleanupSome callback is not called again #2'); + assert_equals(cleanupCallback, 0, 'cleanupCallback is not called again #2'); + await maybeGarbageCollectAsync(); + + assert_equals(ticks, 3, 'ticks is 3'); + })().catch(resolveGarbageCollection); +}, 'cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.'); diff --git a/tests/wpt/web-platform-tests/js/builtins/weakrefs/holdings-multiple-values.optional.any.js b/tests/wpt/web-platform-tests/js/builtins/weakrefs/holdings-multiple-values.optional.any.js new file mode 100644 index 00000000000..591a94d35a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/js/builtins/weakrefs/holdings-multiple-values.optional.any.js @@ -0,0 +1,65 @@ +// META: script=resources/maybe-garbage-collect.js +// ├──> maybeGarbageCollectAndCleanupAsync +// └──> resolveGarbageCollection +/*--- +esid: sec-properties-of-the-finalization-registry-constructor +info: | + FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) + + 1. Let finalizationRegistry be the this value. + ... + 5. Perform ! CleanupFinalizationRegistry(finalizationRegistry, callback). + ... + + CleanupFinalizationRegistry ( finalizationRegistry [ , callback ] ) + + ... + 3. While finalizationRegistry.[[Cells]] contains a Record cell such that cell.[[WeakRefTarget]] is ~empty~, then an implementation may perform the following steps, + a. Choose any such cell. + b. Remove cell from finalizationRegistry.[[Cells]]. + c. Perform ? Call(callback, undefined, << cell.[[HeldValue]] >>). + +---*/ + +function check(value, expectedName) { + let holdings = []; + let called = 0; + let finalizationRegistry = new FinalizationRegistry(function() {}); + + function callback(holding) { + called += 1; + holdings.push(holding); + } + + // This is internal to avoid conflicts + function emptyCells(value) { + let target = {}; + finalizationRegistry.register(target, value); + + let prom = maybeGarbageCollectAndCleanupAsync(target); + target = null; + + return prom; + } + + return emptyCells(value).then(function() { + finalizationRegistry.cleanupSome(callback); + assert_equals(called, 1, expectedName); + assert_equals(holdings.length, 1, expectedName); + assert_equals(holdings[0], value, expectedName); + }); +} + +test(() => + assert_implements( + typeof FinalizationRegistry.prototype.cleanupSome === 'function', + 'FinalizationRegistry.prototype.cleanupSome is not implemented.' +), 'Requires FinalizationRegistry.prototype.cleanupSome'); +promise_test(() => check(undefined, 'undefined'), '`undefined` as registered holding value'); +promise_test(() => check(null, 'null'), '`null` as registered holding value'); +promise_test(() => check('', 'the empty string'), '`""` as registered holding value'); +promise_test(() => check({}, 'object'), '`{}` as registered holding value'); +promise_test(() => check(42, 'number'), '`42` as registered holding value'); +promise_test(() => check(true, 'true'), '`true` as registered holding value'); +promise_test(() => check(false, 'false'), '`false` as registered holding value'); +promise_test(() => check(Symbol(1), 'symbol'), '`Symbol(1)` as registered holding value'); diff --git a/tests/wpt/web-platform-tests/js/builtins/weakrefs/reentrancy.optional.any.js b/tests/wpt/web-platform-tests/js/builtins/weakrefs/reentrancy.optional.any.js new file mode 100644 index 00000000000..b332b282322 --- /dev/null +++ b/tests/wpt/web-platform-tests/js/builtins/weakrefs/reentrancy.optional.any.js @@ -0,0 +1,50 @@ +// META: script=resources/maybe-garbage-collect.js +// ├──> maybeGarbageCollectAndCleanupAsync +// └──> resolveGarbageCollection +/*--- +esid: sec-properties-of-the-finalization-registry-constructor +---*/ + +let called = 0; +let endOfCall = 0; +let finalizationRegistry = new FinalizationRegistry(function() {}); + +function callback(holding) { + called += 1; + + if (called === 1) { + // Atempt to re-enter the callback. + let nestedCallbackRan = false; + finalizationRegistry.cleanupSome(() => { nestedCallbackRan = true }); + assert_equals(nestedCallbackRan, true); + } + + endOfCall += 1; +} + +function emptyCells() { + let o1 = {}; + let o2 = {}; + // Register more than one objects to test reentrancy. + finalizationRegistry.register(o1, 'holdings 1'); + finalizationRegistry.register(o2, 'holdings 2'); + + let prom = maybeGarbageCollectAndCleanupAsync(o1); + o1 = null; + + return prom; +} + +promise_test(() => { + return (async () => { + assert_implements( + typeof FinalizationRegistry.prototype.cleanupSome === 'function', + 'FinalizationRegistry.prototype.cleanupSome is not implemented.' + ); + await emptyCells(); + finalizationRegistry.cleanupSome(callback); + + assert_equals(called, 1, 'callback was called'); + assert_equals(endOfCall, 1, 'callback finished'); + })().catch(resolveGarbageCollection); +}, 'cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.'); diff --git a/tests/wpt/web-platform-tests/js/builtins/weakrefs/resources/maybe-garbage-collect.js b/tests/wpt/web-platform-tests/js/builtins/weakrefs/resources/maybe-garbage-collect.js new file mode 100644 index 00000000000..b7a3431f7bf --- /dev/null +++ b/tests/wpt/web-platform-tests/js/builtins/weakrefs/resources/maybe-garbage-collect.js @@ -0,0 +1,96 @@ +/** + * maybeGarbageCollectAsync + * + * It might garbage collect, it might not. If it doesn't, that's ok. + * + * Based on "(default export)" in + * https://github.com/web-platform-tests/wpt/pull/22835/files#diff-fba53ea423a12f40917f41ba4ffadf1e, and "$262.gc()" + * defined in https://github.com/tc39/test262/blob/main/INTERPRETING.md + * + * + * @return {undefined} + */ +async function maybeGarbageCollectAsync() { + if (typeof TestUtils !== 'undefined' && TestUtils.gc) { + await TestUtils.gc(); + } else if (self.gc) { + // Use --expose_gc for V8 (and Node.js) + // to pass this flag at chrome launch use: --js-flags="--expose-gc" + // Exposed in SpiderMonkey shell as well + await self.gc(); + } else if (self.GCController) { + // Present in some WebKit development environments + await GCController.collect(); + } + /* eslint-disable no-console */ + console.warn('Tests are running without the ability to do manual ' + + 'garbage collection. They will still work, but ' + + 'coverage will be suboptimal.'); + /* eslint-enable no-console */ +} + +/** + * maybeGarbageCollectKeptObjectsAsync + * + * Based on "asyncGCDeref" in https://github.com/tc39/test262/blob/master/harness/async-gc.js + * + * @return {Promise} Resolves to a trigger if ClearKeptObjects + * exists to provide one + */ +async function maybeGarbageCollectKeptObjectsAsync() { + let trigger; + + if (typeof ClearKeptObjects === 'function') { + trigger = ClearKeptObjects(); + } + + await maybeGarbageCollectAsync(); + + return trigger; +} + +/** + * maybeGarbageCollectAndCleanupAsync + * + * Based on "asyncGC" in https://github.com/tc39/test262/blob/master/harness/async-gc.js + * + * @return {undefined} + */ +async function maybeGarbageCollectAndCleanupAsync(...targets) { + let finalizationRegistry = new FinalizationRegistry(() => {}); + let length = targets.length; + + for (let target of targets) { + finalizationRegistry.register(target, 'target'); + target = null; + } + + targets = null; + + await 'tick'; + await maybeGarbageCollectKeptObjectsAsync(); + + let names = []; + + finalizationRegistry.cleanupSome(name => names.push(name)); + + if (names.length !== length) { + throw maybeGarbageCollectAndCleanupAsync.NOT_COLLECTED; + } +} + +maybeGarbageCollectAndCleanupAsync.NOT_COLLECTED = Symbol('Object was not collected'); + +/** + * resolveGarbageCollection + * + * Based on "resolveAsyncGC" in https://github.com/tc39/test262/blob/master/harness/async-gc.js + * + * @param {Error} error An error object. + * @return {undefined} + */ +function resolveGarbageCollection(error) { + if (error && error !== maybeGarbageCollectAndCleanupAsync.NOT_COLLECTED) { + throw error; + } +} diff --git a/tests/wpt/web-platform-tests/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js b/tests/wpt/web-platform-tests/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js new file mode 100644 index 00000000000..2ec75a0ccf1 --- /dev/null +++ b/tests/wpt/web-platform-tests/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js @@ -0,0 +1,78 @@ +// META: script=resources/maybe-garbage-collect.js +// ├──> maybeGarbageCollectAndCleanupAsync +// └──> resolveGarbageCollection +/*--- +esid: sec-finalization-registry.prototype.cleanupSome +info: | + FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) + + 1. Let finalizationRegistry be the this value. + 2. If Type(finalizationRegistry) is not Object, throw a TypeError exception. + 3. If finalizationRegistry does not have a [[Cells]] internal slot, throw a TypeError exception. + 4. If callback is not undefined and IsCallable(callback) is false, throw a TypeError exception. + 5. Perform ? CleanupFinalizationRegistry(finalizationRegistry, callback). + 6. Return undefined. +---*/ + +let called; +let fn = function() { + called += 1; + return 39; +}; +let cb = function() { + called += 1; + return 42; +}; +let finalizationRegistry = new FinalizationRegistry(fn); + +function emptyCells() { + let target = {}; + finalizationRegistry.register(target); + + let prom = maybeGarbageCollectAndCleanupAsync(target); + target = null; + + return prom; +} + +promise_test(() => { + return (async () => { + assert_implements( + typeof FinalizationRegistry.prototype.cleanupSome === 'function', + 'FinalizationRegistry.prototype.cleanupSome is not implemented.' + ); + + await emptyCells(); + called = 0; + assert_equals(finalizationRegistry.cleanupSome(cb), undefined, 'regular callback'); + assert_equals(called, 1); + + await emptyCells(); + called = 0; + assert_equals(finalizationRegistry.cleanupSome(fn), undefined, 'regular callback, same FG cleanup function'); + assert_equals(called, 1); + + await emptyCells(); + called = 0; + assert_equals(finalizationRegistry.cleanupSome(), undefined, 'undefined (implicit) callback, defer to FB callback'); + assert_equals(called, 1); + + await emptyCells(); + called = 0; + assert_equals(finalizationRegistry.cleanupSome(undefined), undefined, 'undefined (explicit) callback, defer to FB callback'); + assert_equals(called, 1); + + await emptyCells(); + assert_equals(finalizationRegistry.cleanupSome(() => 1), undefined, 'arrow function'); + + await emptyCells(); + assert_equals(finalizationRegistry.cleanupSome(async function() {}), undefined, 'async function'); + + await emptyCells(); + assert_equals(finalizationRegistry.cleanupSome(function *() {}), undefined, 'generator'); + + await emptyCells(); + assert_equals(finalizationRegistry.cleanupSome(async function *() {}), undefined, 'async generator'); + + })().catch(resolveGarbageCollection); +}, 'Return undefined regardless the result of CleanupFinalizationRegistry'); diff --git a/tests/wpt/web-platform-tests/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js b/tests/wpt/web-platform-tests/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js new file mode 100644 index 00000000000..c653108cb12 --- /dev/null +++ b/tests/wpt/web-platform-tests/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js @@ -0,0 +1,72 @@ +// META: script=resources/maybe-garbage-collect.js +// ├──> maybeGarbageCollectAndCleanupAsync +// └──> resolveGarbageCollection +/*--- +esid: sec-finalization-registry.prototype.unregister +info: | + FinalizationRegistry.prototype.cleanupSome ( [ callback ] ) + + 1. Let finalizationRegistry be the this value. + ... + 5. Perform ! CleanupFinalizationRegistry(finalizationRegistry, callback). + ... + + CleanupFinalizationRegistry ( finalizationRegistry [ , callback ] ) + + ... + 3. While finalizationRegistry.[[Cells]] contains a Record cell such that cell.[[WeakRefTarget]] is ~empty~, then an implementation may perform the following steps, + a. Choose any such cell. + b. Remove cell from finalizationRegistry.[[Cells]]. + c. Perform ? Call(callback, undefined, << cell.[[HeldValue]] >>). + ... + + FinalizationRegistry.prototype.unregister ( unregisterToken ) + + 1. Let removed be false. + 2. For each Record { [[Target]], [[Holdings]], [[UnregisterToken]] } cell that is an element of finalizationRegistry.[[Cells]], do + a. If SameValue(cell.[[UnregisterToken]], unregisterToken) is true, then + i. Remove cell from finalizationRegistry.[[Cells]]. + ii. Set removed to true. + 3. Return removed. + +---*/ + +let value = 'target!'; +let token = {}; +let finalizationRegistry = new FinalizationRegistry(function() {}); + +function emptyCells() { + let target = {}; + finalizationRegistry.register(target, value, token); + + let prom = maybeGarbageCollectAndCleanupAsync(target); + target = null; + + return prom; +} + +promise_test(() => { + return (async () => { + assert_implements( + typeof FinalizationRegistry.prototype.cleanupSome === 'function', + 'FinalizationRegistry.prototype.cleanupSome is not implemented.' + ); + + await emptyCells(); + let called = 0; + let holdings = []; + finalizationRegistry.cleanupSome((holding) => { + called += 1; + holdings.push(holding); + }); + + assert_equals(called, 1); + assert_equals(holdings.length, 1); + assert_equals(holdings[0], value); + + let res = finalizationRegistry.unregister(token); + assert_equals(res, false, 'unregister after iterating over it in cleanup'); + + })().catch(resolveGarbageCollection); +}, 'Cannot unregister a cell that has been cleaned up'); + diff --git a/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-one-line.html b/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-one-line.html new file mode 100644 index 00000000000..0c477e0e980 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-one-line.html @@ -0,0 +1,41 @@ + +Layout Instability: inline/text movement is detected + + + + +
    + 1AAAAAAA
    + 2AAAAAAA
    + 3AAAAAAA
    +
    4AAAAAAA

    +
    5AAAAAAA
    + 6AAAAAAA
    + 7AAAAAAA
    +
    + diff --git a/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-vertical-rl.html b/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-vertical-rl.html index a89cad145b2..848883755c7 100644 --- a/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-vertical-rl.html +++ b/tests/wpt/web-platform-tests/layout-instability/inline-flow-shift-vertical-rl.html @@ -31,8 +31,8 @@ promise_test(async () => { // or use the available width (i.e. width of the containing block). // Also tolerate extra 10% error. const text_width = inline_block.offsetWidth; - const expectedScoreMin = computeExpectedScore(text_width * (30 * 3 + 50), 50) * 0.9; - const expectedScoreMax = computeExpectedScore(200 * (30 * 3 + 50), 50) * 1.1; + const expectedScoreMin = computeExpectedScore(text_width * (20 * 3 + 50), 50) * 0.9; + const expectedScoreMax = computeExpectedScore(200 * (25 * 3 + 50), 50) * 1.1; // Observer fires after the frame is painted. assert_equals(watcher.score, 0); diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore index a17a09402e0..a3b91f1a992 100644 --- a/tests/wpt/web-platform-tests/lint.ignore +++ b/tests/wpt/web-platform-tests/lint.ignore @@ -106,6 +106,7 @@ PRINT STATEMENT: webdriver/tests/support/helpers.py # semi-legitimate use of console.* CONSOLE: console/* +CONSOLE: js/builtins/weakrefs/resources/maybe-garbage-collect.js CONSOLE: resources/check-layout-th.js CONSOLE: resources/chromium/* CONSOLE: streams/resources/test-utils.js @@ -714,24 +715,20 @@ WEB-PLATFORM.TEST:web-bundle/subresource-loading/subresource-loading-from-web-bu # Tests that depend on resources in /gen/ in Chromium: # https://github.com/web-platform-tests/wpt/issues/16455 # Please consult with ecosystem-infra@chromium.org before adding more. -MISSING DEPENDENCY: resources/test-only-api.js +MISSING DEPENDENCY: bluetooth/resources/bluetooth-test.js MISSING DEPENDENCY: contacts/resources/helpers.js MISSING DEPENDENCY: credential-management/support/otpcredential-helper.js MISSING DEPENDENCY: generic-sensor/resources/generic-sensor-helpers.js -MISSING DEPENDENCY: idle-detection/interceptor.https.html +MISSING DEPENDENCY: idle-detection/resources/idle-detection-helper.js +MISSING DEPENDENCY: mediacapture-image/resources/imagecapture-helpers.js MISSING DEPENDENCY: orientation-event/resources/orientation-event-helpers.js +MISSING DEPENDENCY: resources/test-only-api.js MISSING DEPENDENCY: screen_enumeration/resources/screenenumeration-helpers.js MISSING DEPENDENCY: shape-detection/resources/shapedetection-helpers.js MISSING DEPENDENCY: web-nfc/resources/nfc-helpers.js MISSING DEPENDENCY: webusb/resources/usb-helpers.js MISSING DEPENDENCY: webxr/resources/webxr_util.js -# TODO(Hexcles): delete these files once we include them in mojojs.zip. -MOJOM-JS: resources/chromium/image_capture.mojom.js -MOJOM-JS: resources/chromium/sensor_provider.mojom.js -MOJOM-JS: resources/chromium/mojo_web_test_helper_test.mojom.js -MOJOM-JS: resources/chromium/sensor.mojom.js - # Tests that are false positives for using Ahem as a system font AHEM SYSTEM FONT: acid/acid3/test.html AHEM SYSTEM FONT: resource-timing/resources/all_resource_types.htm diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mpadded/mpadded-003.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mpadded/mpadded-003.html index 4df55b99369..84afe23455a 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/mpadded/mpadded-003.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mpadded/mpadded-003.html @@ -53,18 +53,34 @@ assert_approx_equals(shifts.voffset, 0, epsilon); shifts = GetShifts(mpaddeds[2]); + assert_approx_equals(shifts.lspace, 0, epsilon, "positive lspace percentage"); + assert_approx_equals(shifts.voffset, 0, epsilon); + + shifts = GetShifts(mpaddeds[3]); + assert_approx_equals(shifts.lspace, 0, epsilon, "negative lspace percentage"); + assert_approx_equals(shifts.voffset, 0, epsilon); + + shifts = GetShifts(mpaddeds[4]); assert_approx_equals(shifts.lspace, 0, epsilon); assert_approx_equals(shifts.voffset, 10, epsilon, "positive voffset"); - shifts = GetShifts(mpaddeds[3]); + shifts = GetShifts(mpaddeds[5]); assert_approx_equals(shifts.lspace, 0, epsilon); assert_approx_equals(shifts.voffset, -10, epsilon, "negative voffset"); - shifts = GetShifts(mpaddeds[4]); + shifts = GetShifts(mpaddeds[6]); + assert_approx_equals(shifts.lspace, 0, epsilon); + assert_approx_equals(shifts.voffset, 0, epsilon, "positive voffset percentage"); + + shifts = GetShifts(mpaddeds[7]); + assert_approx_equals(shifts.lspace, 0, epsilon); + assert_approx_equals(shifts.voffset, 0, epsilon, "negative voffset percentage"); + + shifts = GetShifts(mpaddeds[8]); assert_approx_equals(shifts.lspace, 5, epsilon); assert_approx_equals(shifts.voffset, 10, epsilon); - shifts = GetShifts(mpaddeds[5]); + shifts = GetShifts(mpaddeds[9]); assert_approx_equals(shifts.lspace, 5, epsilon); assert_approx_equals(shifts.voffset, -10, epsilon); }, "content is shifted by the specified lspace/voffset"); @@ -148,8 +164,12 @@ div.shrink-wrap { + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-lspace-rspace-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-lspace-rspace-ref.html new file mode 100644 index 00000000000..3938db19a70 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-lspace-rspace-ref.html @@ -0,0 +1,47 @@ + + + + + lspace/rspace default value for unknown operators (reference) + + + + +

    This test passes if on each row, the space around the blue rectangle + is 0.2777777777777778em.

    +

    + + + p + X + p + + +

    +

    + + + p + XX + p + + +

    +

    + + + p + X + p + + +

    + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-lspace-rspace.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-lspace-rspace.html new file mode 100644 index 00000000000..3437450dfb2 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-lspace-rspace.html @@ -0,0 +1,52 @@ + + + + + lspace/rspace default value for unknown operators + + + + + + + +

    This test passes if on each row, the space around the blue rectangle + is 0.2777777777777778em.

    +

    + + + p + X + p + + +

    +

    + + + p + XX + p + + +

    +

    + + + p + X + p + + +

    + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-movablelimits-ref.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-movablelimits-ref.html new file mode 100644 index 00000000000..e7ffc789947 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-movablelimits-ref.html @@ -0,0 +1,47 @@ + + + + + movablelimits default value for unknown operators (reference) + + + + +

    This test passes if the black scripts are attached above and below + the corresponding blue base.

    +

    + + + X + X + X + + +

    +

    + + + XX + X + X + + +

    +

    + + + X + X + X + + +

    + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-movablelimits.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-movablelimits.html new file mode 100644 index 00000000000..e50f118f8fd --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/operators/mo-not-in-dictionary-movablelimits.html @@ -0,0 +1,52 @@ + + + + + movablelimits default value for unknown operators + + + + + + + +

    This test passes if the black scripts are attached above and below + the corresponding blue base.

    +

    + + + X + X + X + + +

    +

    + + + XX + X + X + + +

    +

    + + + X + X + X + + +

    + + + + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html index a09e2cbca32..80ca630a080 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-3.html @@ -43,6 +43,35 @@ setup({ explicit_done: true }); window.addEventListener("load", () => { document.fonts.ready.then(runTests); }); + function getBooleanValue(element, name) { + return (element.getAttribute(name) || "").toLowerCase() === "true"; + } + let dynamicBooleanAttributeChanges = { + "Invert boolean value using absent attribute": function(element, name) { + if (getBooleanValue(element, name)) { + element.removeAttribute(name); + } else { + element.setAttribute(name, "true"); + } + }, + + "Invert boolean value using invalid attribute": function(element, name) { + if (getBooleanValue(element, name)) { + element.setAttribute(name, "invalid"); + } else { + element.setAttribute(name, "true"); + } + }, + + "Change case of boolean attribute": function(element, name) { + if (getBooleanValue(element, name)) { + element.setAttribute(name, "TrUe"); + } else { + element.setAttribute(name, "FaLsE"); + } + } + }; + function runTests() { test(function() { assert_true(MathMLFeatureDetection.has_mspace()); @@ -192,6 +221,46 @@ } }, "AccentBaseHeight, OverbarVerticalGap"); + test(function() { + assert_true(MathMLFeatureDetection.has_mspace()); + var v = 7000 * emToPx; + + for (var j = 1; j <= 4; j++) { + var elId = `el005${j}`; + var baseId = `base005${j}`; + var underId = `under005${j}`; + + for (name in dynamicBooleanAttributeChanges) { + let element = document.getElementById(elId); + dynamicBooleanAttributeChanges[name](element, "accentunder"); + var value = getBooleanValue(element, "accentunder"); + var gap = value ? 0 : v; + assert_approx_equals(getBox(underId).top - getBox(baseId).bottom, + gap, epsilon, + `${elId}: gap between base and underscript ; ${name}`); + }; + } + }, "Dynamic change of accentunder attribute"); + + test(function() { + assert_true(MathMLFeatureDetection.has_mspace()); + v = 11000 * emToPx; + for (var j = 1; j <= 4; j++) { + var elId = `el006${j}`; + var refId = `base006${j}`; + var overId = `over006${j}`; + for (name in dynamicBooleanAttributeChanges) { + let element = document.getElementById(elId); + dynamicBooleanAttributeChanges[name](element, "accent"); + var value = getBooleanValue(element, "accent"); + assert_approx_equals(getBox(refId).bottom - getBox(overId).bottom, + value ? axisBaseHeight : shortBaseHeight + v, + epsilon, + `${elId}: accent=${value} ; short base ; ${name}`); + } + } + }, "Dynamic change of accent attribute"); + done(); } @@ -329,5 +398,54 @@

    +
    +

    + + + + + + + + + + + + + + + + + + + + + +

    +
    +

    + + + + + + + + + + + + + + + + + + + + + +

    + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.tentative.html similarity index 99% rename from tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.html rename to tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.tentative.html index 8df0f4d8ef8..f7c968dd343 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/scripts/underover-parameters-4.tentative.html @@ -4,7 +4,8 @@ Underscripts and Overscripts parameters - + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/multi-column-layout.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/multi-column-layout.html new file mode 100644 index 00000000000..d914fe780f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/multi-column-layout.html @@ -0,0 +1,56 @@ + + + + +MathML inside multi-column + + + + + + + + +
    +
    +
      +
    1. blah
    2. +
    3. + + + + + +
    4. +
    5. blah
    6. +
    7. blah
    8. +
    9. blah
    10. +
    +
    + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/content-editable.html b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/content-editable.html new file mode 100644 index 00000000000..be107453eb9 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/content-editable.html @@ -0,0 +1,51 @@ + + + + +MathML inside content-editable + + + + + + + + +
    +
    + This is + + + + + + + a content editable div +
    + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/integration-point-5.html b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/integration-point-5.html new file mode 100644 index 00000000000..dc10b46b948 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/integration-point-5.html @@ -0,0 +1,57 @@ + + + + +MathML sibling of SVG with foreignObject[overflow=visible] + + + + + + + + + +
    + + + + + + + + +
    + This is a foreignObject +
    +
    +
    + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html index 7bbdee26110..e464c8300e4 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html +++ b/tests/wpt/web-platform-tests/mathml/relations/html5-tree/math-global-event-handlers.tentative.html @@ -8,6 +8,8 @@ + + - - diff --git a/tests/wpt/web-platform-tests/mediacapture-image/resources/imagecapture-helpers.js b/tests/wpt/web-platform-tests/mediacapture-image/resources/imagecapture-helpers.js index 8252f42a637..8301b1c2b64 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/resources/imagecapture-helpers.js +++ b/tests/wpt/web-platform-tests/mediacapture-image/resources/imagecapture-helpers.js @@ -9,41 +9,31 @@ // // --enable-blink-features=MojoJS,MojoJSTest -let loadChromiumResources = Promise.resolve().then(() => { - if (!('MojoInterfaceInterceptor' in self)) { - // Do nothing on non-Chromium-based browsers or when the Mojo bindings are - // not present in the global namespace. - return; - } - - let chain = Promise.resolve(); - [ - '/resources/chromium/mojo_bindings.js', - '/resources/chromium/image_capture.mojom.js', - '/resources/chromium/mock-imagecapture.js', - ].forEach(path => { - // Use importScripts for workers. - if (typeof document === 'undefined') { - chain = chain.then(() => importScripts(path)); - return; - } - let script = document.createElement('script'); - script.src = path; - script.async = false; - chain = chain.then(() => new Promise(resolve => { - script.onload = () => resolve(); - })); - document.head.appendChild(script); - }); - - return chain; -}); +async function loadChromiumResources() { + const chromiumResources = [ + '/gen/media/capture/mojom/image_capture.mojom.js' + ]; + await loadMojoResources(chromiumResources); + await loadScript('/resources/chromium/mock-imagecapture.js'); +} async function initialize_image_capture_tests() { if (typeof ImageCaptureTest === 'undefined') { - await loadChromiumResources; + const script = document.createElement('script'); + script.src = '/resources/test-only-api.js'; + script.async = false; + const p = new Promise((resolve, reject) => { + script.onload = () => { resolve(); }; + script.onerror = e => { reject(e); }; + }) + document.head.appendChild(script); + await p; + + if (isChromiumBased) { + await loadChromiumResources(); + } } - assert_true(typeof ImageCaptureTest !== 'undefined'); + assert_implements(ImageCaptureTest, 'ImageCaptureTest is unavailable'); let imageCaptureTest = new ImageCaptureTest(); await imageCaptureTest.initialize(); return imageCaptureTest; diff --git a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html index d94b43c9cf9..8d8dd7b71bd 100644 --- a/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-streams/MediaStreamTrack-getSettings.https.html @@ -73,8 +73,7 @@ : {video: device_id_constraint}; const stream = await navigator.mediaDevices.getUserMedia(constraints); - assert_equals(stream.getTracks()[0].getSettings().groupId, - device.groupId); + assert_true(stream.getTracks()[0].getSettings().groupId === device.groupId, "device groupId"); assert_greater_than(device.groupId.length, 0); } }, 'groupId is correctly reported by getSettings() for all input devices'); diff --git a/tests/wpt/web-platform-tests/native-file-system/idlharness.https.any.js b/tests/wpt/web-platform-tests/native-file-system/idlharness.https.any.js index a9090baeee5..9e7b52261ce 100644 --- a/tests/wpt/web-platform-tests/native-file-system/idlharness.https.any.js +++ b/tests/wpt/web-platform-tests/native-file-system/idlharness.https.any.js @@ -6,7 +6,7 @@ idl_test( ['native-file-system'], - ['streams', 'html', 'dom'], + ['storage', 'permissions', 'streams', 'html', 'dom'], idl_array => { idl_array.add_objects({ // TODO: Add instances of FileSystemHandle, FileSystemFileHandle, diff --git a/tests/wpt/web-platform-tests/native-file-system/opaque-origin.https.window.js b/tests/wpt/web-platform-tests/native-file-system/opaque-origin.https.window.js index a916592406e..8f431a24062 100644 --- a/tests/wpt/web-platform-tests/native-file-system/opaque-origin.https.window.js +++ b/tests/wpt/web-platform-tests/native-file-system/opaque-origin.https.window.js @@ -38,7 +38,7 @@ async function verify_does_not_exist_in_data_uri_iframe( // |kSandboxWindowUrl| sends two messages to this window. The first is the // result of showDirectoryPicker(). The second is the result of -// getOriginPrivateDirectory(). For windows using sandbox='allow-scripts', +// navigator.storage.getDirectory(). For windows using sandbox='allow-scripts', // both results must produce rejected promises. async function verify_results_from_sandboxed_child_window(test) { const event_watcher = new EventWatcher(test, self, 'message'); @@ -50,7 +50,7 @@ async function verify_results_from_sandboxed_child_window(test) { const second_message_event = await event_watcher.wait_for('message'); assert_equals(second_message_event.data, - 'getOriginPrivateDirectory(): REJECTED: SecurityError'); + 'navigator.storage.getDirectory(): REJECTED: SecurityError'); } promise_test(async test => { @@ -67,7 +67,7 @@ promise_test( add_iframe(test, kSandboxWindowUrl, /*sandbox=*/ 'allow-scripts'); await verify_results_from_sandboxed_child_window(test); }, - 'getOriginPrivateDirectory() and ' + + 'navigator.storage.getDirectory() and ' + 'showDirectoryPicker() must reject in a sandboxed iframe.'); promise_test( @@ -82,5 +82,5 @@ promise_test( await verify_results_from_sandboxed_child_window(test); }, - 'getOriginPrivateDirectory() and ' + + 'navigator.storage.getDirectory() and ' + 'showDirectoryPicker() must reject in a sandboxed opened window.'); diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/message-target.js b/tests/wpt/web-platform-tests/native-file-system/resources/message-target.js index ab8012dfca5..98c726eea06 100644 --- a/tests/wpt/web-platform-tests/native-file-system/resources/message-target.js +++ b/tests/wpt/web-platform-tests/native-file-system/resources/message-target.js @@ -84,8 +84,7 @@ function add_message_event_handlers(receiver, target, target_origin) { case 'create-file': // Create a new file and then respond to the sender with it. - const directory = - await self.getOriginPrivateDirectory(); + const directory = await navigator.storage.getDirectory(); const file_handle = await directory.getFileHandle('temp-file', { create: true }); message_source.postMessage( @@ -95,8 +94,7 @@ function add_message_event_handlers(receiver, target, target_origin) { case 'create-directory': // Create a new directory and then respond to the sender with it. - const parent_directory = - await self.getOriginPrivateDirectory(); + const parent_directory = await navigator.storage.getDirectory(); const directory_handle = await parent_directory.getDirectoryHandle('temp-directory', { create: true }); diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/opaque-origin-sandbox.html b/tests/wpt/web-platform-tests/native-file-system/resources/opaque-origin-sandbox.html index e2d57a33999..63ada267d8c 100644 --- a/tests/wpt/web-platform-tests/native-file-system/resources/opaque-origin-sandbox.html +++ b/tests/wpt/web-platform-tests/native-file-system/resources/opaque-origin-sandbox.html @@ -4,7 +4,7 @@ // Sends two messages to its creator: // (1) The result of showDirectoryPicker(). - // (2) The result of getOriginPrivateDirectory(). + // (2) The result of navigator.storage.getDirectory(). function post_message(data) { if (window.parent !== null) { @@ -27,13 +27,13 @@ } try { - window.getOriginPrivateDirectory() + navigator.storage.getDirectory() .then(() => { - post_message('getOriginPrivateDirectory(): FULFILLED'); + post_message('navigator.storage.getDirectory(): FULFILLED'); }).catch(error => { - post_message(`getOriginPrivateDirectory(): REJECTED: ${error.name}`); + post_message(`navigator.storage.getDirectory(): REJECTED: ${error.name}`); }); } catch (error) { - post_message(`getOriginPrivateDirectory(): EXCEPTION: ${error.name}`); + post_message(`navigator.storage.getDirectory(): EXCEPTION: ${error.name}`); } diff --git a/tests/wpt/web-platform-tests/native-file-system/resources/sandboxed-fs-test-helpers.js b/tests/wpt/web-platform-tests/native-file-system/resources/sandboxed-fs-test-helpers.js index e3c18dbecec..a7506b6b2f3 100644 --- a/tests/wpt/web-platform-tests/native-file-system/resources/sandboxed-fs-test-helpers.js +++ b/tests/wpt/web-platform-tests/native-file-system/resources/sandboxed-fs-test-helpers.js @@ -7,8 +7,7 @@ // where that version uses the native file system instead. async function cleanupSandboxedFileSystem() { - const dir = - await self.getOriginPrivateDirectory(); + const dir = await navigator.storage.getDirectory(); for await (let entry of dir.values()) await dir.removeEntry(entry.name, {recursive: entry.kind === 'directory'}); } @@ -18,8 +17,7 @@ function directory_test(func, description) { // To be extra resilient against bad tests, cleanup before every test. await cleanupSandboxedFileSystem(); - const dir = - await self.getOriginPrivateDirectory(); + const dir = await navigator.storage.getDirectory(); await func(t, dir); }, description); } diff --git a/tests/wpt/web-platform-tests/native-file-system/showOpenFilePicker-manual.https.html b/tests/wpt/web-platform-tests/native-file-system/showOpenFilePicker-manual.https.html index 2289b8f8d8b..370aa45c578 100644 --- a/tests/wpt/web-platform-tests/native-file-system/showOpenFilePicker-manual.https.html +++ b/tests/wpt/web-platform-tests/native-file-system/showOpenFilePicker-manual.https.html @@ -21,8 +21,8 @@ 'show a file picker.
    Please select native-file-system/resources/data/testfile.txt'); const files = await self.showOpenFilePicker({ multiple: false, types: [ - { description: 'Text files', accept: { ' text/plain ': ['txt'] } }, - { description: 'Images', accept: { ' image/* ': ['jpg', 'jpeg', 'png'] } }, + { description: 'Text files', accept: { ' text/plain ': ['.txt'] } }, + { description: 'Images', accept: { ' image/* ': ['.jpg', '.jpeg', '.png'] } }, ], }); assert_true(Array.isArray(files)); diff --git a/tests/wpt/web-platform-tests/native-file-system/showPicker-errors.https.window.js b/tests/wpt/web-platform-tests/native-file-system/showPicker-errors.https.window.js index 1f1d2edd63d..e8f0d3f5404 100644 --- a/tests/wpt/web-platform-tests/native-file-system/showPicker-errors.https.window.js +++ b/tests/wpt/web-platform-tests/native-file-system/showPicker-errors.https.window.js @@ -27,47 +27,47 @@ function define_file_picker_error_tests(showPickerMethod) { promise_test(async t => { await promise_rejects_js( t, TypeError, - self[showPickerMethod]({types: [{accept: {'': ['foo']}}]})); + self[showPickerMethod]({types: [{accept: {'': ['.foo']}}]})); await promise_rejects_js( t, TypeError, - self[showPickerMethod]({types: [{accept: {' ': ['foo']}}]})); + self[showPickerMethod]({types: [{accept: {' ': ['.foo']}}]})); }, showPickerMethod + ': MIME type can\'t be an empty string.'); promise_test(async t => { await promise_rejects_js( t, TypeError, - self[showPickerMethod]({types: [{accept: {'image': ['foo']}}]})); + self[showPickerMethod]({types: [{accept: {'image': ['.foo']}}]})); }, showPickerMethod + ': MIME type must have subtype.'); promise_test(async t => { await promise_rejects_js( t, TypeError, - self[showPickerMethod]({types: [{accept: {' /plain': ['foo']}}]})); + self[showPickerMethod]({types: [{accept: {' /plain': ['.foo']}}]})); }, showPickerMethod + ': MIME type can\'t have empty type.'); promise_test(async t => { await promise_rejects_js( t, TypeError, - self[showPickerMethod]({types: [{accept: {'image/ ': ['foo']}}]})); + self[showPickerMethod]({types: [{accept: {'image/ ': ['.foo']}}]})); }, showPickerMethod + ': MIME type can\'t have empty subtype.'); promise_test(async t => { await promise_rejects_js( t, TypeError, self[showPickerMethod]( - {types: [{accept: {'text/plain;charset=utf8': ['txt']}}]})); + {types: [{accept: {'text/plain;charset=utf8': ['.txt']}}]})); }, showPickerMethod + ': MIME type can\'t have parameters.'); promise_test(async t => { await promise_rejects_js(t, TypeError, self[showPickerMethod]({ - types: [{accept: {'text>foo/plain': ['txt']}}] + types: [{accept: {'text>foo/plain': ['.txt']}}] })); }, showPickerMethod + ': MIME type can\'t have invalid characters in type.'); promise_test(async t => { await promise_rejects_js( t, TypeError, - self[showPickerMethod]({types: [{accept: {'text / plain': ['txt']}}]})); + self[showPickerMethod]({types: [{accept: {'text / plain': ['.txt']}}]})); }, showPickerMethod + ': MIME type can\'t have whitespace in the middle.'); promise_test( @@ -75,8 +75,14 @@ function define_file_picker_error_tests(showPickerMethod) { await promise_rejects_js( t, TypeError, self[showPickerMethod]( - {types: [{accept: {'text/plain>foo': ['txt']}}]})); + {types: [{accept: {'text/plain>foo': ['.txt']}}]})); }, showPickerMethod + ': MIME type can\'t have invalid characters in subtype.'); -} \ No newline at end of file + + promise_test(async t => { + await promise_rejects_js(t, TypeError, self[showPickerMethod]({ + types: [{accept: {'text/plain': ['.txt', 'txt']}}] + })); + }, showPickerMethod + ': extension has to start with ".".'); +} diff --git a/tests/wpt/web-platform-tests/native-file-system/showSaveFilePicker-manual.https.html b/tests/wpt/web-platform-tests/native-file-system/showSaveFilePicker-manual.https.html index 451a0fb9c7f..3a20f1428d9 100644 --- a/tests/wpt/web-platform-tests/native-file-system/showSaveFilePicker-manual.https.html +++ b/tests/wpt/web-platform-tests/native-file-system/showSaveFilePicker-manual.https.html @@ -14,7 +14,7 @@ 'show a file picker.
    Please make a copy of native-file-system/resources/data/testfile.txt in a writable directory and pick that file'); const file = await self.showSaveFilePicker({ multiple: false, types: [ - { description: 'Text files', accept: { 'text/plain': ['txt'] } }, + { description: 'Text files', accept: { 'text/plain': ['.txt'] } }, ], }); assert_true(file instanceof FileSystemHandle); diff --git a/tests/wpt/web-platform-tests/native-io/close_async.tentative.https.any.js b/tests/wpt/web-platform-tests/native-io/close_async.tentative.https.any.js index 0338cda62dd..7545cedaffd 100644 --- a/tests/wpt/web-platform-tests/native-io/close_async.tentative.https.any.js +++ b/tests/wpt/web-platform-tests/native-io/close_async.tentative.https.any.js @@ -110,3 +110,18 @@ promise_test(async testCase => { await promise_rejects_dom(testCase, 'InvalidStateError', file.flush()); assert_equals(await closePromise, undefined); }, 'NativeIOFile.flush fails immediately after calling NativeIOFile.close'); + +promise_test(async testCase => { + const file = await createFile(testCase, 'file_name'); + assert_equals(await file.close(), undefined); + + await promise_rejects_dom(testCase, 'InvalidStateError', file.setLength(5)); +}, 'NativeIOFile.setLength fails after NativeIOFile.close settles'); + +promise_test(async testCase => { + const file = await createFile(testCase, 'file_name'); + const closePromise = file.close(); + + await promise_rejects_dom(testCase, 'InvalidStateError', file.setLength(5)); + assert_equals(await closePromise, undefined); +}, 'NativeIOFile.setLength fails immediately after calling NativeIOFile.close'); diff --git a/tests/wpt/web-platform-tests/native-io/close_sync.tentative.https.any.js b/tests/wpt/web-platform-tests/native-io/close_sync.tentative.https.any.js index 834265f2255..f2de6d571a4 100644 --- a/tests/wpt/web-platform-tests/native-io/close_sync.tentative.https.any.js +++ b/tests/wpt/web-platform-tests/native-io/close_sync.tentative.https.any.js @@ -56,3 +56,10 @@ test(testCase => { assert_throws_dom('InvalidStateError', () => file.flush()); }, 'NativeIOFileSync.flush fails after NativeIOFileSync.close'); + +test(testCase => { + const file = createFileSync(testCase, 'file_name'); + assert_equals(undefined, file.close()); + + assert_throws_dom('InvalidStateError', () => file.setLength(4)); +}, 'NativeIOFileSync.setLength fails after NativeIOFileSync.close'); diff --git a/tests/wpt/web-platform-tests/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.js b/tests/wpt/web-platform-tests/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.js new file mode 100644 index 00000000000..cb7d6642c84 --- /dev/null +++ b/tests/wpt/web-platform-tests/native-io/concurrent_io/concurrent_io_setLength_async.tentative.https.any.js @@ -0,0 +1,31 @@ +// META: title=NativeIO API: Concurrent io while setLength is resolving. +// META: global=window,worker +// META: script=operation_helpers.js +// META: script=../resources/support.js + +'use strict'; + +// See documentation in operation_helpers.js + +for (let op of kOperations) { + promise_test(async testCase => { + const file = await createFile(testCase, 'setlength_file'); + + const res = op.prepare(); + + const setLengthPromise = file.setLength(5); + op.assertRejection(testCase, file, res); + + await setLengthPromise; + + const readSharedArrayBuffer = new SharedArrayBuffer(5); + const readBytes = new Uint8Array(readSharedArrayBuffer); + assert_equals(await file.read(readBytes, 0), 5, + `NativeIOFile.read() should not fail after a rejected ` + + `${op.name}() during setLength().`); + assert_array_equals(readBytes, [64, 65, 66, 67, 0], + `Rejecting ${op.name}() during setLength()` + + ` should not change the file.`); + op.assertUnchanged(res); + }, `${op.name}() rejects while setLength() is resolving.`); +}; diff --git a/tests/wpt/web-platform-tests/native-io/concurrent_io/operation_helpers.js b/tests/wpt/web-platform-tests/native-io/concurrent_io/operation_helpers.js index 76804cab72d..d85a153bab1 100644 --- a/tests/wpt/web-platform-tests/native-io/concurrent_io/operation_helpers.js +++ b/tests/wpt/web-platform-tests/native-io/concurrent_io/operation_helpers.js @@ -39,6 +39,7 @@ const kOperations = []; }, }; kOperations.push(kOpRead); + const kOpWrite = { name: 'write', prepare: () => { @@ -54,6 +55,7 @@ const kOperations = []; assertUnchanged: () => {}, }; kOperations.push(kOpWrite); + const kOpGetLength = { name: 'getLength', prepare: () => {}, @@ -75,4 +77,15 @@ const kOperations = []; assertUnchanged: () => {}, }; kOperations.push(kOpFlush); + + const kOpSetLength = { + name: 'setLength', + prepare: () => {}, + assertRejection: async (testCase, file, readBytes) => { + return promise_rejects_dom(testCase, 'InvalidStateError', + file.setLength(2)); + }, + assertUnchanged: () => {}, + }; + kOperations.push(kOpSetLength); })(); diff --git a/tests/wpt/web-platform-tests/native-io/getLength_setLength_async_basic.tentative.https.any.js b/tests/wpt/web-platform-tests/native-io/getLength_setLength_async_basic.tentative.https.any.js new file mode 100644 index 00000000000..f99d2875fc0 --- /dev/null +++ b/tests/wpt/web-platform-tests/native-io/getLength_setLength_async_basic.tentative.https.any.js @@ -0,0 +1,53 @@ +// META: title=NativeIO API: Assigned length is observed back. +// META: global=window,worker +// META: script=resources/support.js + +'use strict'; + +promise_test(async testCase => { + const file = await nativeIO.open('test_file'); + testCase.add_cleanup(async () => { + await file.close(); + await nativeIO.delete('test_file'); + }); + + const writeSharedArrayBuffer = new SharedArrayBuffer(4); + const writtenBytes = new Uint8Array(writeSharedArrayBuffer); + writtenBytes.set([97, 98, 99, 100]); + await file.write(writtenBytes, 0); + + await file.setLength(3); + const readBytes = await readIoFile(file); + + const remainingBytes = Uint8Array.from([97, 98, 99]); + + assert_array_equals( + readBytes, remainingBytes, + 'NativeIOFile.setLength() should remove bytes from the end of ' + + 'a file when decreasing its length'); +}, 'NativeIOFile.setLength shrinks a file, NativeIOFile.getLength reports ' + + 'new length'); + +promise_test(async testCase => { + const file = await nativeIO.open('test_file'); + testCase.add_cleanup(async () => { + await file.close(); + await nativeIO.delete('test_file'); + }); + + const writeSharedArrayBuffer = new SharedArrayBuffer(4); + const writtenBytes = new Uint8Array(writeSharedArrayBuffer); + writtenBytes.set([97, 98, 99, 100]); + await file.write(writtenBytes, 0); + + await file.setLength(5); + const readBytes = await readIoFile(file); + + const expectedBytes = Uint8Array.from([97, 98, 99, 100, 0]); + + assert_array_equals( + readBytes, expectedBytes, + 'NativeIOFile.setLength() should append zeros when increasing' + + ' the file size'); +}, 'NativeIOFile.setLength appends zeros to a file, NativeIOFile.getLength ' + + 'reports new length'); diff --git a/tests/wpt/web-platform-tests/native-io/getLength_setLength_sync_basic.tentative.https.any.js b/tests/wpt/web-platform-tests/native-io/getLength_setLength_sync_basic.tentative.https.any.js new file mode 100644 index 00000000000..f65cd44510e --- /dev/null +++ b/tests/wpt/web-platform-tests/native-io/getLength_setLength_sync_basic.tentative.https.any.js @@ -0,0 +1,48 @@ +// META: title=Synchronous NativeIO API: Assigned length is observed back. +// META: global=dedicatedworker +// META: script=resources/support.js + +'use strict'; + +test(testCase => { + const file = nativeIO.openSync('test_file'); + testCase.add_cleanup(() => { + file.close(); + nativeIO.deleteSync('test_file'); + }); + + const writtenBytes = Uint8Array.from([97, 98, 99, 100]); + file.write(writtenBytes, 0); + + file.setLength(3); + const readBytes = readIoFileSync(file); + + const remainingBytes = Uint8Array.from([97, 98, 99]); + assert_array_equals( + readBytes, remainingBytes, + 'NativeIOFileSync.setLength() should remove bytes from the end of ' + + 'a file when decreasing its length.'); +}, 'NativeIOFileSync.setLength shrinks a file and' + + ' NativeIOFileSync.getLength reports its new length.'); + +test(testCase => { + const file = nativeIO.openSync('test_file'); + testCase.add_cleanup(() => { + file.close(); + nativeIO.deleteSync('test_file'); + }); + + const writtenBytes = Uint8Array.from([97, 98, 99, 100]); + file.write(writtenBytes, 0); + + file.setLength(5); + const readBytes = readIoFileSync(file); + + const expectedBytes = Uint8Array.from([97, 98, 99, 100, 0]); + + assert_array_equals( + readBytes, expectedBytes, + 'NativeIOFileSync.setLength() should append zeros when increasing' + + ' the file size.'); +}, 'NativeIOFileSync.setLength appends zeros to a file and ' + + 'NativeIOFileSync.getLength reports its new length.'); diff --git a/tests/wpt/web-platform-tests/native-io/setLength_bounds_async.tentative.https.any.js b/tests/wpt/web-platform-tests/native-io/setLength_bounds_async.tentative.https.any.js new file mode 100644 index 00000000000..b00370c47f5 --- /dev/null +++ b/tests/wpt/web-platform-tests/native-io/setLength_bounds_async.tentative.https.any.js @@ -0,0 +1,20 @@ +// META: title=NativeIO API: Out-of-bounds errors for setLength. +// META: global=window,worker +// META: script=resources/support.js + +'use strict'; + +promise_test(async testCase => { + const file = await createFile(testCase, "file_length_zero"); + await file.setLength(0); + const lengthDecreased = await file.getLength(); + assert_equals(lengthDecreased, 0, + "NativeIOFile.setLength() should set the file length to 0."); +}, 'NativeIOFile.setLength does not throw an error when descreasing the ' + + 'file length to 0.'); + +promise_test(async testCase => { + const file = await createFile(testCase, "file_length_negative"); + await promise_rejects_js(testCase, TypeError, + file.setLength(-1)); +}, 'NativeIOFile.setLength() throws when setting negative lengths.'); diff --git a/tests/wpt/web-platform-tests/native-io/setLength_bounds_sync.tentative.https.any.js b/tests/wpt/web-platform-tests/native-io/setLength_bounds_sync.tentative.https.any.js new file mode 100644 index 00000000000..d95752fdd8e --- /dev/null +++ b/tests/wpt/web-platform-tests/native-io/setLength_bounds_sync.tentative.https.any.js @@ -0,0 +1,24 @@ +// META: title=Synchronous NativeIO API: Out-of-bounds errors for setLength. +// META: global=dedicatedworker +// META: script=resources/support.js + +'use strict'; + +test(testCase => { + const file = createFileSync(testCase, "file_length_zero"); + file.setLength(0); + const lengthDecreased = file.getLength(); + assert_equals(lengthDecreased, 0, + "NativeIOFileSync.setLength() should set the file length to 0."); +}, 'NativeIOFileSync.setLength() does not throw an error when descreasing ' + + 'the file length to 0.'); + +test(testCase => { + const file = createFileSync(testCase, "file_length_negative"); + + // Without this assertion, the test passes even if setLength is not defined. + assert_implements(file.setLength, + "NativeIOFileSync.setLength is not implemented."); + + assert_throws_js(TypeError, () => file.setLength(-1)); +}, 'NativeIOFileSync.setLength() throws when setting negative lengths.'); diff --git a/tests/wpt/web-platform-tests/native-io/trustworthy_origin_failure.tentative.http.any.js b/tests/wpt/web-platform-tests/native-io/trustworthy_origin_failure.tentative.http.any.js new file mode 100644 index 00000000000..ae01ac42015 --- /dev/null +++ b/tests/wpt/web-platform-tests/native-io/trustworthy_origin_failure.tentative.http.any.js @@ -0,0 +1,9 @@ +// META: title=NativeIO API: Interface is not exposed in untrustworthy origin. +// META: global=window,dedicatedworker + +'use strict'; + +test(testCase => { + var present = (typeof nativeIO !== 'undefined'); + assert_false(present); +}, 'NativeIO should not be accessible from an untrustworthy origin'); diff --git a/tests/wpt/web-platform-tests/navigation-timing/idlharness.window.js b/tests/wpt/web-platform-tests/navigation-timing/idlharness.window.js index 530a9058faa..72cf0c3a3d3 100644 --- a/tests/wpt/web-platform-tests/navigation-timing/idlharness.window.js +++ b/tests/wpt/web-platform-tests/navigation-timing/idlharness.window.js @@ -6,24 +6,15 @@ // http://www.w3.org/TR/navigation-timing/ -promise_test(async (t) => { - const srcs = ['navigation-timing', 'hr-time', 'resource-timing', 'performance-timeline', 'dom', 'html']; - const [navigationTiming, hrTime, resourceTiming, performanceTimeline, dom, html] = - await Promise.all(srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text()))); - const idlArray = new IdlArray(); - idlArray.add_idls(hrTime); - idlArray.add_idls(navigationTiming); - idlArray.add_dependency_idls(resourceTiming); - idlArray.add_dependency_idls(performanceTimeline); - idlArray.add_dependency_idls(dom); - idlArray.add_dependency_idls(html); - idlArray.add_objects({ - Performance: ['performance'], - PerformanceNavigation: ['performance.navigation'], - PerformanceTiming: ['performance.timing'], - PerformanceNavigationTiming: [ - 'performance.getEntriesByType("navigation")[0]' - ] - }); - return idlArray.test(); -}) +idl_test( + ['navigation-timing', 'hr-time'], + ['resource-timing', 'performance-timeline', 'dom', 'html'], + idlArray => { + idlArray.add_objects({ + Performance: ['performance'], + PerformanceNavigation: ['performance.navigation'], + PerformanceTiming: ['performance.timing'], + PerformanceNavigationTiming: ['performance.getEntriesByType("navigation")[0]'] + }); + } +); diff --git a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_iframe.html b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_iframe.html index 0490610e017..0c144bda454 100644 --- a/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_iframe.html +++ b/tests/wpt/web-platform-tests/navigation-timing/nav2_test_navigate_iframe.html @@ -8,7 +8,7 @@ diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_document_onload.html b/tests/wpt/web-platform-tests/navigation-timing/test_document_onload.html index fd385554499..7cc18491d62 100644 --- a/tests/wpt/web-platform-tests/navigation-timing/test_document_onload.html +++ b/tests/wpt/web-platform-tests/navigation-timing/test_document_onload.html @@ -17,7 +17,7 @@
    diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-port.sub.https.html index 10df411a96f..d1466e55c04 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-port.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-port.sub.https.html @@ -9,7 +9,8 @@ diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-same.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-same.sub.https.html index 034c8a3090b..39d6cf996a8 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-same.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-same.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testSameAgentCluster, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -20,6 +20,7 @@ promise_setup(async () => { // Since they're same-origin, and the parent loaded without isolation, the // child's request for isolation gets ignored, and both end up site-keyed. testSameAgentCluster([self, 0]); -testOriginIsolationRestricted(self, false, "parent"); -testOriginIsolationRestricted(0, false, "child"); + +testGetter(self, false, "parent"); +testGetter(0, false, "child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-subdomain.sub.https.html index 3894f560f04..648c641553c 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yes-subdomain.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -21,6 +21,7 @@ promise_setup(async () => { // so the parent ends up in the site-keyed agent cluster and the child in the // origin-keyed one. testDifferentAgentClusters([self, 0]); -testOriginIsolationRestricted(self, false, "parent"); -testOriginIsolationRestricted(0, true, "child"); + +testGetter(self, false, "parent"); +testGetter(0, true, "child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yeswithparams-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yeswithparams-subdomain.sub.https.html index a47729bb032..400a8f72332 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yeswithparams-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-no-child-yeswithparams-subdomain.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -21,6 +21,7 @@ promise_setup(async () => { // so the parent ends up in the site-keyed agent cluster and the child in the // origin-keyed one. testDifferentAgentClusters([self, 0]); -testOriginIsolationRestricted(self, false, "parent"); -testOriginIsolationRestricted(0, true, "child"); + +testGetter(self, false, "parent"); +testGetter(0, true, "child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-port.sub.https.html index 09389e338ab..793c47328e1 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-port.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-port.sub.https.html @@ -9,7 +9,8 @@ diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-same.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-same.sub.https.html index 7070c1b891d..f1ca9a9a7cd 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-same.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-same.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testSameAgentCluster, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -21,6 +21,6 @@ promise_setup(async () => { // child's non-request for isolation gets ignored, and both end up origin-keyed. testSameAgentCluster([self, 0]); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, true, "child"); +testGetter(self, true, "parent"); +testGetter(0, true, "child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-subdomain.sub.https.html index 32e5a1768d8..be84ecac2d1 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-no-subdomain.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -22,6 +22,6 @@ promise_setup(async () => { // agent cluster and the child ends up in the site-keyed one. testDifferentAgentClusters([self, 0]); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, false, "child"); +testGetter(self, true, "parent"); +testGetter(0, false, "child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-port.sub.https.html index 96669c30d14..58516b86742 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-port.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-port.sub.https.html @@ -9,7 +9,8 @@ diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-same.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-same.sub.https.html index a83582f747a..b08206b4478 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-same.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-same.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testSameAgentCluster, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -21,6 +21,6 @@ promise_setup(async () => { // same origin-keyed agent cluster. testSameAgentCluster([self, 0]); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, true, "child"); +testGetter(self, true, "parent"); +testGetter(0, true, "child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-subdomain.sub.https.html index 7010e4c5f4f..9a426d068ae 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/1-iframe/parent-yes-child-yes-subdomain.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -22,6 +22,6 @@ promise_setup(async () => { // origin-keyed agent cluster (the www subdomain's origin). testDifferentAgentClusters([self, 0]); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, true, "child"); +testGetter(self, true, "parent"); +testGetter(0, true, "child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html index a8437c5966f..55c15838127 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomain.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testSameAgentCluster, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -30,7 +30,7 @@ testSameAgentCluster([self, 1], "Parent to child2"); testSameAgentCluster([0, 1], "child1 to child2"); testSameAgentCluster([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, false, "parent"); -testOriginIsolationRestricted(0, false, "child1"); -testOriginIsolationRestricted(1, false, "child2"); +testGetter(self, false, "parent"); +testGetter(0, false, "child1"); +testGetter(1, false, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html index 4103373df6c..2c0bb614b50 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain-child2-yes-subdomainport.sub.https.html @@ -11,6 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -29,4 +30,8 @@ testSameAgentCluster([self, 0], "Parent to child1"); testDifferentAgentClusters([self, 1], "Parent to child2"); testDifferentAgentClusters([0, 1], "child1 to child2"); testDifferentAgentClusters([1, 0], "child2 to child1"); + +testGetter(self, false, "parent"); +testGetter(0, false, "child1"); +testGetter(1, true, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html index 06d58b3a9c4..e31af2061fb 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-no-subdomain1-child2-yes-subdomain2.sub.https.html @@ -11,7 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -21,7 +21,6 @@ promise_setup(async () => { await insertIframe("{{hosts[][www1]}}", "?1"); }); - // Since everybody is different-origin, everyone's requests/non-requests get // respected. // @@ -32,7 +31,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testDifferentAgentClusters([0, 1], "child1 to child2"); testDifferentAgentClusters([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, false, "parent"); -testOriginIsolationRestricted(0, false, "child1"); -testOriginIsolationRestricted(1, true, "child2"); +testGetter(self, false, "parent"); +testGetter(0, false, "child1"); +testGetter(1, true, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-port.sub.https.html index 68c9fe1aa6d..eaccc8509cd 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-port.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-port.sub.https.html @@ -11,7 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -31,7 +31,7 @@ testSameAgentCluster([self, 1], "Parent to child2"); testDifferentAgentClusters([0, 1], "child1 to child2"); testDifferentAgentClusters([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, false, "parent"); -testOriginIsolationRestricted(0, true, "child1"); -testOriginIsolationRestricted(1, false, "child2"); +testGetter(self, false, "parent"); +testGetter(0, true, "child1"); +testGetter(1, false, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html index 4e95827ce68..5adb911ae8b 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-no-child1-yes-subdomain-child2-no-subdomain.sub.https.html @@ -11,7 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -32,7 +32,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testSameAgentCluster([0, 1], "child1 to child2"); testSameAgentCluster([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, false, "parent"); -testOriginIsolationRestricted(0, true, "child1"); -testOriginIsolationRestricted(1, true, "child2"); +testGetter(self, false, "parent"); +testGetter(0, true, "child1"); +testGetter(1, true, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html index f261b8eea2c..e463f328f19 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain.sub.https.html @@ -11,7 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -32,7 +32,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testSameAgentCluster([0, 1], "child1 to child2"); testSameAgentCluster([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, false, "child1"); -testOriginIsolationRestricted(1, false, "child2"); +testGetter(self, true, "parent"); +testGetter(0, false, "child1"); +testGetter(1, false, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html index 86c951dd826..2d67979b68a 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-no-subdomain2.sub.https.html @@ -11,7 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -32,7 +32,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testSameAgentCluster([0, 1], "child1 to child2"); testSameAgentCluster([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, false, "child1"); -testOriginIsolationRestricted(1, false, "child2"); +testGetter(self, true, "parent"); +testGetter(0, false, "child1"); +testGetter(1, false, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html index 997fa0859f1..ecf759cde06 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain.sub.https.html @@ -11,7 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -32,7 +32,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testSameAgentCluster([0, 1], "child1 to child2"); testSameAgentCluster([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, false, "child1"); -testOriginIsolationRestricted(1, false, "child2"); +testGetter(self, true, "parent"); +testGetter(0, false, "child1"); +testGetter(1, false, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html index 7631bdd1bd4..0448076178a 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomain2.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -32,7 +32,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testDifferentAgentClusters([0, 1], "child1 to child2"); testDifferentAgentClusters([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, false, "child1"); -testOriginIsolationRestricted(1, true, "child2"); +testGetter(self, true, "parent"); +testGetter(0, false, "child1"); +testGetter(1, true, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html index e578e350208..1b14ca48ba7 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-no-subdomain-child2-yes-subdomainport.sub.https.html @@ -10,6 +10,7 @@ import { insertIframe, testDifferentAgentClusters, + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -30,4 +31,8 @@ testDifferentAgentClusters([self, 0], "Parent to child1"); testDifferentAgentClusters([self, 1], "Parent to child2"); testDifferentAgentClusters([0, 1], "child1 to child2"); testDifferentAgentClusters([1, 0], "child2 to child1"); + +testGetter(self, true, "parent"); +testGetter(0, false, "child1"); +testGetter(1, true, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html index edcdcbabd76..fcdb1369971 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-port.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -30,7 +30,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testDifferentAgentClusters([0, 1], "child1 to child2"); testDifferentAgentClusters([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, true, "child1"); -testOriginIsolationRestricted(1, false, "child2"); +testGetter(self, true, "parent"); +testGetter(0, true, "child1"); +testGetter(1, false, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html index f8503312460..011bcd1637b 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-no-subdomain.sub.https.html @@ -11,7 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -32,7 +32,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testSameAgentCluster([0, 1], "child1 to child2"); testSameAgentCluster([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, true, "child1"); -testOriginIsolationRestricted(1, true, "child2"); +testGetter(self, true, "parent"); +testGetter(0, true, "child1"); +testGetter(1, true, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html index 6ae6fac7718..1a4dd4c9a65 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain.sub.https.html @@ -11,7 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -33,7 +33,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testSameAgentCluster([0, 1], "child1 to child2"); testSameAgentCluster([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, true, "child1"); -testOriginIsolationRestricted(1, true, "child2"); +testGetter(self, true, "parent"); +testGetter(0, true, "child1"); +testGetter(1, true, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain2.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain2.sub.https.html index 53eaea13ca2..852fd2d216e 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain2.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomain2.sub.https.html @@ -10,7 +10,7 @@ import { insertIframe, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -32,7 +32,7 @@ testDifferentAgentClusters([self, 1], "Parent to child2"); testDifferentAgentClusters([0, 1], "child1 to child2"); testDifferentAgentClusters([1, 0], "child2 to child1"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, true, "child1"); -testOriginIsolationRestricted(1, true, "child2"); +testGetter(self, true, "parent"); +testGetter(0, true, "child1"); +testGetter(1, true, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html index 370f3dc773f..ba8edadc188 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/2-iframes/parent-yes-child1-yes-subdomain-child2-yes-subdomainport.sub.https.html @@ -10,6 +10,7 @@ import { insertIframe, testDifferentAgentClusters, + testGetter } from "../resources/helpers.mjs"; promise_setup(async () => { @@ -30,4 +31,8 @@ testDifferentAgentClusters([self, 0], "Parent to child1"); testDifferentAgentClusters([self, 1], "Parent to child2"); testDifferentAgentClusters([0, 1], "child1 to child2"); testDifferentAgentClusters([1, 0], "child2 to child1"); + +testGetter(self, true, "parent"); +testGetter(0, true, "child1"); +testGetter(1, true, "child2"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/README.md b/tests/wpt/web-platform-tests/origin-isolation/README.md index 8ff8de614fd..693ab4048c0 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/README.md +++ b/tests/wpt/web-platform-tests/origin-isolation/README.md @@ -24,3 +24,8 @@ Other directories have variations on this, e.g. `1-iframe/` does the same thing but for a single `child` instead of `child1` and `child2`, and `navigation/` uses `1` and `2` to represent the two different locations the single iframe will be navigated to. + +## Coverage + +Header parsing is covered by a few tests in the `1-iframe/` subdirectory, and +not duplicated to all other scenarios. diff --git a/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html b/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html index 6af31dd021f..edc98b363e4 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html +++ b/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html @@ -12,7 +12,7 @@ import { setBothDocumentDomains, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "./resources/helpers.mjs"; promise_setup(async () => { @@ -26,9 +26,9 @@ testSameAgentCluster([self, 0], "parent to about:blank"); testDifferentAgentClusters([0, 1], "about:blank to child2"); testDifferentAgentClusters([1, 0], "child2 to about:blank"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, true, "about:blank"); -testOriginIsolationRestricted(1, false, "child2"); +testGetter(self, true, "parent"); +testGetter(0, true, "about:blank"); +testGetter(1, false, "child2"); async function insertAboutBlankIframe() { const iframe = document.createElement("iframe"); @@ -37,7 +37,7 @@ async function insertAboutBlankIframe() { // Now create and add the script, but don't navigate anywhere (since we want // to stay on the initial about:blank). // We need to absolutize the URL to since about:blank doesn't have a base URL. - const scriptURL = (new URL("./resources/child-frame-script.mjs", import.meta.url)).href; + const scriptURL = (new URL("./resources/send-header-page-script.mjs", import.meta.url)).href; const script = iframe.contentDocument.createElement("script"); script.type = "module"; script.src = scriptURL; diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-no.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-no.https.html new file mode 100644 index 00000000000..16ecb451929 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-no.https.html @@ -0,0 +1,15 @@ + + +window.originIsolated for a top-level frame sandboxed by CSP with no Origin-Isolation header + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-no.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-no.https.html.headers new file mode 100644 index 00000000000..4705ce9dede --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-no.https.html.headers @@ -0,0 +1 @@ +Content-Security-Policy: sandbox allow-scripts; diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-yes.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-yes.https.html new file mode 100644 index 00000000000..b9a7359974d --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-yes.https.html @@ -0,0 +1,15 @@ + + +window.originIsolated for a top-level frame sandboxed by CSP with an Origin-Isolation header + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-yes.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-yes.https.html.headers new file mode 100644 index 00000000000..3fd1539d4ae --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/csp-sandbox-yes.https.html.headers @@ -0,0 +1,2 @@ +Content-Security-Policy: sandbox allow-scripts; +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-no.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-no.https.html new file mode 100644 index 00000000000..cb00ef782d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-no.https.html @@ -0,0 +1,12 @@ + + +window.originIsolated for a javascript: URL navigated to from a data: URL on a non-isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-yes.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-yes.https.html new file mode 100644 index 00000000000..6856441deff --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-yes.https.html @@ -0,0 +1,12 @@ + + +window.originIsolated for a javascript: URL navigated to from a data: URL on an isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-yes.https.html.headers similarity index 100% rename from tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url.https.html.headers rename to tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-to-javascript-yes.https.html.headers diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-no.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-no.https.html new file mode 100644 index 00000000000..5b194eaef35 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-no.https.html @@ -0,0 +1,12 @@ + + +window.originIsolated for a data: URL on a non-isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-yes.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-yes.https.html new file mode 100644 index 00000000000..85821be32b5 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-yes.https.html @@ -0,0 +1,12 @@ + + +window.originIsolationRestricted for a data: URL on an isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-yes.https.html.headers similarity index 100% rename from tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe.sub.https.html.headers rename to tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url-yes.https.html.headers diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url.https.html deleted file mode 100644 index 6933f35930d..00000000000 --- a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/data-url.https.html +++ /dev/null @@ -1,40 +0,0 @@ - - -window.originIsolationRestricted for a data: URL - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-no.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-no.https.html new file mode 100644 index 00000000000..b75cae47cdb --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-no.https.html @@ -0,0 +1,12 @@ + + +window.originIsolated for a javascript: URL on a non-isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-yes.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-yes.https.html new file mode 100644 index 00000000000..573b1a0b712 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-yes.https.html @@ -0,0 +1,12 @@ + + +window.originIsolated for a javascript: URL on an isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-yes.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-yes.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/javascript-url-yes.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/removed-iframe.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/removed-iframe.sub.https.html index fd838cdbb55..d7ad4903ab9 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/removed-iframe.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/removed-iframe.sub.https.html @@ -1,13 +1,9 @@ -window.originIsolationRestricted for a removed frame +window.originIsolated for a removed frame - -
    diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/data-to-javascript-test.mjs b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/data-to-javascript-test.mjs new file mode 100644 index 00000000000..3a88253ee30 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/data-to-javascript-test.mjs @@ -0,0 +1,33 @@ +import { insertCustomIframe, testSupportScript } from "./helpers.mjs"; +import { waitForIframe, testGetter } from "../../resources/helpers.mjs"; + +const testSupportScriptSuitableForNesting = + testSupportScript.replace('', ''); + +export default () => { + promise_setup(async () => { + const jsURL = `javascript:'${testSupportScript}'`; + const iframe = await insertCustomIframe(`data:text/html, + Start page + + `); + + const waitPromise = waitForIframe(iframe, "javascript: URL"); + + // Kick off the navigation. We can't do it directly because only same-origin + // pages can navigate to a javascript: URL, and we're not same-origin with + // a data: URL. + iframe.contentWindow.postMessage(undefined, "*"); + + await waitPromise; + }); + + // The javascript: URL iframe inherits its origin from the previous occupant + // of the iframe, which is a data: URL, so it should always be true. + + testGetter(0, true); +}; diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/data-url-test.mjs b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/data-url-test.mjs new file mode 100644 index 00000000000..d32d8521be4 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/data-url-test.mjs @@ -0,0 +1,13 @@ +import { insertCustomIframe, testSupportScript } from "./helpers.mjs"; +import { testGetter } from "../../resources/helpers.mjs"; + +export default () => { + promise_setup(() => { + return insertCustomIframe(`data:text/html,${testSupportScript}`); + }); + + // The data: URL iframe has an opaque origin, so it should return true, since + // for them site === origin so they are always "origin-isolated". + + testGetter(0, true, "data: URL child"); +}; diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/helpers.mjs b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/helpers.mjs new file mode 100644 index 00000000000..d1e3cc17a13 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/helpers.mjs @@ -0,0 +1,29 @@ +import { waitForIframe } from "../../resources/helpers.mjs"; + +/** + * Inserts an iframe, not specialized for origin-isolation testing, pointing to + * a custom URL. This is just a wrapper to remove some boilerplate. + * @param {string} src - The src="" value for the iframe + */ +export async function insertCustomIframe(src) { + const iframe = document.createElement("iframe"); + iframe.src = src; + + const waitPromise = waitForIframe(iframe); + document.body.append(iframe); + await waitPromise; + + return iframe; +} + +/** + * This is the part of send-origin-isolation-header.py that allows + * us to reuse testGetter. + */ +export const testSupportScript = ` + +`; diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/javascript-url-test.mjs b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/javascript-url-test.mjs new file mode 100644 index 00000000000..de474d8cafc --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/javascript-url-test.mjs @@ -0,0 +1,14 @@ +import { insertCustomIframe, testSupportScript } from "./helpers.mjs"; +import { testGetter } from "../../resources/helpers.mjs"; + +export default ({ expected }) => { + promise_setup(() => { + return insertCustomIframe(`javascript:'${testSupportScript}'`); + }); + + // The javascript: URL iframe inherits its origin from the previous occupant + // of the iframe, which is about:blank, which in turn inherits from the + // parent. So, the caller needs to tell us what to expect. + + testGetter(0, expected); +}; diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/sandboxed-iframe-test.sub.mjs b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/sandboxed-iframe-test.sub.mjs new file mode 100644 index 00000000000..98575b8d80e --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/sandboxed-iframe-test.sub.mjs @@ -0,0 +1,20 @@ +import { + navigateIframe, + testGetter +} from "../../resources/helpers.mjs"; + +export default () => { + // We do this manually instead of using insertIframe because we want to add a + // sandbox="" attribute and we don't want to set both document.domains. + promise_setup(() => { + const iframe = document.createElement("iframe"); + iframe.sandbox = "allow-scripts"; + const navigatePromise = navigateIframe(iframe, "{{hosts[][]}}", "?1"); + document.body.append(iframe); + return navigatePromise; + }); + + // Sandboxed iframes have an opaque origin, so it should return true, since + // for them site === origin so they are always "origin-isolated". + testGetter(0, true); +}; diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/sandboxed-same-origin-iframe-test.sub.mjs b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/sandboxed-same-origin-iframe-test.sub.mjs new file mode 100644 index 00000000000..272f805870c --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/resources/sandboxed-same-origin-iframe-test.sub.mjs @@ -0,0 +1,20 @@ +import { + navigateIframe, + testGetter +} from "../../resources/helpers.mjs"; + +export default ({ expected }) => { + // We do this manually instead of using insertIframe because we want to add a + // sandbox="" attribute and we don't want to set both document.domains. + promise_setup(() => { + const iframe = document.createElement("iframe"); + iframe.sandbox = "allow-scripts allow-same-origin"; + const navigatePromise = navigateIframe(iframe, "{{hosts[][]}}", "?1"); + document.body.append(iframe); + return navigatePromise; + }); + + // Since the allow-same-origin token is set, this should behave like a normal + // iframe, and follow the embedder. + testGetter(0, expected); +}; diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-no.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-no.https.html new file mode 100644 index 00000000000..bc2276fede8 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-no.https.html @@ -0,0 +1,12 @@ + + +window.originIsolated for a sandboxed iframe on a non-isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-yes.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-yes.https.html new file mode 100644 index 00000000000..5805d3421eb --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-yes.https.html @@ -0,0 +1,12 @@ + + +window.originIsolated for a sandboxed iframe on an isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-yes.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-yes.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe-yes.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe.sub.https.html deleted file mode 100644 index fb91d467764..00000000000 --- a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-iframe.sub.https.html +++ /dev/null @@ -1,32 +0,0 @@ - - -window.originIsolationRestricted for a sandboxed frame - - - - - -
    - - diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-no.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-no.https.html new file mode 100644 index 00000000000..a1b44a1e5b3 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-no.https.html @@ -0,0 +1,12 @@ + + +window.originIsolated for a sandboxed, but same-origin, iframe on a non-isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html new file mode 100644 index 00000000000..b9339afae2e --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html @@ -0,0 +1,12 @@ + + +window.originIsolated for a sandboxed, but same-origin, iframe on an isolated page + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/getter-special-cases/sandboxed-same-origin-iframe-yes.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-port.sub.https.html index ff9ea4dca8c..85ee2f677f3 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-port.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-port.sub.https.html @@ -13,7 +13,7 @@ import { setBothDocumentDomains, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; let frame1; @@ -24,8 +24,8 @@ promise_setup(async () => { // Nobody requested isolation yet. testSameAgentCluster([self, 0], "Before: parent to child"); -testOriginIsolationRestricted(self, false, "before parent"); -testOriginIsolationRestricted(0, false, "before child"); +testGetter(self, false, "before parent"); +testGetter(0, false, "before child"); promise_test(async () => { await navigateIframe(frame1, "{{hosts[][]}}:{{ports[https][1]}}", "?1"); @@ -35,6 +35,6 @@ promise_test(async () => { // Since the new page is different-origin, it should be isolated. testDifferentAgentClusters([self, 0], "After: parent to child"); -testOriginIsolationRestricted(self, false, "after parent"); -testOriginIsolationRestricted(0, true, "after child"); +testGetter(self, false, "after parent"); +testGetter(0, true, "after child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-subdomain.sub.https.html index f599cb986d9..bb39de648ac 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-same-2-yes-subdomain.sub.https.html @@ -13,7 +13,7 @@ import { setBothDocumentDomains, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; let frame1; @@ -24,8 +24,8 @@ promise_setup(async () => { // Nobody requested isolation yet. testSameAgentCluster([self, 0], "Before: parent to child"); -testOriginIsolationRestricted(self, false, "before parent"); -testOriginIsolationRestricted(0, false, "before child"); +testGetter(self, false, "before parent"); +testGetter(0, false, "before child"); promise_test(async () => { await navigateIframe(frame1, "{{hosts[][www]}}", "?1"); @@ -35,6 +35,6 @@ promise_test(async () => { // Since the new page is different-origin, it should be isolated. testDifferentAgentClusters([self, 0], "After: parent to child"); -testOriginIsolationRestricted(self, false, "after parent"); -testOriginIsolationRestricted(0, true, "after child"); +testGetter(self, false, "after parent"); +testGetter(0, true, "after child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html index 8777b656e33..b52ca783f6f 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain.sub.https.html @@ -12,7 +12,7 @@ import { navigateIframe, setBothDocumentDomains, testSameAgentCluster, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; let frame1; @@ -23,8 +23,8 @@ promise_setup(async () => { // Nobody requested isolation yet. testSameAgentCluster([self, 0], "Before: parent to child"); -testOriginIsolationRestricted(self, false, "before parent"); -testOriginIsolationRestricted(0, false, "before child"); +testGetter(self, false, "before parent"); +testGetter(0, false, "before child"); promise_test(async () => { await navigateIframe(frame1, "{{hosts[][www]}}", "?1"); @@ -35,6 +35,6 @@ promise_test(async () => { // isolation request is ignored; instead we continue isolating. testSameAgentCluster([self, 0], "After: parent to child"); -testOriginIsolationRestricted(self, false, "after parent"); -testOriginIsolationRestricted(0, false, "after child"); +testGetter(self, false, "after parent"); +testGetter(0, false, "after child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html index 22f35eb9149..67e99cee090 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-no-subdomain-2-yes-subdomain2.sub.https.html @@ -13,7 +13,7 @@ import { setBothDocumentDomains, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; let frame1; @@ -24,8 +24,8 @@ promise_setup(async () => { // Nobody requested isolation yet. testSameAgentCluster([self, 0], "Before: parent to child"); -testOriginIsolationRestricted(self, false, "before parent"); -testOriginIsolationRestricted(0, false, "before child"); +testGetter(self, false, "before parent"); +testGetter(0, false, "before child"); promise_test(async () => { await navigateIframe(frame1, "{{hosts[][www1]}}", "?1"); @@ -36,6 +36,6 @@ promise_test(async () => { // isolation request is respected. testDifferentAgentClusters([self, 0], "After: parent to child"); -testOriginIsolationRestricted(self, false, "after parent"); -testOriginIsolationRestricted(0, true, "after child"); +testGetter(self, false, "after parent"); +testGetter(0, true, "after child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html index ac51e6ef80c..1b7dd01947f 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-subdomain-yes-2-subdomain2-no.sub.https.html @@ -13,7 +13,7 @@ import { setBothDocumentDomains, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; let frame1; @@ -24,8 +24,8 @@ promise_setup(async () => { // Since they are different-origin, the child's isolation request is respected. testDifferentAgentClusters([self, 0], "Before: parent to child"); -testOriginIsolationRestricted(self, false, "before parent"); -testOriginIsolationRestricted(0, true, "before child"); +testGetter(self, false, "before parent"); +testGetter(0, true, "before child"); promise_test(async () => { await navigateIframe(frame1, "{{hosts[][www1]}}"); @@ -36,6 +36,6 @@ promise_test(async () => { // doesn't somehow get isolated just because its predecessor was. testSameAgentCluster([self, 0], "After: parent to child"); -testOriginIsolationRestricted(self, false, "after parent"); -testOriginIsolationRestricted(0, false, "after child"); +testGetter(self, false, "after parent"); +testGetter(0, false, "after child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html index 425983423ba..783f5870a83 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-no-1-yes-subdomain-2-no-subdomain.sub.https.html @@ -12,7 +12,7 @@ import { navigateIframe, setBothDocumentDomains, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; let frame1; @@ -23,8 +23,8 @@ promise_setup(async () => { // Since they are different-origin, the child's isolation request is respected. testDifferentAgentClusters([self, 0], "Before: parent to child"); -testOriginIsolationRestricted(self, false, "before parent"); -testOriginIsolationRestricted(0, true, "before child"); +testGetter(self, false, "before parent"); +testGetter(0, true, "before child"); promise_test(async () => { await navigateIframe(frame1, "{{hosts[][www]}}"); @@ -35,6 +35,6 @@ promise_test(async () => { // non-isolation request is ignored; instead we continue isolating. testDifferentAgentClusters([self, 0], "After: parent to child"); -testOriginIsolationRestricted(self, false, "after parent"); -testOriginIsolationRestricted(0, true, "after child"); +testGetter(self, false, "after parent"); +testGetter(0, true, "after child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-port.sub.https.html index 2d9c9ac98d0..461fd0ddc4b 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-port.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-port.sub.https.html @@ -13,7 +13,7 @@ import { setBothDocumentDomains, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; let frame1; @@ -25,8 +25,8 @@ promise_setup(async () => { // so it gets isolated too. testSameAgentCluster([self, 0], "Before: parent to child"); -testOriginIsolationRestricted(self, true, "before parent"); -testOriginIsolationRestricted(0, true, "before child"); +testGetter(self, true, "before parent"); +testGetter(0, true, "before child"); promise_test(async () => { await navigateIframe(frame1, "{{hosts[][]}}:{{ports[https][1]}}"); @@ -36,6 +36,6 @@ promise_test(async () => { // Since the new page is different-origin, its non-request should be respected. testDifferentAgentClusters([self, 0], "After: parent to child"); -testOriginIsolationRestricted(self, true, "after parent"); -testOriginIsolationRestricted(0, false, "after child"); +testGetter(self, true, "after parent"); +testGetter(0, false, "after child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-subdomain.sub.https.html index abf0da2b5d6..6832cd03858 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-subdomain.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/iframe-navigation/parent-yes-1-no-same-2-no-subdomain.sub.https.html @@ -13,7 +13,7 @@ import { setBothDocumentDomains, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "../resources/helpers.mjs"; let frame1; @@ -25,8 +25,8 @@ promise_setup(async () => { // so it gets isolated too. testSameAgentCluster([self, 0], "Before: parent to child"); -testOriginIsolationRestricted(self, true, "before parent"); -testOriginIsolationRestricted(0, true, "before child"); +testGetter(self, true, "before parent"); +testGetter(0, true, "before child"); promise_test(async () => { await navigateIframe(frame1, "{{hosts[][www]}}"); @@ -36,6 +36,6 @@ promise_test(async () => { // Since the new page is different-origin, its non-request should be respected. testDifferentAgentClusters([self, 0], "After: parent to child"); -testOriginIsolationRestricted(self, true, "after parent"); -testOriginIsolationRestricted(0, false, "after child"); +testGetter(self, true, "after parent"); +testGetter(0, false, "after child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/insecure-http.sub.html b/tests/wpt/web-platform-tests/origin-isolation/insecure-http.sub.html index 583ca2f441b..18e0216e262 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/insecure-http.sub.html +++ b/tests/wpt/web-platform-tests/origin-isolation/insecure-http.sub.html @@ -10,7 +10,7 @@ import { insertIframe, testSameAgentCluster, - testOriginIsolationRestricted + testGetter } from "./resources/helpers.mjs"; promise_setup(async () => { @@ -21,6 +21,6 @@ promise_setup(async () => { // So both end up in the site-keyed agent cluster. testSameAgentCluster([self, 0]); -testOriginIsolationRestricted(self, false, "parent"); -testOriginIsolationRestricted(0, false, "child"); +testGetter(self, false, "parent"); +testGetter(0, false, "child"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-port.sub.https.html new file mode 100644 index 00000000000..270162530b1 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-port.sub.https.html @@ -0,0 +1,28 @@ + + +Opener is not isolated, openee is isolated, openee is different-origin to the opener because of a port mismatch + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-same.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-same.sub.https.html new file mode 100644 index 00000000000..0c8d89b8e66 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-same.sub.https.html @@ -0,0 +1,27 @@ + + +Opener is not isolated, openee is isolated, openee is same-origin to the opener + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-subdomain.sub.https.html new file mode 100644 index 00000000000..d1aaabd9206 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-no-openee-yes-subdomain.sub.https.html @@ -0,0 +1,28 @@ + + +Opener is not isolated, openee is isolated, openee is a subdomain of the opener + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-port.sub.https.html new file mode 100644 index 00000000000..96b839e167f --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-port.sub.https.html @@ -0,0 +1,28 @@ + + +Opener is isolated, openee is not isolated, openee is different-origin to the opener because of a port mismatch + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-port.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-port.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-port.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-same.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-same.sub.https.html new file mode 100644 index 00000000000..0dee5fae002 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-same.sub.https.html @@ -0,0 +1,27 @@ + + +Opener is isolated, openee is not isolated, openee is same-origin to the opener + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-same.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-same.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-same.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-subdomain.sub.https.html new file mode 100644 index 00000000000..cfec0fda130 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-subdomain.sub.https.html @@ -0,0 +1,28 @@ + + +Opener is isolated, openee is not isolated, openee is a subdomain of the opener + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-subdomain.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-subdomain.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-no-subdomain.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-port.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-port.sub.https.html new file mode 100644 index 00000000000..4ea37421df0 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-port.sub.https.html @@ -0,0 +1,28 @@ + + +Opener is isolated, openee is isolated, openee is different-origin to the opener because of a port mismatch + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-port.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-port.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-port.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-same.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-same.sub.https.html new file mode 100644 index 00000000000..603f11d8de6 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-same.sub.https.html @@ -0,0 +1,27 @@ + + +Opener is isolated, openee is isolated, openee is same-origin to the opener + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-same.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-same.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-same.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-subdomain.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-subdomain.sub.https.html new file mode 100644 index 00000000000..b182d496a92 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-subdomain.sub.https.html @@ -0,0 +1,28 @@ + + +Opener is isolated, openee is isolated, openee is a subdomain of the opener + + + +
    + + diff --git a/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-subdomain.sub.https.html.headers b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-subdomain.sub.https.html.headers new file mode 100644 index 00000000000..ea3f6b335c7 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/popups/opener-yes-openee-yes-subdomain.sub.https.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/removing-iframes.sub.https.html b/tests/wpt/web-platform-tests/origin-isolation/removing-iframes.sub.https.html index 3a6d91c447a..cbe13af8207 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/removing-iframes.sub.https.html +++ b/tests/wpt/web-platform-tests/origin-isolation/removing-iframes.sub.https.html @@ -11,7 +11,7 @@ import { insertIframe, testSameAgentCluster, testDifferentAgentClusters, - testOriginIsolationRestricted + testGetter } from "./resources/helpers.mjs"; let frame1; @@ -23,8 +23,8 @@ promise_setup(async () => { // as is the child's non-request. So the parent ends up in the origin-keyed // agent cluster and the child ends up in the site-keyed one. testDifferentAgentClusters([self, 0], "Before"); -testOriginIsolationRestricted(self, true, "parent"); -testOriginIsolationRestricted(0, false, "child1"); +testGetter(self, true, "parent"); +testGetter(0, false, "child1"); promise_test(async () => { frame1.remove(); @@ -41,6 +41,6 @@ testDifferentAgentClusters([self, 1], "Parent to child3"); testSameAgentCluster([0, 1], "child2 to child3"); testSameAgentCluster([1, 0], "child3 to child2"); -testOriginIsolationRestricted(0, false, "child2"); -testOriginIsolationRestricted(1, false, "child3"); +testGetter(0, false, "child2"); +testGetter(1, false, "child3"); diff --git a/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs b/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs index 73f9406b476..8bd1c8e9250 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs +++ b/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs @@ -28,7 +28,7 @@ export async function insertIframe(host, header) { * if the error event fires */ export function navigateIframe(iframeEl, host, header) { - const url = getIframeURL(host, header); + const url = getSendHeaderURL(host, header); const waitPromise = waitForIframe(iframeEl, url); iframeEl.src = url; @@ -54,6 +54,32 @@ export function waitForIframe(iframeEl, destinationForErrorMessage) { }); } +/** + * Opens a new window usable for origin isolation testing, and returns a promise + * fulfilled when the window is loaded and its document.domain is set. The + * window will point to the send-origin-isolation-header.py file, on the + * designated host. + * + * The opened window will be automatically closed when all the tests complete. + * @param {string} host - The host used to calculate the window's URL + * @param {string=} header - The value of the Origin-Isolation header that the + * iframe will set. Omit this to set no header. + * @returns {WindowProxy} The created window + */ +export async function openWindow(host, header) { + const url = getSendHeaderURL(host, header, { sendLoadedMessage: true }); + const openedWindow = window.open(url); + + add_completion_callback(() => openedWindow.close()); + + const whatHappened = await waitForMessage(openedWindow); + assert_equals(whatHappened, "loaded"); + + await setBothDocumentDomains(openedWindow); + + return openedWindow; +} + /** * Expands into a pair of promise_test() calls to ensure that two Windows are in * the same agent cluster, by checking both that we can send a @@ -177,29 +203,79 @@ export function testDifferentAgentClusters(testFrames, testLabelPrefix) { } /** - * Creates a promise_test() to check the value of the originIsolationRestricted - * getter in the given testFrame. - * @param {Window|number} testFrame - Either self, or a frame index to test. - * @param {boolean} expected - The expected value for originIsolationRestricted. + * Expands into a pair of promise_test() calls to ensure that the given window, + * opened by window.open(), is in a different agent cluster from the current + * (opener) window. + * @param {function} openedWindowGetter - A function that returns the opened + * window + */ +export function testOpenedWindowIsInADifferentAgentCluster(openedWindowGetter) { + promise_test(async () => { + const whatHappened = await sendWasmModule(openedWindowGetter()); + + assert_equals(whatHappened, "messageerror"); + }, `messageerror event must occur`); + + promise_test(async () => { + assert_throws_dom("SecurityError", DOMException, () => { + openedWindowGetter().document; + }); + + assert_throws_dom("SecurityError", DOMException, () => { + openedWindowGetter().location.href; + }); + }, `setting document.domain must not give sync access`); +} + +/** + * Expands into a pair of promise_test() calls to ensure that the given window, + * opened by window.open(), is in the same agent cluster as the current + * (opener) window. + * @param {function} openedWindowGetter - A function that returns the opened + * window + */ +export function testOpenedWindowIsInSameAgentCluster(openedWindowGetter) { + promise_test(async () => { + const whatHappened = await sendWasmModule(openedWindowGetter()); + + assert_equals(whatHappened, "WebAssembly.Module message received"); + }, `message event must occur`); + + promise_test(async () => { + // Must not throw + openedWindowGetter().document; + + // Must not throw + openedWindowGetter().location.href; + }, `setting document.domain must give sync access`); +} + +/** + * Creates a promise_test() to check the value of the originIsolated getter in + * the given testFrame. + * @param {Window|number|function} testFrame - Either self, or a frame index to + test, or a function that returns a windwo to test. + * @param {boolean} expected - The expected value for originIsolated. * @param {string=} testLabelPrefix - A prefix used in the test names. This can * be omitted if the function is only used once in a test file. */ -export function testOriginIsolationRestricted(testFrame, expected, testLabelPrefix) { +export function testGetter(testFrame, expected, testLabelPrefix) { const prefix = testLabelPrefix === undefined ? "" : `${testLabelPrefix}: `; - if (testFrame === self) { - // Need to use promise_test() even though it's sync because we use - // promise_setup() in many tests. - promise_test(async () => { - assert_equals(self.originIsolationRestricted, expected); - }, `${prefix}originIsolationRestricted must equal ${expected}`); - } else { - promise_test(async () => { + promise_test(async () => { + if (testFrame === self) { + assert_equals(self.originIsolated, expected); + } else if (typeof testFrame === "number") { const frameWindow = frames[testFrame]; - const result = await getOriginIsolationRestricted(frameWindow); + const result = await accessOriginIsolated(frameWindow); assert_equals(result, expected); - }, `${prefix}originIsolationRestricted must equal ${expected}`); - } + } else { + assert_equals(typeof testFrame, "function", + "testFrame argument must be self, a number, or a function"); + const result = await accessOriginIsolated(testFrame()); + assert_equals(result, expected); + } + }, `${prefix}originIsolated must equal ${expected}`); } /** @@ -241,19 +317,22 @@ export async function setBothDocumentDomains(frameWindow) { assert_equals(whatHappened, "document.domain is set"); } -async function getOriginIsolationRestricted(frameWindow) { +async function accessOriginIsolated(frameWindow) { // This function is coupled to ./send-origin-isolation-header.py, which ensures // that sending such a message will result in a message back. - frameWindow.postMessage({ command: "get originIsolationRestricted" }, "*"); + frameWindow.postMessage({ command: "get originIsolated" }, "*"); return waitForMessage(frameWindow); } -function getIframeURL(host, header) { +function getSendHeaderURL(host, header, { sendLoadedMessage = false } = {}) { const url = new URL("send-origin-isolation-header.py", import.meta.url); url.host = host; if (header !== undefined) { url.searchParams.set("header", header); } + if (sendLoadedMessage) { + url.searchParams.set("send-loaded-message", ""); + } return url.href; } diff --git a/tests/wpt/web-platform-tests/origin-isolation/resources/child-frame-script.mjs b/tests/wpt/web-platform-tests/origin-isolation/resources/send-header-page-script.mjs similarity index 76% rename from tests/wpt/web-platform-tests/origin-isolation/resources/child-frame-script.mjs rename to tests/wpt/web-platform-tests/origin-isolation/resources/send-header-page-script.mjs index 783e36092da..fe3dc6a8e09 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/resources/child-frame-script.mjs +++ b/tests/wpt/web-platform-tests/origin-isolation/resources/send-header-page-script.mjs @@ -1,16 +1,28 @@ import { sendWasmModule } from "./helpers.mjs"; +// This is done for the window.open() case. For diff --git a/tests/wpt/web-platform-tests/performance-timeline/case-sensitivity.any.js b/tests/wpt/web-platform-tests/performance-timeline/case-sensitivity.any.js index 588b59cc6a7..3a98505ae67 100644 --- a/tests/wpt/web-platform-tests/performance-timeline/case-sensitivity.any.js +++ b/tests/wpt/web-platform-tests/performance-timeline/case-sensitivity.any.js @@ -27,3 +27,38 @@ assert_equals(mixedList.length, 0, "getEntriesByName('" + location2 + "').length"); }, "getEntriesByName values are case sensitive"); + + async_test(function (t) { + // Test type/buffered case sensitivity. + observer = new PerformanceObserver( + t.step_func(function (entryList, obs) { + assert_unreached("Observer(type) should not be called."); + }) + ); + observer.observe({type: "Mark"}); + observer.observe({type: "Measure"}); + observer.observe({type: "MARK"}); + observer.observe({type: "MEASURE"}); + observer.observe({type: "Mark", buffered: true}); + observer.observe({type: "Measure", buffered: true}); + observer.observe({type: "MARK", buffered: true}); + observer.observe({type: "MEASURE", buffered: true}); + self.performance.mark("mark1"); + self.performance.measure("measure1"); + + // Test entryTypes case sensitivity. + observer = new PerformanceObserver( + t.step_func(function (entryList, obs) { + assert_unreached("Observer(entryTypes) should not be called."); + }) + ); + observer.observe({entryTypes: ["Mark", "Measure"]}); + observer.observe({entryTypes: ["MARK", "MEASURE"]}); + self.performance.mark("mark1"); + self.performance.measure("measure1"); + + t.step_timeout(function() { + t.done(); + }, 1000); + + }, "observe() and case sensitivity for types/entryTypes and buffered."); diff --git a/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault.html b/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault.html index a727325a5b1..c4990ff5f9d 100644 --- a/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault.html +++ b/tests/wpt/web-platform-tests/pointerevents/compat/pointerevent_mouse-pointer-preventdefault.html @@ -18,126 +18,126 @@ div.box { + + + + + + +
    + +
    + + + + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-adjustment_click_target.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-adjustment_click_target.html new file mode 100644 index 00000000000..46d5ac1793b --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-adjustment_click_target.html @@ -0,0 +1,67 @@ + + +Touch-generated events should have the same target + + + + + +

    Touch letter 'O' below to run the test. If a "PASS" result appears the test passes, otherwise it fails

    +

    Link O

    +
    + diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html b/tests/wpt/web-platform-tests/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html index eaa5325699d..92fcc93699b 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html @@ -35,7 +35,7 @@ var firstButton = 0; var pointer_locked = false; - function run() { + async function run() { var target0 = document.getElementById("target0"); // When a pointer changes button state and the circumstances produce no other pointer event, the pointermove event must be dispatched. @@ -44,7 +44,9 @@ on_event(target0, "pointerdown", function (event) { if (pointer_locked) { detected_pointertypes[event.pointerType] = true; - test_pointermove.step(function() {assert_true(step === 0, "There must not be more than one pointer down event.");}); + test_pointermove.step(function() { + assert_true(step === 0, "There must not be more than one pointer down event."); + }); if (step == 0) { step = 1; firstButton = event.buttons; @@ -56,11 +58,17 @@ detected_pointertypes[event.pointerType] = true; if (step == 1 && event.button != -1) { // second button pressed - test_pointermove.step(function() {assert_true(event.buttons !== firstButton, "The pointermove event must be triggered by pressing a second button.");}); - test_pointermove.step(function() {assert_true((event.buttons & firstButton) != 0, "The first button must still be reported pressed.");}); + test_pointermove.step(function() { + assert_true(event.buttons !== firstButton, "The pointermove event must be triggered by pressing a second button."); + }); + test_pointermove.step(function() { + assert_true((event.buttons & firstButton) != 0, "The first button must still be reported pressed."); + }); step = 2; } else if (step == 2 && event.button != -1) { // second button released - test_pointermove.step(function() {assert_true(event.buttons === firstButton, "The pointermove event must be triggered by releasing the second button.");}); + test_pointermove.step(function() { + assert_true(event.buttons === firstButton, "The pointermove event must be triggered by releasing the second button."); + }); step = 3; } } @@ -68,14 +76,13 @@ on_event(target0, "pointerup", function (event) { if (pointer_locked) { detected_pointertypes[event.pointerType] = true; - step_timeout(function() { - test_pointermove.step(function() {assert_true(step === 3, "The pointerup event must be triggered after pressing and releasing the second button.");}); - test_pointermove.step(function() {assert_true(event.buttons === 0, "The pointerup event must be triggered by releasing the last pressed button.");}); - document.exitPointerLock(); - actions_promise.then( () => { - test_pointermove.done(); - }); - }, 500); + test_pointermove.step(function() { + assert_true(step === 3, "The pointerup event must be triggered after pressing and releasing the second button."); + }); + test_pointermove.step(function() { + assert_true(event.buttons === 0, "The pointerup event must be triggered by releasing the last pressed button."); + }); + document.exitPointerLock(); } else { target0.requestPointerLock(); } @@ -83,8 +90,12 @@ on_event(document, 'pointerlockchange', function(event) { if (document.pointerLockElement == target0) pointer_locked = true; - else + else{ pointer_locked = false; + actions_promise.then( () => { + test_pointermove.done(); + }); + } }); on_event(target0, "mouseup", function (event) { event.preventDefault(); @@ -95,9 +106,16 @@ // Inject mouse input var actions = new test_driver.Actions(); - actions_promise = actions.pointerMove(0, 0, {origin: target0}) + actions_promise = actions + .pointerMove(0, 0, {origin: target0}) .pointerDown({button: actions.ButtonType.LEFT}) .pointerUp({button: actions.ButtonType.LEFT}) + .send(); + await actions_promise; + await resolveWhen(()=>pointer_locked); + actions = new test_driver.Actions(); + actions_promise = actions + .pointerMove(0, 0, {origin: target0}) .pointerDown({button: actions.ButtonType.LEFT}) .pointerDown({button: actions.ButtonType.MIDDLE}) .pointerUp({button: actions.ButtonType.MIDDLE}) diff --git a/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_mouse_pointercapture_inactivate_pointer-iframe.html b/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_mouse_pointercapture_inactivate_pointer-iframe.html new file mode 100644 index 00000000000..3c88328b004 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/resources/pointerevent_mouse_pointercapture_inactivate_pointer-iframe.html @@ -0,0 +1,3 @@ + +
    + diff --git a/tests/wpt/web-platform-tests/portals/portals-host-exposure.sub.html b/tests/wpt/web-platform-tests/portals/portals-host-exposure.sub.html index 93ee8ecdc09..fd3ac18f69d 100644 --- a/tests/wpt/web-platform-tests/portals/portals-host-exposure.sub.html +++ b/tests/wpt/web-platform-tests/portals/portals-host-exposure.sub.html @@ -1,31 +1,39 @@ + + diff --git a/tests/wpt/web-platform-tests/portals/portals-host-post-message.sub.html b/tests/wpt/web-platform-tests/portals/portals-host-post-message.sub.html index e547642c9f2..aa4893cb904 100644 --- a/tests/wpt/web-platform-tests/portals/portals-host-post-message.sub.html +++ b/tests/wpt/web-platform-tests/portals/portals-host-post-message.sub.html @@ -26,35 +26,23 @@ return waitForResponse; } - const crossOriginUrl = "http://{{hosts[alt][www]}}:{{ports[http][0]}}/portals/resources/portal-host-post-message.sub.html"; + const sameOriginUrl = "resources/portal-host-post-message.html"; + const crossOriginUrl = "http://{{hosts[alt][www]}}:{{ports[http][0]}}/portals/resources/portal-host-post-message-x-origin.html"; promise_test(async () => { - var {data, origin} = await createPortalAndLoopMessage( - "resources/portal-host-post-message.sub.html", ["test", "*"]); + var {data, origin} = await createPortalAndLoopMessage(sameOriginUrl, + ["test", "*"]); assert_equals(data, "test"); assert_equals(origin, "http://{{host}}:{{ports[http][0]}}"); }, "Message received after postMessage from portal host"); promise_test(async () => { - var {data, origin} = await createPortalAndLoopMessage( - crossOriginUrl, ["test", "*"]); - assert_equals(data, "test"); - assert_equals(origin, "http://{{hosts[alt][www]}}:{{ports[http][0]}}"); - }, "Message received after postMessage from portal host in cross-origin-portal"); - - promise_test(async () => { - var {data, origin} = await createPortalAndLoopMessage( - "resources/portal-host-post-message.sub.html", ["test"]); + var {data, origin} = await createPortalAndLoopMessage(sameOriginUrl, + ["test"]); assert_equals(data, "test"); assert_equals(origin, "http://{{host}}:{{ports[http][0]}}"); }, "Message received from same-origin portal host with no target origin specified"); - promise_test(async () => { - var {data, origin} = await createPortalAndLoopMessage( - crossOriginUrl, ["test", "http://{{host}}:{{ports[http][0]}}"]); - assert_equals(data, "test"); - }, "Message received from cross-origin portal host with target origin correctly specified"); - promise_test(async () => { var message = { prop1: "value1", @@ -64,10 +52,7 @@ prop4_1: "value4_1" } }; - var {data} = await createPortalAndLoopMessage( - "resources/portal-host-post-message.sub.html", [message]); - assert_object_equals(data, message); - var {data} = await createPortalAndLoopMessage(crossOriginUrl, + var {data} = await createPortalAndLoopMessage(sameOriginUrl, [message, "*"]); assert_object_equals(data, message); }, "postMessage with object message"); @@ -82,58 +67,39 @@ }); } - var {ports} = await createPortalAndLoopMessage( - "resources/portal-host-post-message.sub.html", - {type: "message-port"}); - await checkPort(ports[0]); - - var {ports} = await createPortalAndLoopMessage( - crossOriginUrl, - {type: "message-port"}); + var {ports} = await createPortalAndLoopMessage(sameOriginUrl, { + type: "message-port" + }); await checkPort(ports[0]); }, "postMessage with message ports"); promise_test(async () => { - var {data} = await createPortalAndLoopMessage( - "resources/portal-host-post-message.sub.html", { - type: "array-buffer-without-transfer", - array: [0, 1, 2, 3, 4] - }); - assert_array_equals([0, 1, 2, 3, 4], new Int8Array(data.arrayBuffer)); - - var {data} = await createPortalAndLoopMessage(crossOriginUrl, { - type: "array-buffer-without-transfer", - array: [0, 1, 2, 3, 4] + var {data} = await createPortalAndLoopMessage(sameOriginUrl, { + type: "array-buffer-without-transfer", + array: [0, 1, 2, 3, 4] }); assert_array_equals([0, 1, 2, 3, 4], new Int8Array(data.arrayBuffer)); }, "postMessage with array buffer without transfer"); promise_test(async () => { - var {data} = await createPortalAndLoopMessage( - "resources/portal-host-post-message.sub.html", { - type: "array-buffer-with-transfer", - array: [0, 1, 2, 3, 4] - }); - assert_array_equals([0, 1, 2, 3, 4], new Int8Array(data.arrayBuffer)); - - var {data} = await createPortalAndLoopMessage(crossOriginUrl, { - type: "array-buffer-with-transfer", - array: [0, 1, 2, 3, 4] + var {data} = await createPortalAndLoopMessage(sameOriginUrl, { + type: "array-buffer-with-transfer", + array: [0, 1, 2, 3, 4] }); assert_array_equals([0, 1, 2, 3, 4], new Int8Array(data.arrayBuffer)); }, "postMessage with array buffer with transfer"); promise_test(async () => { - var {data} = await createPortalAndLoopMessage( - "resources/portal-host-post-message.sub.html", - {type: "invalid-message"}); + var {data} = await createPortalAndLoopMessage(sameOriginUrl, { + type: "invalid-message" + }); assert_equals(data.errorType, "DataCloneError"); }, "postMessage should throw error when serialization fails"); promise_test(async () => { - var {data} = await createPortalAndLoopMessage( - "resources/portal-host-post-message.sub.html", - {type: "invalid-port"}); + var {data} = await createPortalAndLoopMessage(sameOriginUrl,{ + type: "invalid-port" + }); assert_equals(data.errorType, "TypeError"); }, "postMessage with invalid transferable should throw error"); @@ -166,18 +132,14 @@ return waitForMessages; }, "postMessage before and after portal navigation should work"); - async_test(t => { - createPortalAndLoopMessage("resources/portal-host-post-message.sub.html", - ["test", "http://{{hosts[alt][www]}}:{{ports[http][0]}}"]) - .then(t.step_func(() => { assert_unreached("message delivered"); })); - t.step_timeout(t.done, 2000); - }, "Message should not be received from portal host with target set to different origin"); + const TIMEOUT_DURATION_MS = 1000; - async_test(t => { - createPortalAndLoopMessage(crossOriginUrl, ["test"]).then(t.step_func(() => { - assert_unreached("message delivered"); - })); - t.step_timeout(t.done, 2000); - }, "Message should not be received cross origin-portal host with no target origin set"); + promise_test(t => new Promise((resolve, reject) => { + const portal = document.createElement('portal'); + portal.src = crossOriginUrl; + portal.onmessage = () => reject('should not have received message'); + document.body.appendChild(portal); + t.step_timeout(resolve, TIMEOUT_DURATION_MS); + }), "postMessage from portal host in cross-origin-portal should be blocked"); diff --git a/tests/wpt/web-platform-tests/portals/portals-post-message.sub.html b/tests/wpt/web-platform-tests/portals/portals-post-message.sub.html index 2f6b25d97da..19803f68696 100644 --- a/tests/wpt/web-platform-tests/portals/portals-post-message.sub.html +++ b/tests/wpt/web-platform-tests/portals/portals-post-message.sub.html @@ -5,11 +5,13 @@ + + diff --git a/tests/wpt/web-platform-tests/portals/resources/portal-host-cross-origin-navigate.sub.html b/tests/wpt/web-platform-tests/portals/resources/portal-host-cross-origin-navigate.sub.html index ce7aaf84648..26f655a0dbf 100644 --- a/tests/wpt/web-platform-tests/portals/resources/portal-host-cross-origin-navigate.sub.html +++ b/tests/wpt/web-platform-tests/portals/resources/portal-host-cross-origin-navigate.sub.html @@ -1,7 +1,7 @@ diff --git a/tests/wpt/web-platform-tests/portals/resources/portal-host-post-message-x-origin.html b/tests/wpt/web-platform-tests/portals/resources/portal-host-post-message-x-origin.html new file mode 100644 index 00000000000..eb390e8b539 --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/resources/portal-host-post-message-x-origin.html @@ -0,0 +1,4 @@ + + diff --git a/tests/wpt/web-platform-tests/portals/resources/portal-host-post-message.sub.html b/tests/wpt/web-platform-tests/portals/resources/portal-host-post-message.html similarity index 100% rename from tests/wpt/web-platform-tests/portals/resources/portal-host-post-message.sub.html rename to tests/wpt/web-platform-tests/portals/resources/portal-host-post-message.html diff --git a/tests/wpt/web-platform-tests/portals/resources/portal-host.html b/tests/wpt/web-platform-tests/portals/resources/portal-host.html index 3a407d8c325..e5772082364 100644 --- a/tests/wpt/web-platform-tests/portals/resources/portal-host.html +++ b/tests/wpt/web-platform-tests/portals/resources/portal-host.html @@ -1,7 +1,11 @@ + diff --git a/tests/wpt/web-platform-tests/portals/resources/portal-post-message-x-origin-portal.html b/tests/wpt/web-platform-tests/portals/resources/portal-post-message-x-origin-portal.html new file mode 100644 index 00000000000..57631f385c1 --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/resources/portal-post-message-x-origin-portal.html @@ -0,0 +1,11 @@ + + + diff --git a/tests/wpt/web-platform-tests/portals/resources/stash-utils.sub.js b/tests/wpt/web-platform-tests/portals/resources/stash-utils.sub.js new file mode 100644 index 00000000000..30efe836331 --- /dev/null +++ b/tests/wpt/web-platform-tests/portals/resources/stash-utils.sub.js @@ -0,0 +1,43 @@ +const STASH_RESPONDER = "wss://{{host}}:{{ports[wss][0]}}/stash_responder_blocking"; + +class StashUtils { + /** + * Sends a request to store (|key|, |tuple|) in Stash + * (https://web-platform-tests.org/tools/wptserve/docs/stash.html). + * @param {string} key A UUID that acts as a key that can be used to retrieve |value| later. + * @param {string} value Value to be stored in Stash. + * @returns {Promise} Promise that resolves once the server responds. + */ + static putValue(key, value) { + return new Promise(resolve => { + const ws = new WebSocket(STASH_RESPONDER); + ws.onopen = () => { + ws.send(JSON.stringify({action: 'set', key: key, value: value})); + }; + ws.onmessage = e => { + ws.close(); + resolve(); + }; + }); + } + + /** + * Retrieves value associated with |key| in Stash. If no value has been + * associated with |key| yet, the method waits for putValue to be called with + * |key|, and a value to be associated, before resolving the return promise. + * @param {string} key A UUID that uniquely identifies the value to retrieve. + * @returns {Promise} A promise that resolves with the value associated with |key|. + */ + static takeValue(key) { + return new Promise(resolve => { + const ws = new WebSocket(STASH_RESPONDER); + ws.onopen = () => { + ws.send(JSON.stringify({action: 'get', key: key})); + }; + ws.onmessage = e => { + ws.close(); + resolve(JSON.parse(e.data).value); + }; + }); + } +} diff --git a/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload-style.html b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload-style.html new file mode 100644 index 00000000000..29971383409 --- /dev/null +++ b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload-style.html @@ -0,0 +1,15 @@ + + + + + + + diff --git a/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload.html b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload.html index a1b19c81c67..6b9b577b89c 100644 --- a/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload.html +++ b/tests/wpt/web-platform-tests/preload/avoid-delaying-onload-link-preload.html @@ -9,7 +9,7 @@ diff --git a/tests/wpt/web-platform-tests/raw-sockets/META.yml b/tests/wpt/web-platform-tests/raw-sockets/META.yml new file mode 100644 index 00000000000..d424a0af6ec --- /dev/null +++ b/tests/wpt/web-platform-tests/raw-sockets/META.yml @@ -0,0 +1,5 @@ +spec: https://github.com/WICG/raw-sockets/blob/master/docs/explainer.md +suggested_reviewers: + - ewilligers + - mgiuca + - phoglenix diff --git a/tests/wpt/web-platform-tests/raw-sockets/README.md b/tests/wpt/web-platform-tests/raw-sockets/README.md new file mode 100644 index 00000000000..bcebe03c8f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/raw-sockets/README.md @@ -0,0 +1,2 @@ +These tests are for the TCP and UDP sockets API proposed in +https://github.com/WICG/raw-sockets/blob/master/docs/explainer.md diff --git a/tests/wpt/web-platform-tests/raw-sockets/open-consume-activation.https.html b/tests/wpt/web-platform-tests/raw-sockets/open-consume-activation.https.html new file mode 100644 index 00000000000..f6dda4488ba --- /dev/null +++ b/tests/wpt/web-platform-tests/raw-sockets/open-consume-activation.https.html @@ -0,0 +1,58 @@ + + + + + Sockets test: consume user activation + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/raw-sockets/open-securecontext.http.html b/tests/wpt/web-platform-tests/raw-sockets/open-securecontext.http.html new file mode 100644 index 00000000000..371f13781a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/raw-sockets/open-securecontext.http.html @@ -0,0 +1,21 @@ + + + + + Sockets test: Open from non-secure context + + + + + + + + diff --git a/tests/wpt/web-platform-tests/raw-sockets/open-without-user-gesture.https.html b/tests/wpt/web-platform-tests/raw-sockets/open-without-user-gesture.https.html new file mode 100644 index 00000000000..ed9a9e0d2c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/raw-sockets/open-without-user-gesture.https.html @@ -0,0 +1,26 @@ + + + + + Sockets test: open without user gesture fails + + + + + + + diff --git a/tests/wpt/web-platform-tests/raw-sockets/remotePort-required.https.html b/tests/wpt/web-platform-tests/raw-sockets/remotePort-required.https.html new file mode 100644 index 00000000000..6d738da845a --- /dev/null +++ b/tests/wpt/web-platform-tests/raw-sockets/remotePort-required.https.html @@ -0,0 +1,67 @@ + + + + + Sockets test: open without remotePort + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_nested_dedicated_worker.worker.js b/tests/wpt/web-platform-tests/resource-timing/resource_nested_dedicated_worker.worker.js index fc793075bba..2c9f5f95428 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_nested_dedicated_worker.worker.js +++ b/tests/wpt/web-platform-tests/resource-timing/resource_nested_dedicated_worker.worker.js @@ -1,6 +1,6 @@ importScripts("/resources/testharness.js"); -async_test(async function() { +async_test(function() { const worker = new Worker('resources/worker_with_images.js'); worker.onmessage = this.step_func_done((event) => { const childNumEntries = event.data; @@ -14,4 +14,4 @@ async_test(async function() { worker.terminate(); }); }, "Resource timing for nested dedicated workers"); -done(); \ No newline at end of file +done(); diff --git a/tests/wpt/web-platform-tests/resources/chromium/README.md b/tests/wpt/web-platform-tests/resources/chromium/README.md index b53c6a8c423..ec953033f9b 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/README.md +++ b/tests/wpt/web-platform-tests/resources/chromium/README.md @@ -1,4 +1,7 @@ -This directory contains Chromium-specific test resources. +This directory contains Chromium-specific test resources, including mocks for +test-only APIs implemented with +[MojoJS](https://chromium.googlesource.com/chromium/src/+/master/mojo/public/js/README.md). -The files `mojo_bindings.js` and `*.mojom.js` are manually copied from the -Chromium build process's generated files and should not be edited manually. +Please do **not** copy `*.mojom.js` into this directory. Follow this doc if you +want to add new MojoJS-backed mocks: +https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md#mojojs diff --git a/tests/wpt/web-platform-tests/resources/chromium/image_capture-mojom.js.headers b/tests/wpt/web-platform-tests/resources/chromium/image_capture-mojom.js.headers deleted file mode 100644 index 6c61a34a4ec..00000000000 --- a/tests/wpt/web-platform-tests/resources/chromium/image_capture-mojom.js.headers +++ /dev/null @@ -1 +0,0 @@ -Content-Type: text/javascript; charset=utf-8 \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js b/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js deleted file mode 100644 index f145d7a3402..00000000000 --- a/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js +++ /dev/null @@ -1,1403 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -(function() { - var mojomId = 'media/capture/mojom/image_capture.mojom'; - if (mojo.internal.isMojomLoaded(mojomId)) { - console.warn('The following mojom is loaded multiple times: ' + mojomId); - return; - } - mojo.internal.markMojomLoaded(mojomId); - var bindings = mojo; - var associatedBindings = mojo; - var codec = mojo.internal; - var validator = mojo.internal; - - var exports = mojo.internal.exposeNamespace('media.mojom'); - - - var MeteringMode = {}; - MeteringMode.NONE = 0; - MeteringMode.MANUAL = MeteringMode.NONE + 1; - MeteringMode.SINGLE_SHOT = MeteringMode.MANUAL + 1; - MeteringMode.CONTINUOUS = MeteringMode.SINGLE_SHOT + 1; - MeteringMode.MIN_VALUE = 0, - MeteringMode.MAX_VALUE = 3, - - MeteringMode.isKnownEnumValue = function(value) { - switch (value) { - case 0: - case 1: - case 2: - case 3: - return true; - } - return false; - }; - - MeteringMode.validate = function(enumValue) { - var isExtensible = false; - if (isExtensible || this.isKnownEnumValue(enumValue)) - return validator.validationError.NONE; - - return validator.validationError.UNKNOWN_ENUM_VALUE; - }; - var RedEyeReduction = {}; - RedEyeReduction.NEVER = 0; - RedEyeReduction.ALWAYS = RedEyeReduction.NEVER + 1; - RedEyeReduction.CONTROLLABLE = RedEyeReduction.ALWAYS + 1; - RedEyeReduction.MIN_VALUE = 0, - RedEyeReduction.MAX_VALUE = 2, - - RedEyeReduction.isKnownEnumValue = function(value) { - switch (value) { - case 0: - case 1: - case 2: - return true; - } - return false; - }; - - RedEyeReduction.validate = function(enumValue) { - var isExtensible = false; - if (isExtensible || this.isKnownEnumValue(enumValue)) - return validator.validationError.NONE; - - return validator.validationError.UNKNOWN_ENUM_VALUE; - }; - var FillLightMode = {}; - FillLightMode.OFF = 0; - FillLightMode.AUTO = FillLightMode.OFF + 1; - FillLightMode.FLASH = FillLightMode.AUTO + 1; - FillLightMode.MIN_VALUE = 0, - FillLightMode.MAX_VALUE = 2, - - FillLightMode.isKnownEnumValue = function(value) { - switch (value) { - case 0: - case 1: - case 2: - return true; - } - return false; - }; - - FillLightMode.validate = function(enumValue) { - var isExtensible = false; - if (isExtensible || this.isKnownEnumValue(enumValue)) - return validator.validationError.NONE; - - return validator.validationError.UNKNOWN_ENUM_VALUE; - }; - - function Range(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - Range.prototype.initDefaults_ = function() { - this.max = 0; - this.min = 0; - this.current = 0; - this.step = 0; - }; - Range.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - Range.validate = function(messageValidator, offset) { - var err; - err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize); - if (err !== validator.validationError.NONE) - return err; - - var kVersionSizes = [ - {version: 0, numBytes: 40} - ]; - err = messageValidator.validateStructVersion(offset, kVersionSizes); - if (err !== validator.validationError.NONE) - return err; - - - - - - return validator.validationError.NONE; - }; - - Range.encodedSize = codec.kStructHeaderSize + 32; - - Range.decode = function(decoder) { - var packed; - var val = new Range(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - val.max = decoder.decodeStruct(codec.Double); - val.min = decoder.decodeStruct(codec.Double); - val.current = decoder.decodeStruct(codec.Double); - val.step = decoder.decodeStruct(codec.Double); - return val; - }; - - Range.encode = function(encoder, val) { - var packed; - encoder.writeUint32(Range.encodedSize); - encoder.writeUint32(0); - encoder.encodeStruct(codec.Double, val.max); - encoder.encodeStruct(codec.Double, val.min); - encoder.encodeStruct(codec.Double, val.current); - encoder.encodeStruct(codec.Double, val.step); - }; - function PhotoState(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - PhotoState.prototype.initDefaults_ = function() { - this.supportedWhiteBalanceModes = null; - this.currentWhiteBalanceMode = 0; - this.currentExposureMode = 0; - this.supportedExposureModes = null; - this.supportedFocusModes = null; - this.currentFocusMode = 0; - this.supportsTorch = false; - this.torch = false; - this.pointsOfInterest = null; - this.exposureCompensation = null; - this.exposureTime = null; - this.colorTemperature = null; - this.iso = null; - this.brightness = null; - this.contrast = null; - this.saturation = null; - this.sharpness = null; - this.focusDistance = null; - this.pan = null; - this.tilt = null; - this.zoom = null; - this.redEyeReduction = 0; - this.height = null; - this.width = null; - this.fillLightMode = null; - }; - PhotoState.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - PhotoState.validate = function(messageValidator, offset) { - var err; - err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize); - if (err !== validator.validationError.NONE) - return err; - - var kVersionSizes = [ - {version: 0, numBytes: 184} - ]; - err = messageValidator.validateStructVersion(offset, kVersionSizes); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.supportedWhiteBalanceModes - err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 0, 4, new codec.Enum(MeteringMode), false, [0], 0); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.currentWhiteBalanceMode - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 8, MeteringMode); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.supportedExposureModes - err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 16, 4, new codec.Enum(MeteringMode), false, [0], 0); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.currentExposureMode - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 12, MeteringMode); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.supportedFocusModes - err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 24, 4, new codec.Enum(MeteringMode), false, [0], 0); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.currentFocusMode - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 32, MeteringMode); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.pointsOfInterest - err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 40, 8, new codec.PointerTo(Point2D), false, [0], 0); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.exposureCompensation - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 48, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.exposureTime - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 56, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.colorTemperature - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 64, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.iso - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 72, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.brightness - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 80, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.contrast - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 88, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.saturation - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 96, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.sharpness - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 104, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.focusDistance - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 112, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.pan - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 120, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.tilt - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 128, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.zoom - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 136, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - - - // validate PhotoState.redEyeReduction - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 144, RedEyeReduction); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.height - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 152, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.width - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 160, Range, false); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoState.fillLightMode - err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 168, 4, new codec.Enum(FillLightMode), false, [0], 0); - if (err !== validator.validationError.NONE) - return err; - - return validator.validationError.NONE; - }; - - PhotoState.encodedSize = codec.kStructHeaderSize + 176; - - PhotoState.decode = function(decoder) { - var packed; - var val = new PhotoState(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - val.supportedWhiteBalanceModes = decoder.decodeArrayPointer(new codec.Enum(MeteringMode)); - val.currentWhiteBalanceMode = decoder.decodeStruct(codec.Int32); - val.currentExposureMode = decoder.decodeStruct(codec.Int32); - val.supportedExposureModes = decoder.decodeArrayPointer(new codec.Enum(MeteringMode)); - val.supportedFocusModes = decoder.decodeArrayPointer(new codec.Enum(MeteringMode)); - val.currentFocusMode = decoder.decodeStruct(codec.Int32); - packed = decoder.readUint8(); - val.supportsTorch = (packed >> 0) & 1 ? true : false; - val.torch = (packed >> 1) & 1 ? true : false; - decoder.skip(1); - decoder.skip(1); - decoder.skip(1); - val.pointsOfInterest = decoder.decodeArrayPointer(new codec.PointerTo(Point2D)); - val.exposureCompensation = decoder.decodeStructPointer(Range); - val.exposureTime = decoder.decodeStructPointer(Range); - val.colorTemperature = decoder.decodeStructPointer(Range); - val.iso = decoder.decodeStructPointer(Range); - val.brightness = decoder.decodeStructPointer(Range); - val.contrast = decoder.decodeStructPointer(Range); - val.saturation = decoder.decodeStructPointer(Range); - val.sharpness = decoder.decodeStructPointer(Range); - val.focusDistance = decoder.decodeStructPointer(Range); - val.pan = decoder.decodeStructPointer(Range); - val.tilt = decoder.decodeStructPointer(Range); - val.zoom = decoder.decodeStructPointer(Range); - val.redEyeReduction = decoder.decodeStruct(codec.Int32); - decoder.skip(1); - decoder.skip(1); - decoder.skip(1); - decoder.skip(1); - val.height = decoder.decodeStructPointer(Range); - val.width = decoder.decodeStructPointer(Range); - val.fillLightMode = decoder.decodeArrayPointer(new codec.Enum(FillLightMode)); - return val; - }; - - PhotoState.encode = function(encoder, val) { - var packed; - encoder.writeUint32(PhotoState.encodedSize); - encoder.writeUint32(0); - encoder.encodeArrayPointer(new codec.Enum(MeteringMode), val.supportedWhiteBalanceModes); - encoder.encodeStruct(codec.Int32, val.currentWhiteBalanceMode); - encoder.encodeStruct(codec.Int32, val.currentExposureMode); - encoder.encodeArrayPointer(new codec.Enum(MeteringMode), val.supportedExposureModes); - encoder.encodeArrayPointer(new codec.Enum(MeteringMode), val.supportedFocusModes); - encoder.encodeStruct(codec.Int32, val.currentFocusMode); - packed = 0; - packed |= (val.supportsTorch & 1) << 0 - packed |= (val.torch & 1) << 1 - encoder.writeUint8(packed); - encoder.skip(1); - encoder.skip(1); - encoder.skip(1); - encoder.encodeArrayPointer(new codec.PointerTo(Point2D), val.pointsOfInterest); - encoder.encodeStructPointer(Range, val.exposureCompensation); - encoder.encodeStructPointer(Range, val.exposureTime); - encoder.encodeStructPointer(Range, val.colorTemperature); - encoder.encodeStructPointer(Range, val.iso); - encoder.encodeStructPointer(Range, val.brightness); - encoder.encodeStructPointer(Range, val.contrast); - encoder.encodeStructPointer(Range, val.saturation); - encoder.encodeStructPointer(Range, val.sharpness); - encoder.encodeStructPointer(Range, val.focusDistance); - encoder.encodeStructPointer(Range, val.pan); - encoder.encodeStructPointer(Range, val.tilt); - encoder.encodeStructPointer(Range, val.zoom); - encoder.encodeStruct(codec.Int32, val.redEyeReduction); - encoder.skip(1); - encoder.skip(1); - encoder.skip(1); - encoder.skip(1); - encoder.encodeStructPointer(Range, val.height); - encoder.encodeStructPointer(Range, val.width); - encoder.encodeArrayPointer(new codec.Enum(FillLightMode), val.fillLightMode); - }; - function Point2D(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - Point2D.prototype.initDefaults_ = function() { - this.x = 0; - this.y = 0; - }; - Point2D.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - Point2D.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; - - - - return validator.validationError.NONE; - }; - - Point2D.encodedSize = codec.kStructHeaderSize + 16; - - Point2D.decode = function(decoder) { - var packed; - var val = new Point2D(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - val.x = decoder.decodeStruct(codec.Double); - val.y = decoder.decodeStruct(codec.Double); - return val; - }; - - Point2D.encode = function(encoder, val) { - var packed; - encoder.writeUint32(Point2D.encodedSize); - encoder.writeUint32(0); - encoder.encodeStruct(codec.Double, val.x); - encoder.encodeStruct(codec.Double, val.y); - }; - function PhotoSettings(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - PhotoSettings.prototype.initDefaults_ = function() { - this.hasWhiteBalanceMode = false; - this.hasExposureMode = false; - this.hasFocusMode = false; - this.hasExposureCompensation = false; - this.hasExposureTime = false; - this.hasColorTemperature = false; - this.hasIso = false; - this.hasBrightness = false; - this.hasContrast = false; - this.hasSaturation = false; - this.hasSharpness = false; - this.hasFocusDistance = false; - this.hasPan = false; - this.hasTilt = false; - this.hasZoom = false; - this.hasTorch = false; - this.torch = false; - this.hasFillLightMode = false; - this.hasWidth = false; - this.hasHeight = false; - this.hasRedEyeReduction = false; - this.redEyeReduction = false; - this.whiteBalanceMode = 0; - this.exposureMode = 0; - this.focusMode = 0; - this.pointsOfInterest = null; - this.exposureCompensation = 0; - this.exposureTime = 0; - this.colorTemperature = 0; - this.iso = 0; - this.brightness = 0; - this.contrast = 0; - this.saturation = 0; - this.sharpness = 0; - this.focusDistance = 0; - this.pan = 0; - this.tilt = 0; - this.zoom = 0; - this.fillLightMode = 0; - this.width = 0; - this.height = 0; - }; - PhotoSettings.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - PhotoSettings.validate = function(messageValidator, offset) { - var err; - err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize); - if (err !== validator.validationError.NONE) - return err; - - var kVersionSizes = [ - {version: 0, numBytes: 152} - ]; - err = messageValidator.validateStructVersion(offset, kVersionSizes); - if (err !== validator.validationError.NONE) - return err; - - - - // validate PhotoSettings.whiteBalanceMode - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 4, MeteringMode); - if (err !== validator.validationError.NONE) - return err; - - - - // validate PhotoSettings.exposureMode - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 8, MeteringMode); - if (err !== validator.validationError.NONE) - return err; - - - - // validate PhotoSettings.focusMode - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 12, MeteringMode); - if (err !== validator.validationError.NONE) - return err; - - - // validate PhotoSettings.pointsOfInterest - err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 16, 8, new codec.PointerTo(Point2D), false, [0], 0); - if (err !== validator.validationError.NONE) - return err; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // validate PhotoSettings.fillLightMode - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 120, FillLightMode); - if (err !== validator.validationError.NONE) - return err; - - - - - - - - return validator.validationError.NONE; - }; - - PhotoSettings.encodedSize = codec.kStructHeaderSize + 144; - - PhotoSettings.decode = function(decoder) { - var packed; - var val = new PhotoSettings(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - packed = decoder.readUint8(); - val.hasWhiteBalanceMode = (packed >> 0) & 1 ? true : false; - val.hasExposureMode = (packed >> 1) & 1 ? true : false; - val.hasFocusMode = (packed >> 2) & 1 ? true : false; - val.hasExposureCompensation = (packed >> 3) & 1 ? true : false; - val.hasExposureTime = (packed >> 4) & 1 ? true : false; - val.hasColorTemperature = (packed >> 5) & 1 ? true : false; - val.hasIso = (packed >> 6) & 1 ? true : false; - val.hasBrightness = (packed >> 7) & 1 ? true : false; - packed = decoder.readUint8(); - val.hasContrast = (packed >> 0) & 1 ? true : false; - val.hasSaturation = (packed >> 1) & 1 ? true : false; - val.hasSharpness = (packed >> 2) & 1 ? true : false; - val.hasFocusDistance = (packed >> 3) & 1 ? true : false; - val.hasPan = (packed >> 4) & 1 ? true : false; - val.hasTilt = (packed >> 5) & 1 ? true : false; - val.hasZoom = (packed >> 6) & 1 ? true : false; - val.hasTorch = (packed >> 7) & 1 ? true : false; - packed = decoder.readUint8(); - val.torch = (packed >> 0) & 1 ? true : false; - val.hasFillLightMode = (packed >> 1) & 1 ? true : false; - val.hasWidth = (packed >> 2) & 1 ? true : false; - val.hasHeight = (packed >> 3) & 1 ? true : false; - val.hasRedEyeReduction = (packed >> 4) & 1 ? true : false; - val.redEyeReduction = (packed >> 5) & 1 ? true : false; - decoder.skip(1); - val.whiteBalanceMode = decoder.decodeStruct(codec.Int32); - val.exposureMode = decoder.decodeStruct(codec.Int32); - val.focusMode = decoder.decodeStruct(codec.Int32); - val.pointsOfInterest = decoder.decodeArrayPointer(new codec.PointerTo(Point2D)); - val.exposureCompensation = decoder.decodeStruct(codec.Double); - val.exposureTime = decoder.decodeStruct(codec.Double); - val.colorTemperature = decoder.decodeStruct(codec.Double); - val.iso = decoder.decodeStruct(codec.Double); - val.brightness = decoder.decodeStruct(codec.Double); - val.contrast = decoder.decodeStruct(codec.Double); - val.saturation = decoder.decodeStruct(codec.Double); - val.sharpness = decoder.decodeStruct(codec.Double); - val.focusDistance = decoder.decodeStruct(codec.Double); - val.pan = decoder.decodeStruct(codec.Double); - val.tilt = decoder.decodeStruct(codec.Double); - val.zoom = decoder.decodeStruct(codec.Double); - val.fillLightMode = decoder.decodeStruct(codec.Int32); - decoder.skip(1); - decoder.skip(1); - decoder.skip(1); - decoder.skip(1); - val.width = decoder.decodeStruct(codec.Double); - val.height = decoder.decodeStruct(codec.Double); - return val; - }; - - PhotoSettings.encode = function(encoder, val) { - var packed; - encoder.writeUint32(PhotoSettings.encodedSize); - encoder.writeUint32(0); - packed = 0; - packed |= (val.hasWhiteBalanceMode & 1) << 0 - packed |= (val.hasExposureMode & 1) << 1 - packed |= (val.hasFocusMode & 1) << 2 - packed |= (val.hasExposureCompensation & 1) << 3 - packed |= (val.hasExposureTime & 1) << 4 - packed |= (val.hasColorTemperature & 1) << 5 - packed |= (val.hasIso & 1) << 6 - packed |= (val.hasBrightness & 1) << 7 - encoder.writeUint8(packed); - packed = 0; - packed |= (val.hasContrast & 1) << 0 - packed |= (val.hasSaturation & 1) << 1 - packed |= (val.hasSharpness & 1) << 2 - packed |= (val.hasFocusDistance & 1) << 3 - packed |= (val.hasPan & 1) << 4 - packed |= (val.hasTilt & 1) << 5 - packed |= (val.hasZoom & 1) << 6 - packed |= (val.hasTorch & 1) << 7 - encoder.writeUint8(packed); - packed = 0; - packed |= (val.torch & 1) << 0 - packed |= (val.hasFillLightMode & 1) << 1 - packed |= (val.hasWidth & 1) << 2 - packed |= (val.hasHeight & 1) << 3 - packed |= (val.hasRedEyeReduction & 1) << 4 - packed |= (val.redEyeReduction & 1) << 5 - encoder.writeUint8(packed); - encoder.skip(1); - encoder.encodeStruct(codec.Int32, val.whiteBalanceMode); - encoder.encodeStruct(codec.Int32, val.exposureMode); - encoder.encodeStruct(codec.Int32, val.focusMode); - encoder.encodeArrayPointer(new codec.PointerTo(Point2D), val.pointsOfInterest); - encoder.encodeStruct(codec.Double, val.exposureCompensation); - encoder.encodeStruct(codec.Double, val.exposureTime); - encoder.encodeStruct(codec.Double, val.colorTemperature); - encoder.encodeStruct(codec.Double, val.iso); - encoder.encodeStruct(codec.Double, val.brightness); - encoder.encodeStruct(codec.Double, val.contrast); - encoder.encodeStruct(codec.Double, val.saturation); - encoder.encodeStruct(codec.Double, val.sharpness); - encoder.encodeStruct(codec.Double, val.focusDistance); - encoder.encodeStruct(codec.Double, val.pan); - encoder.encodeStruct(codec.Double, val.tilt); - encoder.encodeStruct(codec.Double, val.zoom); - encoder.encodeStruct(codec.Int32, val.fillLightMode); - encoder.skip(1); - encoder.skip(1); - encoder.skip(1); - encoder.skip(1); - encoder.encodeStruct(codec.Double, val.width); - encoder.encodeStruct(codec.Double, val.height); - }; - function Blob(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - Blob.prototype.initDefaults_ = function() { - this.mimeType = null; - this.data = null; - }; - Blob.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - Blob.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 Blob.mimeType - err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 0, false) - if (err !== validator.validationError.NONE) - return err; - - - // validate Blob.data - err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 8, 1, codec.Uint8, false, [0], 0); - if (err !== validator.validationError.NONE) - return err; - - return validator.validationError.NONE; - }; - - Blob.encodedSize = codec.kStructHeaderSize + 16; - - Blob.decode = function(decoder) { - var packed; - var val = new Blob(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - val.mimeType = decoder.decodeStruct(codec.String); - val.data = decoder.decodeArrayPointer(codec.Uint8); - return val; - }; - - Blob.encode = function(encoder, val) { - var packed; - encoder.writeUint32(Blob.encodedSize); - encoder.writeUint32(0); - encoder.encodeStruct(codec.String, val.mimeType); - encoder.encodeArrayPointer(codec.Uint8, val.data); - }; - function ImageCapture_GetPhotoState_Params(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - ImageCapture_GetPhotoState_Params.prototype.initDefaults_ = function() { - this.sourceId = null; - }; - ImageCapture_GetPhotoState_Params.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - ImageCapture_GetPhotoState_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: 16} - ]; - err = messageValidator.validateStructVersion(offset, kVersionSizes); - if (err !== validator.validationError.NONE) - return err; - - - // validate ImageCapture_GetPhotoState_Params.sourceId - err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 0, false) - if (err !== validator.validationError.NONE) - return err; - - return validator.validationError.NONE; - }; - - ImageCapture_GetPhotoState_Params.encodedSize = codec.kStructHeaderSize + 8; - - ImageCapture_GetPhotoState_Params.decode = function(decoder) { - var packed; - var val = new ImageCapture_GetPhotoState_Params(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - val.sourceId = decoder.decodeStruct(codec.String); - return val; - }; - - ImageCapture_GetPhotoState_Params.encode = function(encoder, val) { - var packed; - encoder.writeUint32(ImageCapture_GetPhotoState_Params.encodedSize); - encoder.writeUint32(0); - encoder.encodeStruct(codec.String, val.sourceId); - }; - function ImageCapture_GetPhotoState_ResponseParams(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - ImageCapture_GetPhotoState_ResponseParams.prototype.initDefaults_ = function() { - this.state = null; - }; - ImageCapture_GetPhotoState_ResponseParams.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - ImageCapture_GetPhotoState_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; - - - // validate ImageCapture_GetPhotoState_ResponseParams.state - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 0, PhotoState, false); - if (err !== validator.validationError.NONE) - return err; - - return validator.validationError.NONE; - }; - - ImageCapture_GetPhotoState_ResponseParams.encodedSize = codec.kStructHeaderSize + 8; - - ImageCapture_GetPhotoState_ResponseParams.decode = function(decoder) { - var packed; - var val = new ImageCapture_GetPhotoState_ResponseParams(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - val.state = decoder.decodeStructPointer(PhotoState); - return val; - }; - - ImageCapture_GetPhotoState_ResponseParams.encode = function(encoder, val) { - var packed; - encoder.writeUint32(ImageCapture_GetPhotoState_ResponseParams.encodedSize); - encoder.writeUint32(0); - encoder.encodeStructPointer(PhotoState, val.state); - }; - function ImageCapture_SetOptions_Params(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - ImageCapture_SetOptions_Params.prototype.initDefaults_ = function() { - this.sourceId = null; - this.settings = null; - }; - ImageCapture_SetOptions_Params.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - ImageCapture_SetOptions_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 ImageCapture_SetOptions_Params.sourceId - err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 0, false) - if (err !== validator.validationError.NONE) - return err; - - - // validate ImageCapture_SetOptions_Params.settings - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 8, PhotoSettings, false); - if (err !== validator.validationError.NONE) - return err; - - return validator.validationError.NONE; - }; - - ImageCapture_SetOptions_Params.encodedSize = codec.kStructHeaderSize + 16; - - ImageCapture_SetOptions_Params.decode = function(decoder) { - var packed; - var val = new ImageCapture_SetOptions_Params(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - val.sourceId = decoder.decodeStruct(codec.String); - val.settings = decoder.decodeStructPointer(PhotoSettings); - return val; - }; - - ImageCapture_SetOptions_Params.encode = function(encoder, val) { - var packed; - encoder.writeUint32(ImageCapture_SetOptions_Params.encodedSize); - encoder.writeUint32(0); - encoder.encodeStruct(codec.String, val.sourceId); - encoder.encodeStructPointer(PhotoSettings, val.settings); - }; - function ImageCapture_SetOptions_ResponseParams(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - ImageCapture_SetOptions_ResponseParams.prototype.initDefaults_ = function() { - this.success = false; - }; - ImageCapture_SetOptions_ResponseParams.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - ImageCapture_SetOptions_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; - }; - - ImageCapture_SetOptions_ResponseParams.encodedSize = codec.kStructHeaderSize + 8; - - ImageCapture_SetOptions_ResponseParams.decode = function(decoder) { - var packed; - var val = new ImageCapture_SetOptions_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; - }; - - ImageCapture_SetOptions_ResponseParams.encode = function(encoder, val) { - var packed; - encoder.writeUint32(ImageCapture_SetOptions_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 ImageCapture_TakePhoto_Params(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - ImageCapture_TakePhoto_Params.prototype.initDefaults_ = function() { - this.sourceId = null; - }; - ImageCapture_TakePhoto_Params.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - ImageCapture_TakePhoto_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: 16} - ]; - err = messageValidator.validateStructVersion(offset, kVersionSizes); - if (err !== validator.validationError.NONE) - return err; - - - // validate ImageCapture_TakePhoto_Params.sourceId - err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 0, false) - if (err !== validator.validationError.NONE) - return err; - - return validator.validationError.NONE; - }; - - ImageCapture_TakePhoto_Params.encodedSize = codec.kStructHeaderSize + 8; - - ImageCapture_TakePhoto_Params.decode = function(decoder) { - var packed; - var val = new ImageCapture_TakePhoto_Params(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - val.sourceId = decoder.decodeStruct(codec.String); - return val; - }; - - ImageCapture_TakePhoto_Params.encode = function(encoder, val) { - var packed; - encoder.writeUint32(ImageCapture_TakePhoto_Params.encodedSize); - encoder.writeUint32(0); - encoder.encodeStruct(codec.String, val.sourceId); - }; - function ImageCapture_TakePhoto_ResponseParams(values) { - this.initDefaults_(); - this.initFields_(values); - } - - - ImageCapture_TakePhoto_ResponseParams.prototype.initDefaults_ = function() { - this.blob = null; - }; - ImageCapture_TakePhoto_ResponseParams.prototype.initFields_ = function(fields) { - for(var field in fields) { - if (this.hasOwnProperty(field)) - this[field] = fields[field]; - } - }; - - ImageCapture_TakePhoto_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; - - - // validate ImageCapture_TakePhoto_ResponseParams.blob - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 0, Blob, false); - if (err !== validator.validationError.NONE) - return err; - - return validator.validationError.NONE; - }; - - ImageCapture_TakePhoto_ResponseParams.encodedSize = codec.kStructHeaderSize + 8; - - ImageCapture_TakePhoto_ResponseParams.decode = function(decoder) { - var packed; - var val = new ImageCapture_TakePhoto_ResponseParams(); - var numberOfBytes = decoder.readUint32(); - var version = decoder.readUint32(); - val.blob = decoder.decodeStructPointer(Blob); - return val; - }; - - ImageCapture_TakePhoto_ResponseParams.encode = function(encoder, val) { - var packed; - encoder.writeUint32(ImageCapture_TakePhoto_ResponseParams.encodedSize); - encoder.writeUint32(0); - encoder.encodeStructPointer(Blob, val.blob); - }; - var kImageCapture_GetPhotoState_Name = 0; - var kImageCapture_SetOptions_Name = 1; - var kImageCapture_TakePhoto_Name = 2; - - function ImageCapturePtr(handleOrPtrInfo) { - this.ptr = new bindings.InterfacePtrController(ImageCapture, - handleOrPtrInfo); - } - - function ImageCaptureAssociatedPtr(associatedInterfacePtrInfo) { - this.ptr = new associatedBindings.AssociatedInterfacePtrController( - ImageCapture, associatedInterfacePtrInfo); - } - - ImageCaptureAssociatedPtr.prototype = - Object.create(ImageCapturePtr.prototype); - ImageCaptureAssociatedPtr.prototype.constructor = - ImageCaptureAssociatedPtr; - - function ImageCaptureProxy(receiver) { - this.receiver_ = receiver; - } - ImageCapturePtr.prototype.getPhotoState = function() { - return ImageCaptureProxy.prototype.getPhotoState - .apply(this.ptr.getProxy(), arguments); - }; - - ImageCaptureProxy.prototype.getPhotoState = function(sourceId) { - var params_ = new ImageCapture_GetPhotoState_Params(); - params_.sourceId = sourceId; - return new Promise(function(resolve, reject) { - var builder = new codec.MessageV1Builder( - kImageCapture_GetPhotoState_Name, - codec.align(ImageCapture_GetPhotoState_Params.encodedSize), - codec.kMessageExpectsResponse, 0); - builder.encodeStruct(ImageCapture_GetPhotoState_Params, params_); - var message = builder.finish(); - this.receiver_.acceptAndExpectResponse(message).then(function(message) { - var reader = new codec.MessageReader(message); - var responseParams = - reader.decodeStruct(ImageCapture_GetPhotoState_ResponseParams); - resolve(responseParams); - }).catch(function(result) { - reject(Error("Connection error: " + result)); - }); - }.bind(this)); - }; - ImageCapturePtr.prototype.setOptions = function() { - return ImageCaptureProxy.prototype.setOptions - .apply(this.ptr.getProxy(), arguments); - }; - - ImageCaptureProxy.prototype.setOptions = function(sourceId, settings) { - var params_ = new ImageCapture_SetOptions_Params(); - params_.sourceId = sourceId; - params_.settings = settings; - return new Promise(function(resolve, reject) { - var builder = new codec.MessageV1Builder( - kImageCapture_SetOptions_Name, - codec.align(ImageCapture_SetOptions_Params.encodedSize), - codec.kMessageExpectsResponse, 0); - builder.encodeStruct(ImageCapture_SetOptions_Params, params_); - var message = builder.finish(); - this.receiver_.acceptAndExpectResponse(message).then(function(message) { - var reader = new codec.MessageReader(message); - var responseParams = - reader.decodeStruct(ImageCapture_SetOptions_ResponseParams); - resolve(responseParams); - }).catch(function(result) { - reject(Error("Connection error: " + result)); - }); - }.bind(this)); - }; - ImageCapturePtr.prototype.takePhoto = function() { - return ImageCaptureProxy.prototype.takePhoto - .apply(this.ptr.getProxy(), arguments); - }; - - ImageCaptureProxy.prototype.takePhoto = function(sourceId) { - var params_ = new ImageCapture_TakePhoto_Params(); - params_.sourceId = sourceId; - return new Promise(function(resolve, reject) { - var builder = new codec.MessageV1Builder( - kImageCapture_TakePhoto_Name, - codec.align(ImageCapture_TakePhoto_Params.encodedSize), - codec.kMessageExpectsResponse, 0); - builder.encodeStruct(ImageCapture_TakePhoto_Params, params_); - var message = builder.finish(); - this.receiver_.acceptAndExpectResponse(message).then(function(message) { - var reader = new codec.MessageReader(message); - var responseParams = - reader.decodeStruct(ImageCapture_TakePhoto_ResponseParams); - resolve(responseParams); - }).catch(function(result) { - reject(Error("Connection error: " + result)); - }); - }.bind(this)); - }; - - function ImageCaptureStub(delegate) { - this.delegate_ = delegate; - } - ImageCaptureStub.prototype.getPhotoState = function(sourceId) { - return this.delegate_ && this.delegate_.getPhotoState && this.delegate_.getPhotoState(sourceId); - } - ImageCaptureStub.prototype.setOptions = function(sourceId, settings) { - return this.delegate_ && this.delegate_.setOptions && this.delegate_.setOptions(sourceId, settings); - } - ImageCaptureStub.prototype.takePhoto = function(sourceId) { - return this.delegate_ && this.delegate_.takePhoto && this.delegate_.takePhoto(sourceId); - } - - ImageCaptureStub.prototype.accept = function(message) { - var reader = new codec.MessageReader(message); - switch (reader.messageName) { - default: - return false; - } - }; - - ImageCaptureStub.prototype.acceptWithResponder = - function(message, responder) { - var reader = new codec.MessageReader(message); - switch (reader.messageName) { - case kImageCapture_GetPhotoState_Name: - var params = reader.decodeStruct(ImageCapture_GetPhotoState_Params); - this.getPhotoState(params.sourceId).then(function(response) { - var responseParams = - new ImageCapture_GetPhotoState_ResponseParams(); - responseParams.state = response.state; - var builder = new codec.MessageV1Builder( - kImageCapture_GetPhotoState_Name, - codec.align(ImageCapture_GetPhotoState_ResponseParams.encodedSize), - codec.kMessageIsResponse, reader.requestID); - builder.encodeStruct(ImageCapture_GetPhotoState_ResponseParams, - responseParams); - var message = builder.finish(); - responder.accept(message); - }); - return true; - case kImageCapture_SetOptions_Name: - var params = reader.decodeStruct(ImageCapture_SetOptions_Params); - this.setOptions(params.sourceId, params.settings).then(function(response) { - var responseParams = - new ImageCapture_SetOptions_ResponseParams(); - responseParams.success = response.success; - var builder = new codec.MessageV1Builder( - kImageCapture_SetOptions_Name, - codec.align(ImageCapture_SetOptions_ResponseParams.encodedSize), - codec.kMessageIsResponse, reader.requestID); - builder.encodeStruct(ImageCapture_SetOptions_ResponseParams, - responseParams); - var message = builder.finish(); - responder.accept(message); - }); - return true; - case kImageCapture_TakePhoto_Name: - var params = reader.decodeStruct(ImageCapture_TakePhoto_Params); - this.takePhoto(params.sourceId).then(function(response) { - var responseParams = - new ImageCapture_TakePhoto_ResponseParams(); - responseParams.blob = response.blob; - var builder = new codec.MessageV1Builder( - kImageCapture_TakePhoto_Name, - codec.align(ImageCapture_TakePhoto_ResponseParams.encodedSize), - codec.kMessageIsResponse, reader.requestID); - builder.encodeStruct(ImageCapture_TakePhoto_ResponseParams, - responseParams); - var message = builder.finish(); - responder.accept(message); - }); - return true; - default: - return false; - } - }; - - function validateImageCaptureRequest(messageValidator) { - var message = messageValidator.message; - var paramsClass = null; - switch (message.getName()) { - case kImageCapture_GetPhotoState_Name: - if (message.expectsResponse()) - paramsClass = ImageCapture_GetPhotoState_Params; - break; - case kImageCapture_SetOptions_Name: - if (message.expectsResponse()) - paramsClass = ImageCapture_SetOptions_Params; - break; - case kImageCapture_TakePhoto_Name: - if (message.expectsResponse()) - paramsClass = ImageCapture_TakePhoto_Params; - break; - } - if (paramsClass === null) - return validator.validationError.NONE; - return paramsClass.validate(messageValidator, messageValidator.message.getHeaderNumBytes()); - } - - function validateImageCaptureResponse(messageValidator) { - var message = messageValidator.message; - var paramsClass = null; - switch (message.getName()) { - case kImageCapture_GetPhotoState_Name: - if (message.isResponse()) - paramsClass = ImageCapture_GetPhotoState_ResponseParams; - break; - case kImageCapture_SetOptions_Name: - if (message.isResponse()) - paramsClass = ImageCapture_SetOptions_ResponseParams; - break; - case kImageCapture_TakePhoto_Name: - if (message.isResponse()) - paramsClass = ImageCapture_TakePhoto_ResponseParams; - break; - } - if (paramsClass === null) - return validator.validationError.NONE; - return paramsClass.validate(messageValidator, messageValidator.message.getHeaderNumBytes()); - } - - var ImageCapture = { - name: 'media.mojom.ImageCapture', - kVersion: 0, - ptrClass: ImageCapturePtr, - proxyClass: ImageCaptureProxy, - stubClass: ImageCaptureStub, - validateRequest: validateImageCaptureRequest, - validateResponse: validateImageCaptureResponse, - }; - ImageCaptureStub.prototype.validator = validateImageCaptureRequest; - ImageCaptureProxy.prototype.validator = validateImageCaptureResponse; - exports.MeteringMode = MeteringMode; - exports.RedEyeReduction = RedEyeReduction; - exports.FillLightMode = FillLightMode; - exports.Range = Range; - exports.PhotoState = PhotoState; - exports.Point2D = Point2D; - exports.PhotoSettings = PhotoSettings; - exports.Blob = Blob; - exports.ImageCapture = ImageCapture; - exports.ImageCapturePtr = ImageCapturePtr; - exports.ImageCaptureAssociatedPtr = ImageCaptureAssociatedPtr; -})(); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/idle-detection/mock.js b/tests/wpt/web-platform-tests/resources/chromium/mock-idle-detection.js similarity index 100% rename from tests/wpt/web-platform-tests/idle-detection/mock.js rename to tests/wpt/web-platform-tests/resources/chromium/mock-idle-detection.js diff --git a/tests/wpt/web-platform-tests/resources/chromium/mojo_bindings.js b/tests/wpt/web-platform-tests/resources/chromium/mojo_bindings.js deleted file mode 100644 index 70f6cad5e5f..00000000000 --- a/tests/wpt/web-platform-tests/resources/chromium/mojo_bindings.js +++ /dev/null @@ -1,5146 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -'use strict'; - -if ((typeof mojo !== 'undefined') && mojo.bindingsLibraryInitialized) { - throw new Error('The Mojo bindings library has been initialized.'); -} - -var mojo = mojo || {}; -mojo.bindingsLibraryInitialized = true; - -mojo.internal = mojo.internal || {}; - -mojo.config = mojo.config || {}; -if (typeof mojo.config.global === 'undefined') { - mojo.config.global = this; -} - -if (typeof mojo.config.autoLoadMojomDeps === 'undefined') { - // Whether to automatically load mojom dependencies. - // For example, if foo.mojom imports bar.mojom, |autoLoadMojomDeps| set to - // true means that loading foo.mojom.js will insert a + + + + + + + + diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.tentative.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.tentative.html new file mode 100644 index 00000000000..219eff41891 --- /dev/null +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.tentative.html @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitizeToString.tentative.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitizeToString.tentative.html new file mode 100644 index 00000000000..98bb4a46018 --- /dev/null +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitizeToString.tentative.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/sanitizer-api/support/testcases.sub.js b/tests/wpt/web-platform-tests/sanitizer-api/support/testcases.sub.js new file mode 100644 index 00000000000..d1af1c9b5a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/sanitizer-api/support/testcases.sub.js @@ -0,0 +1,17 @@ +const testcases = [ + {value: "test", result: "test", message: "string"}, + {value: "bla", result: "bla", message: "html fragment"}, + {value: "test", result: "test", message: "document"}, + {value: "
    test", result: "
    test
    ", message: "html without close tag"}, + {value: " + + + + diff --git a/tests/wpt/web-platform-tests/screen_enumeration/getScreens.values.https.html b/tests/wpt/web-platform-tests/screen_enumeration/getScreens.values.https.html index 881396adbc3..93b27b46556 100644 --- a/tests/wpt/web-platform-tests/screen_enumeration/getScreens.values.https.html +++ b/tests/wpt/web-platform-tests/screen_enumeration/getScreens.values.https.html @@ -1,8 +1,8 @@ -Screen Enumeration: getScreens() tentative +Window Placement: getScreens() tentative - + diff --git a/tests/wpt/web-platform-tests/screen_enumeration/isMultiScreen.values.https.html b/tests/wpt/web-platform-tests/screen_enumeration/isMultiScreen.values.https.html index 5146803ea9c..2a79db4e10e 100644 --- a/tests/wpt/web-platform-tests/screen_enumeration/isMultiScreen.values.https.html +++ b/tests/wpt/web-platform-tests/screen_enumeration/isMultiScreen.values.https.html @@ -1,8 +1,8 @@ -Screen Enumeration: isMultiScreen() tentative +Window Placement: isMultiScreen() tentative - + diff --git a/tests/wpt/web-platform-tests/screen_enumeration/resources/screenenumeration-helpers.js b/tests/wpt/web-platform-tests/screen_enumeration/resources/screenenumeration-helpers.js index d96fca74b5d..7d5d5221943 100644 --- a/tests/wpt/web-platform-tests/screen_enumeration/resources/screenenumeration-helpers.js +++ b/tests/wpt/web-platform-tests/screen_enumeration/resources/screenenumeration-helpers.js @@ -6,45 +6,40 @@ // // --enable-blink-features=MojoJS,MojoJSTest -const loadChromiumResources = async () => { - if (!("MojoInterfaceInterceptor" in self)) { - // Do nothing on non-Chromium-based browsers or when the Mojo bindings are - // not present in the global namespace. - return; - } - - const resources = [ - "/gen/layout_test_data/mojo/public/js/mojo_bindings.js", - "/gen/ui/gfx/mojom/color_space.mojom.js", - "/gen/ui/gfx/mojom/buffer_types.mojom.js", - "/gen/ui/gfx/mojom/display_color_spaces.mojom.js", - "/gen/ui/gfx/geometry/mojom/geometry.mojom.js", - "/gen/ui/display/mojom/display.mojom.js", - "/gen/third_party/blink/public/mojom/screen_enumeration/screen_enumeration.mojom.js", - "/resources/testdriver.js", - "/resources/testdriver-vendor.js", - "/resources/chromium/mock-screenenumeration.js", +async function loadChromiumResources() { + const chromiumResources = [ + '/gen/ui/gfx/mojom/color_space.mojom.js', + '/gen/ui/gfx/mojom/buffer_types.mojom.js', + '/gen/ui/gfx/mojom/display_color_spaces.mojom.js', + '/gen/ui/gfx/geometry/mojom/geometry.mojom.js', + '/gen/ui/display/mojom/display.mojom.js', + '/gen/third_party/blink/public/mojom/screen_enumeration/screen_enumeration.mojom.js' ]; - await Promise.all(resources.map(path => { - const script = document.createElement("script"); - script.src = path; - script.async = false; - const promise = new Promise((resolve, reject) => { - script.onload = resolve; - script.onerror = reject; - }); - document.head.appendChild(script); - return promise; - })); -}; + await loadMojoResources(chromiumResources); + await loadScript('/resources/testdriver.js'); + await loadScript('/resources/testdriver-vendor.js'); + await loadScript('/resources/chromium/mock-screenenumeration.js'); +} async function initialize_screen_enumeration_tests() { - if (typeof ScreenEnumerationTest === "undefined") - await loadChromiumResources(); + if (typeof ScreenEnumerationTest === "undefined") { + const script = document.createElement('script'); + script.src = '/resources/test-only-api.js'; + script.async = false; + const p = new Promise((resolve, reject) => { + script.onload = () => { resolve(); }; + script.onerror = e => { reject(e); }; + }); + document.head.appendChild(script); + await p; - assert_true(typeof ScreenEnumerationTest !== "undefined", - "Screen Enumeration testing interface is not available."); + if (isChromiumBased) { + await loadChromiumResources(); + } + } + assert_implements(ScreenEnumerationTest, + 'Screen Enumeration testing interface is not available.'); let enumTest = new ScreenEnumerationTest(); await enumTest.initialize(); return enumTest; diff --git a/tests/wpt/web-platform-tests/scroll-animations/constructor.html b/tests/wpt/web-platform-tests/scroll-animations/constructor.html index 7cb7013c006..eae6278f71b 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/constructor.html +++ b/tests/wpt/web-platform-tests/scroll-animations/constructor.html @@ -25,6 +25,16 @@ + + + + +
    + diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-in-keyframe.html b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-in-keyframe.html index bdf40e0747f..75483331390 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-in-keyframe.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/animation-timeline-in-keyframe.html @@ -7,11 +7,10 @@ +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-element-offsets.html b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-element-offsets.html new file mode 100644 index 00000000000..884f2ab5ed7 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-element-offsets.html @@ -0,0 +1,241 @@ + +@scroll-timeline: Element-based offsets + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-orientation.html b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-orientation.html index 2c76f7a1117..9bc49d284b8 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-orientation.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-orientation.html @@ -55,7 +55,9 @@ } #container > div { width: 0px; - animation: expand 10s linear; + animation-name: expand; + animation-duration: 10s; + animation-timing-function: linear; } /* Ensure stable expectations if feature is not supported */ @supports not (animation-timeline:foo) { diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-source.html b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-source.html index f2c50a1cd38..ed24d186579 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-source.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-source.html @@ -64,7 +64,9 @@ } #container > div { width: 0px; - animation: expand 10s linear; + animation-name: expand; + animation-duration: 10s; + animation-timing-function: linear; } /* Ensure stable expectations if feature is not supported */ @supports not (animation-timeline:foo) { diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-start-end.html b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-start-end.html index fbe53d0fc0c..c53de5d865f 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-start-end.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-start-end.html @@ -61,7 +61,9 @@ } #container > div { width: 0px; - animation: expand 10s linear; + animation-name: expand; + animation-duration: 10s; + animation-timing-function: linear; } /* Ensure stable expectations if feature is not supported */ @supports not (animation-timeline:foo) { diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-time-range.html b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-time-range.html index 407e17f0748..2a57ed456a2 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-time-range.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/at-scroll-timeline-time-range.html @@ -37,7 +37,9 @@ } #container > div { width: 0px; - animation: expand 10s linear; + animation-name: expand; + animation-duration: 10s; + animation-timing-function: linear; } /* Ensure stable expectations if feature is not supported */ @supports not (animation-timeline:foo) { diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-cssom.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-cssom.tentative.html index 09ec90a0449..d9e4cc08cbe 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-cssom.tentative.html +++ b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-cssom.tentative.html @@ -163,7 +163,19 @@ test_offsets('', 'auto'); test_offsets('red', 'auto'); test_offsets('#fff', 'auto'); test_offsets('unset', 'auto'); -test_offsets('selector(#foo)', 'auto'); +test_offsets('unknown(#foo)', 'auto'); +test_offsets('start', 'auto'); +test_offsets('end', 'auto'); +test_offsets('3', 'auto'); +test_offsets('selector(#foo)'); +test_offsets(' selector(#foo)', 'selector(#foo)'); +test_offsets('selector(#foo) start'); +test_offsets('selector(#foo) start 3'); +test_offsets('selector(#foo) 3'); +test_offsets('selector(#foo) 3.5'); +test_offsets('selector(#foo) end'); +test_offsets('selector(#foo) end 3'); +test_offsets('selector(#foo) 3 end', 'selector(#foo) end 3'); // CSSScrollTimelineRule.timeRange diff --git a/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html b/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html index 5a53d43f037..c5c1fe155a8 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html +++ b/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html @@ -190,19 +190,19 @@ promise_test(async t => { scrollSource: scroller, timeRange: scrollerSize, orientation: 'horizontal', - startScrollOffset: '20px' + startScrollOffset: CSS.px(20) }); const percentageScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'horizontal', - startScrollOffset: '20%' + startScrollOffset: CSS.percent(20) }); const calcScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'horizontal', - startScrollOffset: 'calc(20% - 5px)' + startScrollOffset: CSS.percent(20).sub(CSS.px(5)) }); // Unscrolled, all timelines should read a current time of 0, since @@ -293,19 +293,19 @@ promise_test(async t => { scrollSource: scroller, timeRange: scrollerSize, orientation: 'horizontal', - endScrollOffset: (scrollerSize - 20) + 'px' + endScrollOffset: CSS.px(scrollerSize - 20) }); const percentageScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'horizontal', - endScrollOffset: '80%' + endScrollOffset: CSS.percent(80) }); const calcScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'horizontal', - endScrollOffset: 'calc(80% + 5px)' + endScrollOffset: CSS.percent(80).add(CSS.px(5)) }); // With direction rtl offsets are inverted, such that scrollLeft == 0 @@ -393,19 +393,19 @@ promise_test(async t => { scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - endScrollOffset: scrollerSize + 'px' + endScrollOffset: CSS.px(scrollerSize) }); const inclusivePercentageScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - endScrollOffset: '100%' + endScrollOffset: CSS.percent(100) }); const inclusiveCalcScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - endScrollOffset: 'calc(80% + ' + (0.2 * scrollerSize) + 'px)' + endScrollOffset: CSS.percent(80).sub(CSS.px(0.2 * scrollerSize)) }); // With direction rtl offsets are inverted, such that scrollLeft == diff --git a/tests/wpt/web-platform-tests/scroll-animations/current-time.html b/tests/wpt/web-platform-tests/scroll-animations/current-time.html index ad489d02811..cbe2d8d6005 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/current-time.html +++ b/tests/wpt/web-platform-tests/scroll-animations/current-time.html @@ -97,19 +97,19 @@ promise_test(async t => { scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - startScrollOffset: '20px' + startScrollOffset: CSS.px(20) }); const percentageScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - startScrollOffset: '20%' + startScrollOffset: CSS.percent(20) }); const calcScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - startScrollOffset: 'calc(20% - 5px)' + startScrollOffset: CSS.percent(20).sub(CSS.px(5)) }); // Unscrolled all timelines should read a current time of 0, as the @@ -242,19 +242,19 @@ promise_test(async t => { scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - endScrollOffset: scrollerSize + 'px' + endScrollOffset: CSS.px(scrollerSize) }); const inclusivePercentageScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - endScrollOffset: '100%' + endScrollOffset: CSS.percent(100) }); const inclusiveCalcScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - endScrollOffset: 'calc(80% + ' + (0.2 * scrollerSize) + 'px)' + endScrollOffset: CSS.percent(80).add(CSS.px(0.2 * scrollerSize)) }); scroller.scrollTop = scrollerSize; @@ -290,19 +290,19 @@ promise_test(async t => { scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - endScrollOffset: (scrollerSize - 20) + 'px' + endScrollOffset: CSS.px(scrollerSize - 20) }); const percentageScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - endScrollOffset: '80%' + endScrollOffset: CSS.percent(80) }); const calcScrollTimeline = new ScrollTimeline({ scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - endScrollOffset: 'calc(80% + 5px)' + endScrollOffset: CSS.percent(80).add(CSS.px(5)) }); // Check the length-based ScrollTimeline. @@ -403,8 +403,8 @@ promise_test(async t => { scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - startScrollOffset: '20px', - endScrollOffset: (scrollerSize - 50) + 'px' + startScrollOffset: CSS.px(20), + endScrollOffset: CSS.px(scrollerSize - 50) }); scroller.scrollTop = 150; @@ -427,8 +427,8 @@ promise_test(async t => { scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - startScrollOffset: '20px', - endScrollOffset: '20px', + startScrollOffset: CSS.px(20), + endScrollOffset: CSS.px(20) }); scroller.scrollTop = 150; @@ -449,8 +449,8 @@ promise_test(async t => { scrollSource: scroller, timeRange: scrollerSize, orientation: 'block', - startScrollOffset: '50px', - endScrollOffset: '10px', + startScrollOffset: CSS.px(50), + endScrollOffset: CSS.px(10) }); scroller.scrollTop = 40; @@ -462,4 +462,87 @@ promise_test(async t => { await waitForNextFrame(); assert_equals(scrollTimeline.currentTime, scrollTimeline.timeRange); }, 'currentTime handles startScrollOffset > endScrollOffset correctly'); + +promise_test(async t => { + const scroller = setupScrollTimelineTest(); + // Set the timeRange such that currentTime maps directly to the value + // scrolled. The contents and scroller are square, so it suffices to compute + // one edge and use it for all the timelines. + const scrollerSize = scroller.scrollHeight - scroller.clientHeight; + + const scrollTimeline = new ScrollTimeline({ + scrollSource: scroller, + timeRange: scrollerSize, + orientation: 'block', + scrollOffsets: [CSS.px(10), CSS.px(20), CSS.px(40), CSS.px(70), CSS.px(90)], + }); + + var offset = 0; + var w = 1 / 4; // offset weight + var p = 0; // progress within the offset + + scroller.scrollTop = 10; + assert_times_equal( + scrollTimeline.currentTime, (offset + p) * w * scrollerSize, + "current time calculation when scroll = " + scroller.scrollTop); + + p = (12 - 10) / (20 - 10); + scroller.scrollTop = 12; + await waitForNextFrame(); + assert_times_equal( + scrollTimeline.currentTime, (offset + p) * w * scrollerSize, + "current time calculation when scroll = " + scroller.scrollTop); + + offset = 1; + p = 0; + scroller.scrollTop = 20; + await waitForNextFrame(); + assert_times_equal( + scrollTimeline.currentTime, (offset + p) * w * scrollerSize, + "current time calculation when scroll = " + scroller.scrollTop); + + p = (35 - 20) / (40 - 20); + scroller.scrollTop = 35; + await waitForNextFrame(); + assert_times_equal( + scrollTimeline.currentTime, (offset + p) * w * scrollerSize, + "current time calculation when scroll = " + scroller.scrollTop); + + offset = 2; + p = 0; + scroller.scrollTop = 40; + await waitForNextFrame(); + assert_times_equal( + scrollTimeline.currentTime, (offset + p) * w * scrollerSize, + "current time calculation when scroll = " + scroller.scrollTop); + + p = (60 - 40) / (70 - 40); + scroller.scrollTop = 60; + await waitForNextFrame(); + assert_times_equal( + scrollTimeline.currentTime, (offset + p) * w * scrollerSize, + "current time calculation when scroll = " + scroller.scrollTop); + + offset = 3; + p = 0; + scroller.scrollTop = 70; + await waitForNextFrame(); + assert_times_equal( + scrollTimeline.currentTime, (offset + p) * w * scrollerSize, + "current time calculation when scroll = " + scroller.scrollTop); + + p = (80 - 70) / (90 - 70); + scroller.scrollTop = 80; + await waitForNextFrame(); + assert_times_equal( + scrollTimeline.currentTime, (offset + p) * w * scrollerSize, + "current time calculation when scroll = " + scroller.scrollTop); + + scroller.scrollTop = 90; + await waitForNextFrame(); + assert_times_equal( + scrollTimeline.currentTime, scrollerSize, + "current time calculation when scroll = " + scroller.scrollTop); +}, 'currentTime calculations when multiple scroll offsets are specified'); + diff --git a/tests/wpt/web-platform-tests/scroll-animations/layout-changes-on-percentage-based-timeline.html b/tests/wpt/web-platform-tests/scroll-animations/layout-changes-on-percentage-based-timeline.html index 4884715255c..19fce372133 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/layout-changes-on-percentage-based-timeline.html +++ b/tests/wpt/web-platform-tests/scroll-animations/layout-changes-on-percentage-based-timeline.html @@ -64,8 +64,8 @@ layout changes on percentage-based scroll offset"> const timeline = new ScrollTimeline({ scrollSource: scroller, timeRange: 1000, - startScrollOffset: '20%', - endScrollOffset: '80%' + startScrollOffset: CSS.percent(20), + endScrollOffset: CSS.percent(80) }); const animation = new Animation(effect, timeline); animation.play(); diff --git a/tests/wpt/web-platform-tests/scroll-animations/scroll-animation-effect-phases.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/scroll-animation-effect-phases.tentative.html index b8e678e9218..47e2717ecdc 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/scroll-animation-effect-phases.tentative.html +++ b/tests/wpt/web-platform-tests/scroll-animations/scroll-animation-effect-phases.tentative.html @@ -92,7 +92,7 @@ function create_scroll_timeline_fill_test(delay, scroll_percentage, expected){ return async t => { const target = createDiv(t); - const timeline = createScrollTimelineWithOffsets(t, "20%", "80%"); + const timeline = createScrollTimelineWithOffsets(t, CSS.percent(20), CSS.percent(80)); const effect = new KeyframeEffect( target, { @@ -190,7 +190,7 @@ promise_test(async t => { const animation = new Animation( createKeyframeEffectOpacity(t), - createScrollTimelineWithOffsets(t, "20%", "80%") + createScrollTimelineWithOffsets(t, CSS.percent(20), CSS.percent(80)) ); const scroller = animation.timeline.scrollSource; @@ -218,7 +218,7 @@ promise_test(async t => { const animation = new Animation( createKeyframeEffectOpacity(t), - createScrollTimelineWithOffsets(t, "20%", "80%") + createScrollTimelineWithOffsets(t, CSS.percent(20), CSS.percent(80)) ); const scroller = animation.timeline.scrollSource; @@ -259,7 +259,7 @@ promise_test(async t => { const animation = new Animation( createKeyframeEffectOpacity(t), - createScrollTimelineWithOffsets(t, "20%", "80%") + createScrollTimelineWithOffsets(t, CSS.percent(20), CSS.percent(80)) ); const scroller = animation.timeline.scrollSource; const maxScroll = scroller.scrollHeight - scroller.clientHeight; @@ -314,4 +314,38 @@ promise_test(async t => { ); }, 'Make scroller inactive, then set current time to an in range time'); +promise_test(async t => { + const animation = new Animation( + createKeyframeEffectOpacity(t), + createScrollTimelineWithOffsets(t, CSS.percent(20), CSS.percent(80)) + ); + const scroller = animation.timeline.scrollSource; + const maxScroll = scroller.scrollHeight - scroller.clientHeight; + scroller.scrollTop = 0.5 * maxScroll; + // allow the scroll to finish. + await waitForNextFrame(); + + animation.pause(); + await animation.ready; + // verify effect is applied. + const expected_progress = 0.5; + assert_equals( + animation.effect.getComputedTiming().progress, + expected_progress, + "Verify effect progress after pausing." + ); + + // cause the timeline to become inactive + scroller.style.overflow = 'visible'; + await waitForAnimationFrames(2); + assert_equals(animation.timeline.currentTime, null, + 'Sanity check the timeline is inactive.'); + assert_equals( + animation.effect.getComputedTiming().progress, + expected_progress, + "Verify effect progress after the timeline goes inactive." + ); +}, 'Animation effect is still applied after pausing and making timeline ' + + 'inactive.'); + \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/scroll-animations/scroll-timeline-phases.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/scroll-timeline-phases.tentative.html index c58ba1dc066..6e5c752d599 100644 --- a/tests/wpt/web-platform-tests/scroll-animations/scroll-timeline-phases.tentative.html +++ b/tests/wpt/web-platform-tests/scroll-animations/scroll-timeline-phases.tentative.html @@ -58,7 +58,7 @@ for (const test_case_key in test_cases){ const test_case = test_cases[test_case_key]; promise_test(async t => { - const timeline = createScrollTimelineWithOffsets(t, "20%", "80%"); + const timeline = createScrollTimelineWithOffsets(t, CSS.percent(20), CSS.percent(80)); const scroller = timeline.scrollSource; const maxScroll = scroller.scrollHeight - scroller.clientHeight; @@ -111,7 +111,7 @@ const test_case = test_cases_start_offset_greater_than_end_offset[test_case_key]; promise_test(async t => { - const timeline = createScrollTimelineWithOffsets(t, "80%", "20%"); + const timeline = createScrollTimelineWithOffsets(t, CSS.percent(80), CSS.percent(20)); const scroller = timeline.scrollSource; const maxScroll = scroller.scrollHeight - scroller.clientHeight; @@ -154,7 +154,7 @@ const test_case = test_cases_start_offset_equal_to_end_offset[test_case_key]; promise_test(async t => { - const timeline = createScrollTimelineWithOffsets(t, "50%", "50%"); + const timeline = createScrollTimelineWithOffsets(t, CSS.percent(50), CSS.percent(50)); const scroller = timeline.scrollSource; const maxScroll = scroller.scrollHeight - scroller.clientHeight; diff --git a/tests/wpt/web-platform-tests/scroll-animations/setting-timeline.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/setting-timeline.tentative.html new file mode 100644 index 00000000000..3fd0c0cd676 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-animations/setting-timeline.tentative.html @@ -0,0 +1,320 @@ + + +Setting the timeline of scroll animation + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/client-redirect.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/client-redirect.html new file mode 100644 index 00000000000..73858969e02 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/client-redirect.html @@ -0,0 +1,12 @@ + + diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/idlharness.window.js b/tests/wpt/web-platform-tests/scroll-to-text-fragment/idlharness.window.js new file mode 100644 index 00000000000..c39216b5811 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/idlharness.window.js @@ -0,0 +1,15 @@ +// META: script=/resources/WebIDLParser.js +// META: script=/resources/idlharness.js + +'use strict'; + +idl_test( + ['scroll-to-text-fragment'], + ['dom', 'html'], + idl_array => { + idl_array.add_objects({ + Document: ['document'], + FragmentDirective: ['document.fragmentDirective'], + }); + } +); diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects-target.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects-target.html new file mode 100644 index 00000000000..5e44230a958 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects-target.html @@ -0,0 +1,42 @@ + +Destination of a Redirect + + + + +

    Top of page

    +

    target

    + diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects-target2.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects-target2.html new file mode 100644 index 00000000000..239c0fe1e61 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects-target2.html @@ -0,0 +1,28 @@ + +Destination of a Redirect + + + + +

    Top of page

    +

    target

    + diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects.html new file mode 100644 index 00000000000..5ad910affe5 --- /dev/null +++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/redirects.html @@ -0,0 +1,126 @@ + +TextFragment invoked on redirects + + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-api.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-api.html index 8b1dea6f331..d644b6b64fb 100644 --- a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-api.html +++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-api.html @@ -8,15 +8,15 @@