From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- ...AudioOutput-user-activation-consumed.https.html | 30 + .../baselinecoverage/wpt_baselinecoverage.html | 22 + .../script-src-self/sharedworker-import.http.html | 118 + .../script-src-self/sharedworker-import.https.html | 118 + .../script-src-self/worker-import.http.html | 118 + .../script-src-self/worker-import.https.html | 118 + .../worker-src-self/sharedworker-import.http.html | 118 + .../worker-src-self/sharedworker-import.https.html | 118 + .../worker-src-self/worker-import.http.html | 118 + .../worker-src-self/worker-import.https.html | 118 + .../script-src-self/sharedworker-import.http.html | 119 + .../script-src-self/sharedworker-import.https.html | 119 + .../script-src-self/worker-import.http.html | 119 + .../script-src-self/worker-import.https.html | 119 + .../worker-src-self/sharedworker-import.http.html | 119 + .../worker-src-self/sharedworker-import.https.html | 119 + .../worker-src-self/worker-import.http.html | 119 + .../worker-src-self/worker-import.https.html | 119 + .../generic/test-case.sub.js | 98 + ...nt-visibility-hidden-document-reflow-count.html | 44 + .../content-visibility-hidden-reflow-count.html | 120 + .../scrollbar-gutter-reflow-counts-001.html | 115 + .../css/cssom/media-print-change-print-ref.html | 2 + .../tests/css/cssom/media-print-change-print.html | 8 + .../tests/css/cssom/window_size_rounding.html | 35 + .../css/file-selector-button-margin-notref.html | 2 + .../tests/css/file-selector-button-margin.html | 10 + .../tests/css/iframe-os-text-scale-print-ref.html | 5 + .../tests/css/iframe-os-text-scale-print.sub.html | 6 + .../mq-gamut-resist-fingerprinting.html | 40 + .../css/quirks-invalidation-standard-sheet.html | 14 + .../reference/ref-filled-green-100px-square.xht | 19 + .../css/resources/iframe-os-text-scale-inner.html | 9 + .../web-platform/mozilla/tests/dom/classList.html | 526 ++++ .../mozilla/tests/dom/delayed_window_print.html | 39 + .../mozilla/tests/dom/dispatch_select_event.html | 35 + .../mozilla/tests/dom/focus-invalid-uri-link.html | 63 + .../mozilla/tests/dom/range-in-two-selections.html | 34 + .../tests/dom/throttling/resources/test.html | 5 + .../tests/dom/throttling/resources/throttling.js | 136 + .../tests/dom/throttling/resources/ws.sub.js | 3 + .../tests/dom/throttling/throttling-1.window.js | 10 + .../tests/dom/throttling/throttling-2.window.js | 11 + .../tests/dom/throttling/throttling-3.window.js | 11 + .../tests/dom/throttling/throttling-4.window.js | 11 + .../dom/throttling/throttling-indexeddb.window.js | 35 + .../dom/throttling/throttling-webaudio.window.js | 35 + .../dom/throttling/throttling-webrtc.window.js | 35 + .../tests/dom/throttling/throttling-ws.window.js | 37 + .../delete-space-after-double-click-selection.html | 278 ++ .../input-setRangeText-during-noframe-crash.html | 18 + .../white-space-handling-in-mail-editor.html | 371 +++ .../redirect/redirect-referrer-mixed-content.js | 51 + .../api/redirect/redirect-referrer.https.html | 18 + .../orb/tentative/content-range.sub.window.js | 19 + .../img-mime-types-coverage.tentative.sub.html | 43 + .../orb/tentative/known-mime-type.sub.window.js | 48 + .../fetch/orb/tentative/nosniff.sub.window.js | 44 + .../tests/fetch/orb/tentative/resources/utils.js | 21 + .../tests/fetch/orb/tentative/status.sub.window.js | 30 + .../mozilla/tests/focus/Range_collapse.html | 207 ++ .../mozilla/tests/focus/Range_selectNode.html | 267 ++ .../mozilla/tests/focus/Range_setEnd.html | 364 +++ .../mozilla/tests/focus/Range_setStart.html | 353 +++ .../mozilla/tests/focus/Selection_addRange.html | 1242 +++++++++ .../tests/focus/Selection_addRange_in_iframe.html | 63 + .../focus/Selection_addRange_into_iframe.html | 67 + .../Selection_addRange_into_iframe_iframe.html | 9 + .../mozilla/tests/focus/Selection_collapse.html | 148 + .../tests/focus/Selection_collapseToEnd.html | 134 + .../tests/focus/Selection_collapseToStart.html | 142 + .../mozilla/tests/focus/Selection_extend.html | 189 ++ .../tests/focus/Selection_removeAllRanges.html | 112 + .../mozilla/tests/focus/Selection_removeRange.html | 112 + .../tests/focus/Selection_selectAllChildren.html | 254 ++ .../tests/focus/Selection_setBaseAndExtent.html | 926 +++++++ .../tests/focus/delegateFocus-is-focusable.html | 19 + .../focus-before-iframe-loaded-different-site.html | 16 + .../focus-before-iframe-loaded-same-site.html | 16 + ...t-tick-before-iframe-loaded-different-site.html | 16 + ...s-next-tick-before-iframe-loaded-same-site.html | 16 + ...iframe-focus-event-after-iframe-gets-focus.html | 75 + ...-before-iframe-loaded-different-site-inner.html | 17 + ...ore-iframe-loaded-different-site-outer.sub.html | 42 + ...focus-before-iframe-loaded-same-site-inner.html | 17 + ...focus-before-iframe-loaded-same-site-outer.html | 42 + ...-before-iframe-loaded-different-site-inner.html | 17 + ...ore-iframe-loaded-different-site-outer.sub.html | 50 + ...-tick-before-iframe-loaded-same-site-inner.html | 17 + ...-tick-before-iframe-loaded-same-site-outer.html | 50 + ...different-site-iframe-gets-focus-outer.sub.html | 42 + ...-focus-event-after-iframe-gets-focus-inner.html | 31 + ...nt-after-same-site-iframe-gets-focus-outer.html | 42 + .../read-media/sandboxed-video.html | 24 + .../form-controls/range-snap-to-tick-marks-01.html | 59 + .../form-controls/range-snap-to-tick-marks-02.html | 41 + .../form-controls/range-snap-to-tick-marks-03.html | 45 + .../form-submission-0/non-usv-filenames.window.js | 95 + .../forms/input-radio-key-navigation.html | 61 + .../selection-value-interactions.html | 217 ++ .../range-tick-marks-01-notref.html | 3 + .../the-input-element/range-tick-marks-01.html | 13 + .../range-tick-marks-02-notref.html | 9 + .../the-input-element/range-tick-marks-02.html | 14 + .../the-input-element/range-tick-marks-03-ref.html | 7 + .../the-input-element/range-tick-marks-03.html | 15 + .../the-input-element/range-tick-marks-04-ref.html | 7 + .../the-input-element/range-tick-marks-04.html | 14 + .../html/semantics/forms/time-enter-keypress.html | 48 + .../async-dynamic-module-circular.html | 25 + .../async-dynamic-module-error.html | 25 + .../the-script-element/async-dynamic-module.html | 25 + .../the-script-element/async-module-circular.html | 28 + .../the-script-element/async-module-error.html | 25 + .../the-script-element/async-module.html | 21 + .../circular-module-import-with-syntax-error.html | 26 + .../the-script-element/create-module-script.html | 25 + .../mixed-content-import.https.html | 27 + .../the-script-element/module-error-reporting.html | 89 + .../reload-failed-module-script.html | 41 + .../support/async_dynamic_module.js | 11 + .../support/async_dynamic_module_circular.js | 5 + .../support/async_dynamic_module_error.js | 5 + .../the-script-element/support/async_module.js | 14 + .../support/async_module_circular.js | 3 + .../support/async_module_error.js | 4 + .../support/async_test_module.js | 12 + .../support/async_test_module_circular_1.js | 3 + .../support/async_test_module_circular_2.js | 5 + .../support/async_test_module_circular_3.js | 8 + .../support/async_test_module_failure.js | 6 + .../the-script-element/support/bad_local_export.js | 3 + .../the-script-element/support/circular_error1.js | 2 + .../the-script-element/support/circular_error2.js | 1 + .../the-script-element/support/circular_error3.js | 1 + .../support/evaluation-order-setup.mjs | 19 + .../support/import_resolve_failure.js | 2 + .../support/indirect_export_resolve_failure.js | 2 + .../the-script-element/support/missing_import.js | 2 + .../support/missing_indirect_export.js | 2 + .../the-script-element/support/mixed_import.js | 1 + .../the-script-element/support/mixed_import2.js | 1 + .../the-script-element/support/module.js | 2 + .../support/module_eval_error.js | 3 + .../mozilla/tests/html/syntax/charset/README.md | 7 + .../syntax/charset/in-noscript-after-template.html | 10 + .../tests/html/syntax/charset/in-noscript-ncr.html | 10 + .../tests/html/syntax/charset/in-noscript.html | 10 + .../syntax/charset/in-svg-in-cdata-after-gt.html | 10 + .../references/in-noscript-after-template-ref.html | 9 + .../charset/references/in-noscript-ncr-ref.html | 9 + .../syntax/charset/references/in-noscript-ref.html | 9 + .../references/in-svg-in-cdata-after-gt-ref.html | 10 + .../tests/html/syntax/parsing/math-parse01.html | 62 + .../mozilla/tests/indic-detection/LICENSE | 359 +++ .../mozilla/tests/indic-detection/README.txt | 14 + .../tests/indic-detection/baskar-jagran.html | 10 + .../mozilla/tests/indic-detection/elango.html | 10 + .../mozilla/tests/indic-detection/htchanakya.html | 12 + .../mozilla/tests/indic-detection/shreetam.html | 10 + .../mozilla/tests/indic-detection/tab.html | 10 + .../mozilla/tests/indic-detection/tam.html | 10 + .../mozilla/tests/indic-detection/tboomi.html | 10 + .../mozilla/tests/indic-detection/tscii.html | 10 + .../tests/infrastructure/prefs/prefs-0.html | 12 + .../tests/infrastructure/prefs/prefs-1.html | 11 + .../tests/infrastructure/prefs/prefs-2.html | 10 + .../tests/infrastructure/prefs/prefs-false.html | 5 + .../tests/infrastructure/prefs/prefs-true.html | 5 + .../specialPowers/specialpowers.html | 7 + ...ant-basic-transforms-with-default-font-ref.html | 15 + ...variant-basic-transforms-with-default-font.html | 20 + .../mathvariant/mathvariant-bold-fraktur-ref.html | 79 + .../mathvariant/mathvariant-bold-fraktur.html | 85 + .../mathvariant/mathvariant-bold-italic-ref.html | 137 + .../mathvariant/mathvariant-bold-italic.html | 143 + .../mathml/mathvariant/mathvariant-bold-ref.html | 149 ++ .../mathvariant-bold-sans-serif-ref.html | 147 + .../mathvariant/mathvariant-bold-sans-serif.html | 153 ++ .../mathvariant/mathvariant-bold-script-ref.html | 79 + .../mathvariant/mathvariant-bold-script.html | 85 + .../tests/mathml/mathvariant/mathvariant-bold.html | 155 ++ .../mathvariant-case-sensitivity-ref.html | 163 ++ .../mathvariant/mathvariant-case-sensitivity.html | 168 ++ ...t-double-struck-font-style-font-weight-ref.html | 25 + ...riant-double-struck-font-style-font-weight.html | 30 + .../mathvariant/mathvariant-double-struck-ref.html | 114 + .../mathvariant/mathvariant-double-struck.html | 120 + .../mathvariant/mathvariant-fraktur-ref.html | 79 + .../mathml/mathvariant/mathvariant-fraktur.html | 85 + .../mathvariant/mathvariant-initial-ref.html | 47 + .../mathml/mathvariant/mathvariant-initial.html | 53 + .../mathml/mathvariant/mathvariant-italic-ref.html | 139 + .../mathml/mathvariant/mathvariant-italic.html | 145 + .../mathml/mathvariant/mathvariant-looped-ref.html | 54 + .../mathml/mathvariant/mathvariant-looped.html | 60 + .../mathvariant/mathvariant-monospace-ref.html | 89 + .../mathml/mathvariant/mathvariant-monospace.html | 95 + .../mathvariant-sans-serif-bold-italic-ref.html | 137 + .../mathvariant-sans-serif-bold-italic.html | 143 + .../mathvariant-sans-serif-italic-ref.html | 79 + .../mathvariant/mathvariant-sans-serif-italic.html | 85 + .../mathvariant/mathvariant-sans-serif-ref.html | 89 + .../mathml/mathvariant/mathvariant-sans-serif.html | 95 + .../mathml/mathvariant/mathvariant-script-ref.html | 79 + .../mathml/mathvariant/mathvariant-script.html | 85 + .../mathvariant/mathvariant-stretched-ref.html | 50 + .../mathml/mathvariant/mathvariant-stretched.html | 56 + .../mathml/mathvariant/mathvariant-tailed-ref.html | 42 + .../mathml/mathvariant/mathvariant-tailed.html | 48 + .../web-platform/mozilla/tests/media/2x2-green.ogv | Bin 0 -> 7660 bytes .../MediaDevices-enumerateDevices.https.html | 110 + .../enumerateDevices-in-background.https.html | 67 + .../enumerateDevices-without-focus.https.html | 58 + .../mediacapture-streams/permission-helper.js | 24 + testing/web-platform/mozilla/tests/placeholder | 6 + ...isplaymedia-user-activation-consumed.https.html | 30 + .../Selection-addRange-same-instance.html | 56 + .../tests/service-workers/bug1675097.https.html | 34 + .../no_intercept_for_crossorigin_media.https.html | 42 + .../tests/service-workers/resources/blank.html | 2 + .../resources/bug1675097-iframe.html | 15 + .../service-workers/resources/bug1675097-sw.js | 26 + .../resources/crossorigin_media_iframe.html | 24 + .../crossorigin_media_iframe_nonrange.html | 22 + .../tests/service-workers/resources/empty.js | 0 .../tests/service-workers/resources/fetch_video.py | 14 + .../tests/service-workers/resources/green.png | Bin 0 -> 87 bytes .../resources/intercept_media_sw.js | 14 + ...ate_completes_in_disconnected_global.https.html | 63 + .../mozilla/tests/svg/smil-sampling.html | 44 + .../web-animations/web-animations-print-ref.html | 4 + .../tests/web-animations/web-animations-print.html | 20 + .../mozilla/tests/webdriver/bidi/__init__.py | 0 .../webdriver/bidi/browsing_context/__init__.py | 0 .../bidi/browsing_context/create/__init__.py | 20 + .../browsing_context/create/reference_context.py | 72 + .../bidi/browsing_context/create/type_hint.py | 31 + .../bidi/browsing_context/navigate/__init__.py | 0 .../bidi/browsing_context/navigate/error.py | 48 + .../tests/webdriver/bidi/errors/__init__.py | 0 .../mozilla/tests/webdriver/bidi/errors/errors.py | 8 + .../tests/webdriver/bidi/interface/__init__.py | 0 .../tests/webdriver/bidi/interface/interface.py | 26 + .../webdriver/bidi/script/exception_details.py | 69 + .../tests/webdriver/bidi/websocket_upgrade.py | 156 ++ .../mozilla/tests/webdriver/cdp/__init__.py | 0 .../tests/webdriver/cdp/debugger_address.py | 45 + .../mozilla/tests/webdriver/cdp/port_file.py | 30 + .../classic/element_send_keys/__init__.py | 0 .../classic/element_send_keys/scroll_into_view.py | 50 + .../classic/element_send_keys/send_keys.py | 24 + .../classic/execute_async_script/__init__.py | 0 .../classic/execute_async_script/execute_async.py | 59 + .../classic/get_window_handle/__init__.py | 0 .../webdriver/classic/get_window_handle/chrome.py | 25 + .../classic/get_window_handles/__init__.py | 0 .../webdriver/classic/get_window_handles/chrome.py | 43 + .../webdriver/classic/new_session/__init__.py | 0 .../webdriver/classic/new_session/bidi_disabled.py | 33 + .../tests/webdriver/classic/new_session/binary.py | 33 + .../webdriver/classic/new_session/conftest.py | 58 + .../tests/webdriver/classic/new_session/create.py | 11 + .../tests/webdriver/classic/new_session/invalid.py | 53 + .../webdriver/classic/new_session/profile_root.py | 38 + .../tests/webdriver/classic/protocol/__init__.py | 0 .../webdriver/classic/protocol/allow_hosts.py | 53 + .../webdriver/classic/protocol/allow_origins.py | 56 + .../webdriver/classic/protocol/marionette_port.py | 41 + .../tests/webdriver/classic/protocol/request.py | 72 + .../tests/webdriver/classic/send_alert_text.py | 22 + .../classic/take_full_screenshot/__init__.py | 12 + .../classic/take_full_screenshot/iframe.py | 47 + .../classic/take_full_screenshot/screenshot.py | 51 + .../mozilla/tests/webdriver/conftest.py | 15 + .../mozilla/tests/webdriver/support/__init__.py | 0 .../mozilla/tests/webdriver/support/context.py | 20 + .../mozilla/tests/webdriver/support/fixtures.py | 256 ++ .../mozilla/tests/webdriver/support/network.py | 78 + .../mozilla/tests/webgpu/chunked/1/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/10/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/11/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/12/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/13/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/14/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/15/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/16/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/17/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/18/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/19/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/2/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/20/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/21/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/22/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/23/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/24/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/25/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/26/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/27/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/28/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/29/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/3/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/30/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/31/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/32/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/33/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/34/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/35/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/36/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/37/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/38/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/39/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/4/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/40/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/41/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/42/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/43/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/44/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/45/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/46/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/47/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/48/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/49/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/5/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/50/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/51/cts.https.html | 58 + .../mozilla/tests/webgpu/chunked/6/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/7/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/8/cts.https.html | 59 + .../mozilla/tests/webgpu/chunked/9/cts.https.html | 59 + .../tests/webgpu/common/framework/data_cache.js | 89 + .../tests/webgpu/common/framework/fixture.js | 310 +++ .../webgpu/common/framework/params_builder.js | 213 ++ .../tests/webgpu/common/framework/resources.js | 111 + .../tests/webgpu/common/framework/test_config.js | 10 + .../tests/webgpu/common/framework/test_group.js | 3 + .../tests/webgpu/common/internal/file_loader.js | 96 + .../webgpu/common/internal/file_loader.js.map | 1 + .../webgpu/common/internal/logging/log_message.js | 45 + .../common/internal/logging/log_message.js.map | 1 + .../tests/webgpu/common/internal/logging/logger.js | 31 + .../webgpu/common/internal/logging/logger.js.map | 1 + .../tests/webgpu/common/internal/logging/result.js | 4 + .../webgpu/common/internal/logging/result.js.map | 1 + .../common/internal/logging/test_case_recorder.js | 159 ++ .../internal/logging/test_case_recorder.js.map | 1 + .../tests/webgpu/common/internal/params_utils.js | 125 + .../webgpu/common/internal/params_utils.js.map | 1 + .../tests/webgpu/common/internal/query/compare.js | 95 + .../webgpu/common/internal/query/compare.js.map | 1 + .../common/internal/query/encode_selectively.js | 24 + .../internal/query/encode_selectively.js.map | 1 + .../common/internal/query/json_param_value.js | 84 + .../common/internal/query/json_param_value.js.map | 1 + .../webgpu/common/internal/query/parseQuery.js | 156 ++ .../webgpu/common/internal/query/parseQuery.js.map | 1 + .../tests/webgpu/common/internal/query/query.js | 263 ++ .../webgpu/common/internal/query/query.js.map | 1 + .../webgpu/common/internal/query/separators.js | 15 + .../webgpu/common/internal/query/separators.js.map | 1 + .../common/internal/query/stringify_params.js | 45 + .../common/internal/query/stringify_params.js.map | 1 + .../webgpu/common/internal/query/validQueryPart.js | 4 + .../common/internal/query/validQueryPart.js.map | 1 + .../mozilla/tests/webgpu/common/internal/stack.js | 83 + .../tests/webgpu/common/internal/stack.js.map | 1 + .../tests/webgpu/common/internal/test_group.js | 647 +++++ .../tests/webgpu/common/internal/test_group.js.map | 1 + .../webgpu/common/internal/test_suite_listing.js | 4 + .../common/internal/test_suite_listing.js.map | 1 + .../mozilla/tests/webgpu/common/internal/tree.js | 576 ++++ .../tests/webgpu/common/internal/tree.js.map | 1 + .../mozilla/tests/webgpu/common/internal/util.js | 11 + .../tests/webgpu/common/internal/util.js.map | 1 + .../tests/webgpu/common/internal/version.js | 3 + .../tests/webgpu/common/runtime/helper/options.js | 18 + .../tests/webgpu/common/runtime/helper/sys.js | 37 + .../common/runtime/helper/test_worker-worker.js | 32 + .../webgpu/common/runtime/helper/test_worker.js | 37 + .../mozilla/tests/webgpu/common/runtime/wpt.js | 73 + .../tests/webgpu/common/util/collect_garbage.js | 59 + .../webgpu/common/util/collect_garbage.js.map | 1 + .../mozilla/tests/webgpu/common/util/colors.js | 128 + .../mozilla/tests/webgpu/common/util/colors.js.map | 1 + .../tests/webgpu/common/util/data_tables.js | 40 + .../tests/webgpu/common/util/data_tables.js.map | 1 + .../tests/webgpu/common/util/navigator_gpu.js | 75 + .../tests/webgpu/common/util/navigator_gpu.js.map | 1 + .../tests/webgpu/common/util/preprocessor.js | 150 ++ .../tests/webgpu/common/util/preprocessor.js.map | 1 + .../mozilla/tests/webgpu/common/util/timeout.js | 8 + .../tests/webgpu/common/util/timeout.js.map | 1 + .../mozilla/tests/webgpu/common/util/types.js | 60 + .../mozilla/tests/webgpu/common/util/types.js.map | 1 + .../mozilla/tests/webgpu/common/util/util.js | 304 +++ .../mozilla/tests/webgpu/common/util/util.js.map | 1 + .../tests/webgpu/common/util/wpt_reftest_wait.js | 25 + .../webgpu/common/util/wpt_reftest_wait.js.map | 1 + .../external/petamoriken/float16/float16.d.js | 4 + .../external/petamoriken/float16/float16.d.js.map | 1 + .../webgpu/external/petamoriken/float16/float16.js | 1229 +++++++++ .../external/petamoriken/float16/float16.js.map | 1 + .../mozilla/tests/webgpu/resources/README.md | 2 + .../webgpu/resources/red-green.bt2020.vp9.webm | Bin 0 -> 4057 bytes .../webgpu/resources/red-green.bt601.vp9.webm | Bin 0 -> 4015 bytes .../webgpu/resources/red-green.bt709.vp9.webm | Bin 0 -> 4075 bytes .../mozilla/tests/webgpu/resources/red-green.mp4 | Bin 0 -> 92225 bytes .../tests/webgpu/resources/red-green.theora.ogv | Bin 0 -> 10292 bytes .../tests/webgpu/resources/red-green.webmvp8.webm | Bin 0 -> 10979 bytes .../mozilla/tests/webgpu/resources/webgpu.png | Bin 0 -> 33475 bytes .../api/operation/adapter/requestAdapter.spec.js | 122 + .../operation/adapter/requestAdapterInfo.spec.js | 55 + .../api/operation/adapter/requestDevice.spec.js | 274 ++ .../webgpu/api/operation/buffers/map.spec.js | 491 ++++ .../api/operation/buffers/map_ArrayBuffer.spec.js | 90 + .../api/operation/buffers/map_detach.spec.js | 80 + .../webgpu/api/operation/buffers/map_oom.spec.js | 121 + .../webgpu/api/operation/buffers/mapping_test.js | 35 + .../webgpu/api/operation/buffers/threading.spec.js | 30 + .../api/operation/command_buffer/basic.spec.js | 104 + .../operation/command_buffer/clearBuffer.spec.js | 55 + .../command_buffer/copyBufferToBuffer.spec.js | 110 + .../command_buffer/copyTextureToTexture.spec.js | 1588 +++++++++++ .../operation/command_buffer/image_copy.spec.js | 1910 +++++++++++++ .../programmable/programmable_state_test.js | 144 + .../programmable/state_tracking.spec.js | 319 +++ .../command_buffer/render/dynamic_state.spec.js | 20 + .../command_buffer/render/state_tracking.spec.js | 636 +++++ .../webgpu/api/operation/compute/basic.spec.js | 166 ++ .../compute_pipeline/entry_point_name.spec.js | 13 + .../operation/compute_pipeline/overrides.spec.js | 505 ++++ .../webgpu/api/operation/device/lost.spec.js | 93 + .../webgpu/webgpu/api/operation/labels.spec.js | 13 + .../memory_sync/buffer/buffer_sync_test.js | 871 ++++++ .../memory_sync/buffer/multiple_buffers.spec.js | 354 +++ .../memory_sync/buffer/single_buffer.spec.js | 257 ++ .../memory_sync/operation_context_helper.js | 317 +++ .../memory_sync/texture/same_subresource.spec.js | 709 +++++ .../memory_sync/texture/texture_sync_test.js | 110 + .../api/operation/onSubmittedWorkDone.spec.js | 57 + .../api/operation/pipeline/default_layout.spec.js | 28 + .../webgpu/api/operation/queue/writeBuffer.spec.js | 233 ++ .../webgpu/webgpu/api/operation/reflection.spec.js | 138 + .../api/operation/render_pass/clear_value.spec.js | 191 ++ .../api/operation/render_pass/resolve.spec.js | 206 ++ .../api/operation/render_pass/storeOp.spec.js | 355 +++ .../api/operation/render_pass/storeop2.spec.js | 84 + .../render_pipeline/alpha_to_coverage.spec.js | 20 + .../render_pipeline/culling_tests.spec.js | 186 ++ .../operation/render_pipeline/overrides.spec.js | 424 +++ .../pipeline_output_targets.spec.js | 462 ++++ .../render_pipeline/primitive_topology.spec.js | 482 ++++ .../operation/render_pipeline/sample_mask.spec.js | 501 ++++ .../vertex_only_render_pipeline.spec.js | 30 + .../webgpu/api/operation/rendering/basic.spec.js | 357 +++ .../operation/rendering/color_target_state.spec.js | 878 ++++++ .../webgpu/api/operation/rendering/depth.spec.js | 546 ++++ .../api/operation/rendering/depth_bias.spec.js | 327 +++ .../operation/rendering/depth_clip_clamp.spec.js | 524 ++++ .../webgpu/api/operation/rendering/draw.spec.js | 745 ++++++ .../api/operation/rendering/indirect_draw.spec.js | 258 ++ .../rendering/robust_access_index.spec.js | 9 + .../webgpu/api/operation/rendering/stencil.spec.js | 575 ++++ .../api/operation/resource_init/buffer.spec.js | 886 ++++++ .../resource_init/check_texture/by_copy.js | 56 + .../resource_init/check_texture/by_ds_test.js | 181 ++ .../resource_init/check_texture/by_sampling.js | 152 ++ .../operation/resource_init/texture_zero.spec.js | 614 +++++ .../api/operation/sampling/anisotropy.spec.js | 326 +++ .../api/operation/sampling/filter_mode.spec.js | 15 + .../api/operation/sampling/lod_clamp.spec.js | 13 + .../shader_module/compilation_info.spec.js | 198 ++ .../texture_view/format_reinterpretation.spec.js | 363 +++ .../webgpu/api/operation/texture_view/read.spec.js | 57 + .../api/operation/texture_view/write.spec.js | 55 + .../webgpu/api/operation/uncapturederror.spec.js | 35 + .../api/operation/vertex_state/correctness.spec.js | 1067 ++++++++ .../operation/vertex_state/index_format.spec.js | 573 ++++ .../webgpu/api/validation/buffer/create.spec.js | 122 + .../webgpu/api/validation/buffer/destroy.spec.js | 102 + .../webgpu/api/validation/buffer/mapping.spec.js | 1130 ++++++++ .../webgpu/api/validation/buffer/threading.spec.js | 15 + .../capability_checks/features/query_types.spec.js | 77 + .../features/texture_formats.spec.js | 446 +++ .../webgpu/api/validation/compute_pipeline.spec.js | 667 +++++ .../webgpu/api/validation/createBindGroup.spec.js | 1135 ++++++++ .../api/validation/createBindGroupLayout.spec.js | 456 ++++ .../api/validation/createPipelineLayout.spec.js | 157 ++ .../webgpu/api/validation/createSampler.spec.js | 56 + .../webgpu/api/validation/createTexture.spec.js | 877 ++++++ .../webgpu/api/validation/createView.spec.js | 333 +++ .../webgpu/api/validation/debugMarker.spec.js | 99 + .../validation/encoding/beginComputePass.spec.js | 194 ++ .../validation/encoding/beginRenderPass.spec.js | 213 ++ .../validation/encoding/cmds/clearBuffer.spec.js | 242 ++ .../validation/encoding/cmds/compute_pass.spec.js | 251 ++ .../encoding/cmds/copyBufferToBuffer.spec.js | 320 +++ .../encoding/cmds/copyTextureToTexture.spec.js | 873 ++++++ .../api/validation/encoding/cmds/debug.spec.js | 65 + .../validation/encoding/cmds/index_access.spec.js | 163 ++ .../validation/encoding/cmds/render/draw.spec.js | 827 ++++++ .../encoding/cmds/render/dynamic_state.spec.js | 296 ++ .../encoding/cmds/render/indirect_draw.spec.js | 203 ++ .../api/validation/encoding/cmds/render/render.js | 30 + .../encoding/cmds/render/setIndexBuffer.spec.js | 123 + .../encoding/cmds/render/setPipeline.spec.js | 63 + .../encoding/cmds/render/setVertexBuffer.spec.js | 142 + .../encoding/cmds/render/state_tracking.spec.js | 185 ++ .../validation/encoding/cmds/render_pass.spec.js | 15 + .../validation/encoding/cmds/setBindGroup.spec.js | 436 +++ .../encoding/createRenderBundleEncoder.spec.js | 229 ++ .../validation/encoding/encoder_open_state.spec.js | 572 ++++ .../api/validation/encoding/encoder_state.spec.js | 205 ++ .../pipeline_bind_group_compat.spec.js | 757 ++++++ .../validation/encoding/queries/begin_end.spec.js | 163 ++ .../api/validation/encoding/queries/common.js | 30 + .../validation/encoding/queries/general.spec.js | 158 ++ .../encoding/queries/pipeline_statistics.spec.js | 15 + .../encoding/queries/resolveQuerySet.spec.js | 183 ++ .../api/validation/encoding/render_bundle.spec.js | 259 ++ .../webgpu/api/validation/error_scope.spec.js | 285 ++ .../api/validation/getBindGroupLayout.spec.js | 202 ++ .../validation/image_copy/buffer_related.spec.js | 230 ++ .../image_copy/buffer_texture_copies.spec.js | 441 +++ .../webgpu/api/validation/image_copy/image_copy.js | 216 ++ .../validation/image_copy/layout_related.spec.js | 480 ++++ .../validation/image_copy/texture_related.spec.js | 541 ++++ .../api/validation/layout_shader_compat.spec.js | 15 + .../webgpu/api/validation/query_set/create.spec.js | 35 + .../api/validation/query_set/destroy.spec.js | 16 + .../api/validation/queue/buffer_mapped.spec.js | 266 ++ .../CopyExternalImageToTexture.spec.js | 886 ++++++ .../validation/queue/destroyed/query_set.spec.js | 64 + .../webgpu/api/validation/queue/submit.spec.js | 48 + .../api/validation/queue/writeBuffer.spec.js | 189 ++ .../api/validation/queue/writeTexture.spec.js | 111 + .../render_pass/attachment_compatibility.spec.js | 631 +++++ .../render_pass/render_pass_descriptor.spec.js | 1106 ++++++++ .../api/validation/render_pass/resolve.spec.js | 193 ++ .../api/validation/render_pass/storeOp.spec.js | 76 + .../api/validation/render_pipeline/common.js | 62 + .../render_pipeline/depth_stencil_state.spec.js | 205 ++ .../render_pipeline/fragment_state.spec.js | 385 +++ .../validation/render_pipeline/inter_stage.spec.js | 320 +++ .../api/validation/render_pipeline/misc.spec.js | 90 + .../render_pipeline/multisample_state.spec.js | 84 + .../validation/render_pipeline/overrides.spec.js | 502 ++++ .../render_pipeline/primitive_state.spec.js | 43 + .../render_pipeline/shader_module.spec.js | 113 + .../render_pipeline/vertex_state.spec.js | 639 +++++ .../resource_usages/buffer/in_pass_encoder.spec.js | 879 ++++++ .../resource_usages/buffer/in_pass_misc.spec.js | 404 +++ .../texture/in_pass_encoder.spec.js | 1338 +++++++++ .../texture/in_render_common.spec.js | 573 ++++ .../resource_usages/texture/in_render_misc.spec.js | 403 +++ .../validation/shader_module/entry_point.spec.js | 118 + .../api/validation/shader_module/overrides.spec.js | 97 + .../validation/state/device_lost/destroy.spec.js | 957 +++++++ .../webgpu/api/validation/texture/destroy.spec.js | 117 + .../texture/rg11b10ufloat_renderable.spec.js | 109 + .../webgpu/api/validation/validation_test.js | 422 +++ .../mozilla/tests/webgpu/webgpu/capability_info.js | 1808 +++++++++++++ .../mozilla/tests/webgpu/webgpu/constants.js | 62 + .../mozilla/tests/webgpu/webgpu/examples.spec.js | 275 ++ .../mozilla/tests/webgpu/webgpu/gpu_test.js | 941 +++++++ .../webgpu/webgpu/idl/constants/flags.spec.js | 80 + .../tests/webgpu/webgpu/idl/exposed.html.js | 52 + .../tests/webgpu/webgpu/idl/exposed.http.html | 11 + .../tests/webgpu/webgpu/idl/exposed.https.html | 11 + .../mozilla/tests/webgpu/webgpu/idl/idl_test.js | 38 + .../mozilla/tests/webgpu/webgpu/listing.js | 2829 ++++++++++++++++++++ .../shader/execution/evaluation_order.spec.js | 485 ++++ .../shader/execution/expression/binary/binary.js | 9 + .../execution/expression/binary/bitwise.spec.js | 224 ++ .../expression/binary/bool_logical.spec.js | 136 + .../expression/binary/f32_arithmetic.spec.js | 190 ++ .../expression/binary/f32_logical.spec.js | 251 ++ .../expression/binary/i32_arithmetic.spec.js | 149 ++ .../expression/binary/u32_arithmetic.spec.js | 202 ++ .../execution/expression/call/builtin/abs.spec.js | 156 ++ .../execution/expression/call/builtin/acos.spec.js | 56 + .../expression/call/builtin/acosh.spec.js | 60 + .../execution/expression/call/builtin/all.spec.js | 93 + .../execution/expression/call/builtin/any.spec.js | 93 + .../expression/call/builtin/arrayLength.spec.js | 17 + .../execution/expression/call/builtin/asin.spec.js | 56 + .../expression/call/builtin/asinh.spec.js | 51 + .../execution/expression/call/builtin/atan.spec.js | 71 + .../expression/call/builtin/atan2.spec.js | 67 + .../expression/call/builtin/atanh.spec.js | 63 + .../expression/call/builtin/atomicAdd.spec.js | 38 + .../expression/call/builtin/atomicAnd.spec.js | 38 + .../call/builtin/atomicCompareExchangeWeak.spec.js | 48 + .../expression/call/builtin/atomicExchange.spec.js | 32 + .../expression/call/builtin/atomicLoad.spec.js | 33 + .../expression/call/builtin/atomicMax.spec.js | 38 + .../expression/call/builtin/atomicMin.spec.js | 38 + .../expression/call/builtin/atomicOr.spec.js | 38 + .../expression/call/builtin/atomicStore.spec.js | 32 + .../expression/call/builtin/atomicSub.spec.js | 38 + .../expression/call/builtin/atomicXor.spec.js | 38 + .../execution/expression/call/builtin/builtin.js | 6 + .../execution/expression/call/builtin/ceil.spec.js | 68 + .../expression/call/builtin/clamp.spec.js | 160 ++ .../execution/expression/call/builtin/cos.spec.js | 64 + .../execution/expression/call/builtin/cosh.spec.js | 51 + .../call/builtin/countLeadingZeros.spec.js | 247 ++ .../expression/call/builtin/countOneBits.spec.js | 246 ++ .../call/builtin/countTrailingZeros.spec.js | 247 ++ .../expression/call/builtin/cross.spec.js | 67 + .../expression/call/builtin/degrees.spec.js | 51 + .../expression/call/builtin/determinant.spec.js | 33 + .../expression/call/builtin/distance.spec.js | 172 ++ .../execution/expression/call/builtin/dot.spec.js | 160 ++ .../execution/expression/call/builtin/dpdx.spec.js | 22 + .../expression/call/builtin/dpdxCoarse.spec.js | 21 + .../expression/call/builtin/dpdxFine.spec.js | 20 + .../execution/expression/call/builtin/dpdy.spec.js | 21 + .../expression/call/builtin/dpdyCoarse.spec.js | 21 + .../expression/call/builtin/dpdyFine.spec.js | 20 + .../execution/expression/call/builtin/exp.spec.js | 63 + .../execution/expression/call/builtin/exp2.spec.js | 63 + .../expression/call/builtin/extractBits.spec.js | 338 +++ .../expression/call/builtin/faceForward.spec.js | 195 ++ .../call/builtin/firstLeadingBit.spec.js | 344 +++ .../call/builtin/firstTrailingBit.spec.js | 247 ++ .../expression/call/builtin/floor.spec.js | 67 + .../execution/expression/call/builtin/fma.spec.js | 63 + .../expression/call/builtin/fract.spec.js | 69 + .../expression/call/builtin/frexp.spec.js | 81 + .../expression/call/builtin/fwidth.spec.js | 20 + .../expression/call/builtin/fwidthCoarse.spec.js | 20 + .../expression/call/builtin/fwidthFine.spec.js | 20 + .../expression/call/builtin/insertBits.spec.js | 387 +++ .../expression/call/builtin/inversesqrt.spec.js | 59 + .../expression/call/builtin/ldexp.spec.js | 90 + .../expression/call/builtin/length.spec.js | 107 + .../execution/expression/call/builtin/log.spec.js | 66 + .../execution/expression/call/builtin/log2.spec.js | 66 + .../execution/expression/call/builtin/max.spec.js | 109 + .../execution/expression/call/builtin/min.spec.js | 108 + .../execution/expression/call/builtin/mix.spec.js | 88 + .../execution/expression/call/builtin/modf.spec.js | 357 +++ .../expression/call/builtin/normalize.spec.js | 89 + .../expression/call/builtin/pack2x16float.spec.js | 89 + .../expression/call/builtin/pack2x16snorm.spec.js | 53 + .../expression/call/builtin/pack2x16unorm.spec.js | 53 + .../expression/call/builtin/pack4x8snorm.spec.js | 57 + .../expression/call/builtin/pack4x8unorm.spec.js | 57 + .../execution/expression/call/builtin/pow.spec.js | 61 + .../expression/call/builtin/quantizeToF16.spec.js | 71 + .../expression/call/builtin/radians.spec.js | 49 + .../expression/call/builtin/reflect.spec.js | 141 + .../expression/call/builtin/refract.spec.js | 195 ++ .../expression/call/builtin/reverseBits.spec.js | 811 ++++++ .../expression/call/builtin/round.spec.js | 51 + .../expression/call/builtin/saturate.spec.js | 57 + .../expression/call/builtin/select.spec.js | 227 ++ .../execution/expression/call/builtin/sign.spec.js | 48 + .../execution/expression/call/builtin/sin.spec.js | 63 + .../execution/expression/call/builtin/sinh.spec.js | 51 + .../expression/call/builtin/smoothstep.spec.js | 65 + .../execution/expression/call/builtin/sqrt.spec.js | 51 + .../execution/expression/call/builtin/step.spec.js | 80 + .../expression/call/builtin/storageBarrier.spec.js | 39 + .../execution/expression/call/builtin/tan.spec.js | 57 + .../execution/expression/call/builtin/tanh.spec.js | 48 + .../call/builtin/textureDimension.spec.js | 161 ++ .../expression/call/builtin/textureGather.spec.js | 275 ++ .../call/builtin/textureGatherCompare.spec.js | 135 + .../expression/call/builtin/textureLoad.spec.js | 183 ++ .../call/builtin/textureNumLayers.spec.js | 99 + .../call/builtin/textureNumLevels.spec.js | 66 + .../call/builtin/textureNumSamples.spec.js | 38 + .../expression/call/builtin/textureSample.spec.js | 278 ++ .../call/builtin/textureSampleBias.spec.js | 176 ++ .../call/builtin/textureSampleCompare.spec.js | 150 ++ .../call/builtin/textureSampleCompareLevel.spec.js | 154 ++ .../call/builtin/textureSampleGrad.spec.js | 139 + .../call/builtin/textureSampleLevel.spec.js | 295 ++ .../expression/call/builtin/textureStore.spec.js | 123 + .../expression/call/builtin/transpose.spec.js | 38 + .../expression/call/builtin/trunc.spec.js | 49 + .../call/builtin/unpack2x16float.spec.js | 41 + .../call/builtin/unpack2x16snorm.spec.js | 41 + .../call/builtin/unpack2x16unorm.spec.js | 41 + .../expression/call/builtin/unpack4x8snorm.spec.js | 41 + .../expression/call/builtin/unpack4x8unorm.spec.js | 41 + .../execution/expression/call/builtin/utils.js | 46 + .../call/builtin/workgroupBarrier.spec.js | 39 + .../shader/execution/expression/case_cache.js | 144 + .../shader/execution/expression/expression.js | 988 +++++++ .../expression/unary/bool_logical.spec.js | 32 + .../expression/unary/f32_arithmetic.spec.js | 40 + .../expression/unary/i32_arithmetic.spec.js | 36 + .../shader/execution/expression/unary/unary.js | 6 + .../execution/memory_model/atomicity.spec.js | 103 + .../shader/execution/memory_model/barrier.spec.js | 220 ++ .../execution/memory_model/coherence.spec.js | 528 ++++ .../execution/memory_model/memory_model_setup.js | 962 +++++++ .../shader/execution/memory_model/weak.spec.js | 447 ++++ .../webgpu/webgpu/shader/execution/padding.spec.js | 425 +++ .../webgpu/shader/execution/robust_access.spec.js | 472 ++++ .../shader/execution/robust_access_vertex.spec.js | 553 ++++ .../execution/shader_io/compute_builtins.spec.js | 294 ++ .../execution/shader_io/shared_structs.spec.js | 356 +++ .../webgpu/shader/execution/zero_init.spec.js | 434 +++ .../mozilla/tests/webgpu/webgpu/shader/types.js | 193 ++ .../webgpu/shader/validation/parse/align.spec.js | 182 ++ .../shader/validation/parse/blankspace.spec.js | 51 + .../webgpu/shader/validation/parse/builtin.spec.js | 39 + .../shader/validation/parse/comments.spec.js | 76 + .../shader/validation/parse/identifiers.spec.js | 280 ++ .../webgpu/shader/validation/parse/literal.spec.js | 298 +++ .../shader/validation/parse/semicolon.spec.js | 270 ++ .../webgpu/shader/validation/parse/source.spec.js | 30 + .../shader/validation/parse/static_assert.spec.js | 38 + .../shader/validation/parse/var_and_let.spec.js | 73 + .../validation/resource_interface/bindings.spec.js | 114 + .../shader/validation/resource_interface/util.js | 88 + .../shader/validation/shader_io/builtins.spec.js | 277 ++ .../validation/shader_io/entry_point.spec.js | 138 + .../validation/shader_io/interpolate.spec.js | 145 + .../shader/validation/shader_io/invariant.spec.js | 84 + .../shader/validation/shader_io/locations.spec.js | 260 ++ .../webgpu/shader/validation/shader_io/util.js | 68 + .../shader/validation/shader_validation_test.js | 77 + .../validation/static_assert/static_assert.spec.js | 71 + .../mozilla/tests/webgpu/webgpu/shader/values.js | 94 + .../mozilla/tests/webgpu/webgpu/util/buffer.js | 20 + .../tests/webgpu/webgpu/util/check_contents.js | 207 ++ .../webgpu/webgpu/util/color_space_conversion.js | 241 ++ .../webgpu/webgpu/util/command_buffer_maker.js | 61 + .../mozilla/tests/webgpu/webgpu/util/compare.js | 257 ++ .../mozilla/tests/webgpu/webgpu/util/constants.js | 591 ++++ .../mozilla/tests/webgpu/webgpu/util/conversion.js | 1049 ++++++++ .../tests/webgpu/webgpu/util/copy_to_texture.js | 176 ++ .../tests/webgpu/webgpu/util/create_elements.js | 69 + .../tests/webgpu/webgpu/util/device_pool.js | 361 +++ .../tests/webgpu/webgpu/util/f32_interval.js | 1931 +++++++++++++ .../mozilla/tests/webgpu/webgpu/util/math.js | 949 +++++++ .../mozilla/tests/webgpu/webgpu/util/memory.js | 26 + .../tests/webgpu/webgpu/util/pretty_diff_tables.js | 49 + .../mozilla/tests/webgpu/webgpu/util/shader.js | 194 ++ .../mozilla/tests/webgpu/webgpu/util/texture.js | 59 + .../tests/webgpu/webgpu/util/texture/base.js | 199 ++ .../webgpu/webgpu/util/texture/data_generation.js | 84 + .../tests/webgpu/webgpu/util/texture/layout.js | 302 +++ .../webgpu/webgpu/util/texture/subresource.js | 54 + .../tests/webgpu/webgpu/util/texture/texel_data.js | 852 ++++++ .../webgpu/webgpu/util/texture/texel_data.spec.js | 332 +++ .../tests/webgpu/webgpu/util/texture/texel_view.js | 122 + .../tests/webgpu/webgpu/util/texture/texture_ok.js | 303 +++ .../webgpu/webgpu/util/texture/texture_ok.spec.js | 162 ++ .../mozilla/tests/webgpu/webgpu/util/unions.js | 42 + .../webgpu/web_platform/canvas/configure.spec.js | 425 +++ .../web_platform/canvas/context_creation.spec.js | 48 + .../web_platform/canvas/getCurrentTexture.spec.js | 263 ++ .../canvas/getPreferredCanvasFormat.spec.js | 20 + .../canvas/readbackFromWebGPUCanvas.spec.js | 464 ++++ .../web_platform/copyToTexture/ImageBitmap.spec.js | 558 ++++ .../web_platform/copyToTexture/canvas.spec.js | 679 +++++ .../web_platform/copyToTexture/video.spec.js | 16 + .../web_platform/external_texture/video.spec.js | 426 +++ .../web_platform/reftests/canvas_clear.html.js | 35 + .../web_platform/reftests/canvas_clear.https.html | 12 + .../reftests/canvas_colorspace.html.js | 93 + .../canvas_colorspace_bgra8unorm.https.html | 22 + .../canvas_colorspace_rgba16float.https.html | 23 + .../canvas_colorspace_rgba8unorm.https.html | 22 + .../web_platform/reftests/canvas_complex.html.js | 768 ++++++ .../canvas_complex_bgra8unorm_copy.https.html | 24 + .../canvas_complex_bgra8unorm_draw.https.html | 24 + .../canvas_complex_rgba16float_copy.https.html | 24 + .../canvas_complex_rgba16float_draw.https.html | 24 + .../canvas_complex_rgba16float_store.https.html | 24 + .../canvas_complex_rgba8unorm_copy.https.html | 24 + .../canvas_complex_rgba8unorm_draw.https.html | 24 + .../canvas_complex_rgba8unorm_store.https.html | 24 + .../reftests/canvas_composite_alpha.html.js | 175 ++ ...mposite_alpha_bgra8unorm_opaque_copy.https.html | 21 + ...mposite_alpha_bgra8unorm_opaque_draw.https.html | 21 + ..._alpha_bgra8unorm_premultiplied_copy.https.html | 22 + ..._alpha_bgra8unorm_premultiplied_draw.https.html | 22 + ...posite_alpha_rgba16float_opaque_copy.https.html | 21 + ...posite_alpha_rgba16float_opaque_draw.https.html | 21 + ...alpha_rgba16float_premultiplied_copy.https.html | 22 + ...alpha_rgba16float_premultiplied_draw.https.html | 22 + ...mposite_alpha_rgba8unorm_opaque_copy.https.html | 21 + ...mposite_alpha_rgba8unorm_opaque_draw.https.html | 21 + ..._alpha_rgba8unorm_premultiplied_copy.https.html | 22 + ..._alpha_rgba8unorm_premultiplied_draw.https.html | 22 + .../reftests/canvas_image_rendering.html.js | 80 + .../reftests/canvas_image_rendering.https.html | 15 + .../reftests/create-pattern-data-url.js | 20 + .../webgpu/web_platform/reftests/gpu_ref_test.js | 23 + .../reftests/ref/canvas_clear-ref.html | 22 + .../reftests/ref/canvas_colorspace-ref.html | 17 + .../reftests/ref/canvas_colorspace-ref.html.js | 50 + .../reftests/ref/canvas_complex-ref.html | 26 + .../ref/canvas_composite_alpha_opaque-ref.html | 26 + .../canvas_composite_alpha_premultiplied-ref.html | 26 + .../reftests/ref/canvas_image_rendering-ref.html | 25 + .../reftests/ref/resize_observer-ref.html | 90 + .../web_platform/reftests/resize_observer.html.js | 147 + .../reftests/resize_observer.https.html | 24 + .../tests/webgpu/webgpu/web_platform/util.js | 170 ++ .../webgpu/webgpu/web_platform/worker/worker.js | 80 + .../webgpu/web_platform/worker/worker.spec.js | 36 + .../webgpu/web_platform/worker/worker_launcher.js | 16 + .../mozilla/tests/websockets/bug1793935.any.js | 23 + .../bfcache/closed.tentative.https.html | 119 + .../bfcache/connected.tentative.https.html | 116 + .../bfcache/failed.tentative.https.html | 120 + .../mozilla/tests/webtransport/bfcache/helpers.js | 17 + .../tests/webtransport/bfcache/ports.sub.js | 12 + .../mozilla/tests/webtransport/bfcache/worker.js | 50 + .../mozilla/tests/workers/2-mib-file.py | 7 + .../mozilla/tests/workers/bug1674278-crash.html | 6 + .../mozilla/tests/workers/bug1674278.js | 6 + .../modules/dedicated-worker-import-csp.html | 115 + ...namic-import-remote-origin-script-worker.sub.js | 17 + .../resources/new-shared-worker-window.html | 19 + .../modules/resources/new-worker-window.html | 19 + ...tatic-import-remote-origin-script-worker.sub.js | 20 + .../workers/modules/shared-worker-import-csp.html | 123 + .../mozilla/tests/workers/resources/worker.js | 129 + .../tests/workers/worker_timer_nesting_level.html | 52 + .../web-platform/mozilla/tests/xml/parsedepth.html | 62 + 829 files changed, 117468 insertions(+) create mode 100644 testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html create mode 100644 testing/web-platform/mozilla/tests/baselinecoverage/wpt_baselinecoverage.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.http.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.https.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import.http.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import.https.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.http.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.https.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.http.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.https.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.http.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.https.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/worker-import.http.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/worker-import.https.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.http.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.https.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/worker-import.http.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/worker-import.https.html create mode 100644 testing/web-platform/mozilla/tests/content-security-policy/generic/test-case.sub.js create mode 100644 testing/web-platform/mozilla/tests/css/css-contain/content-visibility-hidden-document-reflow-count.html create mode 100644 testing/web-platform/mozilla/tests/css/css-contain/content-visibility-hidden-reflow-count.html create mode 100644 testing/web-platform/mozilla/tests/css/css-overflow/scrollbar-gutter-reflow-counts-001.html create mode 100644 testing/web-platform/mozilla/tests/css/cssom/media-print-change-print-ref.html create mode 100644 testing/web-platform/mozilla/tests/css/cssom/media-print-change-print.html create mode 100644 testing/web-platform/mozilla/tests/css/cssom/window_size_rounding.html create mode 100644 testing/web-platform/mozilla/tests/css/file-selector-button-margin-notref.html create mode 100644 testing/web-platform/mozilla/tests/css/file-selector-button-margin.html create mode 100644 testing/web-platform/mozilla/tests/css/iframe-os-text-scale-print-ref.html create mode 100644 testing/web-platform/mozilla/tests/css/iframe-os-text-scale-print.sub.html create mode 100644 testing/web-platform/mozilla/tests/css/mediaqueries/mq-gamut-resist-fingerprinting.html create mode 100644 testing/web-platform/mozilla/tests/css/quirks-invalidation-standard-sheet.html create mode 100644 testing/web-platform/mozilla/tests/css/reference/ref-filled-green-100px-square.xht create mode 100644 testing/web-platform/mozilla/tests/css/resources/iframe-os-text-scale-inner.html create mode 100644 testing/web-platform/mozilla/tests/dom/classList.html create mode 100644 testing/web-platform/mozilla/tests/dom/delayed_window_print.html create mode 100644 testing/web-platform/mozilla/tests/dom/dispatch_select_event.html create mode 100644 testing/web-platform/mozilla/tests/dom/focus-invalid-uri-link.html create mode 100644 testing/web-platform/mozilla/tests/dom/range-in-two-selections.html create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/resources/test.html create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/resources/throttling.js create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/resources/ws.sub.js create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/throttling-1.window.js create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/throttling-2.window.js create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/throttling-3.window.js create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/throttling-4.window.js create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/throttling-indexeddb.window.js create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/throttling-webaudio.window.js create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/throttling-webrtc.window.js create mode 100644 testing/web-platform/mozilla/tests/dom/throttling/throttling-ws.window.js create mode 100644 testing/web-platform/mozilla/tests/editor/delete-space-after-double-click-selection.html create mode 100644 testing/web-platform/mozilla/tests/editor/input-setRangeText-during-noframe-crash.html create mode 100644 testing/web-platform/mozilla/tests/editor/white-space-handling-in-mail-editor.html create mode 100644 testing/web-platform/mozilla/tests/fetch/api/redirect/redirect-referrer-mixed-content.js create mode 100644 testing/web-platform/mozilla/tests/fetch/api/redirect/redirect-referrer.https.html create mode 100644 testing/web-platform/mozilla/tests/fetch/orb/tentative/content-range.sub.window.js create mode 100644 testing/web-platform/mozilla/tests/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html create mode 100644 testing/web-platform/mozilla/tests/fetch/orb/tentative/known-mime-type.sub.window.js create mode 100644 testing/web-platform/mozilla/tests/fetch/orb/tentative/nosniff.sub.window.js create mode 100644 testing/web-platform/mozilla/tests/fetch/orb/tentative/resources/utils.js create mode 100644 testing/web-platform/mozilla/tests/fetch/orb/tentative/status.sub.window.js create mode 100644 testing/web-platform/mozilla/tests/focus/Range_collapse.html create mode 100644 testing/web-platform/mozilla/tests/focus/Range_selectNode.html create mode 100644 testing/web-platform/mozilla/tests/focus/Range_setEnd.html create mode 100644 testing/web-platform/mozilla/tests/focus/Range_setStart.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_addRange.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_addRange_in_iframe.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_addRange_into_iframe.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_addRange_into_iframe_iframe.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_collapse.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_collapseToEnd.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_collapseToStart.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_extend.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_removeAllRanges.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_removeRange.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_selectAllChildren.html create mode 100644 testing/web-platform/mozilla/tests/focus/Selection_setBaseAndExtent.html create mode 100644 testing/web-platform/mozilla/tests/focus/delegateFocus-is-focusable.html create mode 100644 testing/web-platform/mozilla/tests/focus/focus-before-iframe-loaded-different-site.html create mode 100644 testing/web-platform/mozilla/tests/focus/focus-before-iframe-loaded-same-site.html create mode 100644 testing/web-platform/mozilla/tests/focus/focus-next-tick-before-iframe-loaded-different-site.html create mode 100644 testing/web-platform/mozilla/tests/focus/focus-next-tick-before-iframe-loaded-same-site.html create mode 100644 testing/web-platform/mozilla/tests/focus/iframe-focus-event-after-iframe-gets-focus.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-different-site-inner.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-different-site-outer.sub.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-same-site-inner.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-same-site-outer.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-different-site-inner.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-different-site-outer.sub.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-same-site-inner.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-same-site-outer.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-different-site-iframe-gets-focus-outer.sub.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-iframe-gets-focus-inner.html create mode 100644 testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-same-site-iframe-gets-focus-outer.html create mode 100644 testing/web-platform/mozilla/tests/html/browsers/browsing-the-web/read-media/sandboxed-video.html create mode 100644 testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-01.html create mode 100644 testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-02.html create mode 100644 testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-03.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/form-submission-0/non-usv-filenames.window.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/input-radio-key-navigation.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/textfieldselection/selection-value-interactions.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-01-notref.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-01.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-02-notref.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-02.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-03-ref.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-03.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-04-ref.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-04.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/forms/time-enter-keypress.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module-circular.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module-error.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module-circular.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module-error.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/circular-module-import-with-syntax-error.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/create-module-script.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/mixed-content-import.https.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/module-error-reporting.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/reload-failed-module-script.html create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module_circular.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module_error.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module_circular.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module_error.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_1.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_2.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_3.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_failure.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/bad_local_export.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error1.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error2.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error3.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/evaluation-order-setup.mjs create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/import_resolve_failure.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/indirect_export_resolve_failure.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/missing_import.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/missing_indirect_export.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/mixed_import.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/mixed_import2.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/module.js create mode 100644 testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/module_eval_error.js create mode 100644 testing/web-platform/mozilla/tests/html/syntax/charset/README.md create mode 100644 testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript-after-template.html create mode 100644 testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript-ncr.html create mode 100644 testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript.html create mode 100644 testing/web-platform/mozilla/tests/html/syntax/charset/in-svg-in-cdata-after-gt.html create mode 100644 testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-after-template-ref.html create mode 100644 testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-ncr-ref.html create mode 100644 testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-ref.html create mode 100644 testing/web-platform/mozilla/tests/html/syntax/charset/references/in-svg-in-cdata-after-gt-ref.html create mode 100644 testing/web-platform/mozilla/tests/html/syntax/parsing/math-parse01.html create mode 100644 testing/web-platform/mozilla/tests/indic-detection/LICENSE create mode 100644 testing/web-platform/mozilla/tests/indic-detection/README.txt create mode 100644 testing/web-platform/mozilla/tests/indic-detection/baskar-jagran.html create mode 100644 testing/web-platform/mozilla/tests/indic-detection/elango.html create mode 100644 testing/web-platform/mozilla/tests/indic-detection/htchanakya.html create mode 100644 testing/web-platform/mozilla/tests/indic-detection/shreetam.html create mode 100644 testing/web-platform/mozilla/tests/indic-detection/tab.html create mode 100644 testing/web-platform/mozilla/tests/indic-detection/tam.html create mode 100644 testing/web-platform/mozilla/tests/indic-detection/tboomi.html create mode 100644 testing/web-platform/mozilla/tests/indic-detection/tscii.html create mode 100644 testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-0.html create mode 100644 testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-1.html create mode 100644 testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-2.html create mode 100644 testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-false.html create mode 100644 testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-true.html create mode 100644 testing/web-platform/mozilla/tests/infrastructure/specialPowers/specialpowers.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-basic-transforms-with-default-font-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-basic-transforms-with-default-font.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-fraktur-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-fraktur.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-italic-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-italic.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-sans-serif-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-sans-serif.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-script-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-script.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-case-sensitivity-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-case-sensitivity.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-font-style-font-weight-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-font-style-font-weight.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-fraktur-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-fraktur.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-initial-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-initial.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-italic-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-italic.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-looped-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-looped.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-monospace-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-monospace.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-bold-italic-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-bold-italic.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-italic-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-italic.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-script-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-script.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-stretched-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-stretched.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-tailed-ref.html create mode 100644 testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-tailed.html create mode 100644 testing/web-platform/mozilla/tests/media/2x2-green.ogv create mode 100644 testing/web-platform/mozilla/tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html create mode 100644 testing/web-platform/mozilla/tests/mediacapture-streams/enumerateDevices-in-background.https.html create mode 100644 testing/web-platform/mozilla/tests/mediacapture-streams/enumerateDevices-without-focus.https.html create mode 100644 testing/web-platform/mozilla/tests/mediacapture-streams/permission-helper.js create mode 100644 testing/web-platform/mozilla/tests/placeholder create mode 100644 testing/web-platform/mozilla/tests/screen-capture/getdisplaymedia-user-activation-consumed.https.html create mode 100644 testing/web-platform/mozilla/tests/selection/Selection-addRange-same-instance.html create mode 100644 testing/web-platform/mozilla/tests/service-workers/bug1675097.https.html create mode 100644 testing/web-platform/mozilla/tests/service-workers/no_intercept_for_crossorigin_media.https.html create mode 100644 testing/web-platform/mozilla/tests/service-workers/resources/blank.html create mode 100644 testing/web-platform/mozilla/tests/service-workers/resources/bug1675097-iframe.html create mode 100644 testing/web-platform/mozilla/tests/service-workers/resources/bug1675097-sw.js create mode 100644 testing/web-platform/mozilla/tests/service-workers/resources/crossorigin_media_iframe.html create mode 100644 testing/web-platform/mozilla/tests/service-workers/resources/crossorigin_media_iframe_nonrange.html create mode 100644 testing/web-platform/mozilla/tests/service-workers/resources/empty.js create mode 100644 testing/web-platform/mozilla/tests/service-workers/resources/fetch_video.py create mode 100644 testing/web-platform/mozilla/tests/service-workers/resources/green.png create mode 100644 testing/web-platform/mozilla/tests/service-workers/resources/intercept_media_sw.js create mode 100644 testing/web-platform/mozilla/tests/service-workers/update_completes_in_disconnected_global.https.html create mode 100644 testing/web-platform/mozilla/tests/svg/smil-sampling.html create mode 100644 testing/web-platform/mozilla/tests/web-animations/web-animations-print-ref.html create mode 100644 testing/web-platform/mozilla/tests/web-animations/web-animations-print.html create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/reference_context.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/type_hint.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/navigate/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/navigate/error.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/errors/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/errors/errors.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/interface/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/interface/interface.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/script/exception_details.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/bidi/websocket_upgrade.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/cdp/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/cdp/debugger_address.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/cdp/port_file.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/scroll_into_view.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/send_keys.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/execute_async_script/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/execute_async_script/execute_async.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/get_window_handle/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/get_window_handle/chrome.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/get_window_handles/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/get_window_handles/chrome.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/new_session/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/new_session/bidi_disabled.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/new_session/binary.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/new_session/conftest.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/new_session/create.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/new_session/invalid.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/new_session/profile_root.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/protocol/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/protocol/allow_hosts.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/protocol/allow_origins.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/protocol/marionette_port.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/protocol/request.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/send_alert_text.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/iframe.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/screenshot.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/conftest.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/support/__init__.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/support/context.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/support/fixtures.py create mode 100644 testing/web-platform/mozilla/tests/webdriver/support/network.py create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/1/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/10/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/11/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/12/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/13/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/14/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/15/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/16/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/17/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/18/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/19/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/2/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/20/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/21/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/22/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/23/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/24/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/25/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/26/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/27/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/28/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/29/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/3/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/30/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/31/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/32/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/33/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/34/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/35/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/36/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/37/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/38/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/39/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/4/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/40/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/41/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/42/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/43/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/44/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/45/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/46/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/47/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/48/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/49/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/5/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/50/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/51/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/6/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/7/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/8/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/chunked/9/cts.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/framework/data_cache.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/framework/fixture.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/framework/params_builder.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/framework/resources.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/framework/test_config.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/framework/test_group.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/file_loader.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/file_loader.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/logging/log_message.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/logging/log_message.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/logging/logger.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/logging/logger.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/logging/result.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/logging/result.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/logging/test_case_recorder.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/logging/test_case_recorder.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/params_utils.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/params_utils.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/compare.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/compare.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/encode_selectively.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/encode_selectively.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/json_param_value.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/json_param_value.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/parseQuery.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/parseQuery.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/query.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/query.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/separators.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/separators.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/stringify_params.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/stringify_params.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/validQueryPart.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/query/validQueryPart.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/stack.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/stack.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/test_group.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/test_group.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/test_suite_listing.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/test_suite_listing.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/tree.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/tree.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/util.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/util.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/internal/version.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/runtime/helper/options.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/runtime/helper/sys.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/runtime/helper/test_worker-worker.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/runtime/helper/test_worker.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/runtime/wpt.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/collect_garbage.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/collect_garbage.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/colors.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/colors.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/data_tables.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/data_tables.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/navigator_gpu.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/navigator_gpu.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/preprocessor.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/preprocessor.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/timeout.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/timeout.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/types.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/types.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/util.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/util.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/wpt_reftest_wait.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/common/util/wpt_reftest_wait.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/external/petamoriken/float16/float16.d.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/external/petamoriken/float16/float16.d.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/external/petamoriken/float16/float16.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/external/petamoriken/float16/float16.js.map create mode 100644 testing/web-platform/mozilla/tests/webgpu/resources/README.md create mode 100644 testing/web-platform/mozilla/tests/webgpu/resources/red-green.bt2020.vp9.webm create mode 100644 testing/web-platform/mozilla/tests/webgpu/resources/red-green.bt601.vp9.webm create mode 100644 testing/web-platform/mozilla/tests/webgpu/resources/red-green.bt709.vp9.webm create mode 100644 testing/web-platform/mozilla/tests/webgpu/resources/red-green.mp4 create mode 100644 testing/web-platform/mozilla/tests/webgpu/resources/red-green.theora.ogv create mode 100644 testing/web-platform/mozilla/tests/webgpu/resources/red-green.webmvp8.webm create mode 100644 testing/web-platform/mozilla/tests/webgpu/resources/webgpu.png create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/adapter/requestAdapter.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/adapter/requestAdapterInfo.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/adapter/requestDevice.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/buffers/map.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/buffers/map_ArrayBuffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/buffers/map_detach.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/buffers/map_oom.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/buffers/mapping_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/buffers/threading.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/command_buffer/basic.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/command_buffer/clearBuffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/command_buffer/copyBufferToBuffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/command_buffer/copyTextureToTexture.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/command_buffer/image_copy.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/command_buffer/programmable/programmable_state_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/command_buffer/programmable/state_tracking.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/command_buffer/render/dynamic_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/command_buffer/render/state_tracking.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/compute/basic.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/compute_pipeline/entry_point_name.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/compute_pipeline/overrides.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/device/lost.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/labels.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/memory_sync/buffer/buffer_sync_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/memory_sync/buffer/multiple_buffers.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/memory_sync/buffer/single_buffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/memory_sync/operation_context_helper.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/memory_sync/texture/same_subresource.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/memory_sync/texture/texture_sync_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/onSubmittedWorkDone.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/pipeline/default_layout.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/queue/writeBuffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/reflection.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pass/clear_value.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pass/resolve.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pass/storeOp.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pass/storeop2.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pipeline/alpha_to_coverage.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pipeline/culling_tests.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pipeline/overrides.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pipeline/pipeline_output_targets.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pipeline/primitive_topology.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pipeline/sample_mask.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/render_pipeline/vertex_only_render_pipeline.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/rendering/basic.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/rendering/color_target_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/rendering/depth.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/rendering/depth_bias.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/rendering/depth_clip_clamp.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/rendering/draw.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/rendering/indirect_draw.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/rendering/robust_access_index.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/rendering/stencil.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/resource_init/buffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_copy.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_ds_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/resource_init/check_texture/by_sampling.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/resource_init/texture_zero.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/sampling/anisotropy.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/sampling/filter_mode.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/sampling/lod_clamp.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/shader_module/compilation_info.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/texture_view/format_reinterpretation.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/texture_view/read.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/texture_view/write.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/uncapturederror.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/vertex_state/correctness.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/operation/vertex_state/index_format.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/buffer/create.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/buffer/destroy.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/buffer/mapping.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/buffer/threading.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/features/query_types.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/capability_checks/features/texture_formats.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/compute_pipeline.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createBindGroup.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createBindGroupLayout.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createPipelineLayout.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createSampler.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createTexture.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/createView.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/debugMarker.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/beginComputePass.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/beginRenderPass.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/clearBuffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/compute_pass.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/copyBufferToBuffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/copyTextureToTexture.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/debug.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/index_access.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/render/draw.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/render/dynamic_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/render/indirect_draw.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/render/render.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setIndexBuffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setPipeline.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/render/setVertexBuffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/render/state_tracking.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/render_pass.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/cmds/setBindGroup.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/createRenderBundleEncoder.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/encoder_open_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/encoder_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/programmable/pipeline_bind_group_compat.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/queries/begin_end.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/queries/common.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/queries/general.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/queries/pipeline_statistics.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/queries/resolveQuerySet.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/encoding/render_bundle.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/error_scope.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/getBindGroupLayout.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/buffer_related.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/buffer_texture_copies.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/image_copy.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/layout_related.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/image_copy/texture_related.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/layout_shader_compat.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/query_set/create.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/query_set/destroy.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/queue/buffer_mapped.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/queue/copyToTexture/CopyExternalImageToTexture.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/queue/destroyed/query_set.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/queue/submit.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/queue/writeBuffer.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/queue/writeTexture.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pass/attachment_compatibility.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pass/render_pass_descriptor.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pass/resolve.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pass/storeOp.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/common.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/depth_stencil_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/fragment_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/inter_stage.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/misc.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/multisample_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/overrides.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/primitive_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/shader_module.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/render_pipeline/vertex_state.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/resource_usages/buffer/in_pass_encoder.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/resource_usages/buffer/in_pass_misc.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_pass_encoder.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_common.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/resource_usages/texture/in_render_misc.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/shader_module/entry_point.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/shader_module/overrides.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/state/device_lost/destroy.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/texture/destroy.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/texture/rg11b10ufloat_renderable.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/api/validation/validation_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/capability_info.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/constants.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/examples.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/gpu_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/idl/constants/flags.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/idl/exposed.html.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/idl/exposed.http.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/idl/exposed.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/idl/idl_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/listing.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/evaluation_order.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/binary/binary.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/binary/bitwise.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/binary/bool_logical.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/binary/f32_arithmetic.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/binary/f32_logical.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/binary/i32_arithmetic.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/binary/u32_arithmetic.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/abs.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acos.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/acosh.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/all.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/any.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/arrayLength.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asin.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/asinh.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atan2.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atanh.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicAdd.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicAnd.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicCompareExchangeWeak.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicExchange.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicLoad.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicMax.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicMin.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicOr.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicStore.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicSub.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/atomicXor.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/builtin.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ceil.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/clamp.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cos.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cosh.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countLeadingZeros.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countOneBits.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/countTrailingZeros.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/cross.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/degrees.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/determinant.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/distance.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dot.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dpdx.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dpdxCoarse.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dpdxFine.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dpdy.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dpdyCoarse.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/dpdyFine.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/exp2.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/extractBits.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/faceForward.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstLeadingBit.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/firstTrailingBit.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/floor.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fma.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fract.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/frexp.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fwidth.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fwidthCoarse.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/fwidthFine.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/insertBits.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/inversesqrt.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/ldexp.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/length.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/log2.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/max.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/min.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/mix.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/modf.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/normalize.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pack2x16float.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pack2x16snorm.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pack2x16unorm.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pack4x8snorm.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pack4x8unorm.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/pow.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/quantizeToF16.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/radians.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reflect.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/refract.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/reverseBits.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/round.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/saturate.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/select.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sign.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sin.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sinh.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/smoothstep.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/sqrt.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/step.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/storageBarrier.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tan.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/tanh.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureDimension.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureGather.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureGatherCompare.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureLoad.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureNumLayers.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureNumLevels.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureNumSamples.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureSample.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureSampleBias.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureSampleCompare.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureSampleCompareLevel.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureSampleGrad.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureSampleLevel.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/textureStore.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/transpose.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/trunc.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/unpack2x16float.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/unpack2x16snorm.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/unpack2x16unorm.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/unpack4x8snorm.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/unpack4x8unorm.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/utils.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/call/builtin/workgroupBarrier.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/case_cache.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/expression.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/unary/bool_logical.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/unary/f32_arithmetic.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/unary/i32_arithmetic.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/expression/unary/unary.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/memory_model/atomicity.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/memory_model/barrier.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/memory_model/coherence.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/memory_model/memory_model_setup.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/memory_model/weak.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/padding.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/robust_access.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/robust_access_vertex.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/shader_io/compute_builtins.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/shader_io/shared_structs.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/execution/zero_init.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/types.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/align.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/blankspace.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/builtin.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/comments.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/identifiers.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/literal.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/semicolon.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/source.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/static_assert.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/parse/var_and_let.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/resource_interface/bindings.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/resource_interface/util.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/shader_io/builtins.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/shader_io/entry_point.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/shader_io/interpolate.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/shader_io/invariant.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/shader_io/locations.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/shader_io/util.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/shader_validation_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/validation/static_assert/static_assert.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/shader/values.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/buffer.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/check_contents.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/color_space_conversion.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/command_buffer_maker.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/compare.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/constants.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/conversion.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/copy_to_texture.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/create_elements.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/device_pool.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/f32_interval.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/math.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/memory.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/pretty_diff_tables.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/shader.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture/base.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture/data_generation.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture/layout.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture/subresource.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture/texel_data.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture/texel_data.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture/texel_view.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture/texture_ok.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/texture/texture_ok.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/util/unions.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/canvas/configure.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/canvas/context_creation.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/canvas/getCurrentTexture.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/canvas/getPreferredCanvasFormat.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/canvas/readbackFromWebGPUCanvas.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/copyToTexture/ImageBitmap.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/copyToTexture/canvas.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/copyToTexture/video.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/external_texture/video.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_clear.html.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_clear.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_colorspace.html.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_colorspace_bgra8unorm.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_colorspace_rgba16float.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_colorspace_rgba8unorm.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_complex.html.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_complex_bgra8unorm_copy.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_complex_bgra8unorm_draw.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_complex_rgba16float_copy.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_complex_rgba16float_draw.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_complex_rgba16float_store.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_complex_rgba8unorm_copy.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_complex_rgba8unorm_draw.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_complex_rgba8unorm_store.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha.html.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_bgra8unorm_opaque_copy.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_bgra8unorm_opaque_draw.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_bgra8unorm_premultiplied_copy.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_bgra8unorm_premultiplied_draw.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_rgba16float_opaque_copy.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_rgba16float_opaque_draw.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_rgba16float_premultiplied_copy.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_rgba16float_premultiplied_draw.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_rgba8unorm_opaque_copy.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_rgba8unorm_opaque_draw.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_rgba8unorm_premultiplied_copy.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_composite_alpha_rgba8unorm_premultiplied_draw.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_image_rendering.html.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/canvas_image_rendering.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/create-pattern-data-url.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/gpu_ref_test.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/ref/canvas_clear-ref.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/ref/canvas_colorspace-ref.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/ref/canvas_colorspace-ref.html.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/ref/canvas_complex-ref.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/ref/canvas_composite_alpha_opaque-ref.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/ref/canvas_composite_alpha_premultiplied-ref.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/ref/canvas_image_rendering-ref.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/ref/resize_observer-ref.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/resize_observer.html.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/reftests/resize_observer.https.html create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/util.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/worker/worker.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/worker/worker.spec.js create mode 100644 testing/web-platform/mozilla/tests/webgpu/webgpu/web_platform/worker/worker_launcher.js create mode 100644 testing/web-platform/mozilla/tests/websockets/bug1793935.any.js create mode 100644 testing/web-platform/mozilla/tests/webtransport/bfcache/closed.tentative.https.html create mode 100644 testing/web-platform/mozilla/tests/webtransport/bfcache/connected.tentative.https.html create mode 100644 testing/web-platform/mozilla/tests/webtransport/bfcache/failed.tentative.https.html create mode 100644 testing/web-platform/mozilla/tests/webtransport/bfcache/helpers.js create mode 100644 testing/web-platform/mozilla/tests/webtransport/bfcache/ports.sub.js create mode 100644 testing/web-platform/mozilla/tests/webtransport/bfcache/worker.js create mode 100644 testing/web-platform/mozilla/tests/workers/2-mib-file.py create mode 100644 testing/web-platform/mozilla/tests/workers/bug1674278-crash.html create mode 100644 testing/web-platform/mozilla/tests/workers/bug1674278.js create mode 100644 testing/web-platform/mozilla/tests/workers/modules/dedicated-worker-import-csp.html create mode 100644 testing/web-platform/mozilla/tests/workers/modules/resources/dynamic-import-remote-origin-script-worker.sub.js create mode 100644 testing/web-platform/mozilla/tests/workers/modules/resources/new-shared-worker-window.html create mode 100644 testing/web-platform/mozilla/tests/workers/modules/resources/new-worker-window.html create mode 100644 testing/web-platform/mozilla/tests/workers/modules/resources/static-import-remote-origin-script-worker.sub.js create mode 100644 testing/web-platform/mozilla/tests/workers/modules/shared-worker-import-csp.html create mode 100644 testing/web-platform/mozilla/tests/workers/resources/worker.js create mode 100644 testing/web-platform/mozilla/tests/workers/worker_timer_nesting_level.html create mode 100644 testing/web-platform/mozilla/tests/xml/parsedepth.html (limited to 'testing/web-platform/mozilla/tests') diff --git a/testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html b/testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html new file mode 100644 index 0000000000..01758fa179 --- /dev/null +++ b/testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html @@ -0,0 +1,30 @@ + + +Test selectAudioOutput() after user activation is consumed + + + + + + + diff --git a/testing/web-platform/mozilla/tests/baselinecoverage/wpt_baselinecoverage.html b/testing/web-platform/mozilla/tests/baselinecoverage/wpt_baselinecoverage.html new file mode 100644 index 0000000000..889ee9367f --- /dev/null +++ b/testing/web-platform/mozilla/tests/baselinecoverage/wpt_baselinecoverage.html @@ -0,0 +1,22 @@ + + + +Baseline Coverage + + + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.http.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.http.html new file mode 100644 index 0000000000..c420b940f8 --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.http.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.https.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.https.html new file mode 100644 index 0000000000..a7bb3de773 --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/sharedworker-import.https.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import.http.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import.http.html new file mode 100644 index 0000000000..482a41186d --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import.http.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import.https.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import.https.html new file mode 100644 index 0000000000..4d75fa1ccc --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/script-src-self/worker-import.https.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.http.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.http.html new file mode 100644 index 0000000000..f06c11dd78 --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.http.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.https.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.https.html new file mode 100644 index 0000000000..1c9483fc05 --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/sharedworker-import.https.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.http.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.http.html new file mode 100644 index 0000000000..f8a9e51557 --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.http.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.https.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.https.html new file mode 100644 index 0000000000..7d6a82d8fc --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.http-rp/worker-src-self/worker-import.https.html @@ -0,0 +1,118 @@ + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.http.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.http.html new file mode 100644 index 0000000000..f66bc9ed7c --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.http.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.https.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.https.html new file mode 100644 index 0000000000..bcd1f0f2ef --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/sharedworker-import.https.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/worker-import.http.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/worker-import.http.html new file mode 100644 index 0000000000..68a610d994 --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/worker-import.http.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/worker-import.https.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/worker-import.https.html new file mode 100644 index 0000000000..829e6e2b90 --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/script-src-self/worker-import.https.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.http.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.http.html new file mode 100644 index 0000000000..4c6757c65f --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.http.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.https.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.https.html new file mode 100644 index 0000000000..2655a33036 --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/sharedworker-import.https.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/worker-import.http.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/worker-import.http.html new file mode 100644 index 0000000000..281987acfe --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/worker-import.http.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/worker-import.https.html b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/worker-import.https.html new file mode 100644 index 0000000000..4654856ada --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/gen/top.meta/worker-src-self/worker-import.https.html @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/content-security-policy/generic/test-case.sub.js b/testing/web-platform/mozilla/tests/content-security-policy/generic/test-case.sub.js new file mode 100644 index 0000000000..d9a6494dd3 --- /dev/null +++ b/testing/web-platform/mozilla/tests/content-security-policy/generic/test-case.sub.js @@ -0,0 +1,98 @@ +function TestCase(scenarios, sanityChecker) { + function runTest(scenario) { + sanityChecker.checkScenario(scenario, subresourceMap); + + const urls = getRequestURLs(scenario.subresource, + scenario.origin, + scenario.redirection); + + /** @type {Subresource} */ + const subresource = { + subresourceType: scenario.subresource, + url: urls.testUrl, + policyDeliveries: scenario.subresource_policy_deliveries, + }; + + let violationEventResolve; + // Resolved with an array of securitypolicyviolation events. + const violationEventPromise = new Promise(resolve => { + violationEventResolve = resolve; + }); + + promise_test(async t => { + await xhrRequest(urls.announceUrl); + + // Currently only requests from top-level Documents are tested + // (specified by `spec.src.json`) and thus securitypolicyviolation + // events are assumed to be fired on the top-level Document here. + // When adding non-top-level Document tests, securitypolicyviolation + // events should be caught in appropriate contexts. + const violationEvents = []; + const listener = e => { violationEvents.push(e); }; + document.addEventListener('securitypolicyviolation', listener); + + try { + // Send out the real resource request. + // This should tear down the key if it's not blocked. + const mainPromise = invokeRequest(subresource, scenario.source_context_list); + if (scenario.expectation === 'allowed') { + await mainPromise; + } else { + await mainPromise + .then(t.unreached_func('main promise resolved unexpectedly')) + .catch(_ => {}); + } + } finally { + // Always perform post-processing/clean up for + // 'securitypolicyviolation' events and resolve + // `violationEventPromise`, to prevent timeout of the + // promise_test() below. + + // securitypolicyviolation events are fired in a queued task in + // https://w3c.github.io/webappsec-csp/#report-violation + // so wait for queued tasks to run using setTimeout(). + let timeout = 0; + if (scenario.subresource.startsWith('worklet-') && + navigator.userAgent.includes("Firefox/")) { + // https://bugzilla.mozilla.org/show_bug.cgi?id=1808911 + // In Firefox sometimes violations from Worklets are delayed. + timeout = 10; + } + await new Promise(resolve => setTimeout(resolve, timeout)); + + // Pass violation events to `violationEventPromise` (which will be tested + // in the subsequent promise_test()) and clean up the listener. + violationEventResolve(violationEvents); + document.removeEventListener('securitypolicyviolation', listener); + } + + // Send request to check if the key has been torn down. + const assertResult = await xhrRequest(urls.assertUrl); + + // Now check if the value has been torn down. If it's still there, + // we have blocked the request by content security policy. + assert_equals(assertResult.status, scenario.expectation, + "The resource request should be '" + scenario.expectation + "'."); + + }, scenario.test_description); + + promise_test(async _ => { + const violationEvents = await violationEventPromise; + if (scenario.expectation === 'allowed') { + assert_array_equals(violationEvents, [], + 'no violation events should be fired'); + } else { + assert_equals(violationEvents.length, 1, + 'One violation event should be fired'); + } + }, scenario.test_description + ": securitypolicyviolation"); + } // runTest + + function runTests() { + for (const scenario of scenarios) { + runTest(scenario); + } + } + + return {start: runTests}; +} diff --git a/testing/web-platform/mozilla/tests/css/css-contain/content-visibility-hidden-document-reflow-count.html b/testing/web-platform/mozilla/tests/css/css-contain/content-visibility-hidden-document-reflow-count.html new file mode 100644 index 0000000000..69c1c4b7dd --- /dev/null +++ b/testing/web-platform/mozilla/tests/css/css-contain/content-visibility-hidden-document-reflow-count.html @@ -0,0 +1,44 @@ + + + + CSS Contain: Test content-visibility:hidden reflow counts + + + + + + + hello + + + + diff --git a/testing/web-platform/mozilla/tests/css/css-contain/content-visibility-hidden-reflow-count.html b/testing/web-platform/mozilla/tests/css/css-contain/content-visibility-hidden-reflow-count.html new file mode 100644 index 0000000000..c1484d9c54 --- /dev/null +++ b/testing/web-platform/mozilla/tests/css/css-contain/content-visibility-hidden-reflow-count.html @@ -0,0 +1,120 @@ + + + + CSS Contain: Test content-visibility:hidden reflow counts + + + + + + + + +
+ + + diff --git a/testing/web-platform/mozilla/tests/css/css-overflow/scrollbar-gutter-reflow-counts-001.html b/testing/web-platform/mozilla/tests/css/css-overflow/scrollbar-gutter-reflow-counts-001.html new file mode 100644 index 0000000000..aa4ed4667b --- /dev/null +++ b/testing/web-platform/mozilla/tests/css/css-overflow/scrollbar-gutter-reflow-counts-001.html @@ -0,0 +1,115 @@ + + + + CSS Overflow: Test scrollbar-gutter reflow counts + + + + + + + + +

Here is a scroll contaier for testing:

+
+
+
+ + + diff --git a/testing/web-platform/mozilla/tests/css/cssom/media-print-change-print-ref.html b/testing/web-platform/mozilla/tests/css/cssom/media-print-change-print-ref.html new file mode 100644 index 0000000000..1fc00e7e39 --- /dev/null +++ b/testing/web-platform/mozilla/tests/css/cssom/media-print-change-print-ref.html @@ -0,0 +1,2 @@ + +
PASS
diff --git a/testing/web-platform/mozilla/tests/css/cssom/media-print-change-print.html b/testing/web-platform/mozilla/tests/css/cssom/media-print-change-print.html new file mode 100644 index 0000000000..8e9172956c --- /dev/null +++ b/testing/web-platform/mozilla/tests/css/cssom/media-print-change-print.html @@ -0,0 +1,8 @@ + + +
FAIL
+ diff --git a/testing/web-platform/mozilla/tests/css/cssom/window_size_rounding.html b/testing/web-platform/mozilla/tests/css/cssom/window_size_rounding.html new file mode 100644 index 0000000000..695bf8f34b --- /dev/null +++ b/testing/web-platform/mozilla/tests/css/cssom/window_size_rounding.html @@ -0,0 +1,35 @@ + + + +
+
diff --git a/testing/web-platform/mozilla/tests/css/file-selector-button-margin-notref.html b/testing/web-platform/mozilla/tests/css/file-selector-button-margin-notref.html
new file mode 100644
index 0000000000..67fc0af389
--- /dev/null
+++ b/testing/web-platform/mozilla/tests/css/file-selector-button-margin-notref.html
@@ -0,0 +1,2 @@
+
+
diff --git a/testing/web-platform/mozilla/tests/css/file-selector-button-margin.html b/testing/web-platform/mozilla/tests/css/file-selector-button-margin.html
new file mode 100644
index 0000000000..46c1bd0e3e
--- /dev/null
+++ b/testing/web-platform/mozilla/tests/css/file-selector-button-margin.html
@@ -0,0 +1,10 @@
+
+CSS Test: margin can be used to shrink the spacing between the file selector button and its label
+
+
+
+
diff --git a/testing/web-platform/mozilla/tests/css/iframe-os-text-scale-print-ref.html b/testing/web-platform/mozilla/tests/css/iframe-os-text-scale-print-ref.html
new file mode 100644
index 0000000000..ad2922d8a1
--- /dev/null
+++ b/testing/web-platform/mozilla/tests/css/iframe-os-text-scale-print-ref.html
@@ -0,0 +1,5 @@
+
+
+
diff --git a/testing/web-platform/mozilla/tests/css/iframe-os-text-scale-print.sub.html b/testing/web-platform/mozilla/tests/css/iframe-os-text-scale-print.sub.html
new file mode 100644
index 0000000000..d0647da9b3
--- /dev/null
+++ b/testing/web-platform/mozilla/tests/css/iframe-os-text-scale-print.sub.html
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/testing/web-platform/mozilla/tests/css/mediaqueries/mq-gamut-resist-fingerprinting.html b/testing/web-platform/mozilla/tests/css/mediaqueries/mq-gamut-resist-fingerprinting.html
new file mode 100644
index 0000000000..06424705ac
--- /dev/null
+++ b/testing/web-platform/mozilla/tests/css/mediaqueries/mq-gamut-resist-fingerprinting.html
@@ -0,0 +1,40 @@
+
+Test: color-gamut only matches sRGB when resisting fingerprinting
+
+
+
+
+

Test passes if there are two filled green squares and no red. + +

+

+
diff --git a/testing/web-platform/mozilla/tests/css/quirks-invalidation-standard-sheet.html b/testing/web-platform/mozilla/tests/css/quirks-invalidation-standard-sheet.html new file mode 100644 index 0000000000..b926f81af4 --- /dev/null +++ b/testing/web-platform/mozilla/tests/css/quirks-invalidation-standard-sheet.html @@ -0,0 +1,14 @@ + + + +
+ diff --git a/testing/web-platform/mozilla/tests/css/reference/ref-filled-green-100px-square.xht b/testing/web-platform/mozilla/tests/css/reference/ref-filled-green-100px-square.xht new file mode 100644 index 0000000000..9b647491e9 --- /dev/null +++ b/testing/web-platform/mozilla/tests/css/reference/ref-filled-green-100px-square.xht @@ -0,0 +1,19 @@ + + + + CSS Reftest Reference + + + +

Test passes if there are two filled green squares and no red.

+
+

+
+ + diff --git a/testing/web-platform/mozilla/tests/css/resources/iframe-os-text-scale-inner.html b/testing/web-platform/mozilla/tests/css/resources/iframe-os-text-scale-inner.html new file mode 100644 index 0000000000..be51cc957c --- /dev/null +++ b/testing/web-platform/mozilla/tests/css/resources/iframe-os-text-scale-inner.html @@ -0,0 +1,9 @@ + + +TEST diff --git a/testing/web-platform/mozilla/tests/dom/classList.html b/testing/web-platform/mozilla/tests/dom/classList.html new file mode 100644 index 0000000000..21d79f49e3 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/classList.html @@ -0,0 +1,526 @@ + + +Test for the classList element attribute + + +
+ diff --git a/testing/web-platform/mozilla/tests/dom/delayed_window_print.html b/testing/web-platform/mozilla/tests/dom/delayed_window_print.html new file mode 100644 index 0000000000..0bb9977184 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/delayed_window_print.html @@ -0,0 +1,39 @@ + + +Test for delaying window.print() before load + + + + diff --git a/testing/web-platform/mozilla/tests/dom/dispatch_select_event.html b/testing/web-platform/mozilla/tests/dom/dispatch_select_event.html new file mode 100644 index 0000000000..1fb70aa5b1 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/dispatch_select_event.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/dom/focus-invalid-uri-link.html b/testing/web-platform/mozilla/tests/dom/focus-invalid-uri-link.html new file mode 100644 index 0000000000..5de81c866f --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/focus-invalid-uri-link.html @@ -0,0 +1,63 @@ + + + + + + + diff --git a/testing/web-platform/mozilla/tests/dom/range-in-two-selections.html b/testing/web-platform/mozilla/tests/dom/range-in-two-selections.html new file mode 100644 index 0000000000..a37464d55a --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/range-in-two-selections.html @@ -0,0 +1,34 @@ + + + + + + + + + +One two + + + + diff --git a/testing/web-platform/mozilla/tests/dom/throttling/resources/test.html b/testing/web-platform/mozilla/tests/dom/throttling/resources/test.html new file mode 100644 index 0000000000..7eb9dd1e40 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/resources/test.html @@ -0,0 +1,5 @@ + + + + + diff --git a/testing/web-platform/mozilla/tests/dom/throttling/resources/throttling.js b/testing/web-platform/mozilla/tests/dom/throttling/resources/throttling.js new file mode 100644 index 0000000000..280b0adc0d --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/resources/throttling.js @@ -0,0 +1,136 @@ +function waitForLoad() { + return new Promise(resolve => addEventListener('load', resolve)) + .then(() => delay(10)); +} + +function delay(timeout) { + return new Promise(resolve => step_timeout(() => resolve(), 10)); +} + +function busy(work) { + return delay(10).then(() => new Promise(resolve => { + step_timeout(() => { + let end = performance.now() + work; + while (performance.now() < end) { + + } + + resolve(); + }, 1); + })); +} + +function getThrottlingRate(delay) { + return new Promise(resolve => { + let start = performance.now(); + setTimeout(() => { + let rate = Math.floor((performance.now() - start) / delay); + resolve(rate); + }, delay); + }); +} + +function addElement(t, element, src) { + return new Promise((resolve, reject) => { + let e = document.createElement(element); + e.addEventListener('load', () => resolve(e)); + if (src) { + e.src = src; + } + document.body.appendChild(e); + t.add_cleanup(() => e.remove()); + }); +} + +function inFrame(t) { + return addElement(t, "iframe", "resources/test.html") + .then(frame => delay(10).then(() => Promise.resolve(frame.contentWindow))); +} + +function addWebSocket(t, url) { + return new Promise((resolve, reject) => { + let socket = new WebSocket(url); + socket.onopen = () => { + t.add_cleanup(() => socket.close()); + resolve(); + }; + socket.onerror = reject; + }); +} + +function addRTCPeerConnection(t) { + return new Promise((resolve, reject) => { + let connection = new RTCPeerConnection(); + t.add_cleanup(() => { + connection.close() + }); + + resolve(); + }); +} + +function addIndexedDB(t) { + return new Promise((resolve, reject) => { + let iDBState = { + running: false, + db: null + }; + + let req = indexedDB.open("testDB", 1); + + req.onupgradeneeded = e => { + let db = e.target.result; + let store = db.createObjectStore("testOS", {keyPath: "id"}); + let index = store.createIndex("index", ["col"]); + }; + + req.onsuccess = e => { + let db = iDBState.db = e.target.result; + let store = db.transaction("testOS", "readwrite").objectStore("testOS"); + let ctr = 0; + + iDBState.running = true; + + function putLoop() { + if (!iDBState.running) { + return; + } + + let req = store.put({id: ctr++, col: "foo"}); + req.onsuccess = putLoop; + + if (!iDBState.request) { + iDBState.request = req; + } + } + + putLoop(); + resolve(); + }; + + t.add_cleanup(() => { + iDBState.running = false; + iDBState.db && iDBState.db.close(); + iDBState.db = null; + }); + }); +} + +function addWebAudio(t) { + return new Promise(resolve => { + let context = new (window.AudioContext || window.webkitAudioContext)(); + context.onstatechange = () => (context.state === "running") && resolve(); + + let gain = context.createGain(); + gain.gain.value = 0.1; + gain.connect(context.destination); + + let webaudionode = context.createOscillator(); + webaudionode.type = 'square'; + webaudionode.frequency.value = 440; // value in hertz + webaudionode.connect(gain); + webaudionode.start(); + + t.add_cleanup(() => webaudionode.stop()); + }); +} diff --git a/testing/web-platform/mozilla/tests/dom/throttling/resources/ws.sub.js b/testing/web-platform/mozilla/tests/dom/throttling/resources/ws.sub.js new file mode 100644 index 0000000000..a1ac273a54 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/resources/ws.sub.js @@ -0,0 +1,3 @@ +var __SERVER__NAME = "{{host}}"; +var __PORT = "{{ports[ws][0]}}"; +var __PATH = "echo"; diff --git a/testing/web-platform/mozilla/tests/dom/throttling/throttling-1.window.js b/testing/web-platform/mozilla/tests/dom/throttling/throttling-1.window.js new file mode 100644 index 0000000000..86cefc8a81 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/throttling-1.window.js @@ -0,0 +1,10 @@ +// META: script=resources/throttling.js + +setup(() => waitForLoad() + .then(() => "setup done")); + +promise_test(t => busy(100) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_greater_than(rate, 10, "Timeout wasn't throttled"); + }), "Throttle when all budget has been used."); diff --git a/testing/web-platform/mozilla/tests/dom/throttling/throttling-2.window.js b/testing/web-platform/mozilla/tests/dom/throttling/throttling-2.window.js new file mode 100644 index 0000000000..3ccb35dc08 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/throttling-2.window.js @@ -0,0 +1,11 @@ +// META: script=resources/throttling.js + +setup(() => waitForLoad() + .then(() => "setup done")); + +promise_test(t => inFrame(t) + .then(win => win.busy(100) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_greater_than(rate, 10, "Timeout wasn't throttled"); + }), "Throttle iframe when all budget has been used"); diff --git a/testing/web-platform/mozilla/tests/dom/throttling/throttling-3.window.js b/testing/web-platform/mozilla/tests/dom/throttling/throttling-3.window.js new file mode 100644 index 0000000000..d1c38bcc12 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/throttling-3.window.js @@ -0,0 +1,11 @@ +// META: script=resources/throttling.js + +setup(() => waitForLoad() + .then(() => "setup done")); + +promise_test(t => inFrame(t) + .then(win => busy(100) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle iframe when all budget in parent has been used"); diff --git a/testing/web-platform/mozilla/tests/dom/throttling/throttling-4.window.js b/testing/web-platform/mozilla/tests/dom/throttling/throttling-4.window.js new file mode 100644 index 0000000000..b072b51809 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/throttling-4.window.js @@ -0,0 +1,11 @@ +// META: script=resources/throttling.js + +setup(() => waitForLoad() + .then(() => "setup done")); + +promise_test(t => inFrame(t) + .then(win => win.busy(100)) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle parent when all budget in iframe has been used"); diff --git a/testing/web-platform/mozilla/tests/dom/throttling/throttling-indexeddb.window.js b/testing/web-platform/mozilla/tests/dom/throttling/throttling-indexeddb.window.js new file mode 100644 index 0000000000..73c734a584 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/throttling-indexeddb.window.js @@ -0,0 +1,35 @@ +// META: script=resources/throttling.js + +setup(() => waitForLoad() + .then(() => "setup done")); + +promise_test(t => addIndexedDB(t) + .then(() => busy(100)) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle when there are open IndexedDB transactions."); + +promise_test(t => inFrame(t) + .then(win => win.addIndexedDB(t)) + .then(() => busy(100)) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle when there are open IndexedDB transactions in iframe."); + +promise_test(t => inFrame(t) + .then(win => addIndexedDB(t) + .then(() => win.busy(100)) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle iframe when there are open IndexedDB transactions in parent."); + +promise_test(t => inFrame(t) + .then(win => win.addIndexedDB(t) + .then(() => win.busy(100)) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle iframe when there are open IndexedDB transactions in iframe."); diff --git a/testing/web-platform/mozilla/tests/dom/throttling/throttling-webaudio.window.js b/testing/web-platform/mozilla/tests/dom/throttling/throttling-webaudio.window.js new file mode 100644 index 0000000000..5cd7193788 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/throttling-webaudio.window.js @@ -0,0 +1,35 @@ +// META: script=resources/throttling.js + +setup(() => waitForLoad() + .then(() => "setup done")); + +promise_test(t => addWebAudio(t) + .then(() => busy(100)) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle when there is active WebAudio."); + +promise_test(t => inFrame(t) + .then(win => win.addWebAudio(t)) + .then(() => busy(100)) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle when there is active WebAudio in iframe."); + +promise_test(t => inFrame(t) + .then(win => addWebAudio(t) + .then(() => win.busy(100)) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle iframe when there is active WebAudio in parent."); + +promise_test(t => inFrame(t) + .then(win => win.addWebAudio(t) + .then(() => win.busy(100)) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle iframe when there is active WebAudio in iframe."); diff --git a/testing/web-platform/mozilla/tests/dom/throttling/throttling-webrtc.window.js b/testing/web-platform/mozilla/tests/dom/throttling/throttling-webrtc.window.js new file mode 100644 index 0000000000..2842f77e44 --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/throttling-webrtc.window.js @@ -0,0 +1,35 @@ +// META: script=resources/throttling.js + +setup(() => waitForLoad() + .then(() => "setup done")); + +promise_test(t => addRTCPeerConnection(t) + .then(() => busy(100)) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle when there are open RTCPeerConnections."); + +promise_test(t => inFrame(t) + .then(win => win.addRTCPeerConnection(t)) + .then(() => busy(100)) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle when there are open RTCPeerConnections in iframe."); + +promise_test(t => inFrame(t) + .then(win => addRTCPeerConnection(t) + .then(() => win.busy(100)) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle iframe when there are open RTCPeerConnections in parent."); + +promise_test(t => inFrame(t) + .then(win => win.addRTCPeerConnection(t) + .then(() => win.busy(100)) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle iframe when there are open RTCPeerConnections in iframe."); diff --git a/testing/web-platform/mozilla/tests/dom/throttling/throttling-ws.window.js b/testing/web-platform/mozilla/tests/dom/throttling/throttling-ws.window.js new file mode 100644 index 0000000000..185654e04d --- /dev/null +++ b/testing/web-platform/mozilla/tests/dom/throttling/throttling-ws.window.js @@ -0,0 +1,37 @@ +// META: script=resources/ws.sub.js +// META: script=resources/throttling.js +let server = "ws://" + __SERVER__NAME + ":" + __PORT + "/" + __PATH; + +setup(() => waitForLoad() + .then(() => "setup done")); + +promise_test(t => addWebSocket(t, server) + .then(() => busy(100)) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle when there are open WebSockets."); + +promise_test(t => inFrame(t) + .then(win => win.addWebSocket(t, server)) + .then(() => busy(100)) + .then(() => getThrottlingRate(100)) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle when there are open WebSockets in iframe."); + +promise_test(t => inFrame(t) + .then(win => addWebSocket(t, server) + .then(() => win.busy(100)) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle iframe when there are open WebSockets in parent."); + +promise_test(t => inFrame(t) + .then(win => win.addWebSocket(t, server) + .then(() => win.busy(100)) + .then(() => win.getThrottlingRate(100))) + .then(rate => { + assert_less_than(rate, 10, "Timeout was throttled"); + }), "Don't throttle iframe when there are open WebSockets in iframe."); diff --git a/testing/web-platform/mozilla/tests/editor/delete-space-after-double-click-selection.html b/testing/web-platform/mozilla/tests/editor/delete-space-after-double-click-selection.html new file mode 100644 index 0000000000..6c065cbc12 --- /dev/null +++ b/testing/web-platform/mozilla/tests/editor/delete-space-after-double-click-selection.html @@ -0,0 +1,278 @@ + + + + + + Test for Bug 1783641 + + + + + + + + Mozilla Bug 1783641
+ + +
+ + + + diff --git a/testing/web-platform/mozilla/tests/editor/input-setRangeText-during-noframe-crash.html b/testing/web-platform/mozilla/tests/editor/input-setRangeText-during-noframe-crash.html new file mode 100644 index 0000000000..815ec994e8 --- /dev/null +++ b/testing/web-platform/mozilla/tests/editor/input-setRangeText-during-noframe-crash.html @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/editor/white-space-handling-in-mail-editor.html b/testing/web-platform/mozilla/tests/editor/white-space-handling-in-mail-editor.html new file mode 100644 index 0000000000..06fe0acf6e --- /dev/null +++ b/testing/web-platform/mozilla/tests/editor/white-space-handling-in-mail-editor.html @@ -0,0 +1,371 @@ + + + + + + + +Testing white-space handling in mail editor mode + + + + +
+ + + diff --git a/testing/web-platform/mozilla/tests/fetch/api/redirect/redirect-referrer-mixed-content.js b/testing/web-platform/mozilla/tests/fetch/api/redirect/redirect-referrer-mixed-content.js new file mode 100644 index 0000000000..ad59904fd9 --- /dev/null +++ b/testing/web-platform/mozilla/tests/fetch/api/redirect/redirect-referrer-mixed-content.js @@ -0,0 +1,51 @@ +if (this.document === undefined) { + importScripts("/common/utils.js"); + importScripts("/resources/testharness.js"); + importScripts("/fetch/api/resources/utils.js"); + importScripts("/common/get-host-info.sub.js"); +} + +function testReferrerAfterRedirection(desc, redirectUrl, redirectLocation, referrerPolicy, redirectReferrerPolicy, expectedReferrer) { + var url = redirectUrl; + var urlParameters = "?location=" + encodeURIComponent(redirectLocation); + + if (redirectReferrerPolicy) + urlParameters += "&redirect_referrerpolicy=" + redirectReferrerPolicy; + + var requestInit = {"redirect": "follow", "referrerPolicy": referrerPolicy}; + + promise_test(function(test) { + return fetch(url + urlParameters, requestInit).then(function(response) { + assert_equals(response.status, 200, "Inspect header response's status is 200"); + assert_equals(response.headers.get("x-request-referer"), expectedReferrer ? expectedReferrer : null, "Check referrer header"); + }); + }, desc); +} + +var referrerOrigin = get_host_info().HTTPS_ORIGIN + "/"; +var referrerUrl = location.href; + +var RESOURCES_DIR = "/fetch/api/resources/"; +var redirectUrl = RESOURCES_DIR + "redirect.py"; +var locationUrl = get_host_info().HTTPS_ORIGIN + RESOURCES_DIR + "inspect-headers.py?headers=referer"; +var httpLocationUrl = get_host_info().HTTP_REMOTE_ORIGIN + RESOURCES_DIR + "inspect-headers.py?cors&headers=referer"; + +testReferrerAfterRedirection("Downgrade, empty init, unsafe-url redirect header ", redirectUrl, httpLocationUrl, "", "unsafe-url", referrerUrl); +testReferrerAfterRedirection("Downgrade, empty init, no-referrer-when-downgrade redirect header ", redirectUrl, httpLocationUrl, "", "no-referrer-when-downgrade", null); +testReferrerAfterRedirection("Downgrade, empty init, same-origin redirect header ", redirectUrl, httpLocationUrl, "", "same-origin", null); +testReferrerAfterRedirection("Downgrade, empty init, origin redirect header ", redirectUrl, httpLocationUrl, "", "origin", referrerOrigin); +testReferrerAfterRedirection("Downgrade, empty init, origin-when-cross-origin redirect header ", redirectUrl, httpLocationUrl, "", "origin-when-cross-origin", referrerOrigin); +testReferrerAfterRedirection("Downgrade, empty init, no-referrer redirect header ", redirectUrl, httpLocationUrl, "", "no-referrer", null); +testReferrerAfterRedirection("Downgrade, empty init, strict-origin redirect header ", redirectUrl, httpLocationUrl, "", "strict-origin", null); +testReferrerAfterRedirection("Downgrade, empty init, strict-origin-when-cross-origin redirect header ", redirectUrl, httpLocationUrl, "", "strict-origin-when-cross-origin", null); + +testReferrerAfterRedirection("Downgrade, empty redirect header, unsafe-url init ", redirectUrl, httpLocationUrl, "unsafe-url", "", referrerUrl); +testReferrerAfterRedirection("Downgrade, empty redirect header, no-referrer-when-downgrade init ", redirectUrl, httpLocationUrl, "no-referrer-when-downgrade", "", null); +testReferrerAfterRedirection("Downgrade, empty redirect header, same-origin init ", redirectUrl, httpLocationUrl, "same-origin", "", null); +testReferrerAfterRedirection("Downgrade, empty redirect header, origin init ", redirectUrl, httpLocationUrl, "origin", "", referrerOrigin); +testReferrerAfterRedirection("Downgrade, empty redirect header, origin-when-cross-origin init ", redirectUrl, httpLocationUrl, "origin-when-cross-origin", "", referrerOrigin); +testReferrerAfterRedirection("Downgrade, empty redirect header, no-referrer init ", redirectUrl, httpLocationUrl, "no-referrer", "", null); +testReferrerAfterRedirection("Downgrade, empty redirect header, strict-origin init ", redirectUrl, httpLocationUrl, "strict-origin", "", null); +testReferrerAfterRedirection("Downgrade, empty redirect header, strict-origin-when-cross-origin init ", redirectUrl, httpLocationUrl, "strict-origin-when-cross-origin", "", null); + + diff --git a/testing/web-platform/mozilla/tests/fetch/api/redirect/redirect-referrer.https.html b/testing/web-platform/mozilla/tests/fetch/api/redirect/redirect-referrer.https.html new file mode 100644 index 0000000000..bcd24892e2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/fetch/api/redirect/redirect-referrer.https.html @@ -0,0 +1,18 @@ + + + + + Fetch: redirect referrer handling, mixed content + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/fetch/orb/tentative/content-range.sub.window.js b/testing/web-platform/mozilla/tests/fetch/orb/tentative/content-range.sub.window.js new file mode 100644 index 0000000000..e6fe872719 --- /dev/null +++ b/testing/web-platform/mozilla/tests/fetch/orb/tentative/content-range.sub.window.js @@ -0,0 +1,19 @@ +// META: script=/fetch/orb/resources/utils.js +// META: script=resources/utils.js + +const url = + "http://{{domains[www1]}}:{{ports[http][0]}}/fetch/orb/resources/image.png"; + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB( + url, + { headers: new Headers([["Range", "bytes 10-99"]]) }, + header("Content-Range", "bytes 10-99/1010"), + "slice(10,100)", + "status(206)" + ), + "ORB should filter opaque range of image/png not starting at zero, that isn't subsequent" +); diff --git a/testing/web-platform/mozilla/tests/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html b/testing/web-platform/mozilla/tests/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html new file mode 100644 index 0000000000..d5ab1a4cd7 --- /dev/null +++ b/testing/web-platform/mozilla/tests/fetch/orb/tentative/img-mime-types-coverage.tentative.sub.html @@ -0,0 +1,43 @@ + + + +
+ diff --git a/testing/web-platform/mozilla/tests/fetch/orb/tentative/known-mime-type.sub.window.js b/testing/web-platform/mozilla/tests/fetch/orb/tentative/known-mime-type.sub.window.js new file mode 100644 index 0000000000..1779b8ddfc --- /dev/null +++ b/testing/web-platform/mozilla/tests/fetch/orb/tentative/known-mime-type.sub.window.js @@ -0,0 +1,48 @@ +// META: script=/fetch/orb/resources/utils.js +// META: script=resources/utils.js + +const path = "http://{{domains[www1]}}:{{ports[http][0]}}/fetch/orb/resources"; + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB(`${path}/font.ttf`, null, contentType("font/ttf")), + "ORB should filter opaque font/ttf" +); + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB(`${path}/text.txt`, null, contentType("text/plain")), + "ORB should filter opaque text/plain" +); + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB(`${path}/data.json`, null, contentType("application/json")), + "ORB should filter opaque application/json (non-empty)" +); + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB(`${path}/empty.json`, null, contentType("application/json")), + "ORB should filter opaque application/json (empty)" +); + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB( + `${path}/data_non_ascii.json`, + null, + contentType("application/json") + ), + "ORB should filter opaque application/json which contains non ascii characters" +); diff --git a/testing/web-platform/mozilla/tests/fetch/orb/tentative/nosniff.sub.window.js b/testing/web-platform/mozilla/tests/fetch/orb/tentative/nosniff.sub.window.js new file mode 100644 index 0000000000..7468921b30 --- /dev/null +++ b/testing/web-platform/mozilla/tests/fetch/orb/tentative/nosniff.sub.window.js @@ -0,0 +1,44 @@ +// META: script=/fetch/orb/resources/utils.js +// META: script=resources/utils.js + +const path = "http://{{domains[www1]}}:{{ports[http][0]}}/fetch/orb/resources"; + +// This is an exception that allow more MIME types than the ORB spec does. +// This is due to web compatibility, but might be removed in the future. +// See Bug 1828375 +promise_test( + async () => + await fetchORB( + `${path}/text.txt`, + null, + contentType("text/plain"), + contentTypeOptions("nosniff") + ), + "ORB shouldn't block opaque text/plain with nosniff" +); + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB( + `${path}/data.json`, + null, + contentType("application/json"), + contentTypeOptions("nosniff") + ), + "ORB should filter opaque-response-blocklisted MIME type with nosniff" +); + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB( + `${path}/data.json`, + null, + contentType(""), + contentTypeOptions("nosniff") + ), + "ORB should filter opaque response with empty Content-Type and nosniff" +); diff --git a/testing/web-platform/mozilla/tests/fetch/orb/tentative/resources/utils.js b/testing/web-platform/mozilla/tests/fetch/orb/tentative/resources/utils.js new file mode 100644 index 0000000000..b4f63b4416 --- /dev/null +++ b/testing/web-platform/mozilla/tests/fetch/orb/tentative/resources/utils.js @@ -0,0 +1,21 @@ +function promise_internal_response_is_filtered(fetchPromise, message) { + return promise_test(async () => { + const response = await fetchPromise; + + // A parent filtered opaque response is defined here as a response that isn't just an + // opaque response, but also where the internal response has been made unavailable. + // `Response.cloneUnfiltered` is used to inspect the state of the internal response, + // which is exactly what we want to be missing in this case. + const unfiltered = SpecialPowers.wrap(response).cloneUnfiltered(); + assert_equals( + await SpecialPowers.unwrap(unfiltered).text(), + "", + "The internal response should be empty" + ); + assert_equals( + Array.from(await SpecialPowers.unwrap(unfiltered).headers).length, + 0, + "The internal response should have no headers" + ); + }, message); +} diff --git a/testing/web-platform/mozilla/tests/fetch/orb/tentative/status.sub.window.js b/testing/web-platform/mozilla/tests/fetch/orb/tentative/status.sub.window.js new file mode 100644 index 0000000000..902759b63a --- /dev/null +++ b/testing/web-platform/mozilla/tests/fetch/orb/tentative/status.sub.window.js @@ -0,0 +1,30 @@ +// META: script=/fetch/orb/resources/utils.js +// META: script=resources/utils.js + +const path = "http://{{domains[www1]}}:{{ports[http][0]}}/fetch/orb/resources"; + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB( + `${path}/data.json`, + null, + contentType("application/json"), + "status(206)" + ), + "ORB should filter opaque-response-blocklisted MIME type with status 206" +); + +// Due to web compatibility we filter opaque Response object from the +// fetch() function in the Fetch specification. See Bug 1823877. This +// might be removed in the future. +promise_internal_response_is_filtered( + fetchORB( + `${path}/data.json`, + null, + contentType("application/json"), + "status(302)" + ), + "ORB should filter opaque range of image/png not starting at zero, that isn't subsequent" +); diff --git a/testing/web-platform/mozilla/tests/focus/Range_collapse.html b/testing/web-platform/mozilla/tests/focus/Range_collapse.html new file mode 100644 index 0000000000..7c16f16bec --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Range_collapse.html @@ -0,0 +1,207 @@ + + +focus move tests caused by a call of Range.collapse() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Range_selectNode.html b/testing/web-platform/mozilla/tests/focus/Range_selectNode.html new file mode 100644 index 0000000000..3975653d2c --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Range_selectNode.html @@ -0,0 +1,267 @@ + + +focus move tests caused by a call of Range.selectNode() and Range.selectNodeContents() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Range_setEnd.html b/testing/web-platform/mozilla/tests/focus/Range_setEnd.html new file mode 100644 index 0000000000..e1eed4ae71 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Range_setEnd.html @@ -0,0 +1,364 @@ + + +focus move tests caused by a call of Range.setEnd(), Range.setEndAfter() and Range.setEndBefore() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Range_setStart.html b/testing/web-platform/mozilla/tests/focus/Range_setStart.html new file mode 100644 index 0000000000..9297aa02ab --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Range_setStart.html @@ -0,0 +1,353 @@ + + +focus move tests caused by a call of Range.setStart(), Range.setStartAfter() and Range.setStartBefore() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_addRange.html b/testing/web-platform/mozilla/tests/focus/Selection_addRange.html new file mode 100644 index 0000000000..d94e688158 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_addRange.html @@ -0,0 +1,1242 @@ + + +focus move tests caused by a call of Selection.addRange() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_addRange_in_iframe.html b/testing/web-platform/mozilla/tests/focus/Selection_addRange_in_iframe.html new file mode 100644 index 0000000000..71b7c26c46 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_addRange_in_iframe.html @@ -0,0 +1,63 @@ + + +focus move and auto scroll tests caused by a call of Selection.addRange() into a contenteditable element in iframe + + + +
Spacer to check whether or not page was scrolled down to focused editor
+ + diff --git a/testing/web-platform/mozilla/tests/focus/Selection_addRange_into_iframe.html b/testing/web-platform/mozilla/tests/focus/Selection_addRange_into_iframe.html new file mode 100644 index 0000000000..e06e9cd17a --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_addRange_into_iframe.html @@ -0,0 +1,67 @@ + + +focus move tests caused by a call of Selection.addRange() into iframe + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

Here is an iframe:

+ + diff --git a/testing/web-platform/mozilla/tests/focus/Selection_addRange_into_iframe_iframe.html b/testing/web-platform/mozilla/tests/focus/Selection_addRange_into_iframe_iframe.html new file mode 100644 index 0000000000..946d4aa5e7 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_addRange_into_iframe_iframe.html @@ -0,0 +1,9 @@ + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

Here are two editors:

+
The first editor.
+
The second editor.
+
The non-editable div.
+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_collapse.html b/testing/web-platform/mozilla/tests/focus/Selection_collapse.html new file mode 100644 index 0000000000..2e3050d822 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_collapse.html @@ -0,0 +1,148 @@ + + +focus move tests caused by a call of Selection.collapse() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_collapseToEnd.html b/testing/web-platform/mozilla/tests/focus/Selection_collapseToEnd.html new file mode 100644 index 0000000000..f768782650 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_collapseToEnd.html @@ -0,0 +1,134 @@ + + +focus move tests caused by a call of Selection.collapseToEnd() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_collapseToStart.html b/testing/web-platform/mozilla/tests/focus/Selection_collapseToStart.html new file mode 100644 index 0000000000..238a436c1b --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_collapseToStart.html @@ -0,0 +1,142 @@ + + +focus move tests caused by a call of Selection.collapseToStart() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_extend.html b/testing/web-platform/mozilla/tests/focus/Selection_extend.html new file mode 100644 index 0000000000..62136cc4a3 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_extend.html @@ -0,0 +1,189 @@ + + +focus move tests caused by a call of Selection.extend() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_removeAllRanges.html b/testing/web-platform/mozilla/tests/focus/Selection_removeAllRanges.html new file mode 100644 index 0000000000..6e6854d44b --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_removeAllRanges.html @@ -0,0 +1,112 @@ + + +focus move tests caused by a call of Selection.removeAllRanges() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_removeRange.html b/testing/web-platform/mozilla/tests/focus/Selection_removeRange.html new file mode 100644 index 0000000000..14e78381d2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_removeRange.html @@ -0,0 +1,112 @@ + + +focus move tests caused by a call of Selection.removeRange() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_selectAllChildren.html b/testing/web-platform/mozilla/tests/focus/Selection_selectAllChildren.html new file mode 100644 index 0000000000..2753e60851 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_selectAllChildren.html @@ -0,0 +1,254 @@ + + +focus move tests caused by a call of Selection.selectAllChildren() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/Selection_setBaseAndExtent.html b/testing/web-platform/mozilla/tests/focus/Selection_setBaseAndExtent.html new file mode 100644 index 0000000000..7cfc110009 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/Selection_setBaseAndExtent.html @@ -0,0 +1,926 @@ + + +focus move tests caused by a call of Selection.setBaseAndExtent() + + + +
Spacer to check whether or not page was scrolled down to focused editor
+

static text

+

content of editor

+

content of outer editor

static content of outer editor

content of inner editor

+

static text

+

anchor

+ diff --git a/testing/web-platform/mozilla/tests/focus/delegateFocus-is-focusable.html b/testing/web-platform/mozilla/tests/focus/delegateFocus-is-focusable.html new file mode 100644 index 0000000000..35fd30f1f6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/delegateFocus-is-focusable.html @@ -0,0 +1,19 @@ + + +focus move tests caused by a call of Selection.addRange() + + +
+ diff --git a/testing/web-platform/mozilla/tests/focus/focus-before-iframe-loaded-different-site.html b/testing/web-platform/mozilla/tests/focus/focus-before-iframe-loaded-different-site.html new file mode 100644 index 0000000000..e765990145 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/focus-before-iframe-loaded-different-site.html @@ -0,0 +1,16 @@ + + +focus() before iframe loaded different site + + + diff --git a/testing/web-platform/mozilla/tests/focus/focus-before-iframe-loaded-same-site.html b/testing/web-platform/mozilla/tests/focus/focus-before-iframe-loaded-same-site.html new file mode 100644 index 0000000000..fd7c2bffa6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/focus-before-iframe-loaded-same-site.html @@ -0,0 +1,16 @@ + + +focus() before iframe loaded same site + + + diff --git a/testing/web-platform/mozilla/tests/focus/focus-next-tick-before-iframe-loaded-different-site.html b/testing/web-platform/mozilla/tests/focus/focus-next-tick-before-iframe-loaded-different-site.html new file mode 100644 index 0000000000..58310fd687 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/focus-next-tick-before-iframe-loaded-different-site.html @@ -0,0 +1,16 @@ + + +focus() from next tick before iframe loaded different site + + + diff --git a/testing/web-platform/mozilla/tests/focus/focus-next-tick-before-iframe-loaded-same-site.html b/testing/web-platform/mozilla/tests/focus/focus-next-tick-before-iframe-loaded-same-site.html new file mode 100644 index 0000000000..01b467718c --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/focus-next-tick-before-iframe-loaded-same-site.html @@ -0,0 +1,16 @@ + + +focus() from next tick before iframe loaded same site + + + diff --git a/testing/web-platform/mozilla/tests/focus/iframe-focus-event-after-iframe-gets-focus.html b/testing/web-platform/mozilla/tests/focus/iframe-focus-event-after-iframe-gets-focus.html new file mode 100644 index 0000000000..82a1346ec6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/iframe-focus-event-after-iframe-gets-focus.html @@ -0,0 +1,75 @@ + + +Test focus event after iframe gets focus + + + diff --git a/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-different-site-inner.html b/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-different-site-inner.html new file mode 100644 index 0000000000..bcf23627d2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-different-site-inner.html @@ -0,0 +1,17 @@ + + + + +focus() before iframe loaded different site + + + + + diff --git a/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-different-site-outer.sub.html b/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-different-site-outer.sub.html new file mode 100644 index 0000000000..e95fe7d292 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-different-site-outer.sub.html @@ -0,0 +1,42 @@ + + + +focus() before iframe loaded different site + + + + + diff --git a/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-same-site-inner.html b/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-same-site-inner.html new file mode 100644 index 0000000000..3c277f078f --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-same-site-inner.html @@ -0,0 +1,17 @@ + + + + +focus() before iframe loaded same site + + + + + diff --git a/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-same-site-outer.html b/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-same-site-outer.html new file mode 100644 index 0000000000..8c829d6d47 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/focus-before-iframe-loaded-same-site-outer.html @@ -0,0 +1,42 @@ + + + +focus() before iframe loaded same site + + + + + diff --git a/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-different-site-inner.html b/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-different-site-inner.html new file mode 100644 index 0000000000..2c1b35f2b2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-different-site-inner.html @@ -0,0 +1,17 @@ + + + + +focus() from next tick before iframe loaded different site + + + + + diff --git a/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-different-site-outer.sub.html b/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-different-site-outer.sub.html new file mode 100644 index 0000000000..83a48e303d --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-different-site-outer.sub.html @@ -0,0 +1,50 @@ + + + +focus() from next tick before iframe loaded different site + + + + + diff --git a/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-same-site-inner.html b/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-same-site-inner.html new file mode 100644 index 0000000000..62add75ed9 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-same-site-inner.html @@ -0,0 +1,17 @@ + + + + +focus() from next tick before iframe loaded same site + + + + + diff --git a/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-same-site-outer.html b/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-same-site-outer.html new file mode 100644 index 0000000000..a68d34039d --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/focus-next-tick-before-iframe-loaded-same-site-outer.html @@ -0,0 +1,50 @@ + + + +focus() from next tick before iframe loaded same site + + + + + diff --git a/testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-different-site-iframe-gets-focus-outer.sub.html b/testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-different-site-iframe-gets-focus-outer.sub.html new file mode 100644 index 0000000000..d69580237c --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-different-site-iframe-gets-focus-outer.sub.html @@ -0,0 +1,42 @@ + + +Iframe focus event after different site iframe gets focus outer + + diff --git a/testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-iframe-gets-focus-inner.html b/testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-iframe-gets-focus-inner.html new file mode 100644 index 0000000000..64a360d248 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-iframe-gets-focus-inner.html @@ -0,0 +1,31 @@ + + + + + Iframe focus event inner document + + +

Inner

+ + + diff --git a/testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-same-site-iframe-gets-focus-outer.html b/testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-same-site-iframe-gets-focus-outer.html new file mode 100644 index 0000000000..06040d6485 --- /dev/null +++ b/testing/web-platform/mozilla/tests/focus/support/iframe-focus-event-after-same-site-iframe-gets-focus-outer.html @@ -0,0 +1,42 @@ + + +Iframe focus event after same site iframe gets focus outer + + diff --git a/testing/web-platform/mozilla/tests/html/browsers/browsing-the-web/read-media/sandboxed-video.html b/testing/web-platform/mozilla/tests/html/browsers/browsing-the-web/read-media/sandboxed-video.html new file mode 100644 index 0000000000..4c58514e66 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/browsers/browsing-the-web/read-media/sandboxed-video.html @@ -0,0 +1,24 @@ + +Test load of media document in sandboxed iframe + + + + + diff --git a/testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-01.html b/testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-01.html new file mode 100644 index 0000000000..ed59c3ae99 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-01.html @@ -0,0 +1,59 @@ + + + +Snap to a slider's tick marks by clicking near them + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-02.html b/testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-02.html new file mode 100644 index 0000000000..061f34b3a7 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-02.html @@ -0,0 +1,41 @@ + + + +Snap to an RTL slider's tick marks by clicking near them + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-03.html b/testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-03.html new file mode 100644 index 0000000000..9ee80199e4 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/rendering/non-replaced-elements/form-controls/range-snap-to-tick-marks-03.html @@ -0,0 +1,45 @@ + + + +Snap to a vertical slider's tick marks by clicking near them + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/form-submission-0/non-usv-filenames.window.js b/testing/web-platform/mozilla/tests/html/semantics/forms/form-submission-0/non-usv-filenames.window.js new file mode 100644 index 0000000000..9b5aa88abb --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/form-submission-0/non-usv-filenames.window.js @@ -0,0 +1,95 @@ +// META: script=/html/semantics/forms/form-submission-0/enctypes-helper.js + +// This test is built on the same infrastructure as the WPT tests +// urlencoded2.window.js, multipart-formdata.window.js and text-plain.window.js, +// except modified because this file only tests the serialization of filenames. +// See the enctypes-helper.js file in the regular WPT test suite for more info. + +// The `urlencoded`, `multipart` and `textPlain` functions take a `file` +// property rather than `name` and `value` properties, and the value of +// `expected` is the serialization of the filename in the given encoding. + +function formSubmissionTemplate2(enctype, expectedBuilder) { + const formTestFn = formSubmissionTemplate(enctype, expectedBuilder); + return ({ file, formEncoding, expected, description }) => + formTestFn({ name: "a", value: file, formEncoding, expected, description }); +} + +const urlencoded = formSubmissionTemplate2( + "application/x-www-form-urlencoded", + filename => `a=${filename}` +); +const multipart = formSubmissionTemplate2( + "multipart/form-data", + (filename, serialized) => { + const boundary = serialized.split("\r\n")[0]; + return [ + boundary, + `Content-Disposition: form-data; name="a"; filename="${filename}"`, + "Content-Type: text/plain", + "", + "", // File contents + `${boundary}--`, + "", + ].join("\r\n"); + } +); +const textPlain = formSubmissionTemplate2( + "text/plain", + filename => `a=${filename}\r\n` +); + +// ----------------------------------------------------------------------------- + +(async () => { + // This creates an empty filesystem file with an arbitrary name and returns it + // as a File object with name "a\uD800b". + const file = SpecialPowers.unwrap( + await SpecialPowers.createFiles( + [{ data: "", options: { name: "a\uD800b", type: "text/plain" } }], + files => files[0] + ) + ); + + urlencoded({ + file, + formEncoding: "UTF-8", + expected: "a%EF%BF%BDb", + description: "lone surrogate in filename, UTF-8", + }); + + urlencoded({ + file, + formEncoding: "windows-1252", + expected: "a%26%2365533%3Bb", + description: "lone surrogate in filename, windows-1252", + }); + + multipart({ + file, + formEncoding: "UTF-8", + expected: "a\xEF\xBF\xBDb", + description: "lone surrogate in filename, UTF-8", + }); + + multipart({ + file, + formEncoding: "windows-1252", + expected: "a�b", + description: "lone surrogate in filename, windows-1252", + }); + + textPlain({ + file, + formEncoding: "UTF-8", + expected: "a\xEF\xBF\xBDb", + description: "lone surrogate in filename, UTF-8", + }); + + textPlain({ + file, + formEncoding: "windows-1252", + expected: "a�b", + description: "lone surrogate in filename, windows-1252", + }); +})(); diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/input-radio-key-navigation.html b/testing/web-platform/mozilla/tests/html/semantics/forms/input-radio-key-navigation.html new file mode 100644 index 0000000000..2eee99ffaf --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/input-radio-key-navigation.html @@ -0,0 +1,61 @@ + +Keyboard navigation on input type=radio + + + + + + + + + +
+ + + +
+
+ + + +
+ diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/textfieldselection/selection-value-interactions.html b/testing/web-platform/mozilla/tests/html/semantics/forms/textfieldselection/selection-value-interactions.html new file mode 100644 index 0000000000..c6ba07f746 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/textfieldselection/selection-value-interactions.html @@ -0,0 +1,217 @@ + + + + + +
+
+ diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-01-notref.html b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-01-notref.html new file mode 100644 index 0000000000..67591468cf --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-01-notref.html @@ -0,0 +1,3 @@ + +vertical range input with datalist reference + diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-01.html b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-01.html new file mode 100644 index 0000000000..f1bd96f391 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-01.html @@ -0,0 +1,13 @@ + +vertical range input with datalist + + + + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-02-notref.html b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-02-notref.html new file mode 100644 index 0000000000..59acde1482 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-02-notref.html @@ -0,0 +1,9 @@ + +max and min attributes applied to vertical range input with datalist reference + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-02.html b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-02.html new file mode 100644 index 0000000000..bd45631d4a --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-02.html @@ -0,0 +1,14 @@ + +max and min attributes applied to vertical range input with datalist + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-03-ref.html b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-03-ref.html new file mode 100644 index 0000000000..df473920ec --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-03-ref.html @@ -0,0 +1,7 @@ + +no vertical range tick marks for disabled datalist elements reference + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-03.html b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-03.html new file mode 100644 index 0000000000..83b5c2eb66 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-03.html @@ -0,0 +1,15 @@ + +no vertical range tick marks for disabled datalist elements + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-04-ref.html b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-04-ref.html new file mode 100644 index 0000000000..c2bf59e52b --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-04-ref.html @@ -0,0 +1,7 @@ + +no range tick marks for vertical range tick marks that are step mismatches reference + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-04.html b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-04.html new file mode 100644 index 0000000000..a47334b411 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/the-input-element/range-tick-marks-04.html @@ -0,0 +1,14 @@ + +no range tick marks for vertical range tick marks that are step mismatches + + + + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/forms/time-enter-keypress.html b/testing/web-platform/mozilla/tests/html/semantics/forms/time-enter-keypress.html new file mode 100644 index 0000000000..2ffeb22cb4 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/forms/time-enter-keypress.html @@ -0,0 +1,48 @@ + +Enter submits on time input + + + + + + + + +
+ + +
+
+ + +
+
+ + +
+ diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module-circular.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module-circular.html new file mode 100644 index 0000000000..c99893a786 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module-circular.html @@ -0,0 +1,25 @@ + + +Load dynamically imported async modules circular + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module-error.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module-error.html new file mode 100644 index 0000000000..ff2ac06222 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module-error.html @@ -0,0 +1,25 @@ + + +Load dynamically imported async modules which errors + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module.html new file mode 100644 index 0000000000..2e1b267492 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-dynamic-module.html @@ -0,0 +1,25 @@ + + +Load dynamically imported async modules + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module-circular.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module-circular.html new file mode 100644 index 0000000000..7540ebb5ec --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module-circular.html @@ -0,0 +1,28 @@ + + +Load async modules circular + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module-error.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module-error.html new file mode 100644 index 0000000000..c720611080 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module-error.html @@ -0,0 +1,25 @@ + + +Load an async module + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module.html new file mode 100644 index 0000000000..566e2a379d --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/async-module.html @@ -0,0 +1,21 @@ + + +Load dynamically imported async modules + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/circular-module-import-with-syntax-error.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/circular-module-import-with-syntax-error.html new file mode 100644 index 0000000000..e472656e34 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/circular-module-import-with-syntax-error.html @@ -0,0 +1,26 @@ + + +Load a module with circular imports and syntax error + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/create-module-script.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/create-module-script.html new file mode 100644 index 0000000000..44337a0217 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/create-module-script.html @@ -0,0 +1,25 @@ + + +Insert non-async module script + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/mixed-content-import.https.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/mixed-content-import.https.html new file mode 100644 index 0000000000..5342bd525c --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/mixed-content-import.https.html @@ -0,0 +1,27 @@ + + +Attempt to load a mixed content module graph + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/module-error-reporting.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/module-error-reporting.html new file mode 100644 index 0000000000..e4c43060b6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/module-error-reporting.html @@ -0,0 +1,89 @@ + + +Insert non-async module script + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/reload-failed-module-script.html b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/reload-failed-module-script.html new file mode 100644 index 0000000000..b95d3fe330 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/reload-failed-module-script.html @@ -0,0 +1,41 @@ + + +Insert non-async module script + + + + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module.js new file mode 100644 index 0000000000..238dc11402 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module.js @@ -0,0 +1,11 @@ +var ns = await import('./async_test_module.js'); +if (ns.default !== 42) { + throw new Error("FAIL"); +} +if (ns.x !== "named") { + throw new Error("FAIL"); +} +if (ns.y !== 39) { + throw new Error("FAIL"); +} + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module_circular.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module_circular.js new file mode 100644 index 0000000000..93bfc3aca8 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module_circular.js @@ -0,0 +1,5 @@ +try { + var ns = await import('./async_test_module_circular_1.js'); +} catch(ns) { + throw Error("Fails as expected"); +}; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module_error.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module_error.js new file mode 100644 index 0000000000..3832960108 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_dynamic_module_error.js @@ -0,0 +1,5 @@ +try { + await import('./bad_local_export.js'); +} catch(ns) { + throw Error("Fails as expected"); +}; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module.js new file mode 100644 index 0000000000..34a590bcfc --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module.js @@ -0,0 +1,14 @@ +import nsPromise from './async_test_module.js'; + +console.log("hi"); +let ns = await nsPromise; + +if (ns.default !== 42) { + throw new Error("FAIL"); +} +if (ns.x !== "named") { + throw new Error("FAIL"); +} +if (ns.y !== 39) { + throw new Error("FAIL"); +} diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module_circular.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module_circular.js new file mode 100644 index 0000000000..a9dff71b17 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module_circular.js @@ -0,0 +1,3 @@ +import module from './async_test_module_circular_1.js'; + +throw new Error("FAIL"); diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module_error.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module_error.js new file mode 100644 index 0000000000..3fa6991768 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_module_error.js @@ -0,0 +1,4 @@ +import ns from "./async_test_module_failure.js"; + +throw Error("FAIL"); + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module.js new file mode 100644 index 0000000000..201c76eedf --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module.js @@ -0,0 +1,12 @@ +await 1; +await 2; +export default await Promise.resolve(42); + +export const y = await 39; +export const x = await 'named'; + +// Bonus: this rejection is not unwrapped +if (false) { + await Promise.reject(42); +} + diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_1.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_1.js new file mode 100644 index 0000000000..2fdf67baca --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_1.js @@ -0,0 +1,3 @@ +import module from './async_test_module_circular_2.js'; + +export default {}; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_2.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_2.js new file mode 100644 index 0000000000..0a09aacc39 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_2.js @@ -0,0 +1,5 @@ +import module from './async_test_module_circular_3.js'; + +await module.test(); + +export default {}; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_3.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_3.js new file mode 100644 index 0000000000..d815bc00e4 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_circular_3.js @@ -0,0 +1,8 @@ +import module from './async_test_module_circular_1.js'; + +export default { + async test() { + throw new Error("error thrown"); + return Promise.resolve() + } +}; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_failure.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_failure.js new file mode 100644 index 0000000000..6f823f3003 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/async_test_module_failure.js @@ -0,0 +1,6 @@ +export default 42; + +export const named = 'named'; + +var rejection = Promise.reject(TypeError('I reject this!')); +await rejection; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/bad_local_export.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/bad_local_export.js new file mode 100644 index 0000000000..0b3df8de32 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/bad_local_export.js @@ -0,0 +1,3 @@ +// Attempt to export something that doesn't exist. + +export missing; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error1.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error1.js new file mode 100644 index 0000000000..f0310fe0b1 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error1.js @@ -0,0 +1,2 @@ +import { test2 } from "./circular_error2.js"; +import "./circular_error3.js"; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error2.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error2.js new file mode 100644 index 0000000000..5b163eab93 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error2.js @@ -0,0 +1 @@ +import "./circular_error3.js"; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error3.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error3.js new file mode 100644 index 0000000000..2589defac8 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/circular_error3.js @@ -0,0 +1 @@ +import "./circular_error1.js"; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/evaluation-order-setup.mjs b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/evaluation-order-setup.mjs new file mode 100644 index 0000000000..d3f22e9ee0 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/evaluation-order-setup.mjs @@ -0,0 +1,19 @@ +globalThis.setup({allow_uncaught_exception: true}); + +globalThis.log = []; + +globalThis.addEventListener("error", + event => globalThis.log.push("global-error", event.error.message)); +globalThis.addEventListener("onunhandledrejection", + event => globalThis.log.push('unhandled-promise-rejection')); +globalThis.addEventListener("load", + event => globalThis.log.push("global-load")); + +globalThis.unreachable = function() { + globalThis.log.push("unreachable"); +} + +globalThis.test_load = async_test("Test evaluation order of modules"); +globalThis.testDone = globalThis.test_load.step_func_done(() => { + assert_array_equals(globalThis.log, globalThis.expectedLog); +}); diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/import_resolve_failure.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/import_resolve_failure.js new file mode 100644 index 0000000000..a2e2875f20 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/import_resolve_failure.js @@ -0,0 +1,2 @@ +// Import from an unresolvable module specifier. +import {x} from "unresolvable"; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/indirect_export_resolve_failure.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/indirect_export_resolve_failure.js new file mode 100644 index 0000000000..282fd2ed62 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/indirect_export_resolve_failure.js @@ -0,0 +1,2 @@ +// Export from an unresolvable module specifier. +export {x, y} from "unresolvable"; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/missing_import.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/missing_import.js new file mode 100644 index 0000000000..885db02dde --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/missing_import.js @@ -0,0 +1,2 @@ +// Import a non-existent export to trigger instantiation failure. +import {not_found} from "./module.js"; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/missing_indirect_export.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/missing_indirect_export.js new file mode 100644 index 0000000000..8494031b09 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/missing_indirect_export.js @@ -0,0 +1,2 @@ +// Import a non-existent export to trigger instantiation failure. +export {x, not_found} from "./module.js"; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/mixed_import.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/mixed_import.js new file mode 100644 index 0000000000..371018f1f4 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/mixed_import.js @@ -0,0 +1 @@ +export * from "http://web-platform.test:8000/_mozilla/html/semantics/scripting-1/the-script-element/support/mixed_import2.js" diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/mixed_import2.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/mixed_import2.js new file mode 100644 index 0000000000..60c6c8d8b0 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/mixed_import2.js @@ -0,0 +1 @@ +export default "foo"; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/module.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/module.js new file mode 100644 index 0000000000..1269686475 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/module.js @@ -0,0 +1,2 @@ +export let x = 42; +moduleRan = true; diff --git a/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/module_eval_error.js b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/module_eval_error.js new file mode 100644 index 0000000000..3bd872b2e6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/semantics/scripting-1/the-script-element/support/module_eval_error.js @@ -0,0 +1,3 @@ +// A module that throws when evaluated. + +this = 0; diff --git a/testing/web-platform/mozilla/tests/html/syntax/charset/README.md b/testing/web-platform/mozilla/tests/html/syntax/charset/README.md new file mode 100644 index 0000000000..0558ae1cd5 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/charset/README.md @@ -0,0 +1,7 @@ +The tests in this directory intentionally differ from WebKit and Blink. + +These are case where using the real tree builder (with `noscript`) parsing +as in the scripting enabled mode and with CDATA sections parsing with +awareness of foreign content differs from WebKit's and Blink's behavior +that works as if there was a pre-foreign content, pre-template tree builder +running in the scripting disabled mode. diff --git a/testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript-after-template.html b/testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript-after-template.html new file mode 100644 index 0000000000..71ef9144e0 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript-after-template.html @@ -0,0 +1,10 @@ + + + + + + +

Meta in noscript after template (which is also inside the noscript).

+

Test:

+

If ж, meta takes effect

+ diff --git a/testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript-ncr.html b/testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript-ncr.html new file mode 100644 index 0000000000..645f151b26 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript-ncr.html @@ -0,0 +1,10 @@ + + + + + + +

Meta with NCR in the encoding label in noscript.

+

Test:

+

If ж, meta takes effect

+ diff --git a/testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript.html b/testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript.html new file mode 100644 index 0000000000..e76054d618 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/charset/in-noscript.html @@ -0,0 +1,10 @@ + + + + + + +

Meta in noscript.

+

Test:

+

If ж, meta takes effect

+ diff --git a/testing/web-platform/mozilla/tests/html/syntax/charset/in-svg-in-cdata-after-gt.html b/testing/web-platform/mozilla/tests/html/syntax/charset/in-svg-in-cdata-after-gt.html new file mode 100644 index 0000000000..56783b7afc --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/charset/in-svg-in-cdata-after-gt.html @@ -0,0 +1,10 @@ + + + + + +><meta charset="windows-1251"> +

In SVG in CDATA after greater-than sign in the CDATA (after head).

+

Test:

+

If ж, meta takes effect

+ diff --git a/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-after-template-ref.html b/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-after-template-ref.html new file mode 100644 index 0000000000..27defe54c0 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-after-template-ref.html @@ -0,0 +1,9 @@ + + + + + +

Meta in noscript after template (which is also inside the noscript).

+

Test: ж

+

If ж, meta takes effect

+ diff --git a/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-ncr-ref.html b/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-ncr-ref.html new file mode 100644 index 0000000000..3581ab68db --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-ncr-ref.html @@ -0,0 +1,9 @@ + + + + + +

Meta with NCR in the encoding label in noscript.

+

Test: ж

+

If ж, meta takes effect

+ diff --git a/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-ref.html b/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-ref.html new file mode 100644 index 0000000000..9bb9f24b88 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-noscript-ref.html @@ -0,0 +1,9 @@ + + + + + +

Meta in noscript.

+

Test: ж

+

If ж, meta takes effect

+ diff --git a/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-svg-in-cdata-after-gt-ref.html b/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-svg-in-cdata-after-gt-ref.html new file mode 100644 index 0000000000..2868f47fc2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/charset/references/in-svg-in-cdata-after-gt-ref.html @@ -0,0 +1,10 @@ + + + + + + +

In SVG in CDATA after greater-than sign in the CDATA (after head).

+

Test: ж

+

If ж, meta takes effect

+ diff --git a/testing/web-platform/mozilla/tests/html/syntax/parsing/math-parse01.html b/testing/web-platform/mozilla/tests/html/syntax/parsing/math-parse01.html new file mode 100644 index 0000000000..3aff716d9f --- /dev/null +++ b/testing/web-platform/mozilla/tests/html/syntax/parsing/math-parse01.html @@ -0,0 +1,62 @@ + + + +math in html: parsing + + + + +

math in html: parsing

+ +
+ +
+
+
+
1a
+
⟨⟩
+
𝕂
+
a
+
a
+
+ + + diff --git a/testing/web-platform/mozilla/tests/indic-detection/LICENSE b/testing/web-platform/mozilla/tests/indic-detection/LICENSE new file mode 100644 index 0000000000..604209a804 --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/LICENSE @@ -0,0 +1,359 @@ +Creative Commons Legal Code + +Attribution-ShareAlike 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined below) for the purposes of this + License. + c. "Creative Commons Compatible License" means a license that is listed + at https://creativecommons.org/compatiblelicenses that has been + approved by Creative Commons as being essentially equivalent to this + License, including, at a minimum, because that license: (i) contains + terms that have the same purpose, meaning and effect as the License + Elements of this License; and, (ii) explicitly permits the relicensing + of adaptations of works made available under that license under this + License or a Creative Commons jurisdiction license with the same + License Elements as this License. + d. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + e. "License Elements" means the following high-level license attributes + as selected by Licensor and indicated in the title of this License: + Attribution, ShareAlike. + f. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + g. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + h. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + i. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + j. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + k. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(c), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(c), as requested. + b. You may Distribute or Publicly Perform an Adaptation only under the + terms of: (i) this License; (ii) a later version of this License with + the same License Elements as this License; (iii) a Creative Commons + jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g., + Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible + License. If you license the Adaptation under one of the licenses + mentioned in (iv), you must comply with the terms of that license. If + you license the Adaptation under the terms of any of the licenses + mentioned in (i), (ii) or (iii) (the "Applicable License"), you must + comply with the terms of the Applicable License generally and the + following provisions: (I) You must include a copy of, or the URI for, + the Applicable License with every copy of each Adaptation You + Distribute or Publicly Perform; (II) You may not offer or impose any + terms on the Adaptation that restrict the terms of the Applicable + License or the ability of the recipient of the Adaptation to exercise + the rights granted to that recipient under the terms of the Applicable + License; (III) You must keep intact all notices that refer to the + Applicable License and to the disclaimer of warranties with every copy + of the Work as included in the Adaptation You Distribute or Publicly + Perform; (IV) when You Distribute or Publicly Perform the Adaptation, + You may not impose any effective technological measures on the + Adaptation that restrict the ability of a recipient of the Adaptation + from You to exercise the rights granted to that recipient under the + terms of the Applicable License. This Section 4(b) applies to the + Adaptation as incorporated in a Collection, but this does not require + the Collection apart from the Adaptation itself to be made subject to + the terms of the Applicable License. + c. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Ssection 3(b), in the case of an + Adaptation, a credit identifying the use of the Work in the Adaptation + (e.g., "French translation of the Work by Original Author," or + "Screenplay based on original Work by Original Author"). The credit + required by this Section 4(c) may be implemented in any reasonable + manner; provided, however, that in the case of a Adaptation or + Collection, at a minimum such credit will appear, if a credit for all + contributing authors of the Adaptation or Collection appears, then as + part of these credits and in a manner at least as prominent as the + credits for the other contributing authors. For the avoidance of + doubt, You may only use the credit required by this Section for the + purpose of attribution in the manner set out above and, by exercising + Your rights under this License, You may not implicitly or explicitly + assert or imply any connection with, sponsorship or endorsement by the + Original Author, Licensor and/or Attribution Parties, as appropriate, + of You or Your use of the Work, without the separate, express prior + written permission of the Original Author, Licensor and/or Attribution + Parties. + d. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of the License. + + Creative Commons may be contacted at https://creativecommons.org/. diff --git a/testing/web-platform/mozilla/tests/indic-detection/README.txt b/testing/web-platform/mozilla/tests/indic-detection/README.txt new file mode 100644 index 0000000000..9fa13a660a --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/README.txt @@ -0,0 +1,14 @@ +The text (non-markup/JavaScript) content of the files in this directory originates from Wikipedia and +is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license +. + +The content comes from the following articles (and their revisions): +https://hi.wikipedia.org/w/index.php?title=%E0%A4%AE%E0%A4%82%E0%A4%97%E0%A4%B2_%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A4%B9&oldid=5105576 +https://ta.wikipedia.org/w/index.php?title=%E0%AE%9A%E0%AF%86%E0%AE%B5%E0%AF%8D%E0%AE%B5%E0%AE%BE%E0%AE%AF%E0%AF%8D_(%E0%AE%95%E0%AF%8B%E0%AE%B3%E0%AF%8D)&oldid=3129711 + +This directory tests that content meant for intentionally mis-encoded legacy Devanagari and Tamil fonts that Chrome's encoding detector knows about is detected as windows-1252. These fonts assign Devanagari or Tamil glyphs to code points that are symbols or Latin characters in windows-1252. In chardetng, the detection mechanism is determining that the content isn't in any chardetng-supported encoding and, therefore, the fallback is windows-1252. + +Tests are missing for the following fonts that Chrome knows about: +LT TM Barani +TMNews +TamilWeb diff --git a/testing/web-platform/mozilla/tests/indic-detection/baskar-jagran.html b/testing/web-platform/mozilla/tests/indic-detection/baskar-jagran.html new file mode 100644 index 0000000000..c8de3ec2a4 --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/baskar-jagran.html @@ -0,0 +1,10 @@ + + +ע ע UUU UUU Q , " " UUU ע UUU UUU - "S " ٷUUU + +The text content above is a converted extract from the start of the Wikipedia article मंगल ग्रह and +is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license. diff --git a/testing/web-platform/mozilla/tests/indic-detection/elango.html b/testing/web-platform/mozilla/tests/indic-detection/elango.html new file mode 100644 index 0000000000..175917cfd8 --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/elango.html @@ -0,0 +1,10 @@ + + +NYY֚ (Mars) sVeh|T E[ J Lַ Bh. C sV]X죋 SLY L[L E[.Ceh|T LopV L[] Reh A|RRL CWQPY pV L[L NYY֚ Cef\. U]yz] CeLֺeh T֟eLP TVWo syz[]. CR UTWT둥 LQTT| C BeN| CeL[o NS\ULe Ly|f\.[12] CR]XV CRho NYY֚ G\ TV HTyP. J N֟ L[] CR UTWT NW] E[T֥ fQQe hZL[, E[ T\ GUXL, T[RehL, TXY]jL, T]zV YT ThL[ LQP. NYY֛ rZpeLX, TY Uּ\jL eh E[RT T\YV. sV UQPX L EVWU] JXTr UX, LTTV NjhT T[RehL J\] U] T[Reh NYY֛XV E[]. + +The text content above is a converted extract from the start of the Wikipedia article செவ்வாய் (கோள்) and +is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license. diff --git a/testing/web-platform/mozilla/tests/indic-detection/htchanakya.html b/testing/web-platform/mozilla/tests/indic-detection/htchanakya.html new file mode 100644 index 0000000000..27c1ce5510 --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/htchanakya.html @@ -0,0 +1,12 @@ + + +״ U״ XW XW UQ , " " XW U״ XW U XW - "S " XW U " " XWU f XW U, ״ XW S U XW UJ U XW U XW U f XW , , US U VLW YW XW U״ XW XW W , ܳ i ״ U S XWi UU U S XW XW , ״ XW J XW U XW f XW U XW XW UXW XW + +v~{z UU y XW mU XW ״ XW XW XW U U S XW XW U U U XW Ϧ XW XW U U U U, VLW , ܴ U U m XW U ι , XW striations XW G XWU XW mU XW ⴿ U XW MW XW U XW λ h U XW U XW XW XWU U YWU , U ״ XW f XW , ״ XW SU XW PJ XW + +The text content above is a converted extract from the start of the Wikipedia article मंगल ग्रह and +is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license. diff --git a/testing/web-platform/mozilla/tests/indic-detection/shreetam.html b/testing/web-platform/mozilla/tests/indic-detection/shreetam.html new file mode 100644 index 0000000000..1fcf4ae40f --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/shreetam.html @@ -0,0 +1,10 @@ + + +\ (Mars) `USkzv E J P BS. Cx `ۼx |Px PP Ex.CUSkzv Pa]ԯ P uUS AkzuuP Cshx ]ԯ PP \ CUQx. miں CUPUS UPh a `miں. Cu أ Pnk C BU\k CUPa \{өPU PmkQx.[12] Cu CuSa \ G Hأmhx. J \ P Cu أ \v Ex QsnU SPͲ, ° Ex GP, zuUSP, [P, ۉi x SvPͲ Pshx. \ _]UP, [PЮ US Eu . ` shzx P E J_ , P \[Szx zuUSP J ں zuUS \ E. + +The text content above is a converted extract from the start of the Wikipedia article செவ்வாய் (கோள்) and +is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license. diff --git a/testing/web-platform/mozilla/tests/indic-detection/tab.html b/testing/web-platform/mozilla/tests/indic-detection/tab.html new file mode 100644 index 0000000000..1dc5ee85bc --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/tab.html @@ -0,0 +1,10 @@ + + + (Mars) 袰 ݰ. ޶  .袰 袰 ܴ ޼. 좮 被袰 좮. ޼ 袬 被裬 좴.[12] . , , 袰, , ͮ . , 袰 .  , 颰 袰 袰 . + +The text content above is a converted extract from the start of the Wikipedia article செவ்வாய் (கோள்) and +is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license. diff --git a/testing/web-platform/mozilla/tests/indic-detection/tam.html b/testing/web-platform/mozilla/tests/indic-detection/tam.html new file mode 100644 index 0000000000..8b4f9d0cbf --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/tam.html @@ -0,0 +1,10 @@ + + + (Mars) K򂰴F 補 ݰ. ޶ KQL  .ނF ICP ‚ ܴ CP ޼A. ނ 𣘂O ņ. H ޼ ݂ ނ裬 G 裆A.[12]  . M꣘ FQ A N, MJ K, , , Qͮ F 裇. J C, M . K 􈶜 I L , I芪K ꃰ  K  J . + +The text content above is a converted extract from the start of the Wikipedia article செவ்வாய் (கோள்) and +is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license. diff --git a/testing/web-platform/mozilla/tests/indic-detection/tboomi.html b/testing/web-platform/mozilla/tests/indic-detection/tboomi.html new file mode 100644 index 0000000000..3976416449 --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/tboomi.html @@ -0,0 +1,10 @@ + + +%NY (Mars) wVfjiT E[ J &L Bj. C wVë SLY &L[L E[.CfjiT LotV &L[] Rfj AiRRL CWPY tV &L[L %NY Cfg\. &U]}~] Cf&Lfj &TfLP %TV+Wo w}~[]. CR &UTW LQTi Cö Bf+Ni Cf&L+[o %N\ULf L}ig\.[12] CR]&X&V CRjo %NY G\ %TV HT}P. J N &L[] CR &UTW NW E[&T gQf jL+[, ˼ E[ &T\ GU+XL, T[RfjL, T+XY]lL, T~V Y TjL+[ %LP. %NY vZtfLX, TY U\lLض fj E[+R &T\+Y&V. wV UPX L EVWU] JƶTv U+X, L%TV %Nlj T[RfjL J\] U] T[Rfj %NY&X&V E[]. + +The text content above is a converted extract from the start of the Wikipedia article செவ்வாய் (கோள்) and +is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license. diff --git a/testing/web-platform/mozilla/tests/indic-detection/tscii.html b/testing/web-platform/mozilla/tests/indic-detection/tscii.html new file mode 100644 index 0000000000..c9d47b4f9f --- /dev/null +++ b/testing/web-platform/mozilla/tests/indic-detection/tscii.html @@ -0,0 +1,10 @@ + + +š (Mars) â . âɢĢ ǡ . Ȣ ǡ Ҿ 򾾡 Ȣ ǡ š 츢. ɡ 째 츼Ǣ ¨ . 쨺 째 θ.[12] ɡħ š . Ţ ǡ ɢ Ч Ƣ, Ţ¢ âĸ, ̸, , ɢ ̾ . š¢ 측, Ţ Ǩ Ȩŧ. â Ģ , â ̸ ȡ â š¢ħ . + +The text content above is a converted extract from the start of the Wikipedia article செவ்வாய் (கோள்) and +is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported license. diff --git a/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-0.html b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-0.html new file mode 100644 index 0000000000..584620392c --- /dev/null +++ b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-0.html @@ -0,0 +1,12 @@ + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-1.html b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-1.html new file mode 100644 index 0000000000..8f1029d3ff --- /dev/null +++ b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-1.html @@ -0,0 +1,11 @@ + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-2.html b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-2.html new file mode 100644 index 0000000000..54ebde2ebe --- /dev/null +++ b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-2.html @@ -0,0 +1,10 @@ + + + + +
+ + diff --git a/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-false.html b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-false.html new file mode 100644 index 0000000000..667d1e1bf6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-false.html @@ -0,0 +1,5 @@ + + + +
false
+ diff --git a/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-true.html b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-true.html new file mode 100644 index 0000000000..df3fe20eff --- /dev/null +++ b/testing/web-platform/mozilla/tests/infrastructure/prefs/prefs-true.html @@ -0,0 +1,5 @@ + + + +
true
+ diff --git a/testing/web-platform/mozilla/tests/infrastructure/specialPowers/specialpowers.html b/testing/web-platform/mozilla/tests/infrastructure/specialPowers/specialpowers.html new file mode 100644 index 0000000000..38615028d2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/infrastructure/specialPowers/specialpowers.html @@ -0,0 +1,7 @@ +Check specialPowers is available in gecko-only tests + + + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-basic-transforms-with-default-font-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-basic-transforms-with-default-font-ref.html new file mode 100644 index 0000000000..6ebfd75c2f --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-basic-transforms-with-default-font-ref.html @@ -0,0 +1,15 @@ + + + + + Basic mathvariant transforms with the default font (reference) + + +

Test passes if you see three lines of text rendered with corresponding + italic, bold, bold-italic characters from the + Mathematical Alphanumeric Symbols block:

+

𝐼𝑡𝑎𝑙𝑖𝑐

+

𝐁𝐨𝐥𝐝

+

𝑩𝒐𝒍𝒅𝑰𝒕𝒂𝒍𝒊𝒄

+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-basic-transforms-with-default-font.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-basic-transforms-with-default-font.html new file mode 100644 index 0000000000..24c868c495 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-basic-transforms-with-default-font.html @@ -0,0 +1,20 @@ + + + + + Basic mathvariant transforms with the default font + + + + + + + +

Test passes if you see three lines of text rendered with corresponding + italic, bold, bold-italic characters from the + Mathematical Alphanumeric Symbols block:

+

Italic

+

Bold

+

BoldItalic

+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-fraktur-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-fraktur-ref.html new file mode 100644 index 0000000000..44588948e7 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-fraktur-ref.html @@ -0,0 +1,79 @@ + + + + +mathvariant bold-fraktur (reference) + + + +

Test passes if all the equalities below are true.

+ 𝕬=1D56C + 𝕭=1D56D + 𝕮=1D56E + 𝕯=1D56F + 𝕰=1D570 + 𝕱=1D571 + 𝕲=1D572 + 𝕳=1D573 + 𝕴=1D574 + 𝕵=1D575
+ 𝕶=1D576 + 𝕷=1D577 + 𝕸=1D578 + 𝕹=1D579 + 𝕺=1D57A + 𝕻=1D57B + 𝕼=1D57C + 𝕽=1D57D + 𝕾=1D57E + 𝕿=1D57F
+ 𝖀=1D580 + 𝖁=1D581 + 𝖂=1D582 + 𝖃=1D583 + 𝖄=1D584 + 𝖅=1D585 + 𝖆=1D586 + 𝖇=1D587 + 𝖈=1D588 + 𝖉=1D589
+ 𝖊=1D58A + 𝖋=1D58B + 𝖌=1D58C + 𝖍=1D58D + 𝖎=1D58E + 𝖏=1D58F + 𝖐=1D590 + 𝖑=1D591 + 𝖒=1D592 + 𝖓=1D593
+ 𝖔=1D594 + 𝖕=1D595 + 𝖖=1D596 + 𝖗=1D597 + 𝖘=1D598 + 𝖙=1D599 + 𝖚=1D59A + 𝖛=1D59B + 𝖜=1D59C + 𝖝=1D59D
+ 𝖞=1D59E + 𝖟=1D59F + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-fraktur.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-fraktur.html new file mode 100644 index 0000000000..32d037603b --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-fraktur.html @@ -0,0 +1,85 @@ + + + + +mathvariant bold-fraktur + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D56C + B=1D56D + C=1D56E + D=1D56F + E=1D570 + F=1D571 + G=1D572 + H=1D573 + I=1D574 + J=1D575
+ K=1D576 + L=1D577 + M=1D578 + N=1D579 + O=1D57A + P=1D57B + Q=1D57C + R=1D57D + S=1D57E + T=1D57F
+ U=1D580 + V=1D581 + W=1D582 + X=1D583 + Y=1D584 + Z=1D585 + a=1D586 + b=1D587 + c=1D588 + d=1D589
+ e=1D58A + f=1D58B + g=1D58C + h=1D58D + i=1D58E + j=1D58F + k=1D590 + l=1D591 + m=1D592 + n=1D593
+ o=1D594 + p=1D595 + q=1D596 + r=1D597 + s=1D598 + t=1D599 + u=1D59A + v=1D59B + w=1D59C + x=1D59D
+ y=1D59E + z=1D59F + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-italic-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-italic-ref.html new file mode 100644 index 0000000000..9a93a37e35 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-italic-ref.html @@ -0,0 +1,137 @@ + + + + +mathvariant bold-italic (reference) + + + +

Test passes if all the equalities below are true.

+ 𝑨=1D468 + 𝑩=1D469 + 𝑪=1D46A + 𝑫=1D46B + 𝑬=1D46C + 𝑭=1D46D + 𝑮=1D46E + 𝑯=1D46F + 𝑰=1D470 + 𝑱=1D471
+ 𝑲=1D472 + 𝑳=1D473 + 𝑴=1D474 + 𝑵=1D475 + 𝑶=1D476 + 𝑷=1D477 + 𝑸=1D478 + 𝑹=1D479 + 𝑺=1D47A + 𝑻=1D47B
+ 𝑼=1D47C + 𝑽=1D47D + 𝑾=1D47E + 𝑿=1D47F + 𝒀=1D480 + 𝒁=1D481 + 𝒂=1D482 + 𝒃=1D483 + 𝒄=1D484 + 𝒅=1D485
+ 𝒆=1D486 + 𝒇=1D487 + 𝒈=1D488 + 𝒉=1D489 + 𝒊=1D48A + 𝒋=1D48B + 𝒌=1D48C + 𝒍=1D48D + 𝒎=1D48E + 𝒏=1D48F
+ 𝒐=1D490 + 𝒑=1D491 + 𝒒=1D492 + 𝒓=1D493 + 𝒔=1D494 + 𝒕=1D495 + 𝒖=1D496 + 𝒗=1D497 + 𝒘=1D498 + 𝒙=1D499
+ 𝒚=1D49A + 𝒛=1D49B + 𝜜=1D71C + 𝜝=1D71D + 𝜞=1D71E + 𝜟=1D71F + 𝜠=1D720 + 𝜡=1D721 + 𝜢=1D722 + 𝜣=1D723
+ 𝜤=1D724 + 𝜥=1D725 + 𝜦=1D726 + 𝜧=1D727 + 𝜨=1D728 + 𝜩=1D729 + 𝜪=1D72A + 𝜫=1D72B + 𝜬=1D72C + 𝜭=1D72D
+ 𝜮=1D72E + 𝜯=1D72F + 𝜰=1D730 + 𝜱=1D731 + 𝜲=1D732 + 𝜳=1D733 + 𝜴=1D734 + 𝜵=1D735 + 𝜶=1D736 + 𝜷=1D737
+ 𝜸=1D738 + 𝜹=1D739 + 𝜺=1D73A + 𝜻=1D73B + 𝜼=1D73C + 𝜽=1D73D + 𝜾=1D73E + 𝜿=1D73F + 𝝀=1D740 + 𝝁=1D741
+ 𝝂=1D742 + 𝝃=1D743 + 𝝄=1D744 + 𝝅=1D745 + 𝝆=1D746 + 𝝇=1D747 + 𝝈=1D748 + 𝝉=1D749 + 𝝊=1D74A + 𝝋=1D74B
+ 𝝌=1D74C + 𝝍=1D74D + 𝝎=1D74E + 𝝏=1D74F + 𝝐=1D750 + 𝝑=1D751 + 𝝒=1D752 + 𝝓=1D753 + 𝝔=1D754 + 𝝕=1D755
+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-italic.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-italic.html new file mode 100644 index 0000000000..725559a571 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-italic.html @@ -0,0 +1,143 @@ + + + + +mathvariant bold-italic + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D468 + B=1D469 + C=1D46A + D=1D46B + E=1D46C + F=1D46D + G=1D46E + H=1D46F + I=1D470 + J=1D471
+ K=1D472 + L=1D473 + M=1D474 + N=1D475 + O=1D476 + P=1D477 + Q=1D478 + R=1D479 + S=1D47A + T=1D47B
+ U=1D47C + V=1D47D + W=1D47E + X=1D47F + Y=1D480 + Z=1D481 + a=1D482 + b=1D483 + c=1D484 + d=1D485
+ e=1D486 + f=1D487 + g=1D488 + h=1D489 + i=1D48A + j=1D48B + k=1D48C + l=1D48D + m=1D48E + n=1D48F
+ o=1D490 + p=1D491 + q=1D492 + r=1D493 + s=1D494 + t=1D495 + u=1D496 + v=1D497 + w=1D498 + x=1D499
+ y=1D49A + z=1D49B + Α=1D71C + Β=1D71D + Γ=1D71E + Δ=1D71F + Ε=1D720 + Ζ=1D721 + Η=1D722 + Θ=1D723
+ Ι=1D724 + Κ=1D725 + Λ=1D726 + Μ=1D727 + Ν=1D728 + Ξ=1D729 + Ο=1D72A + Π=1D72B + Ρ=1D72C + ϴ=1D72D
+ Σ=1D72E + Τ=1D72F + Υ=1D730 + Φ=1D731 + Χ=1D732 + Ψ=1D733 + Ω=1D734 + =1D735 + α=1D736 + β=1D737
+ γ=1D738 + δ=1D739 + ε=1D73A + ζ=1D73B + η=1D73C + θ=1D73D + ι=1D73E + κ=1D73F + λ=1D740 + μ=1D741
+ ν=1D742 + ξ=1D743 + ο=1D744 + π=1D745 + ρ=1D746 + ς=1D747 + σ=1D748 + τ=1D749 + υ=1D74A + φ=1D74B
+ χ=1D74C + ψ=1D74D + ω=1D74E + =1D74F + ϵ=1D750 + ϑ=1D751 + ϰ=1D752 + ϕ=1D753 + ϱ=1D754 + ϖ=1D755
+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-ref.html new file mode 100644 index 0000000000..ac24ab5b00 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-ref.html @@ -0,0 +1,149 @@ + + + + +mathvariant bold (reference) + + + +

Test passes if all the equalities below are true.

+ 𝐀=1D400 + 𝐁=1D401 + 𝐂=1D402 + 𝐃=1D403 + 𝐄=1D404 + 𝐅=1D405 + 𝐆=1D406 + 𝐇=1D407 + 𝐈=1D408 + 𝐉=1D409
+ 𝐊=1D40A + 𝐋=1D40B + 𝐌=1D40C + 𝐍=1D40D + 𝐎=1D40E + 𝐏=1D40F + 𝐐=1D410 + 𝐑=1D411 + 𝐒=1D412 + 𝐓=1D413
+ 𝐔=1D414 + 𝐕=1D415 + 𝐖=1D416 + 𝐗=1D417 + 𝐘=1D418 + 𝐙=1D419 + 𝐚=1D41A + 𝐛=1D41B + 𝐜=1D41C + 𝐝=1D41D
+ 𝐞=1D41E + 𝐟=1D41F + 𝐠=1D420 + 𝐡=1D421 + 𝐢=1D422 + 𝐣=1D423 + 𝐤=1D424 + 𝐥=1D425 + 𝐦=1D426 + 𝐧=1D427
+ 𝐨=1D428 + 𝐩=1D429 + 𝐪=1D42A + 𝐫=1D42B + 𝐬=1D42C + 𝐭=1D42D + 𝐮=1D42E + 𝐯=1D42F + 𝐰=1D430 + 𝐱=1D431
+ 𝐲=1D432 + 𝐳=1D433 + 𝚨=1D6A8 + 𝚩=1D6A9 + 𝚪=1D6AA + 𝚫=1D6AB + 𝚬=1D6AC + 𝚭=1D6AD + 𝚮=1D6AE + 𝚯=1D6AF
+ 𝚰=1D6B0 + 𝚱=1D6B1 + 𝚲=1D6B2 + 𝚳=1D6B3 + 𝚴=1D6B4 + 𝚵=1D6B5 + 𝚶=1D6B6 + 𝚷=1D6B7 + 𝚸=1D6B8 + 𝚹=1D6B9
+ 𝚺=1D6BA + 𝚻=1D6BB + 𝚼=1D6BC + 𝚽=1D6BD + 𝚾=1D6BE + 𝚿=1D6BF + 𝛀=1D6C0 + 𝛁=1D6C1 + 𝛂=1D6C2 + 𝛃=1D6C3
+ 𝛄=1D6C4 + 𝛅=1D6C5 + 𝛆=1D6C6 + 𝛇=1D6C7 + 𝛈=1D6C8 + 𝛉=1D6C9 + 𝛊=1D6CA + 𝛋=1D6CB + 𝛌=1D6CC + 𝛍=1D6CD
+ 𝛎=1D6CE + 𝛏=1D6CF + 𝛐=1D6D0 + 𝛑=1D6D1 + 𝛒=1D6D2 + 𝛓=1D6D3 + 𝛔=1D6D4 + 𝛕=1D6D5 + 𝛖=1D6D6 + 𝛗=1D6D7
+ 𝛘=1D6D8 + 𝛙=1D6D9 + 𝛚=1D6DA + 𝛛=1D6DB + 𝛜=1D6DC + 𝛝=1D6DD + 𝛞=1D6DE + 𝛟=1D6DF + 𝛠=1D6E0 + 𝛡=1D6E1
+ 𝟊=1D7CA + 𝟋=1D7CB + 𝟎=1D7CE + 𝟏=1D7CF + 𝟐=1D7D0 + 𝟑=1D7D1 + 𝟒=1D7D2 + 𝟓=1D7D3 + 𝟔=1D7D4 + 𝟕=1D7D5
+ 𝟖=1D7D6 + 𝟗=1D7D7 + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-sans-serif-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-sans-serif-ref.html new file mode 100644 index 0000000000..78c0cc5ea6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-sans-serif-ref.html @@ -0,0 +1,147 @@ + + + + +mathvariant bold-sans-serif (reference) + + + +

Test passes if all the equalities below are true.

+ 𝗔=1D5D4 + 𝗕=1D5D5 + 𝗖=1D5D6 + 𝗗=1D5D7 + 𝗘=1D5D8 + 𝗙=1D5D9 + 𝗚=1D5DA + 𝗛=1D5DB + 𝗜=1D5DC + 𝗝=1D5DD
+ 𝗞=1D5DE + 𝗟=1D5DF + 𝗠=1D5E0 + 𝗡=1D5E1 + 𝗢=1D5E2 + 𝗣=1D5E3 + 𝗤=1D5E4 + 𝗥=1D5E5 + 𝗦=1D5E6 + 𝗧=1D5E7
+ 𝗨=1D5E8 + 𝗩=1D5E9 + 𝗪=1D5EA + 𝗫=1D5EB + 𝗬=1D5EC + 𝗭=1D5ED + 𝗮=1D5EE + 𝗯=1D5EF + 𝗰=1D5F0 + 𝗱=1D5F1
+ 𝗲=1D5F2 + 𝗳=1D5F3 + 𝗴=1D5F4 + 𝗵=1D5F5 + 𝗶=1D5F6 + 𝗷=1D5F7 + 𝗸=1D5F8 + 𝗹=1D5F9 + 𝗺=1D5FA + 𝗻=1D5FB
+ 𝗼=1D5FC + 𝗽=1D5FD + 𝗾=1D5FE + 𝗿=1D5FF + 𝘀=1D600 + 𝘁=1D601 + 𝘂=1D602 + 𝘃=1D603 + 𝘄=1D604 + 𝘅=1D605
+ 𝘆=1D606 + 𝘇=1D607 + 𝝖=1D756 + 𝝗=1D757 + 𝝘=1D758 + 𝝙=1D759 + 𝝚=1D75A + 𝝛=1D75B + 𝝜=1D75C + 𝝝=1D75D
+ 𝝞=1D75E + 𝝟=1D75F + 𝝠=1D760 + 𝝡=1D761 + 𝝢=1D762 + 𝝣=1D763 + 𝝤=1D764 + 𝝥=1D765 + 𝝦=1D766 + 𝝧=1D767
+ 𝝨=1D768 + 𝝩=1D769 + 𝝪=1D76A + 𝝫=1D76B + 𝝬=1D76C + 𝝭=1D76D + 𝝮=1D76E + 𝝯=1D76F + 𝝰=1D770 + 𝝱=1D771
+ 𝝲=1D772 + 𝝳=1D773 + 𝝴=1D774 + 𝝵=1D775 + 𝝶=1D776 + 𝝷=1D777 + 𝝸=1D778 + 𝝹=1D779 + 𝝺=1D77A + 𝝻=1D77B
+ 𝝼=1D77C + 𝝽=1D77D + 𝝾=1D77E + 𝝿=1D77F + 𝞀=1D780 + 𝞁=1D781 + 𝞂=1D782 + 𝞃=1D783 + 𝞄=1D784 + 𝞅=1D785
+ 𝞆=1D786 + 𝞇=1D787 + 𝞈=1D788 + 𝞉=1D789 + 𝞊=1D78A + 𝞋=1D78B + 𝞌=1D78C + 𝞍=1D78D + 𝞎=1D78E + 𝞏=1D78F
+ 𝟬=1D7EC + 𝟭=1D7ED + 𝟮=1D7EE + 𝟯=1D7EF + 𝟰=1D7F0 + 𝟱=1D7F1 + 𝟲=1D7F2 + 𝟳=1D7F3 + 𝟴=1D7F4 + 𝟵=1D7F5
+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-sans-serif.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-sans-serif.html new file mode 100644 index 0000000000..0e0662dff6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-sans-serif.html @@ -0,0 +1,153 @@ + + + + +mathvariant bold-sans-serif + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D5D4 + B=1D5D5 + C=1D5D6 + D=1D5D7 + E=1D5D8 + F=1D5D9 + G=1D5DA + H=1D5DB + I=1D5DC + J=1D5DD
+ K=1D5DE + L=1D5DF + M=1D5E0 + N=1D5E1 + O=1D5E2 + P=1D5E3 + Q=1D5E4 + R=1D5E5 + S=1D5E6 + T=1D5E7
+ U=1D5E8 + V=1D5E9 + W=1D5EA + X=1D5EB + Y=1D5EC + Z=1D5ED + a=1D5EE + b=1D5EF + c=1D5F0 + d=1D5F1
+ e=1D5F2 + f=1D5F3 + g=1D5F4 + h=1D5F5 + i=1D5F6 + j=1D5F7 + k=1D5F8 + l=1D5F9 + m=1D5FA + n=1D5FB
+ o=1D5FC + p=1D5FD + q=1D5FE + r=1D5FF + s=1D600 + t=1D601 + u=1D602 + v=1D603 + w=1D604 + x=1D605
+ y=1D606 + z=1D607 + Α=1D756 + Β=1D757 + Γ=1D758 + Δ=1D759 + Ε=1D75A + Ζ=1D75B + Η=1D75C + Θ=1D75D
+ Ι=1D75E + Κ=1D75F + Λ=1D760 + Μ=1D761 + Ν=1D762 + Ξ=1D763 + Ο=1D764 + Π=1D765 + Ρ=1D766 + ϴ=1D767
+ Σ=1D768 + Τ=1D769 + Υ=1D76A + Φ=1D76B + Χ=1D76C + Ψ=1D76D + Ω=1D76E + =1D76F + α=1D770 + β=1D771
+ γ=1D772 + δ=1D773 + ε=1D774 + ζ=1D775 + η=1D776 + θ=1D777 + ι=1D778 + κ=1D779 + λ=1D77A + μ=1D77B
+ ν=1D77C + ξ=1D77D + ο=1D77E + π=1D77F + ρ=1D780 + ς=1D781 + σ=1D782 + τ=1D783 + υ=1D784 + φ=1D785
+ χ=1D786 + ψ=1D787 + ω=1D788 + =1D789 + ϵ=1D78A + ϑ=1D78B + ϰ=1D78C + ϕ=1D78D + ϱ=1D78E + ϖ=1D78F
+ 0=1D7EC + 1=1D7ED + 2=1D7EE + 3=1D7EF + 4=1D7F0 + 5=1D7F1 + 6=1D7F2 + 7=1D7F3 + 8=1D7F4 + 9=1D7F5
+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-script-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-script-ref.html new file mode 100644 index 0000000000..ef11f7fb8f --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-script-ref.html @@ -0,0 +1,79 @@ + + + + +mathvariant bold-script (reference) + + + +

Test passes if all the equalities below are true.

+ 𝓐=1D4D0 + 𝓑=1D4D1 + 𝓒=1D4D2 + 𝓓=1D4D3 + 𝓔=1D4D4 + 𝓕=1D4D5 + 𝓖=1D4D6 + 𝓗=1D4D7 + 𝓘=1D4D8 + 𝓙=1D4D9
+ 𝓚=1D4DA + 𝓛=1D4DB + 𝓜=1D4DC + 𝓝=1D4DD + 𝓞=1D4DE + 𝓟=1D4DF + 𝓠=1D4E0 + 𝓡=1D4E1 + 𝓢=1D4E2 + 𝓣=1D4E3
+ 𝓤=1D4E4 + 𝓥=1D4E5 + 𝓦=1D4E6 + 𝓧=1D4E7 + 𝓨=1D4E8 + 𝓩=1D4E9 + 𝓪=1D4EA + 𝓫=1D4EB + 𝓬=1D4EC + 𝓭=1D4ED
+ 𝓮=1D4EE + 𝓯=1D4EF + 𝓰=1D4F0 + 𝓱=1D4F1 + 𝓲=1D4F2 + 𝓳=1D4F3 + 𝓴=1D4F4 + 𝓵=1D4F5 + 𝓶=1D4F6 + 𝓷=1D4F7
+ 𝓸=1D4F8 + 𝓹=1D4F9 + 𝓺=1D4FA + 𝓻=1D4FB + 𝓼=1D4FC + 𝓽=1D4FD + 𝓾=1D4FE + 𝓿=1D4FF + 𝔀=1D500 + 𝔁=1D501
+ 𝔂=1D502 + 𝔃=1D503 + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-script.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-script.html new file mode 100644 index 0000000000..0e775949f9 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold-script.html @@ -0,0 +1,85 @@ + + + + +mathvariant bold-script + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D4D0 + B=1D4D1 + C=1D4D2 + D=1D4D3 + E=1D4D4 + F=1D4D5 + G=1D4D6 + H=1D4D7 + I=1D4D8 + J=1D4D9
+ K=1D4DA + L=1D4DB + M=1D4DC + N=1D4DD + O=1D4DE + P=1D4DF + Q=1D4E0 + R=1D4E1 + S=1D4E2 + T=1D4E3
+ U=1D4E4 + V=1D4E5 + W=1D4E6 + X=1D4E7 + Y=1D4E8 + Z=1D4E9 + a=1D4EA + b=1D4EB + c=1D4EC + d=1D4ED
+ e=1D4EE + f=1D4EF + g=1D4F0 + h=1D4F1 + i=1D4F2 + j=1D4F3 + k=1D4F4 + l=1D4F5 + m=1D4F6 + n=1D4F7
+ o=1D4F8 + p=1D4F9 + q=1D4FA + r=1D4FB + s=1D4FC + t=1D4FD + u=1D4FE + v=1D4FF + w=1D500 + x=1D501
+ y=1D502 + z=1D503 + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold.html new file mode 100644 index 0000000000..db5f4755be --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-bold.html @@ -0,0 +1,155 @@ + + + + +mathvariant bold + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D400 + B=1D401 + C=1D402 + D=1D403 + E=1D404 + F=1D405 + G=1D406 + H=1D407 + I=1D408 + J=1D409
+ K=1D40A + L=1D40B + M=1D40C + N=1D40D + O=1D40E + P=1D40F + Q=1D410 + R=1D411 + S=1D412 + T=1D413
+ U=1D414 + V=1D415 + W=1D416 + X=1D417 + Y=1D418 + Z=1D419 + a=1D41A + b=1D41B + c=1D41C + d=1D41D
+ e=1D41E + f=1D41F + g=1D420 + h=1D421 + i=1D422 + j=1D423 + k=1D424 + l=1D425 + m=1D426 + n=1D427
+ o=1D428 + p=1D429 + q=1D42A + r=1D42B + s=1D42C + t=1D42D + u=1D42E + v=1D42F + w=1D430 + x=1D431
+ y=1D432 + z=1D433 + Α=1D6A8 + Β=1D6A9 + Γ=1D6AA + Δ=1D6AB + Ε=1D6AC + Ζ=1D6AD + Η=1D6AE + Θ=1D6AF
+ Ι=1D6B0 + Κ=1D6B1 + Λ=1D6B2 + Μ=1D6B3 + Ν=1D6B4 + Ξ=1D6B5 + Ο=1D6B6 + Π=1D6B7 + Ρ=1D6B8 + ϴ=1D6B9
+ Σ=1D6BA + Τ=1D6BB + Υ=1D6BC + Φ=1D6BD + Χ=1D6BE + Ψ=1D6BF + Ω=1D6C0 + =1D6C1 + α=1D6C2 + β=1D6C3
+ γ=1D6C4 + δ=1D6C5 + ε=1D6C6 + ζ=1D6C7 + η=1D6C8 + θ=1D6C9 + ι=1D6CA + κ=1D6CB + λ=1D6CC + μ=1D6CD
+ ν=1D6CE + ξ=1D6CF + ο=1D6D0 + π=1D6D1 + ρ=1D6D2 + ς=1D6D3 + σ=1D6D4 + τ=1D6D5 + υ=1D6D6 + φ=1D6D7
+ χ=1D6D8 + ψ=1D6D9 + ω=1D6DA + =1D6DB + ϵ=1D6DC + ϑ=1D6DD + ϰ=1D6DE + ϕ=1D6DF + ϱ=1D6E0 + ϖ=1D6E1
+ Ϝ=1D7CA + ϝ=1D7CB + 0=1D7CE + 1=1D7CF + 2=1D7D0 + 3=1D7D1 + 4=1D7D2 + 5=1D7D3 + 6=1D7D4 + 7=1D7D5
+ 8=1D7D6 + 9=1D7D7 + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-case-sensitivity-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-case-sensitivity-ref.html new file mode 100644 index 0000000000..28d9acc1f4 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-case-sensitivity-ref.html @@ -0,0 +1,163 @@ + + + + +mathvariant case sensitivity + + +

+ + 𝕬 + +

+

+ + 𝐀 + +

+

+ + 𝑨 + +

+

+ + 𝗔 + +

+

+ + 𝓐 + +

+

+ + 𝔸 + +

+

+ + 𝔄 + +

+

+ + 𞸰 + +

+

+ + 𝐴 + +

+

+ + 𞺐 + +

+

+ + 𝙰 + +

+

+ + 𝘼 + +

+

+ + 𝖠 + +

+

+ + 𝘈 + +

+

+ + 𝒜 + +

+

+ + 𞹰 + +

+

+ + 𞹒 + +

+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-case-sensitivity.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-case-sensitivity.html new file mode 100644 index 0000000000..21c8300a7a --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-case-sensitivity.html @@ -0,0 +1,168 @@ + + + + +mathvariant case sensitivity + + + + + + + +

+ + A + +

+

+ + A + +

+

+ + A + +

+

+ + A + +

+

+ + A + +

+

+ + A + +

+

+ + A + +

+

+ + ف + +

+

+ + A + +

+

+ + ف + +

+

+ + A + +

+

+ + A + +

+

+ + A + +

+

+ + A + +

+

+ + A + +

+

+ + ف + +

+

+ + ق + +

+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-font-style-font-weight-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-font-style-font-weight-ref.html new file mode 100644 index 0000000000..817723a62d --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-font-style-font-weight-ref.html @@ -0,0 +1,25 @@ + + + + + mathvariant="double-struck" and font-style/font-weight (reference) + + + +

Test passes if you see three lines with text 𞺡 respectively rendered with italic, bold and bold-italic style:

+

𞺡

+

𞺡

+

𞺡

+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-font-style-font-weight.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-font-style-font-weight.html new file mode 100644 index 0000000000..2e283e1d70 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-font-style-font-weight.html @@ -0,0 +1,30 @@ + + + + + mathvariant="double-struck" and font-style/font-weight + + + + + + + + +

Test passes if you see three lines with text 𞺡 respectively rendered with italic, bold and bold-italic style:

+

ب

+

ب

+

ب

+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-ref.html new file mode 100644 index 0000000000..ebdb7a15b0 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck-ref.html @@ -0,0 +1,114 @@ + + + + +mathvariant double-struck (reference) + + + +

Test passes if all the equalities below are true.

+ 𝔸=1D538 + 𝔹=1D539 + =02102 + 𝔻=1D53B + 𝔼=1D53C + 𝔽=1D53D + 𝔾=1D53E + =0210D + 𝕀=1D540 + 𝕁=1D541
+ 𝕂=1D542 + 𝕃=1D543 + 𝕄=1D544 + =02115 + 𝕆=1D546 + =02119 + =0211A + =0211D + 𝕊=1D54A + 𝕋=1D54B
+ 𝕌=1D54C + 𝕍=1D54D + 𝕎=1D54E + 𝕏=1D54F + 𝕐=1D550 + =02124 + 𝕒=1D552 + 𝕓=1D553 + 𝕔=1D554 + 𝕕=1D555
+ 𝕖=1D556 + 𝕗=1D557 + 𝕘=1D558 + 𝕙=1D559 + 𝕚=1D55A + 𝕛=1D55B + 𝕜=1D55C + 𝕝=1D55D + 𝕞=1D55E + 𝕟=1D55F
+ 𝕠=1D560 + 𝕡=1D561 + 𝕢=1D562 + 𝕣=1D563 + 𝕤=1D564 + 𝕥=1D565 + 𝕦=1D566 + 𝕧=1D567 + 𝕨=1D568 + 𝕩=1D569
+ 𝕪=1D56A + 𝕫=1D56B + 𝟘=1D7D8 + 𝟙=1D7D9 + 𝟚=1D7DA + 𝟛=1D7DB + 𝟜=1D7DC + 𝟝=1D7DD + 𝟞=1D7DE + 𝟟=1D7DF
+ 𝟠=1D7E0 + 𝟡=1D7E1 + 𞺡=1EEA1 + 𞺢=1EEA2 + 𞺣=1EEA3 + 𞺥=1EEA5 + 𞺦=1EEA6 + 𞺧=1EEA7 + 𞺨=1EEA8 + 𞺩=1EEA9
+ 𞺫=1EEAB + 𞺬=1EEAC + 𞺭=1EEAD + 𞺮=1EEAE + 𞺯=1EEAF + 𞺰=1EEB0 + 𞺱=1EEB1 + 𞺲=1EEB2 + 𞺳=1EEB3 + 𞺴=1EEB4
+ 𞺵=1EEB5 + 𞺶=1EEB6 + 𞺷=1EEB7 + 𞺸=1EEB8 + 𞺹=1EEB9 + 𞺺=1EEBA + 𞺻=1EEBB + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck.html new file mode 100644 index 0000000000..335234ac38 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-double-struck.html @@ -0,0 +1,120 @@ + + + + +mathvariant double-struck + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D538 + B=1D539 + C=02102 + D=1D53B + E=1D53C + F=1D53D + G=1D53E + H=0210D + I=1D540 + J=1D541
+ K=1D542 + L=1D543 + M=1D544 + N=02115 + O=1D546 + P=02119 + Q=0211A + R=0211D + S=1D54A + T=1D54B
+ U=1D54C + V=1D54D + W=1D54E + X=1D54F + Y=1D550 + Z=02124 + a=1D552 + b=1D553 + c=1D554 + d=1D555
+ e=1D556 + f=1D557 + g=1D558 + h=1D559 + i=1D55A + j=1D55B + k=1D55C + l=1D55D + m=1D55E + n=1D55F
+ o=1D560 + p=1D561 + q=1D562 + r=1D563 + s=1D564 + t=1D565 + u=1D566 + v=1D567 + w=1D568 + x=1D569
+ y=1D56A + z=1D56B + 0=1D7D8 + 1=1D7D9 + 2=1D7DA + 3=1D7DB + 4=1D7DC + 5=1D7DD + 6=1D7DE + 7=1D7DF
+ 8=1D7E0 + 9=1D7E1 + ب=1EEA1 + ج=1EEA2 + د=1EEA3 + و=1EEA5 + ز=1EEA6 + ح=1EEA7 + ط=1EEA8 + ي=1EEA9
+ ل=1EEAB + م=1EEAC + ن=1EEAD + س=1EEAE + ع=1EEAF + ف=1EEB0 + ص=1EEB1 + ق=1EEB2 + ر=1EEB3 + ش=1EEB4
+ ت=1EEB5 + ث=1EEB6 + خ=1EEB7 + ذ=1EEB8 + ض=1EEB9 + ظ=1EEBA + غ=1EEBB + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-fraktur-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-fraktur-ref.html new file mode 100644 index 0000000000..3d1dd50a7d --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-fraktur-ref.html @@ -0,0 +1,79 @@ + + + + +mathvariant fraktur (reference) + + + +

Test passes if all the equalities below are true.

+ 𝔄=1D504 + 𝔅=1D505 + =0212D + 𝔇=1D507 + 𝔈=1D508 + 𝔉=1D509 + 𝔊=1D50A + =0210C + =02111 + 𝔍=1D50D
+ 𝔎=1D50E + 𝔏=1D50F + 𝔐=1D510 + 𝔑=1D511 + 𝔒=1D512 + 𝔓=1D513 + 𝔔=1D514 + =0211C + 𝔖=1D516 + 𝔗=1D517
+ 𝔘=1D518 + 𝔙=1D519 + 𝔚=1D51A + 𝔛=1D51B + 𝔜=1D51C + =02128 + 𝔞=1D51E + 𝔟=1D51F + 𝔠=1D520 + 𝔡=1D521
+ 𝔢=1D522 + 𝔣=1D523 + 𝔤=1D524 + 𝔥=1D525 + 𝔦=1D526 + 𝔧=1D527 + 𝔨=1D528 + 𝔩=1D529 + 𝔪=1D52A + 𝔫=1D52B
+ 𝔬=1D52C + 𝔭=1D52D + 𝔮=1D52E + 𝔯=1D52F + 𝔰=1D530 + 𝔱=1D531 + 𝔲=1D532 + 𝔳=1D533 + 𝔴=1D534 + 𝔵=1D535
+ 𝔶=1D536 + 𝔷=1D537 + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-fraktur.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-fraktur.html new file mode 100644 index 0000000000..9c95cd06e7 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-fraktur.html @@ -0,0 +1,85 @@ + + + + +mathvariant fraktur + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D504 + B=1D505 + C=0212D + D=1D507 + E=1D508 + F=1D509 + G=1D50A + H=0210C + I=02111 + J=1D50D
+ K=1D50E + L=1D50F + M=1D510 + N=1D511 + O=1D512 + P=1D513 + Q=1D514 + R=0211C + S=1D516 + T=1D517
+ U=1D518 + V=1D519 + W=1D51A + X=1D51B + Y=1D51C + Z=02128 + a=1D51E + b=1D51F + c=1D520 + d=1D521
+ e=1D522 + f=1D523 + g=1D524 + h=1D525 + i=1D526 + j=1D527 + k=1D528 + l=1D529 + m=1D52A + n=1D52B
+ o=1D52C + p=1D52D + q=1D52E + r=1D52F + s=1D530 + t=1D531 + u=1D532 + v=1D533 + w=1D534 + x=1D535
+ y=1D536 + z=1D537 + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-initial-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-initial-ref.html new file mode 100644 index 0000000000..5d5b72a1c5 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-initial-ref.html @@ -0,0 +1,47 @@ + + + + +mathvariant initial (reference) + + + +

Test passes if all the equalities below are true.

+ 𞸡=1EE21 + 𞸢=1EE22 + 𞸤=1EE24 + 𞸧=1EE27 + 𞸩=1EE29 + 𞸪=1EE2A + 𞸫=1EE2B + 𞸬=1EE2C + 𞸭=1EE2D + 𞸮=1EE2E
+ 𞸯=1EE2F + 𞸰=1EE30 + 𞸱=1EE31 + 𞸲=1EE32 + 𞸴=1EE34 + 𞸵=1EE35 + 𞸶=1EE36 + 𞸷=1EE37 + 𞸹=1EE39 + 𞸻=1EE3B
+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-initial.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-initial.html new file mode 100644 index 0000000000..3b0263a197 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-initial.html @@ -0,0 +1,53 @@ + + + + +mathvariant initial + + + + + + + + + +

Test passes if all the equalities below are true.

+ ب=1EE21 + ج=1EE22 + ه=1EE24 + ح=1EE27 + ي=1EE29 + ك=1EE2A + ل=1EE2B + م=1EE2C + ن=1EE2D + س=1EE2E
+ ع=1EE2F + ف=1EE30 + ص=1EE31 + ق=1EE32 + ش=1EE34 + ت=1EE35 + ث=1EE36 + خ=1EE37 + ض=1EE39 + غ=1EE3B
+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-italic-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-italic-ref.html new file mode 100644 index 0000000000..e2078c2948 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-italic-ref.html @@ -0,0 +1,139 @@ + + + + +mathvariant italic (reference) + + + +

Test passes if all the equalities below are true.

+ 𝐴=1D434 + 𝐵=1D435 + 𝐶=1D436 + 𝐷=1D437 + 𝐸=1D438 + 𝐹=1D439 + 𝐺=1D43A + 𝐻=1D43B + 𝐼=1D43C + 𝐽=1D43D
+ 𝐾=1D43E + 𝐿=1D43F + 𝑀=1D440 + 𝑁=1D441 + 𝑂=1D442 + 𝑃=1D443 + 𝑄=1D444 + 𝑅=1D445 + 𝑆=1D446 + 𝑇=1D447
+ 𝑈=1D448 + 𝑉=1D449 + 𝑊=1D44A + 𝑋=1D44B + 𝑌=1D44C + 𝑍=1D44D + 𝑎=1D44E + 𝑏=1D44F + 𝑐=1D450 + 𝑑=1D451
+ 𝑒=1D452 + 𝑓=1D453 + 𝑔=1D454 + =0210E + 𝑖=1D456 + 𝑗=1D457 + 𝑘=1D458 + 𝑙=1D459 + 𝑚=1D45A + 𝑛=1D45B
+ 𝑜=1D45C + 𝑝=1D45D + 𝑞=1D45E + 𝑟=1D45F + 𝑠=1D460 + 𝑡=1D461 + 𝑢=1D462 + 𝑣=1D463 + 𝑤=1D464 + 𝑥=1D465
+ 𝑦=1D466 + 𝑧=1D467 + 𝚤=1D6A4 + 𝚥=1D6A5 + 𝛢=1D6E2 + 𝛣=1D6E3 + 𝛤=1D6E4 + 𝛥=1D6E5 + 𝛦=1D6E6 + 𝛧=1D6E7
+ 𝛨=1D6E8 + 𝛩=1D6E9 + 𝛪=1D6EA + 𝛫=1D6EB + 𝛬=1D6EC + 𝛭=1D6ED + 𝛮=1D6EE + 𝛯=1D6EF + 𝛰=1D6F0 + 𝛱=1D6F1
+ 𝛲=1D6F2 + 𝛳=1D6F3 + 𝛴=1D6F4 + 𝛵=1D6F5 + 𝛶=1D6F6 + 𝛷=1D6F7 + 𝛸=1D6F8 + 𝛹=1D6F9 + 𝛺=1D6FA + 𝛻=1D6FB
+ 𝛼=1D6FC + 𝛽=1D6FD + 𝛾=1D6FE + 𝛿=1D6FF + 𝜀=1D700 + 𝜁=1D701 + 𝜂=1D702 + 𝜃=1D703 + 𝜄=1D704 + 𝜅=1D705
+ 𝜆=1D706 + 𝜇=1D707 + 𝜈=1D708 + 𝜉=1D709 + 𝜊=1D70A + 𝜋=1D70B + 𝜌=1D70C + 𝜍=1D70D + 𝜎=1D70E + 𝜏=1D70F
+ 𝜐=1D710 + 𝜑=1D711 + 𝜒=1D712 + 𝜓=1D713 + 𝜔=1D714 + 𝜕=1D715 + 𝜖=1D716 + 𝜗=1D717 + 𝜘=1D718 + 𝜙=1D719
+ 𝜚=1D71A + 𝜛=1D71B + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-italic.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-italic.html new file mode 100644 index 0000000000..1e6aa6512d --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-italic.html @@ -0,0 +1,145 @@ + + + + +mathvariant italic + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D434 + B=1D435 + C=1D436 + D=1D437 + E=1D438 + F=1D439 + G=1D43A + H=1D43B + I=1D43C + J=1D43D
+ K=1D43E + L=1D43F + M=1D440 + N=1D441 + O=1D442 + P=1D443 + Q=1D444 + R=1D445 + S=1D446 + T=1D447
+ U=1D448 + V=1D449 + W=1D44A + X=1D44B + Y=1D44C + Z=1D44D + a=1D44E + b=1D44F + c=1D450 + d=1D451
+ e=1D452 + f=1D453 + g=1D454 + h=0210E + i=1D456 + j=1D457 + k=1D458 + l=1D459 + m=1D45A + n=1D45B
+ o=1D45C + p=1D45D + q=1D45E + r=1D45F + s=1D460 + t=1D461 + u=1D462 + v=1D463 + w=1D464 + x=1D465
+ y=1D466 + z=1D467 + ı=1D6A4 + ȷ=1D6A5 + Α=1D6E2 + Β=1D6E3 + Γ=1D6E4 + Δ=1D6E5 + Ε=1D6E6 + Ζ=1D6E7
+ Η=1D6E8 + Θ=1D6E9 + Ι=1D6EA + Κ=1D6EB + Λ=1D6EC + Μ=1D6ED + Ν=1D6EE + Ξ=1D6EF + Ο=1D6F0 + Π=1D6F1
+ Ρ=1D6F2 + ϴ=1D6F3 + Σ=1D6F4 + Τ=1D6F5 + Υ=1D6F6 + Φ=1D6F7 + Χ=1D6F8 + Ψ=1D6F9 + Ω=1D6FA + =1D6FB
+ α=1D6FC + β=1D6FD + γ=1D6FE + δ=1D6FF + ε=1D700 + ζ=1D701 + η=1D702 + θ=1D703 + ι=1D704 + κ=1D705
+ λ=1D706 + μ=1D707 + ν=1D708 + ξ=1D709 + ο=1D70A + π=1D70B + ρ=1D70C + ς=1D70D + σ=1D70E + τ=1D70F
+ υ=1D710 + φ=1D711 + χ=1D712 + ψ=1D713 + ω=1D714 + =1D715 + ϵ=1D716 + ϑ=1D717 + ϰ=1D718 + ϕ=1D719
+ ϱ=1D71A + ϖ=1D71B + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-looped-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-looped-ref.html new file mode 100644 index 0000000000..f00e5d87bb --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-looped-ref.html @@ -0,0 +1,54 @@ + + + + +mathvariant looped (reference) + + + +

Test passes if all the equalities below are true.

+ 𞺀=1EE80 + 𞺁=1EE81 + 𞺂=1EE82 + 𞺃=1EE83 + 𞺄=1EE84 + 𞺅=1EE85 + 𞺆=1EE86 + 𞺇=1EE87 + 𞺈=1EE88 + 𞺉=1EE89
+ 𞺋=1EE8B + 𞺌=1EE8C + 𞺍=1EE8D + 𞺎=1EE8E + 𞺏=1EE8F + 𞺐=1EE90 + 𞺑=1EE91 + 𞺒=1EE92 + 𞺓=1EE93 + 𞺔=1EE94
+ 𞺕=1EE95 + 𞺖=1EE96 + 𞺗=1EE97 + 𞺘=1EE98 + 𞺙=1EE99 + 𞺚=1EE9A + 𞺛=1EE9B + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-looped.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-looped.html new file mode 100644 index 0000000000..b208849368 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-looped.html @@ -0,0 +1,60 @@ + + + + +mathvariant looped + + + + + + + + + +

Test passes if all the equalities below are true.

+ ا=1EE80 + ب=1EE81 + ج=1EE82 + د=1EE83 + ه=1EE84 + و=1EE85 + ز=1EE86 + ح=1EE87 + ط=1EE88 + ي=1EE89
+ ل=1EE8B + م=1EE8C + ن=1EE8D + س=1EE8E + ع=1EE8F + ف=1EE90 + ص=1EE91 + ق=1EE92 + ر=1EE93 + ش=1EE94
+ ت=1EE95 + ث=1EE96 + خ=1EE97 + ذ=1EE98 + ض=1EE99 + ظ=1EE9A + غ=1EE9B + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-monospace-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-monospace-ref.html new file mode 100644 index 0000000000..1d4a0c0a52 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-monospace-ref.html @@ -0,0 +1,89 @@ + + + + +mathvariant monospace (reference) + + + +

Test passes if all the equalities below are true.

+ 𝙰=1D670 + 𝙱=1D671 + 𝙲=1D672 + 𝙳=1D673 + 𝙴=1D674 + 𝙵=1D675 + 𝙶=1D676 + 𝙷=1D677 + 𝙸=1D678 + 𝙹=1D679
+ 𝙺=1D67A + 𝙻=1D67B + 𝙼=1D67C + 𝙽=1D67D + 𝙾=1D67E + 𝙿=1D67F + 𝚀=1D680 + 𝚁=1D681 + 𝚂=1D682 + 𝚃=1D683
+ 𝚄=1D684 + 𝚅=1D685 + 𝚆=1D686 + 𝚇=1D687 + 𝚈=1D688 + 𝚉=1D689 + 𝚊=1D68A + 𝚋=1D68B + 𝚌=1D68C + 𝚍=1D68D
+ 𝚎=1D68E + 𝚏=1D68F + 𝚐=1D690 + 𝚑=1D691 + 𝚒=1D692 + 𝚓=1D693 + 𝚔=1D694 + 𝚕=1D695 + 𝚖=1D696 + 𝚗=1D697
+ 𝚘=1D698 + 𝚙=1D699 + 𝚚=1D69A + 𝚛=1D69B + 𝚜=1D69C + 𝚝=1D69D + 𝚞=1D69E + 𝚟=1D69F + 𝚠=1D6A0 + 𝚡=1D6A1
+ 𝚢=1D6A2 + 𝚣=1D6A3 + 𝟶=1D7F6 + 𝟷=1D7F7 + 𝟸=1D7F8 + 𝟹=1D7F9 + 𝟺=1D7FA + 𝟻=1D7FB + 𝟼=1D7FC + 𝟽=1D7FD
+ 𝟾=1D7FE + 𝟿=1D7FF + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-monospace.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-monospace.html new file mode 100644 index 0000000000..ad5541fe0e --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-monospace.html @@ -0,0 +1,95 @@ + + + + +mathvariant monospace + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D670 + B=1D671 + C=1D672 + D=1D673 + E=1D674 + F=1D675 + G=1D676 + H=1D677 + I=1D678 + J=1D679
+ K=1D67A + L=1D67B + M=1D67C + N=1D67D + O=1D67E + P=1D67F + Q=1D680 + R=1D681 + S=1D682 + T=1D683
+ U=1D684 + V=1D685 + W=1D686 + X=1D687 + Y=1D688 + Z=1D689 + a=1D68A + b=1D68B + c=1D68C + d=1D68D
+ e=1D68E + f=1D68F + g=1D690 + h=1D691 + i=1D692 + j=1D693 + k=1D694 + l=1D695 + m=1D696 + n=1D697
+ o=1D698 + p=1D699 + q=1D69A + r=1D69B + s=1D69C + t=1D69D + u=1D69E + v=1D69F + w=1D6A0 + x=1D6A1
+ y=1D6A2 + z=1D6A3 + 0=1D7F6 + 1=1D7F7 + 2=1D7F8 + 3=1D7F9 + 4=1D7FA + 5=1D7FB + 6=1D7FC + 7=1D7FD
+ 8=1D7FE + 9=1D7FF + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-bold-italic-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-bold-italic-ref.html new file mode 100644 index 0000000000..f918db9b48 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-bold-italic-ref.html @@ -0,0 +1,137 @@ + + + + +mathvariant sans-serif-bold-italic (reference) + + + +

Test passes if all the equalities below are true.

+ 𝘼=1D63C + 𝘽=1D63D + 𝘾=1D63E + 𝘿=1D63F + 𝙀=1D640 + 𝙁=1D641 + 𝙂=1D642 + 𝙃=1D643 + 𝙄=1D644 + 𝙅=1D645
+ 𝙆=1D646 + 𝙇=1D647 + 𝙈=1D648 + 𝙉=1D649 + 𝙊=1D64A + 𝙋=1D64B + 𝙌=1D64C + 𝙍=1D64D + 𝙎=1D64E + 𝙏=1D64F
+ 𝙐=1D650 + 𝙑=1D651 + 𝙒=1D652 + 𝙓=1D653 + 𝙔=1D654 + 𝙕=1D655 + 𝙖=1D656 + 𝙗=1D657 + 𝙘=1D658 + 𝙙=1D659
+ 𝙚=1D65A + 𝙛=1D65B + 𝙜=1D65C + 𝙝=1D65D + 𝙞=1D65E + 𝙟=1D65F + 𝙠=1D660 + 𝙡=1D661 + 𝙢=1D662 + 𝙣=1D663
+ 𝙤=1D664 + 𝙥=1D665 + 𝙦=1D666 + 𝙧=1D667 + 𝙨=1D668 + 𝙩=1D669 + 𝙪=1D66A + 𝙫=1D66B + 𝙬=1D66C + 𝙭=1D66D
+ 𝙮=1D66E + 𝙯=1D66F + 𝞐=1D790 + 𝞑=1D791 + 𝞒=1D792 + 𝞓=1D793 + 𝞔=1D794 + 𝞕=1D795 + 𝞖=1D796 + 𝞗=1D797
+ 𝞘=1D798 + 𝞙=1D799 + 𝞚=1D79A + 𝞛=1D79B + 𝞜=1D79C + 𝞝=1D79D + 𝞞=1D79E + 𝞟=1D79F + 𝞠=1D7A0 + 𝞡=1D7A1
+ 𝞢=1D7A2 + 𝞣=1D7A3 + 𝞤=1D7A4 + 𝞥=1D7A5 + 𝞦=1D7A6 + 𝞧=1D7A7 + 𝞨=1D7A8 + 𝞩=1D7A9 + 𝞪=1D7AA + 𝞫=1D7AB
+ 𝞬=1D7AC + 𝞭=1D7AD + 𝞮=1D7AE + 𝞯=1D7AF + 𝞰=1D7B0 + 𝞱=1D7B1 + 𝞲=1D7B2 + 𝞳=1D7B3 + 𝞴=1D7B4 + 𝞵=1D7B5
+ 𝞶=1D7B6 + 𝞷=1D7B7 + 𝞸=1D7B8 + 𝞹=1D7B9 + 𝞺=1D7BA + 𝞻=1D7BB + 𝞼=1D7BC + 𝞽=1D7BD + 𝞾=1D7BE + 𝞿=1D7BF
+ 𝟀=1D7C0 + 𝟁=1D7C1 + 𝟂=1D7C2 + 𝟃=1D7C3 + 𝟄=1D7C4 + 𝟅=1D7C5 + 𝟆=1D7C6 + 𝟇=1D7C7 + 𝟈=1D7C8 + 𝟉=1D7C9
+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-bold-italic.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-bold-italic.html new file mode 100644 index 0000000000..d51afe4345 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-bold-italic.html @@ -0,0 +1,143 @@ + + + + +mathvariant sans-serif-bold-italic + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D63C + B=1D63D + C=1D63E + D=1D63F + E=1D640 + F=1D641 + G=1D642 + H=1D643 + I=1D644 + J=1D645
+ K=1D646 + L=1D647 + M=1D648 + N=1D649 + O=1D64A + P=1D64B + Q=1D64C + R=1D64D + S=1D64E + T=1D64F
+ U=1D650 + V=1D651 + W=1D652 + X=1D653 + Y=1D654 + Z=1D655 + a=1D656 + b=1D657 + c=1D658 + d=1D659
+ e=1D65A + f=1D65B + g=1D65C + h=1D65D + i=1D65E + j=1D65F + k=1D660 + l=1D661 + m=1D662 + n=1D663
+ o=1D664 + p=1D665 + q=1D666 + r=1D667 + s=1D668 + t=1D669 + u=1D66A + v=1D66B + w=1D66C + x=1D66D
+ y=1D66E + z=1D66F + Α=1D790 + Β=1D791 + Γ=1D792 + Δ=1D793 + Ε=1D794 + Ζ=1D795 + Η=1D796 + Θ=1D797
+ Ι=1D798 + Κ=1D799 + Λ=1D79A + Μ=1D79B + Ν=1D79C + Ξ=1D79D + Ο=1D79E + Π=1D79F + Ρ=1D7A0 + ϴ=1D7A1
+ Σ=1D7A2 + Τ=1D7A3 + Υ=1D7A4 + Φ=1D7A5 + Χ=1D7A6 + Ψ=1D7A7 + Ω=1D7A8 + =1D7A9 + α=1D7AA + β=1D7AB
+ γ=1D7AC + δ=1D7AD + ε=1D7AE + ζ=1D7AF + η=1D7B0 + θ=1D7B1 + ι=1D7B2 + κ=1D7B3 + λ=1D7B4 + μ=1D7B5
+ ν=1D7B6 + ξ=1D7B7 + ο=1D7B8 + π=1D7B9 + ρ=1D7BA + ς=1D7BB + σ=1D7BC + τ=1D7BD + υ=1D7BE + φ=1D7BF
+ χ=1D7C0 + ψ=1D7C1 + ω=1D7C2 + =1D7C3 + ϵ=1D7C4 + ϑ=1D7C5 + ϰ=1D7C6 + ϕ=1D7C7 + ϱ=1D7C8 + ϖ=1D7C9
+ + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-italic-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-italic-ref.html new file mode 100644 index 0000000000..d7e23248c6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-italic-ref.html @@ -0,0 +1,79 @@ + + + + +mathvariant sans-serif-italic (reference) + + + +

Test passes if all the equalities below are true.

+ 𝘈=1D608 + 𝘉=1D609 + 𝘊=1D60A + 𝘋=1D60B + 𝘌=1D60C + 𝘍=1D60D + 𝘎=1D60E + 𝘏=1D60F + 𝘐=1D610 + 𝘑=1D611
+ 𝘒=1D612 + 𝘓=1D613 + 𝘔=1D614 + 𝘕=1D615 + 𝘖=1D616 + 𝘗=1D617 + 𝘘=1D618 + 𝘙=1D619 + 𝘚=1D61A + 𝘛=1D61B
+ 𝘜=1D61C + 𝘝=1D61D + 𝘞=1D61E + 𝘟=1D61F + 𝘠=1D620 + 𝘡=1D621 + 𝘢=1D622 + 𝘣=1D623 + 𝘤=1D624 + 𝘥=1D625
+ 𝘦=1D626 + 𝘧=1D627 + 𝘨=1D628 + 𝘩=1D629 + 𝘪=1D62A + 𝘫=1D62B + 𝘬=1D62C + 𝘭=1D62D + 𝘮=1D62E + 𝘯=1D62F
+ 𝘰=1D630 + 𝘱=1D631 + 𝘲=1D632 + 𝘳=1D633 + 𝘴=1D634 + 𝘵=1D635 + 𝘶=1D636 + 𝘷=1D637 + 𝘸=1D638 + 𝘹=1D639
+ 𝘺=1D63A + 𝘻=1D63B + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-italic.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-italic.html new file mode 100644 index 0000000000..e847ca9bb8 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-italic.html @@ -0,0 +1,85 @@ + + + + +mathvariant sans-serif-italic + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D608 + B=1D609 + C=1D60A + D=1D60B + E=1D60C + F=1D60D + G=1D60E + H=1D60F + I=1D610 + J=1D611
+ K=1D612 + L=1D613 + M=1D614 + N=1D615 + O=1D616 + P=1D617 + Q=1D618 + R=1D619 + S=1D61A + T=1D61B
+ U=1D61C + V=1D61D + W=1D61E + X=1D61F + Y=1D620 + Z=1D621 + a=1D622 + b=1D623 + c=1D624 + d=1D625
+ e=1D626 + f=1D627 + g=1D628 + h=1D629 + i=1D62A + j=1D62B + k=1D62C + l=1D62D + m=1D62E + n=1D62F
+ o=1D630 + p=1D631 + q=1D632 + r=1D633 + s=1D634 + t=1D635 + u=1D636 + v=1D637 + w=1D638 + x=1D639
+ y=1D63A + z=1D63B + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-ref.html new file mode 100644 index 0000000000..ced5272ecb --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif-ref.html @@ -0,0 +1,89 @@ + + + + +mathvariant sans-serif (reference) + + + +

Test passes if all the equalities below are true.

+ 𝖠=1D5A0 + 𝖡=1D5A1 + 𝖢=1D5A2 + 𝖣=1D5A3 + 𝖤=1D5A4 + 𝖥=1D5A5 + 𝖦=1D5A6 + 𝖧=1D5A7 + 𝖨=1D5A8 + 𝖩=1D5A9
+ 𝖪=1D5AA + 𝖫=1D5AB + 𝖬=1D5AC + 𝖭=1D5AD + 𝖮=1D5AE + 𝖯=1D5AF + 𝖰=1D5B0 + 𝖱=1D5B1 + 𝖲=1D5B2 + 𝖳=1D5B3
+ 𝖴=1D5B4 + 𝖵=1D5B5 + 𝖶=1D5B6 + 𝖷=1D5B7 + 𝖸=1D5B8 + 𝖹=1D5B9 + 𝖺=1D5BA + 𝖻=1D5BB + 𝖼=1D5BC + 𝖽=1D5BD
+ 𝖾=1D5BE + 𝖿=1D5BF + 𝗀=1D5C0 + 𝗁=1D5C1 + 𝗂=1D5C2 + 𝗃=1D5C3 + 𝗄=1D5C4 + 𝗅=1D5C5 + 𝗆=1D5C6 + 𝗇=1D5C7
+ 𝗈=1D5C8 + 𝗉=1D5C9 + 𝗊=1D5CA + 𝗋=1D5CB + 𝗌=1D5CC + 𝗍=1D5CD + 𝗎=1D5CE + 𝗏=1D5CF + 𝗐=1D5D0 + 𝗑=1D5D1
+ 𝗒=1D5D2 + 𝗓=1D5D3 + 𝟢=1D7E2 + 𝟣=1D7E3 + 𝟤=1D7E4 + 𝟥=1D7E5 + 𝟦=1D7E6 + 𝟧=1D7E7 + 𝟨=1D7E8 + 𝟩=1D7E9
+ 𝟪=1D7EA + 𝟫=1D7EB + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif.html new file mode 100644 index 0000000000..43a1fa821f --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-sans-serif.html @@ -0,0 +1,95 @@ + + + + +mathvariant sans-serif + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D5A0 + B=1D5A1 + C=1D5A2 + D=1D5A3 + E=1D5A4 + F=1D5A5 + G=1D5A6 + H=1D5A7 + I=1D5A8 + J=1D5A9
+ K=1D5AA + L=1D5AB + M=1D5AC + N=1D5AD + O=1D5AE + P=1D5AF + Q=1D5B0 + R=1D5B1 + S=1D5B2 + T=1D5B3
+ U=1D5B4 + V=1D5B5 + W=1D5B6 + X=1D5B7 + Y=1D5B8 + Z=1D5B9 + a=1D5BA + b=1D5BB + c=1D5BC + d=1D5BD
+ e=1D5BE + f=1D5BF + g=1D5C0 + h=1D5C1 + i=1D5C2 + j=1D5C3 + k=1D5C4 + l=1D5C5 + m=1D5C6 + n=1D5C7
+ o=1D5C8 + p=1D5C9 + q=1D5CA + r=1D5CB + s=1D5CC + t=1D5CD + u=1D5CE + v=1D5CF + w=1D5D0 + x=1D5D1
+ y=1D5D2 + z=1D5D3 + 0=1D7E2 + 1=1D7E3 + 2=1D7E4 + 3=1D7E5 + 4=1D7E6 + 5=1D7E7 + 6=1D7E8 + 7=1D7E9
+ 8=1D7EA + 9=1D7EB + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-script-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-script-ref.html new file mode 100644 index 0000000000..60ced85bc3 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-script-ref.html @@ -0,0 +1,79 @@ + + + + +mathvariant script (reference) + + + +

Test passes if all the equalities below are true.

+ 𝒜=1D49C + =0212C + 𝒞=1D49E + 𝒟=1D49F + =02130 + =02131 + 𝒢=1D4A2 + =0210B + =02110 + 𝒥=1D4A5
+ 𝒦=1D4A6 + =02112 + =02133 + 𝒩=1D4A9 + 𝒪=1D4AA + 𝒫=1D4AB + 𝒬=1D4AC + =0211B + 𝒮=1D4AE + 𝒯=1D4AF
+ 𝒰=1D4B0 + 𝒱=1D4B1 + 𝒲=1D4B2 + 𝒳=1D4B3 + 𝒴=1D4B4 + 𝒵=1D4B5 + 𝒶=1D4B6 + 𝒷=1D4B7 + 𝒸=1D4B8 + 𝒹=1D4B9
+ =0212F + 𝒻=1D4BB + =0210A + 𝒽=1D4BD + 𝒾=1D4BE + 𝒿=1D4BF + 𝓀=1D4C0 + 𝓁=1D4C1 + 𝓂=1D4C2 + 𝓃=1D4C3
+ =02134 + 𝓅=1D4C5 + 𝓆=1D4C6 + 𝓇=1D4C7 + 𝓈=1D4C8 + 𝓉=1D4C9 + 𝓊=1D4CA + 𝓋=1D4CB + 𝓌=1D4CC + 𝓍=1D4CD
+ 𝓎=1D4CE + 𝓏=1D4CF + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-script.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-script.html new file mode 100644 index 0000000000..afbdfd9f94 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-script.html @@ -0,0 +1,85 @@ + + + + +mathvariant script + + + + + + + + + +

Test passes if all the equalities below are true.

+ A=1D49C + B=0212C + C=1D49E + D=1D49F + E=02130 + F=02131 + G=1D4A2 + H=0210B + I=02110 + J=1D4A5
+ K=1D4A6 + L=02112 + M=02133 + N=1D4A9 + O=1D4AA + P=1D4AB + Q=1D4AC + R=0211B + S=1D4AE + T=1D4AF
+ U=1D4B0 + V=1D4B1 + W=1D4B2 + X=1D4B3 + Y=1D4B4 + Z=1D4B5 + a=1D4B6 + b=1D4B7 + c=1D4B8 + d=1D4B9
+ e=0212F + f=1D4BB + g=0210A + h=1D4BD + i=1D4BE + j=1D4BF + k=1D4C0 + l=1D4C1 + m=1D4C2 + n=1D4C3
+ o=02134 + p=1D4C5 + q=1D4C6 + r=1D4C7 + s=1D4C8 + t=1D4C9 + u=1D4CA + v=1D4CB + w=1D4CC + x=1D4CD
+ y=1D4CE + z=1D4CF + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-stretched-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-stretched-ref.html new file mode 100644 index 0000000000..454f2004ac --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-stretched-ref.html @@ -0,0 +1,50 @@ + + + + +mathvariant stretched (reference) + + + +

Test passes if all the equalities below are true.

+ 𞹡=1EE61 + 𞹢=1EE62 + 𞹤=1EE64 + 𞹧=1EE67 + 𞹨=1EE68 + 𞹩=1EE69 + 𞹪=1EE6A + 𞹬=1EE6C + 𞹭=1EE6D + 𞹮=1EE6E
+ 𞹯=1EE6F + 𞹰=1EE70 + 𞹱=1EE71 + 𞹲=1EE72 + 𞹴=1EE74 + 𞹵=1EE75 + 𞹶=1EE76 + 𞹷=1EE77 + 𞹹=1EE79 + 𞹺=1EE7A
+ 𞹻=1EE7B + 𞹼=1EE7C + 𞹾=1EE7E + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-stretched.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-stretched.html new file mode 100644 index 0000000000..99b06fb41b --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-stretched.html @@ -0,0 +1,56 @@ + + + + +mathvariant stretched + + + + + + + + + +

Test passes if all the equalities below are true.

+ ب=1EE61 + ج=1EE62 + ه=1EE64 + ح=1EE67 + ط=1EE68 + ي=1EE69 + ك=1EE6A + م=1EE6C + ن=1EE6D + س=1EE6E
+ ع=1EE6F + ف=1EE70 + ص=1EE71 + ق=1EE72 + ش=1EE74 + ت=1EE75 + ث=1EE76 + خ=1EE77 + ض=1EE79 + ظ=1EE7A
+ غ=1EE7B + ٮ=1EE7C + ڡ=1EE7E + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-tailed-ref.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-tailed-ref.html new file mode 100644 index 0000000000..5e1461cd33 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-tailed-ref.html @@ -0,0 +1,42 @@ + + + + +mathvariant tailed (reference) + + + +

Test passes if all the equalities below are true.

+ 𞹂=1EE42 + 𞹇=1EE47 + 𞹉=1EE49 + 𞹋=1EE4B + 𞹍=1EE4D + 𞹎=1EE4E + 𞹏=1EE4F + 𞹑=1EE51 + 𞹒=1EE52 + 𞹔=1EE54
+ 𞹗=1EE57 + 𞹙=1EE59 + 𞹛=1EE5B + 𞹝=1EE5D + 𞹟=1EE5F + + diff --git a/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-tailed.html b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-tailed.html new file mode 100644 index 0000000000..43fbca5e80 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mathml/mathvariant/mathvariant-tailed.html @@ -0,0 +1,48 @@ + + + + +mathvariant tailed + + + + + + + + + +

Test passes if all the equalities below are true.

+ ج=1EE42 + ح=1EE47 + ي=1EE49 + ل=1EE4B + ن=1EE4D + س=1EE4E + ع=1EE4F + ص=1EE51 + ق=1EE52 + ش=1EE54
+ خ=1EE57 + ض=1EE59 + غ=1EE5B + ں=1EE5D + ٯ=1EE5F + + diff --git a/testing/web-platform/mozilla/tests/media/2x2-green.ogv b/testing/web-platform/mozilla/tests/media/2x2-green.ogv new file mode 100644 index 0000000000..29903c0a81 Binary files /dev/null and b/testing/web-platform/mozilla/tests/media/2x2-green.ogv differ diff --git a/testing/web-platform/mozilla/tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html b/testing/web-platform/mozilla/tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html new file mode 100644 index 0000000000..e7dcd4e531 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html @@ -0,0 +1,110 @@ + + + +enumerateDevices: test that enumerateDevices is present (legacy Firefox) + + + +

Description

+

This is a modified copy of +testing/web-platform/tests/mediacapture-streams/MediaDevices-enumerateDevices.https.html +testing legacy Firefox version of the navigator.mediaDevices.enumerateDevices() method.

+
+ + + + + + + + diff --git a/testing/web-platform/mozilla/tests/mediacapture-streams/enumerateDevices-in-background.https.html b/testing/web-platform/mozilla/tests/mediacapture-streams/enumerateDevices-in-background.https.html new file mode 100644 index 0000000000..55d1d24dce --- /dev/null +++ b/testing/web-platform/mozilla/tests/mediacapture-streams/enumerateDevices-in-background.https.html @@ -0,0 +1,67 @@ + +enumerateDevices() in background tab with focus in chrome + + + + + + diff --git a/testing/web-platform/mozilla/tests/mediacapture-streams/enumerateDevices-without-focus.https.html b/testing/web-platform/mozilla/tests/mediacapture-streams/enumerateDevices-without-focus.https.html new file mode 100644 index 0000000000..6516a514c5 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mediacapture-streams/enumerateDevices-without-focus.https.html @@ -0,0 +1,58 @@ + +enumerateDevices() without focus + + + + + + diff --git a/testing/web-platform/mozilla/tests/mediacapture-streams/permission-helper.js b/testing/web-platform/mozilla/tests/mediacapture-streams/permission-helper.js new file mode 100644 index 0000000000..0a237f7d43 --- /dev/null +++ b/testing/web-platform/mozilla/tests/mediacapture-streams/permission-helper.js @@ -0,0 +1,24 @@ +// Set permissions for camera and microphone using Web Driver +// Status can be one of "granted" or "denied" +// Scope take values from permission names +async function setMediaPermission(status="granted", scope=["camera", "microphone"]) { + try { + for (let s of scope) { + await test_driver.set_permission({ name: s }, status); + } + } catch (e) { + const noSetPermissionSupport = typeof e === "string" && e.match(/set_permission not implemented/); + if (!(noSetPermissionSupport || + (e instanceof Error && e.message.match("unimplemented")) )) { + throw e; + } + // Web Driver not implemented action + // FF: https://bugzilla.mozilla.org/show_bug.cgi?id=1524074 + + // with current WPT runners, will default to granted state for FF and Safari + // throw if status!="granted" to invalidate test results + if (status === "denied") { + assert_implements_optional(!noSetPermissionSupport, "Unable to set permission to denied for this test"); + } + } +} diff --git a/testing/web-platform/mozilla/tests/placeholder b/testing/web-platform/mozilla/tests/placeholder new file mode 100644 index 0000000000..92dd3d5151 --- /dev/null +++ b/testing/web-platform/mozilla/tests/placeholder @@ -0,0 +1,6 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +This is a placeholder file to ensure that this directory remains +in source control and test packages even when it is otherwise empty. \ No newline at end of file diff --git a/testing/web-platform/mozilla/tests/screen-capture/getdisplaymedia-user-activation-consumed.https.html b/testing/web-platform/mozilla/tests/screen-capture/getdisplaymedia-user-activation-consumed.https.html new file mode 100644 index 0000000000..d0623fbaa5 --- /dev/null +++ b/testing/web-platform/mozilla/tests/screen-capture/getdisplaymedia-user-activation-consumed.https.html @@ -0,0 +1,30 @@ + + +Test getDisplayMedia() after user activation is consumed + + + + + + + diff --git a/testing/web-platform/mozilla/tests/selection/Selection-addRange-same-instance.html b/testing/web-platform/mozilla/tests/selection/Selection-addRange-same-instance.html new file mode 100644 index 0000000000..c374b8ecdf --- /dev/null +++ b/testing/web-platform/mozilla/tests/selection/Selection-addRange-same-instance.html @@ -0,0 +1,56 @@ + + + + + + + + +
+ diff --git a/testing/web-platform/mozilla/tests/service-workers/bug1675097.https.html b/testing/web-platform/mozilla/tests/service-workers/bug1675097.https.html new file mode 100644 index 0000000000..e093f616c1 --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/bug1675097.https.html @@ -0,0 +1,34 @@ + +Controlled iframe with initial about:blank becomes sandboxed + + + + + + diff --git a/testing/web-platform/mozilla/tests/service-workers/no_intercept_for_crossorigin_media.https.html b/testing/web-platform/mozilla/tests/service-workers/no_intercept_for_crossorigin_media.https.html new file mode 100644 index 0000000000..245522f5fc --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/no_intercept_for_crossorigin_media.https.html @@ -0,0 +1,42 @@ + + +Don't intercept cross-origin media requests + + + + + + diff --git a/testing/web-platform/mozilla/tests/service-workers/resources/blank.html b/testing/web-platform/mozilla/tests/service-workers/resources/blank.html new file mode 100644 index 0000000000..a3c3a4689a --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/resources/blank.html @@ -0,0 +1,2 @@ + +Empty doc diff --git a/testing/web-platform/mozilla/tests/service-workers/resources/bug1675097-iframe.html b/testing/web-platform/mozilla/tests/service-workers/resources/bug1675097-iframe.html new file mode 100644 index 0000000000..5ad7b95594 --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/resources/bug1675097-iframe.html @@ -0,0 +1,15 @@ + + + + + diff --git a/testing/web-platform/mozilla/tests/service-workers/resources/bug1675097-sw.js b/testing/web-platform/mozilla/tests/service-workers/resources/bug1675097-sw.js new file mode 100644 index 0000000000..e2894e1032 --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/resources/bug1675097-sw.js @@ -0,0 +1,26 @@ +// We use promises because the message and fetch events do not have a guaranteed +// order, since they come from different task sources. +var resolvePortPromise; +var portPromise = new Promise(resolve => resolvePortPromise = resolve); +var resolveResolveResponsePromise; +var resolveResponsePromise = new Promise(resolve => resolveResolveResponsePromise = resolve); + +self.addEventListener('fetch', event => { + if (event.request.url.indexOf('inner') !== -1) { + event.respondWith(new Promise(resolve => { + resolveResolveResponsePromise(resolve); + })); + portPromise.then(port => port.postMessage('intercepted')); + } +}); + +self.addEventListener('message', event => { + if (event.data.type === 'register') { + resolvePortPromise(event.data.port); + } + else if (event.data.type === 'ack') { + self.clients.matchAll() + .then(() => resolveResponsePromise) + .then(resolveResponse => resolveResponse(new Response('inner iframe'))); + } +}); diff --git a/testing/web-platform/mozilla/tests/service-workers/resources/crossorigin_media_iframe.html b/testing/web-platform/mozilla/tests/service-workers/resources/crossorigin_media_iframe.html new file mode 100644 index 0000000000..54cdcaa8dd --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/resources/crossorigin_media_iframe.html @@ -0,0 +1,24 @@ + + + + diff --git a/testing/web-platform/mozilla/tests/service-workers/resources/crossorigin_media_iframe_nonrange.html b/testing/web-platform/mozilla/tests/service-workers/resources/crossorigin_media_iframe_nonrange.html new file mode 100644 index 0000000000..8e3c20fdeb --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/resources/crossorigin_media_iframe_nonrange.html @@ -0,0 +1,22 @@ + + + + diff --git a/testing/web-platform/mozilla/tests/service-workers/resources/empty.js b/testing/web-platform/mozilla/tests/service-workers/resources/empty.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/service-workers/resources/fetch_video.py b/testing/web-platform/mozilla/tests/service-workers/resources/fetch_video.py new file mode 100644 index 0000000000..541f00c019 --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/resources/fetch_video.py @@ -0,0 +1,14 @@ +import os + + +def main(request, response): + filename = os.path.join(request.doc_root, u"media", u"2x2-green.ogv") + body = open(filename, "rb").read() + length = len(body) + headers = [ + (b"Content-Type", b"video/ogg"), + (b"Accept-Ranges", b"bytes"), + (b"Content-Length", b"%d" % length), + (b"Content-Range", b"bytes 0-%d/%d" % (length - 1, length)), + ] + return headers, body diff --git a/testing/web-platform/mozilla/tests/service-workers/resources/green.png b/testing/web-platform/mozilla/tests/service-workers/resources/green.png new file mode 100644 index 0000000000..28a1faab37 Binary files /dev/null and b/testing/web-platform/mozilla/tests/service-workers/resources/green.png differ diff --git a/testing/web-platform/mozilla/tests/service-workers/resources/intercept_media_sw.js b/testing/web-platform/mozilla/tests/service-workers/resources/intercept_media_sw.js new file mode 100644 index 0000000000..6c373aa0de --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/resources/intercept_media_sw.js @@ -0,0 +1,14 @@ +'use strict'; + +self.addEventListener('fetch', event => { + if (event.request.url.indexOf('fetch_video.py') !== -1) { + // A no-cors media range request /should not/ be intercepted. + // Respond with some text to cause an error. + event.respondWith(new Response('intercepted')); + } + else if (event.request.url.indexOf('blank.html') !== -1) { + // A no-cors media non-range request /should/ be intercepted. + // Respond with an image to avoid an error. + event.respondWith(fetch('green.png')); + } +}); diff --git a/testing/web-platform/mozilla/tests/service-workers/update_completes_in_disconnected_global.https.html b/testing/web-platform/mozilla/tests/service-workers/update_completes_in_disconnected_global.https.html new file mode 100644 index 0000000000..371fa81161 --- /dev/null +++ b/testing/web-platform/mozilla/tests/service-workers/update_completes_in_disconnected_global.https.html @@ -0,0 +1,63 @@ + +Service Worker: Disconnected Global Update() + + + + diff --git a/testing/web-platform/mozilla/tests/svg/smil-sampling.html b/testing/web-platform/mozilla/tests/svg/smil-sampling.html new file mode 100644 index 0000000000..8eecb63595 --- /dev/null +++ b/testing/web-platform/mozilla/tests/svg/smil-sampling.html @@ -0,0 +1,44 @@ + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/web-animations/web-animations-print-ref.html b/testing/web-platform/mozilla/tests/web-animations/web-animations-print-ref.html new file mode 100644 index 0000000000..539d072d16 --- /dev/null +++ b/testing/web-platform/mozilla/tests/web-animations/web-animations-print-ref.html @@ -0,0 +1,4 @@ + + +Web animation +

blue with animation support; olive without

diff --git a/testing/web-platform/mozilla/tests/web-animations/web-animations-print.html b/testing/web-platform/mozilla/tests/web-animations/web-animations-print.html new file mode 100644 index 0000000000..2b1ed19eb6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/web-animations/web-animations-print.html @@ -0,0 +1,20 @@ + + + + +Web animation +

blue with animation support; olive without

+ diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/__init__.py b/testing/web-platform/mozilla/tests/webdriver/bidi/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/__init__.py b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/__init__.py b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/__init__.py new file mode 100644 index 0000000000..910b202075 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/__init__.py @@ -0,0 +1,20 @@ +import contextlib + + +def set_context(session, context): + session.send_session_command("POST", "moz/context", {"context": context}) + + +@contextlib.contextmanager +def using_context(session, context): + orig_context = session.send_session_command("GET", "moz/context") + needs_change = context != orig_context + + if needs_change: + set_context(session, context) + + try: + yield + finally: + if needs_change: + set_context(session, orig_context) diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/reference_context.py b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/reference_context.py new file mode 100644 index 0000000000..1a5906339b --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/reference_context.py @@ -0,0 +1,72 @@ +import pytest + +from . import using_context + +pytestmark = pytest.mark.asyncio + + +# Helper to assert the order of top level browsing contexts. +# The window used for the assertion is inferred from the first context id of +# expected_context_ids. +def assert_tab_order(session, expected_context_ids): + with using_context(session, "chrome"): + context_ids = session.execute_script( + """ + const contextId = arguments[0]; + const { TabManager } = + ChromeUtils.importESModule("chrome://remote/content/shared/TabManager.sys.mjs"); + const browsingContext = TabManager.getBrowsingContextById(contextId); + const chromeWindow = browsingContext.embedderElement.ownerGlobal; + const tabBrowser = TabManager.getTabBrowser(chromeWindow); + return tabBrowser.browsers.map(browser => TabManager.getIdForBrowser(browser)); + """, + args=(expected_context_ids[0],), + ) + + assert context_ids == expected_context_ids + + +async def test_reference_context(bidi_session, current_session): + # Create a new window with a tab tab1 + result = await bidi_session.browsing_context.create(type_hint="window") + tab1_context_id = result["context"] + + # Create a second window with a tab tab2 + result = await bidi_session.browsing_context.create(type_hint="window") + tab2_context_id = result["context"] + + # Create a new tab tab3 next to tab1 + result = await bidi_session.browsing_context.create( + type_hint="tab", reference_context=tab1_context_id + ) + tab3_context_id = result["context"] + + # Create a new tab tab4 next to tab2 + result = await bidi_session.browsing_context.create( + type_hint="tab", reference_context=tab2_context_id + ) + tab4_context_id = result["context"] + + # Create a new tab tab5 also next to tab2 (should consequently be between + # tab2 and tab4) + result = await bidi_session.browsing_context.create( + type_hint="tab", reference_context=tab2_context_id + ) + tab5_context_id = result["context"] + + # Create a new window, but pass a reference_context from an existing window. + # The reference context is expected to be ignored here. + result = await bidi_session.browsing_context.create( + type_hint="window", reference_context=tab2_context_id + ) + tab6_context_id = result["context"] + + # We expect 3 windows in total, with a specific tab order: + # - the first window should contain tab1, tab3 + assert_tab_order(current_session, [tab1_context_id, tab3_context_id]) + # - the second window should contain tab2, tab5, tab4 + assert_tab_order( + current_session, [tab2_context_id, tab5_context_id, tab4_context_id] + ) + # - the third window should contain tab6 + assert_tab_order(current_session, [tab6_context_id]) diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/type_hint.py b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/type_hint.py new file mode 100644 index 0000000000..337a03b3dd --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/create/type_hint.py @@ -0,0 +1,31 @@ +import pytest +from tests.support.asserts import assert_success + +from . import using_context + +pytestmark = pytest.mark.asyncio + + +def count_window_handles(session): + with using_context(session, "chrome"): + response = session.transport.send( + "GET", "session/{session_id}/window/handles".format(**vars(session)) + ) + chrome_handles = assert_success(response) + return len(chrome_handles) + + +@pytest.mark.parametrize("type_hint", ["tab", "window"]) +async def test_type_hint(bidi_session, current_session, type_hint): + assert len(await bidi_session.browsing_context.get_tree()) == 1 + assert count_window_handles(current_session) == 1 + + await bidi_session.browsing_context.create(type_hint=type_hint) + + if type_hint == "window": + expected_window_count = 2 + else: + expected_window_count = 1 + + assert len(await bidi_session.browsing_context.get_tree()) == 2 + assert count_window_handles(current_session) == expected_window_count diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/navigate/__init__.py b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/navigate/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/navigate/error.py b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/navigate/error.py new file mode 100644 index 0000000000..374359d1ae --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/browsing_context/navigate/error.py @@ -0,0 +1,48 @@ +import os +from copy import deepcopy + +import pytest +from tests.bidi.browsing_context.navigate import navigate_and_assert + +pytestmark = pytest.mark.asyncio + + +async def test_insecure_certificate(configuration, url, custom_profile, geckodriver): + try: + # Create a new profile and remove the certificate storage so that + # loading a HTTPS page will cause an insecure certificate error + os.remove(os.path.join(custom_profile.profile, "cert9.db")) + except Exception: + pass + + config = deepcopy(configuration) + config["capabilities"]["moz:firefoxOptions"]["args"] = [ + "--profile", + custom_profile.profile, + ] + # Capability matching not implemented yet for WebDriver BiDi (bug 1713784) + config["capabilities"]["acceptInsecureCerts"] = False + config["capabilities"]["webSocketUrl"] = True + + driver = geckodriver(config=config) + driver.new_session() + + bidi_session = driver.session.bidi_session + await bidi_session.start() + + contexts = await bidi_session.browsing_context.get_tree(max_depth=0) + await navigate_and_assert( + bidi_session, + contexts[0], + url("/common/blank.html", protocol="https"), + expected_error=True, + ) + + +async def test_invalid_content_encoding(bidi_session, new_tab, inline): + await navigate_and_assert( + bidi_session, + new_tab, + f"{inline('
foo')}&pipe=header(Content-Encoding,gzip)", + expected_error=True, + ) diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/errors/__init__.py b/testing/web-platform/mozilla/tests/webdriver/bidi/errors/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/errors/errors.py b/testing/web-platform/mozilla/tests/webdriver/bidi/errors/errors.py new file mode 100644 index 0000000000..69b1f2fb7a --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/errors/errors.py @@ -0,0 +1,8 @@ +import pytest +from webdriver.bidi.error import UnknownCommandException + + +@pytest.mark.asyncio +async def test_internal_method(bidi_session, send_blocking_command): + with pytest.raises(UnknownCommandException): + await send_blocking_command("log._applySessionData", {}) diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/interface/__init__.py b/testing/web-platform/mozilla/tests/webdriver/bidi/interface/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/interface/interface.py b/testing/web-platform/mozilla/tests/webdriver/bidi/interface/interface.py new file mode 100644 index 0000000000..561b80d120 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/interface/interface.py @@ -0,0 +1,26 @@ +import pytest +from webdriver.bidi.client import BidiSession +from webdriver.bidi.modules.script import ContextTarget + +pytestmark = pytest.mark.asyncio + + +async def test_navigator_webdriver_enabled(inline, browser): + # Request a new browser with only WebDriver BiDi and not Marionette/CDP enabled. + current_browser = browser(use_bidi=True, extra_prefs={"remote.active-protocols": 1}) + server_host = current_browser.remote_agent_host + server_port = current_browser.remote_agent_port + + async with BidiSession.bidi_only( + f"ws://{server_host}:{server_port}" + ) as bidi_session: + contexts = await bidi_session.browsing_context.get_tree(max_depth=0) + assert len(contexts) > 0 + + result = await bidi_session.script.evaluate( + expression="navigator.webdriver", + target=ContextTarget(contexts[0]["context"]), + await_promise=False, + ) + + assert result == {"type": "boolean", "value": True} diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/script/exception_details.py b/testing/web-platform/mozilla/tests/webdriver/bidi/script/exception_details.py new file mode 100644 index 0000000000..43bccdb845 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/script/exception_details.py @@ -0,0 +1,69 @@ +import pytest +from webdriver.bidi.modules.script import ContextTarget, ScriptEvaluateResultException + + +@pytest.mark.asyncio +@pytest.mark.parametrize("await_promise", [True, False]) +@pytest.mark.parametrize( + "expression", + [ + "null", + "{ toString: 'not a function' }", + "{ toString: () => {{ throw 'toString not allowed'; }} }", + "{ toString: () => true }", + ], +) +@pytest.mark.asyncio +async def test_call_function_without_to_string_interface( + bidi_session, top_context, await_promise, expression +): + function_declaration = "()=>{throw { toString: 'not a function' } }" + if await_promise: + function_declaration = "async" + function_declaration + + with pytest.raises(ScriptEvaluateResultException) as exception: + await bidi_session.script.call_function( + function_declaration=function_declaration, + await_promise=await_promise, + target=ContextTarget(top_context["context"]), + ) + + assert "exceptionDetails" in exception.value.result + exceptionDetails = exception.value.result["exceptionDetails"] + + assert "text" in exceptionDetails + assert isinstance(exceptionDetails["text"], str) + + +@pytest.mark.asyncio +@pytest.mark.parametrize("await_promise", [True, False]) +@pytest.mark.parametrize( + "expression", + [ + "null", + "{ toString: 'not a function' }", + "{ toString: () => {{ throw 'toString not allowed'; }} }", + "{ toString: () => true }", + ], +) +@pytest.mark.asyncio +async def test_evaluate_without_to_string_interface( + bidi_session, top_context, await_promise, expression +): + if await_promise: + expression = f"Promise.reject({expression})" + else: + expression = f"throw {expression}" + + with pytest.raises(ScriptEvaluateResultException) as exception: + await bidi_session.script.evaluate( + expression=expression, + await_promise=await_promise, + target=ContextTarget(top_context["context"]), + ) + + assert "exceptionDetails" in exception.value.result + exceptionDetails = exception.value.result["exceptionDetails"] + + assert "text" in exceptionDetails + assert isinstance(exceptionDetails["text"], str) diff --git a/testing/web-platform/mozilla/tests/webdriver/bidi/websocket_upgrade.py b/testing/web-platform/mozilla/tests/webdriver/bidi/websocket_upgrade.py new file mode 100644 index 0000000000..e5ebfa1eb0 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/bidi/websocket_upgrade.py @@ -0,0 +1,156 @@ +import pytest +from support.network import get_host, websocket_request + + +@pytest.mark.parametrize( + "hostname, port_type, status", + [ + # Valid hosts + ("localhost", "server_port", 101), + ("localhost", "default_port", 101), + ("127.0.0.1", "server_port", 101), + ("127.0.0.1", "default_port", 101), + ("[::1]", "server_port", 101), + ("[::1]", "default_port", 101), + ("192.168.8.1", "server_port", 101), + ("192.168.8.1", "default_port", 101), + ("[fdf8:f535:82e4::53]", "server_port", 101), + ("[fdf8:f535:82e4::53]", "default_port", 101), + # Invalid hosts + ("mozilla.org", "server_port", 400), + ("mozilla.org", "wrong_port", 400), + ("mozilla.org", "default_port", 400), + ("localhost", "wrong_port", 400), + ("127.0.0.1", "wrong_port", 400), + ("[::1]", "wrong_port", 400), + ("192.168.8.1", "wrong_port", 400), + ("[fdf8:f535:82e4::53]", "wrong_port", 400), + ], + ids=[ + # Valid hosts + "localhost with same port as RemoteAgent", + "localhost with default port", + "127.0.0.1 (loopback) with same port as RemoteAgent", + "127.0.0.1 (loopback) with default port", + "[::1] (ipv6 loopback) with same port as RemoteAgent", + "[::1] (ipv6 loopback) with default port", + "ipv4 address with same port as RemoteAgent", + "ipv4 address with default port", + "ipv6 address with same port as RemoteAgent", + "ipv6 address with default port", + # Invalid hosts + "random hostname with the same port as RemoteAgent", + "random hostname with a different port than RemoteAgent", + "random hostname with default port", + "localhost with a different port than RemoteAgent", + "127.0.0.1 (loopback) with a different port than RemoteAgent", + "[::1] (ipv6 loopback) with a different port than RemoteAgent", + "ipv4 address with a different port than RemoteAgent", + "ipv6 address with a different port than RemoteAgent", + ], +) +def test_host_header(browser, hostname, port_type, status): + # Request a default browser + current_browser = browser(use_bidi=True) + server_host = current_browser.remote_agent_host + server_port = current_browser.remote_agent_port + test_host = get_host(port_type, hostname, server_port) + + response = websocket_request(server_host, server_port, host=test_host) + assert response.status == status + + +@pytest.mark.parametrize( + "hostname, port_type, status", + [ + # Allowed hosts + ("testhost", "server_port", 101), + ("testhost", "default_port", 101), + ("testhost", "wrong_port", 400), + # IP addresses + ("192.168.8.1", "server_port", 101), + ("192.168.8.1", "default_port", 101), + ("[fdf8:f535:82e4::53]", "server_port", 101), + ("[fdf8:f535:82e4::53]", "default_port", 101), + ("127.0.0.1", "server_port", 101), + ("127.0.0.1", "default_port", 101), + ("[::1]", "server_port", 101), + ("[::1]", "default_port", 101), + # Localhost + ("localhost", "server_port", 400), + ("localhost", "default_port", 400), + ], + ids=[ + # Allowed hosts + "allowed host with same port as RemoteAgent", + "allowed host with default port", + "allowed host with wrong port", + # IP addresses + "ipv4 address with same port as RemoteAgent", + "ipv4 address with default port", + "ipv6 address with same port as RemoteAgent", + "ipv6 address with default port", + "127.0.0.1 (loopback) with same port as RemoteAgent", + "127.0.0.1 (loopback) with default port", + "[::1] (ipv6 loopback) with same port as RemoteAgent", + "[::1] (ipv6 loopback) with default port", + # Localhost + "localhost with same port as RemoteAgent", + "localhost with default port", + ], +) +def test_allowed_hosts(browser, hostname, port_type, status): + # Request a browser with custom allowed hosts. + current_browser = browser( + use_bidi=True, + extra_args=["--remote-allow-hosts", "testhost"], + ) + server_host = current_browser.remote_agent_host + server_port = current_browser.remote_agent_port + test_host = get_host(port_type, hostname, server_port) + + response = websocket_request(server_host, server_port, host=test_host) + assert response.status == status + + +@pytest.mark.parametrize( + "origin, status", + [ + (None, 101), + ("", 400), + ("sometext", 400), + ("http://localhost:1234", 400), + ], +) +def test_origin_header(browser, origin, status): + # Request a default browser. + current_browser = browser(use_bidi=True) + server_host = current_browser.remote_agent_host + server_port = current_browser.remote_agent_port + response = websocket_request(server_host, server_port, origin=origin) + assert response.status == status + + +@pytest.mark.parametrize( + "origin, status", + [ + (None, 101), + ("", 400), + ("sometext", 400), + ("http://localhost:1234", 101), + ("https://localhost:1234", 400), + ], +) +def test_allowed_origins(browser, origin, status): + # Request a browser with custom allowed origins. + current_browser = browser( + use_bidi=True, + extra_args=["--remote-allow-origins", "http://localhost:1234"], + ) + server_port = current_browser.remote_agent_port + + # Both `localhost` and `127.0.0.1` have to accept connections. + for target_host in ["127.0.0.1", "localhost"]: + print(f"Connecting to the WebSocket via host {target_host}") + response = websocket_request(target_host, server_port, origin=origin) + assert response.status == status diff --git a/testing/web-platform/mozilla/tests/webdriver/cdp/__init__.py b/testing/web-platform/mozilla/tests/webdriver/cdp/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/cdp/debugger_address.py b/testing/web-platform/mozilla/tests/webdriver/cdp/debugger_address.py new file mode 100644 index 0000000000..ef9a301d24 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/cdp/debugger_address.py @@ -0,0 +1,45 @@ +# META: timeout=long + +import json + +import pytest +from support.context import using_context +from tests.support.http_request import HTTPRequest + + +def test_debugger_address_not_set(session): + debugger_address = session.capabilities.get("moz:debuggerAddress") + assert debugger_address is None + + +@pytest.mark.capabilities({"moz:debuggerAddress": False}) +def test_debugger_address_false(session): + debugger_address = session.capabilities.get("moz:debuggerAddress") + assert debugger_address is None + + +@pytest.mark.capabilities({"moz:debuggerAddress": True}) +@pytest.mark.parametrize("fission_enabled", [True, False], ids=["enabled", "disabled"]) +def test_debugger_address_true_with_fission(session, fission_enabled): + debugger_address = session.capabilities.get("moz:debuggerAddress") + assert debugger_address is not None + + host, port = debugger_address.split(":") + assert host == "127.0.0.1" + assert port.isnumeric() + + # Fetch the browser version via the debugger address, `localhost` has + # to work as well. + for target_host in [host, "localhost"]: + print(f"Connecting to WebSocket via host {target_host}") + http = HTTPRequest(target_host, int(port)) + with http.get("/json/version") as response: + data = json.loads(response.read()) + assert session.capabilities["browserVersion"] in data["Browser"] + + # Ensure Fission is not disabled (bug 1813981) + with using_context(session, "chrome"): + assert ( + session.execute_script("""return Services.appinfo.fissionAutostart""") + is fission_enabled + ) diff --git a/testing/web-platform/mozilla/tests/webdriver/cdp/port_file.py b/testing/web-platform/mozilla/tests/webdriver/cdp/port_file.py new file mode 100644 index 0000000000..aa294deb24 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/cdp/port_file.py @@ -0,0 +1,30 @@ +import os + +from support.network import websocket_request + + +def test_devtools_active_port_file(browser): + current_browser = browser(use_cdp=True) + + assert current_browser.remote_agent_port != 0 + assert current_browser.debugger_address.startswith("/devtools/browser/") + + port_file = os.path.join(current_browser.profile.profile, "DevToolsActivePort") + assert os.path.exists(port_file) + + current_browser.quit(clean_profile=False) + assert not os.path.exists(port_file) + + +def test_connect(browser): + current_browser = browser(use_cdp=True) + + # Both `localhost` and `127.0.0.1` have to accept connections. + for target_host in ["127.0.0.1", "localhost"]: + print(f"Connecting to the WebSocket via host {target_host}") + response = websocket_request( + target_host, + current_browser.remote_agent_port, + path=current_browser.debugger_address, + ) + assert response.status == 101 diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/__init__.py b/testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/scroll_into_view.py b/testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/scroll_into_view.py new file mode 100644 index 0000000000..080195d345 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/scroll_into_view.py @@ -0,0 +1,50 @@ +from tests.support.asserts import assert_success +from tests.support.helpers import is_element_in_viewport + + +def element_send_keys(session, element, text): + return session.transport.send( + "POST", + "/session/{session_id}/element/{element_id}/value".format( + session_id=session.session_id, element_id=element.id + ), + {"text": text}, + ) + + +def test_option_select_container_outside_of_scrollable_viewport(session, inline): + session.url = inline( + """ + + """ + ) + element = session.find.css("option#bar", all=False) + select = session.find.css("select", all=False) + + response = element_send_keys(session, element, "bar") + assert_success(response) + + assert is_element_in_viewport(session, select) + assert is_element_in_viewport(session, element) + + +def test_option_stays_outside_of_scrollable_viewport(session, inline): + session.url = inline( + """ + + """ + ) + select = session.find.css("select", all=False) + option_bar = session.find.css("option#bar", all=False) + + response = element_send_keys(session, option_bar, "bar") + assert_success(response) + + assert is_element_in_viewport(session, select) + assert is_element_in_viewport(session, option_bar) diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/send_keys.py b/testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/send_keys.py new file mode 100644 index 0000000000..1399959ceb --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/element_send_keys/send_keys.py @@ -0,0 +1,24 @@ +from tests.support.asserts import assert_success +from tests.support.keys import Keys + + +def element_send_keys(session, element, text): + return session.transport.send( + "POST", + "/session/{session_id}/element/{element_id}/value".format( + session_id=session.session_id, element_id=element.id + ), + {"text": text}, + ) + + +def test_modifier_key_toggles(session, inline, modifier_key): + session.url = inline("") + element = session.find.css("input", all=False) + + response = element_send_keys( + session, element, f"{modifier_key}a{modifier_key}{Keys.DELETE}cheese" + ) + assert_success(response) + + assert element.property("value") == "cheese" diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/execute_async_script/__init__.py b/testing/web-platform/mozilla/tests/webdriver/classic/execute_async_script/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/execute_async_script/execute_async.py b/testing/web-platform/mozilla/tests/webdriver/classic/execute_async_script/execute_async.py new file mode 100644 index 0000000000..990f2c1b31 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/execute_async_script/execute_async.py @@ -0,0 +1,59 @@ +import pytest +from tests.support.asserts import assert_success +from tests.support.sync import Poll + + +def execute_async_script(session, script, args=None): + if args is None: + args = [] + body = {"script": script, "args": args} + + return session.transport.send( + "POST", "/session/{session_id}/execute/async".format(**vars(session)), body + ) + + +@pytest.mark.parametrize("dialog_type", ["alert", "confirm", "prompt"]) +def test_no_abort_by_user_prompt_in_other_tab(session, inline, dialog_type): + original_handle = session.window_handle + original_handles = session.handles + + session.url = inline( + """ + open window + + """.format( + dialog_type + ) + ) + + session.find.css("a", all=False).click() + wait = Poll(session, timeout=5, message="No new window has been opened") + new_handles = wait.until(lambda s: set(s.handles) - set(original_handles)) + assert len(new_handles) == 1 + + session.window_handle = new_handles.pop() + + response = execute_async_script( + session, + """ + const resolve = arguments[0]; + + // Trigger opening a user prompt in the other window. + window.opener.postMessage("foo", "*"); + + // Delay resolving the Promise to ensure a user prompt has been opened. + setTimeout(() => resolve(42), 500); + """, + ) + + assert_success(response, 42) + + session.window.close() + + session.window_handle = original_handle + session.alert.accept() diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handle/__init__.py b/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handle/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handle/chrome.py b/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handle/chrome.py new file mode 100644 index 0000000000..af24be4b9e --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handle/chrome.py @@ -0,0 +1,25 @@ +from support.context import using_context +from tests.support.asserts import assert_success + + +def get_window_handle(session): + return session.transport.send( + "GET", "session/{session_id}/window".format(**vars(session)) + ) + + +def test_basic(session): + with using_context(session, "chrome"): + response = get_window_handle(session) + assert_success(response, session.window_handle) + + +def test_different_handle_than_content_scope(session): + response = get_window_handle(session) + content_handle = assert_success(response) + + with using_context(session, "chrome"): + response = get_window_handle(session) + chrome_handle = assert_success(response) + + assert chrome_handle != content_handle diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handles/__init__.py b/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handles/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handles/chrome.py b/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handles/chrome.py new file mode 100644 index 0000000000..091ac01e6c --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/get_window_handles/chrome.py @@ -0,0 +1,43 @@ +from support.context import using_context +from tests.support.asserts import assert_success + + +def get_window_handles(session): + return session.transport.send( + "GET", "session/{session_id}/window/handles".format(**vars(session)) + ) + + +def test_basic(session): + with using_context(session, "chrome"): + response = get_window_handles(session) + assert_success(response, session.handles) + + +def test_different_handles_than_content_scope(session): + response = get_window_handles(session) + content_handles = assert_success(response) + + with using_context(session, "chrome"): + response = get_window_handles(session) + chrome_handles = assert_success(response) + + assert chrome_handles != content_handles + assert len(chrome_handles) == 1 + assert len(content_handles) == 1 + + +def test_multiple_windows_and_tabs(session): + session.new_window(type_hint="window") + session.new_window(type_hint="tab") + + response = get_window_handles(session) + content_handles = assert_success(response) + + with using_context(session, "chrome"): + response = get_window_handles(session) + chrome_handles = assert_success(response) + + assert chrome_handles != content_handles + assert len(chrome_handles) == 2 + assert len(content_handles) == 3 diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/new_session/__init__.py b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/new_session/bidi_disabled.py b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/bidi_disabled.py new file mode 100644 index 0000000000..eeb5a18740 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/bidi_disabled.py @@ -0,0 +1,33 @@ +from copy import deepcopy + + +def test_marionette_fallback_webdriver_session(configuration, geckodriver): + config = deepcopy(configuration) + config["capabilities"]["webSocketUrl"] = True + + prefs = config["capabilities"]["moz:firefoxOptions"].get("prefs", {}) + prefs.update({"remote.active-protocols": 2}) + config["capabilities"]["moz:firefoxOptions"]["prefs"] = prefs + + try: + driver = geckodriver(config=config) + driver.new_session() + + assert driver.session.capabilities.get("webSocketUrl") is None + + # Sanity check that Marionette works as expected and by default returns + # at least one window handle + assert len(driver.session.handles) >= 1 + + finally: + driver.stop() + + # WebDriver BiDi has to be re-enabled. Because we cannot easily + # get rid of the value let geckodriver overwrite it with the current + # default. + prefs.update({"remote.active-protocols": 3}) + + driver = geckodriver(config=config) + driver.new_session() + + assert driver.session.capabilities.get("webSocketUrl") is not None diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/new_session/binary.py b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/binary.py new file mode 100644 index 0000000000..79d1f842ed --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/binary.py @@ -0,0 +1,33 @@ +import os + +from tests.support.asserts import assert_error, assert_success + + +def test_bad_binary(new_session, configuration): + # skipif annotations are forbidden in wpt + if os.path.exists("/bin/echo"): + capabilities = configuration["capabilities"].copy() + capabilities["moz:firefoxOptions"]["binary"] = "/bin/echo" + + response, _ = new_session({"capabilities": {"alwaysMatch": capabilities}}) + assert_error(response, "invalid argument") + + +def test_shell_script_binary(new_session, configuration): + # skipif annotations are forbidden in wpt + if os.path.exists("/bin/bash"): + capabilities = configuration["capabilities"].copy() + binary = configuration["browser"]["binary"] + + path = os.path.abspath("firefox.sh") + assert not os.path.exists(path) + try: + script = f"""#!/bin/bash\n\n"{binary}" $@\n""" + with open("firefox.sh", "w") as f: + f.write(script) + os.chmod(path, 0o744) + capabilities["moz:firefoxOptions"]["binary"] = path + response, _ = new_session({"capabilities": {"alwaysMatch": capabilities}}) + assert_success(response) + finally: + os.unlink(path) diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/new_session/conftest.py b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/conftest.py new file mode 100644 index 0000000000..1cab6784c2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/conftest.py @@ -0,0 +1,58 @@ +import pytest +from webdriver.transport import HTTPWireProtocol + + +@pytest.fixture(name="configuration") +def fixture_configuration(configuration): + """Remove "acceptInsecureCerts" from capabilities if it exists. + + Some browser configurations add acceptInsecureCerts capability by default. + Remove it during new_session tests to avoid interference. + """ + if "acceptInsecureCerts" in configuration["capabilities"]: + configuration = dict(configuration) + del configuration["capabilities"]["acceptInsecureCerts"] + return configuration + + +@pytest.fixture(name="new_session") +def fixture_new_session(request, configuration, current_session): + """Start a new session for tests which themselves test creating new sessions. + + :param body: The content of the body for the new session POST request. + + :param delete_existing_session: Allows the fixture to delete an already + created custom session before the new session is getting created. This + is useful for tests which call this fixture multiple times within the + same test. + """ + custom_session = {} + + transport = HTTPWireProtocol( + configuration["host"], + configuration["port"], + url_prefix="/", + ) + + def _delete_session(session_id): + transport.send("DELETE", "session/{}".format(session_id)) + + def new_session(body, delete_existing_session=False, headers=None): + # If there is an active session from the global session fixture, + # delete that one first + if current_session is not None: + current_session.end() + + if delete_existing_session: + _delete_session(custom_session["session"]["sessionId"]) + + response = transport.send("POST", "session", body, headers=headers) + if response.status == 200: + custom_session["session"] = response.body["value"] + return response, custom_session.get("session", None) + + yield new_session + + if custom_session.get("session") is not None: + _delete_session(custom_session["session"]["sessionId"]) + custom_session = None diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/new_session/create.py b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/create.py new file mode 100644 index 0000000000..9649b938ad --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/create.py @@ -0,0 +1,11 @@ +# META: timeout=long +from tests.support.asserts import assert_success + + +def test_valid_content_type(new_session, configuration): + headers = {"content-type": "application/json"} + response, _ = new_session( + {"capabilities": {"alwaysMatch": dict(configuration["capabilities"])}}, + headers=headers, + ) + assert_success(response) diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/new_session/invalid.py b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/invalid.py new file mode 100644 index 0000000000..dc7a0caee9 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/invalid.py @@ -0,0 +1,53 @@ +from copy import deepcopy + +import pytest +from tests.support.asserts import assert_error + + +@pytest.mark.parametrize( + "headers", + [ + {"origin": "http://localhost"}, + {"origin": "http://localhost:8000"}, + {"origin": "http://127.0.0.1"}, + {"origin": "http://127.0.0.1:8000"}, + {"origin": "null"}, + {"ORIGIN": "https://example.org"}, + {"host": "example.org:4444"}, + {"Host": "example.org"}, + {"host": "localhost:80"}, + {"host": "localhost"}, + {"content-type": "application/x-www-form-urlencoded"}, + {"content-type": "multipart/form-data"}, + {"content-type": "text/plain"}, + {"Content-TYPE": "APPLICATION/x-www-form-urlencoded"}, + {"content-type": "MULTIPART/FORM-DATA"}, + {"CONTENT-TYPE": "TEXT/PLAIN"}, + {"content-type": "text/plain ; charset=utf-8"}, + {"content-type": "text/plain;foo"}, + {"content-type": "text/PLAIN ; foo;charset=utf8"}, + ], +) +def test_invalid(new_session, configuration, headers): + response, _ = new_session( + {"capabilities": {"alwaysMatch": dict(configuration["capabilities"])}}, + headers=headers, + ) + assert_error(response, "unknown error") + + +@pytest.mark.parametrize( + "argument", + [ + "--marionette", + "--remote-debugging-port", + "--remote-allow-hosts", + "--remote-allow-origins", + ], +) +def test_forbidden_arguments(configuration, new_session, argument): + capabilities = deepcopy(configuration["capabilities"]) + capabilities["moz:firefoxOptions"]["args"] = [argument] + + response, _ = new_session({"capabilities": {"alwaysMatch": capabilities}}) + assert_error(response, "invalid argument") diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/new_session/profile_root.py b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/profile_root.py new file mode 100644 index 0000000000..8bbdbadc69 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/new_session/profile_root.py @@ -0,0 +1,38 @@ +import copy +import os + +import pytest + + +def test_profile_root(tmp_path, configuration, geckodriver): + profile_path = os.path.join(tmp_path, "geckodriver-test") + os.makedirs(profile_path) + + config = copy.deepcopy(configuration) + # Ensure we don't set a profile in command line arguments + del config["capabilities"]["moz:firefoxOptions"]["args"] + + extra_args = ["--profile-root", profile_path] + + assert os.listdir(profile_path) == [] + + driver = geckodriver(config=config, extra_args=extra_args) + driver.new_session() + assert len(os.listdir(profile_path)) == 1 + driver.delete_session() + assert os.listdir(profile_path) == [] + + +def test_profile_root_missing(tmp_path, configuration, geckodriver): + profile_path = os.path.join(tmp_path, "missing-path") + assert not os.path.exists(profile_path) + + config = copy.deepcopy(configuration) + # Ensure we don't set a profile in command line arguments + del config["capabilities"]["moz:firefoxOptions"]["args"] + + extra_args = ["--profile-root", profile_path] + + with pytest.raises(ChildProcessError) as exc_info: + geckodriver(config=config, extra_args=extra_args) + assert str(exc_info.value) == "geckodriver terminated with code 64" diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/protocol/__init__.py b/testing/web-platform/mozilla/tests/webdriver/classic/protocol/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/protocol/allow_hosts.py b/testing/web-platform/mozilla/tests/webdriver/classic/protocol/allow_hosts.py new file mode 100644 index 0000000000..17ae2c2c68 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/protocol/allow_hosts.py @@ -0,0 +1,53 @@ +from copy import deepcopy + +import pytest +from support.network import get_host, http_request, websocket_request + + +@pytest.mark.parametrize( + "allow_hosts, hostname, port_type, status", + [ + # Valid hosts + (["localhost.localdomain", "localhost"], "localhost", "server_port", 200), + (["localhost.localdomain", "localhost"], "127.0.0.1", "server_port", 200), + # Invalid hosts + (["localhost.localdomain"], "localhost", "server_port", 500), + (["localhost"], "localhost", "wrong_port", 500), + (["www.localhost"], "localhost", "server_port", 500), + ], +) +def test_allow_hosts(geckodriver, allow_hosts, hostname, port_type, status): + extra_args = ["--allow-hosts"] + allow_hosts + + driver = geckodriver(hostname=hostname, extra_args=extra_args) + host = get_host(port_type, hostname, driver.port) + response = http_request(driver.hostname, driver.port, host=host) + + assert response.status == status + + +@pytest.mark.parametrize( + "allow_hosts, hostname, status", + [ + (["mozilla.org", "testhost"], "testhost", 101), + (["mozilla.org"], "testhost", 400), + ], + ids=["allowed", "not allowed"], +) +def test_allow_hosts_passed_to_remote_agent( + configuration, geckodriver, allow_hosts, hostname, status +): + config = deepcopy(configuration) + config["capabilities"]["webSocketUrl"] = True + + extra_args = ["--allow-hosts"] + allow_hosts + + driver = geckodriver(config=config, extra_args=extra_args) + + driver.new_session() + + host = get_host("default_port", hostname, driver.remote_agent_port) + response = websocket_request("127.0.0.1", driver.remote_agent_port, host=host) + assert response.status == status + + driver.delete_session() diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/protocol/allow_origins.py b/testing/web-platform/mozilla/tests/webdriver/classic/protocol/allow_origins.py new file mode 100644 index 0000000000..72b6fba482 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/protocol/allow_origins.py @@ -0,0 +1,56 @@ +from copy import deepcopy + +import pytest +from support.network import http_request, websocket_request + + +@pytest.mark.parametrize( + "allow_origins, origin, status", + [ + # Valid origins + (["http://web-platform.test"], "http://web-platform.test", 200), + (["http://web-platform.test"], "http://web-platform.test:80", 200), + (["https://web-platform.test"], "https://web-platform.test:443", 200), + # Invalid origins + (["https://web-platform.test"], "http://web-platform.test", 500), + (["http://web-platform.test:8000"], "http://web-platform.test", 500), + (["http://web-platform.test"], "http://www.web-platform.test", 500), + ], +) +def test_allow_hosts(configuration, geckodriver, allow_origins, origin, status): + extra_args = ["--allow-origins"] + allow_origins + + driver = geckodriver(extra_args=extra_args) + response = http_request(driver.hostname, driver.port, origin=origin) + + assert response.status == status + + +@pytest.mark.parametrize( + "allow_origins, origin, status", + [ + ( + ["https://web-platform.test", "http://web-platform.test"], + "http://web-platform.test", + 101, + ), + (["https://web-platform.test"], "http://web-platform.test", 400), + ], + ids=["allowed", "not allowed"], +) +def test_allow_origins_passed_to_remote_agent( + configuration, geckodriver, allow_origins, origin, status +): + config = deepcopy(configuration) + config["capabilities"]["webSocketUrl"] = True + + extra_args = ["--allow-origins"] + allow_origins + + driver = geckodriver(config=config, extra_args=extra_args) + + driver.new_session() + + response = websocket_request("127.0.0.1", driver.remote_agent_port, origin=origin) + assert response.status == status + + driver.delete_session() diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/protocol/marionette_port.py b/testing/web-platform/mozilla/tests/webdriver/classic/protocol/marionette_port.py new file mode 100644 index 0000000000..09951abc43 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/protocol/marionette_port.py @@ -0,0 +1,41 @@ +import os +from copy import deepcopy + +import pytest + + +@pytest.mark.parametrize("port", ["0", "2828"], ids=["system allocated", "fixed"]) +def test_marionette_port(geckodriver, port): + extra_args = ["--marionette-port", port] + + driver = geckodriver(extra_args=extra_args) + driver.new_session() + driver.delete_session() + + +def test_marionette_port_outdated_active_port_file( + configuration, geckodriver, custom_profile +): + config = deepcopy(configuration) + extra_args = ["--marionette-port", "0"] + + # Prepare a Marionette active port file that contains a port which will + # never be used when requesting a system allocated port. + active_port_file = os.path.join(custom_profile.profile, "MarionetteActivePort") + with open(active_port_file, "wb") as f: + f.write(b"53") + + config["capabilities"]["moz:firefoxOptions"]["args"] = [ + "--profile", + custom_profile.profile, + ] + + driver = geckodriver(config=config, extra_args=extra_args) + + driver.new_session() + with open(active_port_file, "rb") as f: + assert f.readline() != b"53" + + driver.delete_session() + with pytest.raises(FileNotFoundError): + open(active_port_file, "rb") diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/protocol/request.py b/testing/web-platform/mozilla/tests/webdriver/classic/protocol/request.py new file mode 100644 index 0000000000..ad99d6964d --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/protocol/request.py @@ -0,0 +1,72 @@ +import pytest +from support.network import get_host, http_request + + +@pytest.mark.parametrize( + "hostname, port_type, status", + [ + # Valid hosts + ("localhost", "server_port", 200), + ("127.0.0.1", "server_port", 200), + ("[::1]", "server_port", 200), + ("192.168.8.1", "server_port", 200), + ("[fdf8:f535:82e4::53]", "server_port", 200), + # Invalid hosts + ("localhost", "default_port", 500), + ("127.0.0.1", "default_port", 500), + ("[::1]", "default_port", 500), + ("192.168.8.1", "default_port", 500), + ("[fdf8:f535:82e4::53]", "default_port", 500), + ("example.org", "server_port", 500), + ("example.org", "wrong_port", 500), + ("example.org", "default_port", 500), + ("localhost", "wrong_port", 500), + ("127.0.0.1", "wrong_port", 500), + ("[::1]", "wrong_port", 500), + ("192.168.8.1", "wrong_port", 500), + ("[fdf8:f535:82e4::53]", "wrong_port", 500), + ], + ids=[ + # Valid hosts + "localhost with same port as server", + "127.0.0.1 (loopback) with same port as server", + "[::1] (ipv6 loopback) with same port as server", + "ipv4 address with same port as server", + "ipv6 address with same port as server", + # Invalid hosts + "localhost with default port", + "127.0.0.1 (loopback) with default port", + "[::1] (ipv6 loopback) with default port", + "ipv4 address with default port", + "ipv6 address with default port", + "random hostname with the same port as server", + "random hostname with a different port than server", + "random hostname with default port", + "localhost with a different port than server", + "127.0.0.1 (loopback) with a different port than server", + "[::1] (ipv6 loopback) with a different port than server", + "ipv4 address with a different port than server", + "ipv6 address with a different port than server", + ], +) +def test_host_header(configuration, hostname, port_type, status): + host = get_host(port_type, hostname, configuration["port"]) + response = http_request(configuration["host"], configuration["port"], host=host) + + assert response.status == status + + +@pytest.mark.parametrize( + "origin, add_port, status", + [ + (None, False, 200), + ("", False, 500), + ("sometext", False, 500), + ("http://localhost", True, 500), + ], +) +def test_origin_header(configuration, origin, add_port, status): + if add_port: + origin = f"{origin}:{configuration['port']}" + response = http_request(configuration["host"], configuration["port"], origin=origin) + assert response.status == status diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/send_alert_text.py b/testing/web-platform/mozilla/tests/webdriver/classic/send_alert_text.py new file mode 100644 index 0000000000..60d6a02af0 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/send_alert_text.py @@ -0,0 +1,22 @@ +from tests.support.asserts import assert_error +from tests.support.http_handlers.authentication import basic_authentication + + +def send_alert_text(session, text=None): + return session.transport.send( + "POST", + "session/{session_id}/alert/text".format(**vars(session)), + {"text": text}, + ) + + +def test_basic_auth_unsupported_operation(url, session): + """ + Basic auth dialogues are not included in HTML's definition of + 'user prompts': those are limited to the 'simple dialogues' + such as window.alert(), window.prompt() et al. and the print + dialogue. + """ + session.url = basic_authentication(url) + response = send_alert_text(session, "Federer") + assert_error(response, "unsupported operation") diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/__init__.py b/testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/__init__.py new file mode 100644 index 0000000000..11a8a58a0f --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/__init__.py @@ -0,0 +1,12 @@ +def document_dimensions(session): + return tuple( + session.execute_script( + """ + const {devicePixelRatio} = window; + const width = document.documentElement.scrollWidth; + const height = document.documentElement.scrollHeight; + + return [Math.floor(width * devicePixelRatio), Math.floor(height * devicePixelRatio)]; + """ + ) + ) diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/iframe.py b/testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/iframe.py new file mode 100644 index 0000000000..fc231f2e11 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/iframe.py @@ -0,0 +1,47 @@ +import pytest +from tests.support.asserts import assert_success +from tests.support.image import png_dimensions + +from . import document_dimensions + +DEFAULT_CSS_STYLE = """ + +""" + +DEFAULT_CONTENT = "
Lorem ipsum dolor sit amet.
" + + +def take_full_screenshot(session): + return session.transport.send( + "GET", + "/session/{session_id}/moz/screenshot/full".format( + session_id=session.session_id + ), + ) + + +@pytest.mark.parametrize("domain", ["", "alt"], ids=["same_origin", "cross_origin"]) +def test_source_origin(session, url, domain, inline, iframe): + session.url = inline("""{0}{1}""".format(DEFAULT_CSS_STYLE, DEFAULT_CONTENT)) + + response = take_full_screenshot(session) + reference_screenshot = assert_success(response) + assert png_dimensions(reference_screenshot) == document_dimensions(session) + + iframe_content = "{}".format(DEFAULT_CONTENT) + session.url = inline( + """{0}{1}""".format(DEFAULT_CSS_STYLE, iframe(iframe_content, domain=domain)) + ) + + response = take_full_screenshot(session) + screenshot = assert_success(response) + assert png_dimensions(screenshot) == document_dimensions(session) + + assert screenshot == reference_screenshot diff --git a/testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/screenshot.py b/testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/screenshot.py new file mode 100644 index 0000000000..02373afd57 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/classic/take_full_screenshot/screenshot.py @@ -0,0 +1,51 @@ +from tests.support.asserts import assert_error, assert_png, assert_success +from tests.support.image import png_dimensions + +from . import document_dimensions + + +def take_full_screenshot(session): + return session.transport.send( + "GET", + "/session/{session_id}/moz/screenshot/full".format( + session_id=session.session_id + ), + ) + + +def test_no_browsing_context(session, closed_window): + response = take_full_screenshot(session) + assert_error(response, "no such window") + + +def test_html_document(session, inline): + session.url = inline("") + + response = take_full_screenshot(session) + value = assert_success(response) + assert_png(value) + assert png_dimensions(value) == document_dimensions(session) + + +def test_xhtml_document(session, inline): + session.url = inline('', doctype="xhtml") + + response = take_full_screenshot(session) + value = assert_success(response) + assert_png(value) + assert png_dimensions(value) == document_dimensions(session) + + +def test_document_extends_beyond_viewport(session, inline): + session.url = inline( + """ + + """ + ) + + response = take_full_screenshot(session) + value = assert_success(response) + assert_png(value) + assert png_dimensions(value) == document_dimensions(session) diff --git a/testing/web-platform/mozilla/tests/webdriver/conftest.py b/testing/web-platform/mozilla/tests/webdriver/conftest.py new file mode 100644 index 0000000000..d754b39e79 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/conftest.py @@ -0,0 +1,15 @@ +import os +import sys + +base = os.path.dirname(__file__) +webdriver_path = os.path.abspath( + os.path.join(base, "..", "..", "..", "tests", "webdriver") +) +sys.path.insert(0, os.path.join(webdriver_path)) + +pytest_plugins = [ + "support.fixtures", + "tests.support.fixtures", + "tests.support.fixtures_bidi", + "tests.support.fixtures_http", +] diff --git a/testing/web-platform/mozilla/tests/webdriver/support/__init__.py b/testing/web-platform/mozilla/tests/webdriver/support/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testing/web-platform/mozilla/tests/webdriver/support/context.py b/testing/web-platform/mozilla/tests/webdriver/support/context.py new file mode 100644 index 0000000000..910b202075 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/support/context.py @@ -0,0 +1,20 @@ +import contextlib + + +def set_context(session, context): + session.send_session_command("POST", "moz/context", {"context": context}) + + +@contextlib.contextmanager +def using_context(session, context): + orig_context = session.send_session_command("GET", "moz/context") + needs_change = context != orig_context + + if needs_change: + set_context(session, context) + + try: + yield + finally: + if needs_change: + set_context(session, orig_context) diff --git a/testing/web-platform/mozilla/tests/webdriver/support/fixtures.py b/testing/web-platform/mozilla/tests/webdriver/support/fixtures.py new file mode 100644 index 0000000000..450f662969 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/support/fixtures.py @@ -0,0 +1,256 @@ +import json +import os +import socket +import subprocess +import time +from contextlib import suppress +from urllib.parse import urlparse + +import pytest +import webdriver +from mozprofile import Profile +from mozrunner import FirefoxRunner + +from support.network import get_free_port + + +@pytest.fixture(scope="module") +def browser(full_configuration): + """Start a Firefox instance without using geckodriver. + + geckodriver will automatically use the --remote-allow-hosts and + --remote.allow.origins command line arguments. + + Starting Firefox without geckodriver allows to set those command line arguments + as needed. The fixture method returns the browser instance that should be used + to connect to a RemoteAgent supported protocol (CDP, WebDriver BiDi). + """ + current_browser = None + + def _browser(use_bidi=False, use_cdp=False, extra_args=None, extra_prefs=None): + nonlocal current_browser + + # If the requested preferences and arguments match the ones for the + # already started firefox, we can reuse the current firefox instance, + # return the instance immediately. + if current_browser: + if ( + current_browser.use_bidi == use_bidi + and current_browser.use_cdp == use_cdp + and current_browser.extra_args == extra_args + and current_browser.extra_prefs == extra_prefs + and current_browser.is_running + ): + return current_browser + + # Otherwise, if firefox is already started, terminate it because we need + # to create a new instance for the provided preferences. + current_browser.quit() + + binary = full_configuration["browser"]["binary"] + firefox_options = full_configuration["capabilities"]["moz:firefoxOptions"] + current_browser = Browser( + binary, + firefox_options, + use_bidi=use_bidi, + use_cdp=use_cdp, + extra_args=extra_args, + extra_prefs=extra_prefs, + ) + current_browser.start() + return current_browser + + yield _browser + + # Stop firefox at the end of the test module. + if current_browser is not None: + current_browser.quit() + current_browser = None + + +@pytest.fixture +def custom_profile(configuration): + # Clone the known profile for automation preferences + firefox_options = configuration["capabilities"]["moz:firefoxOptions"] + _, profile_folder = firefox_options["args"] + profile = Profile.clone(profile_folder) + + yield profile + + profile.cleanup() + + +@pytest.fixture +def geckodriver(configuration): + """Start a geckodriver instance directly.""" + driver = None + + def _geckodriver(config=None, hostname=None, extra_args=None): + nonlocal driver + + if config is None: + config = configuration + + driver = Geckodriver(config, hostname, extra_args) + driver.start() + + return driver + + yield _geckodriver + + if driver is not None: + driver.stop() + + +class Browser: + def __init__( + self, + binary, + firefox_options, + use_bidi=False, + use_cdp=False, + extra_args=None, + extra_prefs=None, + ): + self.use_bidi = use_bidi + self.bidi_port_file = None + self.use_cdp = use_cdp + self.cdp_port_file = None + self.extra_args = extra_args + self.extra_prefs = extra_prefs + + self.debugger_address = None + self.remote_agent_host = None + self.remote_agent_port = None + + # Prepare temporary profile + _profile_arg, profile_folder = firefox_options["args"] + self.profile = Profile.clone(profile_folder) + if self.extra_prefs is not None: + self.profile.set_preferences(self.extra_prefs) + + if use_cdp: + self.cdp_port_file = os.path.join( + self.profile.profile, "DevToolsActivePort" + ) + with suppress(FileNotFoundError): + os.remove(self.cdp_port_file) + if use_bidi: + self.webdriver_bidi_file = os.path.join( + self.profile.profile, "WebDriverBiDiServer.json" + ) + with suppress(FileNotFoundError): + os.remove(self.webdriver_bidi_file) + + cmdargs = ["-no-remote"] + if self.use_bidi or self.use_cdp: + cmdargs.extend(["--remote-debugging-port", "0"]) + if self.extra_args is not None: + cmdargs.extend(self.extra_args) + self.runner = FirefoxRunner( + binary=binary, profile=self.profile, cmdargs=cmdargs + ) + + @property + def is_running(self): + return self.runner.is_running() + + def start(self): + # Start Firefox. + self.runner.start() + + if self.use_bidi: + # Wait until the WebDriverBiDiServer.json file is ready + while not os.path.exists(self.webdriver_bidi_file): + time.sleep(0.1) + + # Read the connection details from file + data = json.loads(open(self.webdriver_bidi_file).read()) + self.remote_agent_host = data["ws_host"] + self.remote_agent_port = int(data["ws_port"]) + + if self.use_cdp: + # Wait until the DevToolsActivePort file is ready + while not os.path.exists(self.cdp_port_file): + time.sleep(0.1) + + # Read the port if needed and the debugger address from the + # DevToolsActivePort file + lines = open(self.cdp_port_file).readlines() + assert len(lines) == 2 + + if self.remote_agent_port is None: + self.remote_agent_port = int(lines[0].strip()) + self.debugger_address = lines[1].strip() + + def quit(self, clean_profile=True): + if self.is_running: + self.runner.stop() + self.runner.cleanup() + + if clean_profile: + self.profile.cleanup() + + +class Geckodriver: + def __init__(self, configuration, hostname=None, extra_args=None): + self.config = configuration["webdriver"] + self.requested_capabilities = configuration["capabilities"] + self.hostname = hostname or configuration["host"] + self.extra_args = extra_args or [] + + self.command = None + self.proc = None + self.port = get_free_port() + + capabilities = {"alwaysMatch": self.requested_capabilities} + self.session = webdriver.Session( + self.hostname, self.port, capabilities=capabilities + ) + + @property + def remote_agent_port(self): + webSocketUrl = self.session.capabilities.get("webSocketUrl") + assert webSocketUrl is not None + + return urlparse(webSocketUrl).port + + def start(self): + self.command = ( + [self.config["binary"], "--port", str(self.port)] + + self.config["args"] + + self.extra_args + ) + + print(f"Running command: {' '.join(self.command)}") + self.proc = subprocess.Popen(self.command) + + # Wait for the port to become ready + end_time = time.time() + 10 + while time.time() < end_time: + returncode = self.proc.poll() + if returncode is not None: + raise ChildProcessError( + f"geckodriver terminated with code {returncode}" + ) + with socket.socket() as sock: + if sock.connect_ex((self.hostname, self.port)) == 0: + break + else: + raise ConnectionRefusedError( + f"Failed to connect to geckodriver on {self.hostname}:{self.port}" + ) + + return self + + def stop(self): + self.delete_session() + + if self.proc: + self.proc.kill() + + def new_session(self): + self.session.start() + + def delete_session(self): + self.session.end() diff --git a/testing/web-platform/mozilla/tests/webdriver/support/network.py b/testing/web-platform/mozilla/tests/webdriver/support/network.py new file mode 100644 index 0000000000..25492ca5e5 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webdriver/support/network.py @@ -0,0 +1,78 @@ +import socket +from http.client import HTTPConnection + + +def websocket_request( + remote_agent_host, remote_agent_port, host=None, origin=None, path="/session" +): + real_host = f"{remote_agent_host}:{remote_agent_port}" + url = f"http://{real_host}{path}" + + conn = HTTPConnection(real_host) + + skip_host = host is not None + conn.putrequest("GET", url, skip_host) + + if host is not None: + conn.putheader("Host", host) + + if origin is not None: + conn.putheader("Origin", origin) + + conn.putheader("Connection", "upgrade") + conn.putheader("Upgrade", "websocket") + conn.putheader("Sec-WebSocket-Key", "dGhlIHNhbXBsZSBub25jZQ==") + conn.putheader("Sec-WebSocket-Version", "13") + + conn.endheaders() + + return conn.getresponse() + + +def http_request(server_host, server_port, path="/status", host=None, origin=None): + url = f"http://{server_host}:{server_port}{path}" + + conn = HTTPConnection(server_host, server_port) + + custom_host = host is not None + conn.putrequest("GET", url, skip_host=custom_host) + if custom_host: + conn.putheader("Host", host) + + if origin is not None: + conn.putheader("Origin", origin) + + conn.endheaders() + + return conn.getresponse() + + +def get_free_port(): + """Get a random unbound port""" + max_attempts = 10 + err = None + for _ in range(max_attempts): + s = socket.socket() + try: + s.bind(("127.0.0.1", 0)) + except OSError as e: + err = e + continue + else: + return s.getsockname()[1] + finally: + s.close() + if err is None: + err = Exception("Failed to get a free port") + raise err + + +def get_host(port_type, hostname, server_port): + if port_type == "default_port": + return hostname + if port_type == "server_port": + return f"{hostname}:{server_port}" + if port_type == "wrong_port": + wrong_port = int(server_port) + 1 + return f"{hostname}:{wrong_port}" + raise Exception(f"Unrecognised port_type {port_type}") diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/1/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/1/cts.https.html new file mode 100644 index 0000000000..a651e43371 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/1/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/10/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/10/cts.https.html new file mode 100644 index 0000000000..bb938734b0 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/10/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/11/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/11/cts.https.html new file mode 100644 index 0000000000..7e0ba911d2 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/11/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/12/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/12/cts.https.html new file mode 100644 index 0000000000..b5a0044f96 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/12/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/13/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/13/cts.https.html new file mode 100644 index 0000000000..defa0b68a6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/13/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/14/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/14/cts.https.html new file mode 100644 index 0000000000..8b785ba326 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/14/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/15/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/15/cts.https.html new file mode 100644 index 0000000000..9daf585acb --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/15/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/16/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/16/cts.https.html new file mode 100644 index 0000000000..81ca6c2d5e --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/16/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/17/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/17/cts.https.html new file mode 100644 index 0000000000..2839312856 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/17/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/18/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/18/cts.https.html new file mode 100644 index 0000000000..0b87d0004a --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/18/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/19/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/19/cts.https.html new file mode 100644 index 0000000000..7fd8995cdd --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/19/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/2/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/2/cts.https.html new file mode 100644 index 0000000000..89410c8078 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/2/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/20/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/20/cts.https.html new file mode 100644 index 0000000000..eb21d5a792 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/20/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/21/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/21/cts.https.html new file mode 100644 index 0000000000..d2480074f9 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/21/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/22/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/22/cts.https.html new file mode 100644 index 0000000000..b7d9a0443d --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/22/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/23/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/23/cts.https.html new file mode 100644 index 0000000000..f2bd7c06ce --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/23/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/24/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/24/cts.https.html new file mode 100644 index 0000000000..f524b4e131 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/24/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/25/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/25/cts.https.html new file mode 100644 index 0000000000..74ea4bb85f --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/25/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/26/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/26/cts.https.html new file mode 100644 index 0000000000..e4db92b95a --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/26/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/27/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/27/cts.https.html new file mode 100644 index 0000000000..ee9bf405f7 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/27/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/28/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/28/cts.https.html new file mode 100644 index 0000000000..1e73abddfd --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/28/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/29/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/29/cts.https.html new file mode 100644 index 0000000000..82a166b876 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/29/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/3/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/3/cts.https.html new file mode 100644 index 0000000000..c548ceb9da --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/3/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/30/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/30/cts.https.html new file mode 100644 index 0000000000..17fb900ab5 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/30/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/31/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/31/cts.https.html new file mode 100644 index 0000000000..f91e1a9f6d --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/31/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/32/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/32/cts.https.html new file mode 100644 index 0000000000..3ad2c39a44 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/32/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/33/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/33/cts.https.html new file mode 100644 index 0000000000..2d89a48d30 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/33/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/34/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/34/cts.https.html new file mode 100644 index 0000000000..26118bcce3 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/34/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/35/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/35/cts.https.html new file mode 100644 index 0000000000..2692ffa37e --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/35/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/36/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/36/cts.https.html new file mode 100644 index 0000000000..79277d99e1 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/36/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/37/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/37/cts.https.html new file mode 100644 index 0000000000..467d037984 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/37/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/38/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/38/cts.https.html new file mode 100644 index 0000000000..e80e64d29b --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/38/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/39/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/39/cts.https.html new file mode 100644 index 0000000000..b46895a8f9 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/39/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/4/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/4/cts.https.html new file mode 100644 index 0000000000..df1890201d --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/4/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/40/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/40/cts.https.html new file mode 100644 index 0000000000..c28d043dba --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/40/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/41/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/41/cts.https.html new file mode 100644 index 0000000000..13eff1789f --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/41/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/42/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/42/cts.https.html new file mode 100644 index 0000000000..c0bffe766a --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/42/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/43/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/43/cts.https.html new file mode 100644 index 0000000000..30eb586b56 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/43/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/44/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/44/cts.https.html new file mode 100644 index 0000000000..d87d4661ad --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/44/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/45/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/45/cts.https.html new file mode 100644 index 0000000000..aa8fddb4f1 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/45/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/46/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/46/cts.https.html new file mode 100644 index 0000000000..048c73733e --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/46/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/47/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/47/cts.https.html new file mode 100644 index 0000000000..a1455d2756 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/47/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/48/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/48/cts.https.html new file mode 100644 index 0000000000..0ee13cb4fd --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/48/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/49/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/49/cts.https.html new file mode 100644 index 0000000000..94244c93b4 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/49/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/5/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/5/cts.https.html new file mode 100644 index 0000000000..9df144950d --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/5/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/50/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/50/cts.https.html new file mode 100644 index 0000000000..66e37df757 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/50/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/51/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/51/cts.https.html new file mode 100644 index 0000000000..db8ad7c5cc --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/51/cts.https.html @@ -0,0 +1,58 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/6/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/6/cts.https.html new file mode 100644 index 0000000000..d6d9a9c0c1 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/6/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/7/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/7/cts.https.html new file mode 100644 index 0000000000..f1f9e5ec02 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/7/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/8/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/8/cts.https.html new file mode 100644 index 0000000000..b23ee54868 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/8/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/chunked/9/cts.https.html b/testing/web-platform/mozilla/tests/webgpu/chunked/9/cts.https.html new file mode 100644 index 0000000000..d0ebb3eae6 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/chunked/9/cts.https.html @@ -0,0 +1,59 @@ + + + + +WebGPU CTS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testing/web-platform/mozilla/tests/webgpu/common/framework/data_cache.js b/testing/web-platform/mozilla/tests/webgpu/common/framework/data_cache.js new file mode 100644 index 0000000000..e426ffbbc9 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/common/framework/data_cache.js @@ -0,0 +1,89 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ + +/** DataCache is an interface to a data store used to hold cached data */ +export class DataCache { + /** setDataStore() sets the backing data store used by the data cache */ + setStore(dataStore) { + this.dataStore = dataStore; + } + + /** setDebugLogger() sets the verbose logger */ + setDebugLogger(logger) { + this.debugLogger = logger; + } + + /** + * fetch() retrieves cacheable data from the data cache, first checking the + * in-memory cache, then the data store (if specified), then resorting to + * building the data and storing it in the cache. + */ + async fetch(cacheable) { + // First check the in-memory cache + let data = this.cache.get(cacheable.path); + if (data !== undefined) { + this.log('in-memory cache hit'); + return Promise.resolve(data); + } + this.log('in-memory cache miss'); + // In in-memory cache miss. + // Next, try the data store. + if (this.dataStore !== null && !this.unavailableFiles.has(cacheable.path)) { + let serialized; + try { + serialized = await this.dataStore.load(cacheable.path); + this.log('loaded serialized'); + } catch (err) { + // not found in data store + this.log(`failed to load (${cacheable.path}): ${err}`); + this.unavailableFiles.add(cacheable.path); + } + if (serialized !== undefined) { + this.log(`deserializing`); + data = cacheable.deserialize(serialized); + this.cache.set(cacheable.path, data); + return data; + } + } + // Not found anywhere. Build the data, and cache for future lookup. + this.log(`cache: building (${cacheable.path})`); + data = await cacheable.build(); + this.cache.set(cacheable.path, data); + return data; + } + + log(msg) { + if (this.debugLogger !== null) { + this.debugLogger(`DataCache: ${msg}`); + } + } + + cache = new Map(); + unavailableFiles = new Set(); + dataStore = null; + debugLogger = null; +} + +/** The data cache */ +export const dataCache = new DataCache(); + +/** true if the current process is building the cache */ +let isBuildingDataCache = false; + +/** @returns true if the data cache is currently being built */ +export function getIsBuildingDataCache() { + return isBuildingDataCache; +} + +/** Sets whether the data cache is currently being built */ +export function setIsBuildingDataCache(value = true) { + isBuildingDataCache = value; +} + +/** + * Cacheable is the interface to something that can be stored into the + * DataCache. + * The 'npm run gen_cache' tool will look for module-scope variables of this + * interface, with the name `d`. + */ diff --git a/testing/web-platform/mozilla/tests/webgpu/common/framework/fixture.js b/testing/web-platform/mozilla/tests/webgpu/common/framework/fixture.js new file mode 100644 index 0000000000..1611e9a742 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/common/framework/fixture.js @@ -0,0 +1,310 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ import { assert, unreachable } from '../util/util.js'; + +export class SkipTestCase extends Error {} +export class UnexpectedPassError extends Error {} + +export { TestCaseRecorder } from '../internal/logging/test_case_recorder.js'; + +/** The fully-general type for params passed to a test function invocation. */ + +export class SubcaseBatchState { + constructor(params) { + this._params = params; + } + + /** + * Returns the case parameters for this test fixture shared state. Subcase params + * are not included. + */ + get params() { + return this._params; + } + + /** + * Runs before the `.before()` function. + * @internal MAINTENANCE_TODO: Make this not visible to test code? + */ + async init() {} + /** + * Runs between the `.before()` function and the subcases. + * @internal MAINTENANCE_TODO: Make this not visible to test code? + */ + async postInit() {} + /** + * Runs after all subcases finish. + * @internal MAINTENANCE_TODO: Make this not visible to test code? + */ + async finalize() {} +} + +/** + * A Fixture is a class used to instantiate each test sub/case at run time. + * A new instance of the Fixture is created for every single test subcase + * (i.e. every time the test function is run). + */ +export class Fixture { + /** + * Interface for recording logs and test status. + * + * @internal + */ + + eventualExpectations = []; + numOutstandingAsyncExpectations = 0; + objectsToCleanUp = []; + + static MakeSharedState(params) { + return new SubcaseBatchState(params); + } + + /** @internal */ + constructor(sharedState, rec, params) { + this._sharedState = sharedState; + this.rec = rec; + this._params = params; + } + + /** + * Returns the (case+subcase) parameters for this test function invocation. + */ + get params() { + return this._params; + } + + /** + * Gets the test fixture's shared state. This object is shared between subcases + * within the same testcase. + */ + get sharedState() { + return this._sharedState; + } + + /** + * Override this to do additional pre-test-function work in a derived fixture. + * This has to be a member function instead of an async `createFixture` function, because + * we need to be able to ergonomically override it in subclasses. + * + * @internal MAINTENANCE_TODO: Make this not visible to test code? + */ + async init() {} + + /** + * Override this to do additional post-test-function work in a derived fixture. + * + * Called even if init was unsuccessful. + * + * @internal MAINTENANCE_TODO: Make this not visible to test code? + */ + async finalize() { + assert( + this.numOutstandingAsyncExpectations === 0, + 'there were outstanding immediateAsyncExpectations (e.g. expectUncapturedError) at the end of the test' + ); + + // Loop to exhaust the eventualExpectations in case they chain off each other. + while (this.eventualExpectations.length) { + const p = this.eventualExpectations.shift(); + try { + await p; + } catch (ex) { + this.rec.threw(ex); + } + } + + // And clean up any objects now that they're done being used. + for (const o of this.objectsToCleanUp) { + if ('getExtension' in o) { + const WEBGL_lose_context = o.getExtension('WEBGL_lose_context'); + if (WEBGL_lose_context) WEBGL_lose_context.loseContext(); + } else if ('destroy' in o) { + o.destroy(); + } else { + o.close(); + } + } + } + + /** + * Tracks an object to be cleaned up after the test finishes. + * + * MAINTENANCE_TODO: Use this in more places. (Will be easier once .destroy() is allowed on + * invalid objects.) + */ + trackForCleanup(o) { + this.objectsToCleanUp.push(o); + return o; + } + + /** Tracks an object, if it's destroyable, to be cleaned up after the test finishes. */ + tryTrackForCleanup(o) { + if (typeof o === 'object' && o !== null) { + if ( + 'destroy' in o || + 'close' in o || + o instanceof WebGLRenderingContext || + o instanceof WebGL2RenderingContext + ) { + this.objectsToCleanUp.push(o); + } + } + return o; + } + + /** Log a debug message. */ + debug(msg) { + this.rec.debug(new Error(msg)); + } + + /** Throws an exception marking the subcase as skipped. */ + skip(msg) { + throw new SkipTestCase(msg); + } + + /** Log a warning and increase the result status to "Warn". */ + warn(msg) { + this.rec.warn(new Error(msg)); + } + + /** Log an error and increase the result status to "ExpectFailed". */ + fail(msg) { + this.rec.expectationFailed(new Error(msg)); + } + + /** + * Wraps an async function. Tracks its status to fail if the test tries to report a test status + * before the async work has finished. + */ + async immediateAsyncExpectation(fn) { + this.numOutstandingAsyncExpectations++; + const ret = await fn(); + this.numOutstandingAsyncExpectations--; + return ret; + } + + /** + * Wraps an async function, passing it an `Error` object recording the original stack trace. + * The async work will be implicitly waited upon before reporting a test status. + */ + eventualAsyncExpectation(fn) { + const promise = fn(new Error()); + this.eventualExpectations.push(promise); + } + + expectErrorValue(expectedError, ex, niceStack) { + if (!(ex instanceof Error)) { + niceStack.message = `THREW non-error value, of type ${typeof ex}: ${ex}`; + this.rec.expectationFailed(niceStack); + return; + } + const actualName = ex.name; + if (expectedError !== true && actualName !== expectedError) { + niceStack.message = `THREW ${actualName}, instead of ${expectedError}: ${ex}`; + this.rec.expectationFailed(niceStack); + } else { + niceStack.message = `OK: threw ${actualName}: ${ex.message}`; + this.rec.debug(niceStack); + } + } + + /** Expect that the provided promise resolves (fulfills). */ + shouldResolve(p, msg) { + this.eventualAsyncExpectation(async niceStack => { + const m = msg ? ': ' + msg : ''; + try { + await p; + niceStack.message = 'resolved as expected' + m; + } catch (ex) { + niceStack.message = `REJECTED${m}`; + if (ex instanceof Error) { + niceStack.message += '\n' + ex.message; + } + this.rec.expectationFailed(niceStack); + } + }); + } + + /** Expect that the provided promise rejects, with the provided exception name. */ + shouldReject(expectedName, p, msg) { + this.eventualAsyncExpectation(async niceStack => { + const m = msg ? ': ' + msg : ''; + try { + await p; + niceStack.message = 'DID NOT REJECT' + m; + this.rec.expectationFailed(niceStack); + } catch (ex) { + niceStack.message = 'rejected as expected' + m; + this.expectErrorValue(expectedName, ex, niceStack); + } + }); + } + + /** + * Expect that the provided function throws. + * If an `expectedName` is provided, expect that the throw exception has that name. + */ + shouldThrow(expectedError, fn, msg) { + const m = msg ? ': ' + msg : ''; + try { + fn(); + if (expectedError === false) { + this.rec.debug(new Error('did not throw, as expected' + m)); + } else { + this.rec.expectationFailed(new Error('unexpectedly did not throw' + m)); + } + } catch (ex) { + if (expectedError === false) { + this.rec.expectationFailed(new Error('threw unexpectedly' + m)); + } else { + this.expectErrorValue(expectedError, ex, new Error(m)); + } + } + } + + /** Expect that a condition is true. */ + expect(cond, msg) { + if (cond) { + const m = msg ? ': ' + msg : ''; + this.rec.debug(new Error('expect OK' + m)); + } else { + this.rec.expectationFailed(new Error(msg)); + } + return cond; + } + + /** + * If the argument is an `Error`, fail (or warn). If it's `undefined`, no-op. + * If the argument is an array, apply the above behavior on each of elements. + */ + expectOK(error, { mode = 'fail', niceStack } = {}) { + const handleError = error => { + if (error instanceof Error) { + if (niceStack) { + error.stack = niceStack.stack; + } + if (mode === 'fail') { + this.rec.expectationFailed(error); + } else if (mode === 'warn') { + this.rec.warn(error); + } else { + unreachable(); + } + } + }; + + if (Array.isArray(error)) { + for (const e of error) { + handleError(e); + } + } else { + handleError(error); + } + } + + eventualExpectOK(error, { mode = 'fail' } = {}) { + this.eventualAsyncExpectation(async niceStack => { + this.expectOK(await error, { mode, niceStack }); + }); + } +} diff --git a/testing/web-platform/mozilla/tests/webgpu/common/framework/params_builder.js b/testing/web-platform/mozilla/tests/webgpu/common/framework/params_builder.js new file mode 100644 index 0000000000..787911f964 --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/common/framework/params_builder.js @@ -0,0 +1,213 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ import { mergeParams } from '../internal/params_utils.js'; +import { stringifyPublicParams } from '../internal/query/stringify_params.js'; +import { assert, mapLazy } from '../util/util.js'; + +// ================================================================ +// "Public" ParamsBuilder API / Documentation +// ================================================================ + +/** + * Provides doc comments for the methods of CaseParamsBuilder and SubcaseParamsBuilder. + * (Also enforces rough interface match between them.) + */ + +/** + * Base class for `CaseParamsBuilder` and `SubcaseParamsBuilder`. + */ +export class ParamsBuilderBase { + constructor(cases) { + this.cases = cases; + } + + /** + * Hidden from test files. Use `builderIterateCasesWithSubcases` to access this. + */ +} + +/** + * Calls the (normally hidden) `iterateCasesWithSubcases()` method. + */ +export function builderIterateCasesWithSubcases(builder) { + return builder.iterateCasesWithSubcases(); +} + +/** + * Builder for combinatorial test **case** parameters. + * + * CaseParamsBuilder is immutable. Each method call returns a new, immutable object, + * modifying the list of cases according to the method called. + * + * This means, for example, that the `unit` passed into `TestBuilder.params()` can be reused. + */ +export class CaseParamsBuilder extends ParamsBuilderBase { + *iterateCasesWithSubcases() { + for (const a of this.cases()) { + yield [a, undefined]; + } + } + + [Symbol.iterator]() { + return this.cases(); + } + + /** @inheritDoc */ + expandWithParams(expander) { + const newGenerator = expanderGenerator(this.cases, expander); + return new CaseParamsBuilder(() => newGenerator({})); + } + + /** @inheritDoc */ + expand(key, expander) { + return this.expandWithParams(function* (p) { + for (const value of expander(p)) { + yield { [key]: value }; + } + }); + } + + /** @inheritDoc */ + combineWithParams(newParams) { + assertNotGenerator(newParams); + const seenValues = new Set(); + for (const params of newParams) { + const paramsStr = stringifyPublicParams(params); + assert(!seenValues.has(paramsStr), `Duplicate entry in combine[WithParams]: ${paramsStr}`); + seenValues.add(paramsStr); + } + + return this.expandWithParams(() => newParams); + } + + /** @inheritDoc */ + combine(key, values) { + assertNotGenerator(values); + const mapped = mapLazy(values, v => ({ [key]: v })); + return this.combineWithParams(mapped); + } + + /** @inheritDoc */ + filter(pred) { + const newGenerator = filterGenerator(this.cases, pred); + return new CaseParamsBuilder(() => newGenerator({})); + } + + /** @inheritDoc */ + unless(pred) { + return this.filter(x => !pred(x)); + } + + /** + * "Finalize" the list of cases and begin defining subcases. + * Returns a new SubcaseParamsBuilder. Methods called on SubcaseParamsBuilder + * generate new subcases instead of new cases. + */ + beginSubcases() { + return new SubcaseParamsBuilder( + () => this.cases(), + function* () { + yield {}; + } + ); + } +} + +/** + * The unit CaseParamsBuilder, representing a single case with no params: `[ {} ]`. + * + * `punit` is passed to every `.params()`/`.paramsSubcasesOnly()` call, so `kUnitCaseParamsBuilder` + * is only explicitly needed if constructing a ParamsBuilder outside of a test builder. + */ +export const kUnitCaseParamsBuilder = new CaseParamsBuilder(function* () { + yield {}; +}); + +/** + * Builder for combinatorial test _subcase_ parameters. + * + * SubcaseParamsBuilder is immutable. Each method call returns a new, immutable object, + * modifying the list of subcases according to the method called. + */ +export class SubcaseParamsBuilder extends ParamsBuilderBase { + constructor(cases, generator) { + super(cases); + this.subcases = generator; + } + + *iterateCasesWithSubcases() { + for (const caseP of this.cases()) { + const subcases = Array.from(this.subcases(caseP)); + if (subcases.length) { + yield [caseP, subcases]; + } + } + } + + /** @inheritDoc */ + expandWithParams(expander) { + return new SubcaseParamsBuilder(this.cases, expanderGenerator(this.subcases, expander)); + } + + /** @inheritDoc */ + expand(key, expander) { + return this.expandWithParams(function* (p) { + for (const value of expander(p)) { + // TypeScript doesn't know here that NewPKey is always a single literal string type. + yield { [key]: value }; + } + }); + } + + /** @inheritDoc */ + combineWithParams(newParams) { + assertNotGenerator(newParams); + return this.expandWithParams(() => newParams); + } + + /** @inheritDoc */ + combine(key, values) { + assertNotGenerator(values); + return this.expand(key, () => values); + } + + /** @inheritDoc */ + filter(pred) { + return new SubcaseParamsBuilder(this.cases, filterGenerator(this.subcases, pred)); + } + + /** @inheritDoc */ + unless(pred) { + return this.filter(x => !pred(x)); + } +} + +function expanderGenerator(baseGenerator, expander) { + return function* (base) { + for (const a of baseGenerator(base)) { + for (const b of expander(mergeParams(base, a))) { + yield mergeParams(a, b); + } + } + }; +} + +function filterGenerator(baseGenerator, pred) { + return function* (base) { + for (const a of baseGenerator(base)) { + if (pred(mergeParams(base, a))) { + yield a; + } + } + }; +} + +/** Assert an object is not a Generator (a thing returned from a generator function). */ +function assertNotGenerator(x) { + if ('constructor' in x) { + assert( + x.constructor !== (function* () {})().constructor, + 'Argument must not be a generator, as generators are not reusable' + ); + } +} diff --git a/testing/web-platform/mozilla/tests/webgpu/common/framework/resources.js b/testing/web-platform/mozilla/tests/webgpu/common/framework/resources.js new file mode 100644 index 0000000000..72eabeda4e --- /dev/null +++ b/testing/web-platform/mozilla/tests/webgpu/common/framework/resources.js @@ -0,0 +1,111 @@ +/** + * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts + **/ /** + * Base path for resources. The default value is correct for non-worker WPT, but standalone and + * workers must access resources using a different base path, so this is overridden in + * `test_worker-worker.ts` and `standalone.ts`. + */ let baseResourcePath = './resources'; +let crossOriginHost = ''; + +function getAbsoluteBaseResourcePath(path) { + // Path is already an absolute one. + if (path[0] === '/') { + return path; + } + + // Path is relative + const relparts = window.location.pathname.split('/'); + relparts.pop(); + const pathparts = path.split('/'); + + let i; + for (i = 0; i < pathparts.length; ++i) { + switch (pathparts[i]) { + case '': + break; + case '.': + break; + case '..': + relparts.pop(); + break; + default: + relparts.push(pathparts[i]); + break; + } + } + + return relparts.join('/'); +} + +function runningOnLocalHost() { + const hostname = window.location.hostname; + return hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1'; +} + +/** + * Get a path to a resource in the `resources` directory relative to the current execution context + * (html file or worker .js file), for `fetch()`, ``, `